离开EM接近一年了,昨晚的PR课继续保持了沉闷的风格,于是打算推一遍...结果半路卡住了。先看看走到哪一步了,然后借了Ng的lecture才解脱(去年也是找到这本pdf才算明白,言简意赅)。
Block
首先是独立同分布的似然估计(不支持\bm,用大写代替):
\[\begin{equation}\label{eq:likehood}
P(X;\theta)=\prod_{i=1}^{N}p(x_i;\theta)
\end{equation}
\]
后面作用对数:
\[\begin{eqnarray}
l(\theta) &=& \log P(X;\theta)\nonumber\\
& = & \sum_{i=1}^{N} \log P(x_i;\theta) \label{eq:loss}
\end{eqnarray}
\]
引入类变量(我这样称呼,auxiliary variable 可能通用些):
\[\begin{eqnarray}
l(\theta) & = & \sum_{i=1}^{N} \log P(x_i;\theta) \nonumber \\
& = & \sum_{i=1}^{N} \log \sum_{c_i=1}^{M} P(x_i|c_i;\theta)P(c_i;\theta) \label{eq:wrong_way}
\end{eqnarray}
\]
然后用那个什么inequality:
\[\begin{eqnarray}
\log \sum_{c_i=1}^{M}P(x_i|c_i;\theta)P(c_i;\theta) \ge \sum_{c_i=1}^{M}P(c_i;\theta)\log P(x_i|c_i;\theta) \label{eq:jensen_ineq}
\end{eqnarray}
\]
于是\ref{eq:wrong_way}可以发展出:
\[l(\theta) > \sum_{i=1}^{N} \sum_{c_i=1}^{M}P(c_i;\theta)\log P(x_i|c_i;\theta) \label{eq:stall}
\]
然后就在这死循环了...只记得似乎要牵涉一个\(Q(c_i)\)
Solution
赶紧爪机上下载pdf一睹为快...
Where goes wrong
原来在\ref{eq:wrong_way}就已经走偏了,而\(Q(c_i)\)正是在那引入的:
\[\begin{eqnarray}
l(\theta) & = & \sum_{i=1}^{N} \log P(x_i;\theta)\nonumber\\
& = & \sum_{i=1}^{N} \log \sum_{c_i=1}^{M} \frac{P(x_i,c_i;\theta)}{Q(c_i)}Q(c_i) \label{eq:right_way}\\
& \ge & \sum_{i=1}^{N} \sum_{c_i=1}^{M} Q(c_i) \log \frac{P(x_i,c_i;\theta)}{Q(c_i)} \label{eq:jensen_ineq_r}
\end{eqnarray}
\]
**Note **
此处的\(Q(c_i)\) 应该假定为一个分布。
So
一个奇兵突起之处就在这里:对于\ref{eq:jensen_ineq_r},要使等号成立,需要对数项为常量:
\[\begin{equation}
\frac{P(x_i,c_i;\theta)}{Q(c_i)} \equiv c \label{eq:constant}
\end{equation}
\]
现在可以利用\(Q(c_i)\)为分布的假定了,求取\(Q(c_i)\):
\[\begin{eqnarray}
\int cQ(c_i) & = & \int P(x_i,c_i;\theta)\nonumber\\
c & = & P(x_i;\theta)\nonumber\\
Q(c_i) & = & P(c_i|x_i;\theta) \label{eq:expactation}
\end{eqnarray}
\]
Maximization
最终目标是\(\theta^*\),这一步通过最大化求解已经具有等于性质的\ref{eq:jensen_ineq_r}完成:
\[\begin{equation}\label{eq:maximization}
\theta^* = \mathop{argmax}_{\theta} \sum_{i=1}^{N} \sum_{c_i=1}^{M} Q(c_i) \log \frac{P(x_i,c_i;\theta)}{Q(c_i)}
\end{equation}
\]
15 Jul, 2017 记
这里要说明的是\ref{{eq:maximization}}中,分数线上下的两个\(\theta\)是不一样的,*i.e.: *\(Q(c_i)=Q(c_i|\theta_n)\),\(\theta^*=\theta_{n+1}\)。
优化的证明
这里再说明一下如何证明这样的迭代具有优化作用。
首先有:
\[\begin{eqnarray}
l(\theta_{n+1}) & = & \sum_{i=1}^{N}\log\sum_{c_i=1}^{M}\frac{P(x_i,c_i;\theta_{n+1})}{Q(c_i;\theta_{n+1})}Q(c_i;\theta_{n+1})\label{eq:l_n+1}\\
& \ge & \sum_{i=1}^{N}\sum_{c_i=1}^{M}Q(c_i;\theta_n)\log\frac{P(x_i,c_i;\theta_{n+1})}{Q(c_i;\theta_n)} \label{eq:greater_1}\\
& \ge& \sum_{i=1}^{N}\sum_{c_i=1}^{M}Q(c_i;\theta_n)\log\frac{P(x_i,c_i;\theta_{n})}{Q(c_i;\theta_n)} \label{eq:greater_2}\\
& = & \sum_{i=1}^{N}\log\sum_{c_i=1}^{M}\frac{P(x_i,c_i;\theta_{n})}{Q(c_i;\theta_{n})}Q(c_i;\theta_{n})\label{eq:l_n}\\
& = & l(\theta_n)
\end{eqnarray}
\]
\ref{eq:greater_1}能够成立的原因是\(P(x_i,c_i;\theta_{n+1})/Q(c_i;\theta_n)\)不再(一定)为常数,而仅当为常数时有等号成立。
\ref{eq:greater_2}由极大化得到;当\(\log\)操作的结果再次成为常数时,\ref{eq:l_n}成立。
Review
一些tricks很值得回味...
EM成功的关键
- 类变量的引入。显然,没有auxiliary变量的引入,就不能使用Jensen inequality,所以这很关键。然而更有意思的,是这与通常要进行classification问题正好契合了其中的class变量。
- 分布函数的假定和常数设定。 很容易以为Jensen不等式是关键。但就像我在上面个走错的一样,这个不等式比较容易被想到。更重要的一步是equality hold,而这一步却是通过\(Q(c_i)\)为分布函数的假定(和\ref{eq:constant}的设定一并)得到的。
分布函数的假定,使得
\[\begin{equation}
\sum_{c_i=1}^{M}Q(c_i) =1
\end{equation}
\]
所以才有:
\[\begin{eqnarray}
\log \sum_{c_i=1}^{M}Q(c_i)c = \sum_{c_i=1}^{M}Q(c_i)\log c \label{eq:key_hold}
\end{eqnarray}
\]
如果\(\sum_{c_i=1}^{M}Q(c_i)\ne 1\)的话,\ref{eq:key_hold}也就不能成立,这一点很有趣:) 。
而常数的设定,还可以使得\(Q(c_i)\)能够被求解出来。
命名
似乎总是在完成之后才想起命名上的线索,但这里想强调的不是E(前文已经说过了)。回想之前对EM的印象,觉得似乎是不用求导的。然而看看命名就应该明白这是很显然的问题。