EM 摘要

离开EM接近一年了,昨晚的PR课继续保持了沉闷的风格,于是打算推一遍...结果半路卡住了。先看看走到哪一步了,然后借了Nglecture才解脱(去年也是找到这本pdf才算明白,言简意赅)。

Block

首先是独立同分布的似然估计(不支持m,用大写代替):

[egin{equation}label{eq:likehood} P(X; heta)=prod_{i=1}^{N}p(x_i; heta) end{equation} ]

后面作用对数:

[egin{eqnarray} l( heta) &=& log P(X; heta) onumber\ & = & sum_{i=1}^{N} log P(x_i; heta) label{eq:loss} end{eqnarray} ]

引入类变量(我这样称呼,auxiliary variable 可能通用些):

[egin{eqnarray} l( heta) & = & sum_{i=1}^{N} log P(x_i; heta) onumber \ & = & sum_{i=1}^{N} log sum_{c_i=1}^{M} P(x_i|c_i; heta)P(c_i; heta) label{eq:wrong_way} end{eqnarray} ]

然后用那个什么inequality:

[egin{eqnarray} log sum_{c_i=1}^{M}P(x_i|c_i; heta)P(c_i; heta) ge sum_{c_i=1}^{M}P(c_i; heta)log P(x_i|c_i; heta) label{eq:jensen_ineq} end{eqnarray} ]

于是 ef{eq:wrong_way}可以发展出:

[l( heta) > sum_{i=1}^{N} sum_{c_i=1}^{M}P(c_i; heta)log P(x_i|c_i; heta) label{eq:stall} ]

然后就在这死循环了...只记得似乎要牵涉一个(Q(c_i))

Solution

赶紧爪机上下载pdf一睹为快...

Where goes wrong

原来在 ef{eq:wrong_way}就已经走偏了,而(Q(c_i))正是在那引入的:

[egin{eqnarray} l( heta) & = & sum_{i=1}^{N} log P(x_i; heta) onumber\ & = & sum_{i=1}^{N} log sum_{c_i=1}^{M} frac{P(x_i,c_i; heta)}{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; heta)}{Q(c_i)} label{eq:jensen_ineq_r} end{eqnarray} ]

**Note **
此处的(Q(c_i)) 应该假定为一个分布。

So

一个奇兵突起之处就在这里:对于 ef{eq:jensen_ineq_r},要使等号成立,需要对数项为常量:

[egin{equation} frac{P(x_i,c_i; heta)}{Q(c_i)} equiv c label{eq:constant} end{equation} ]

现在可以利用(Q(c_i))为分布的假定了,求取(Q(c_i)):

[egin{eqnarray} int cQ(c_i) & = & int P(x_i,c_i; heta) onumber\ c & = & P(x_i; heta) onumber\ Q(c_i) & = & P(c_i|x_i; heta) label{eq:expactation} end{eqnarray} ]

Maximization

最终目标是( heta^*),这一步通过最大化求解已经具有等于性质的 ef{eq:jensen_ineq_r}完成:

[egin{equation}label{eq:maximization} heta^* = mathop{argmax}_{ heta} sum_{i=1}^{N} sum_{c_i=1}^{M} Q(c_i) log frac{P(x_i,c_i; heta)}{Q(c_i)} end{equation} ]


15 Jul, 2017 记
这里要说明的是 ef{{eq:maximization}}中,分数线上下的两个( heta)是不一样的,*i.e.: *(Q(c_i)=Q(c_i| heta_n))( heta^*= heta_{n+1})

优化的证明

这里再说明一下如何证明这样的迭代具有优化作用。
首先有:

[egin{eqnarray} l( heta_{n+1}) & = & sum_{i=1}^{N}logsum_{c_i=1}^{M}frac{P(x_i,c_i; heta_{n+1})}{Q(c_i; heta_{n+1})}Q(c_i; heta_{n+1})label{eq:l_n+1}\ & ge & sum_{i=1}^{N}sum_{c_i=1}^{M}Q(c_i; heta_n)logfrac{P(x_i,c_i; heta_{n+1})}{Q(c_i; heta_n)} label{eq:greater_1}\ & ge& sum_{i=1}^{N}sum_{c_i=1}^{M}Q(c_i; heta_n)logfrac{P(x_i,c_i; heta_{n})}{Q(c_i; heta_n)} label{eq:greater_2}\ & = & sum_{i=1}^{N}logsum_{c_i=1}^{M}frac{P(x_i,c_i; heta_{n})}{Q(c_i; heta_{n})}Q(c_i; heta_{n})label{eq:l_n}\ & = & l( heta_n) end{eqnarray} ]

ef{eq:greater_1}能够成立的原因是(P(x_i,c_i; heta_{n+1})/Q(c_i; heta_n))不再(一定)为常数,而仅当为常数时有等号成立。
ef{eq:greater_2}由极大化得到;当(log)操作的结果再次成为常数时, ef{eq:l_n}成立。


Review

一些tricks很值得回味...

EM成功的关键

  1. 类变量的引入。显然,没有auxiliary变量的引入,就不能使用Jensen inequality,所以这很关键。然而更有意思的,是这与通常要进行classification问题正好契合了其中的class变量。
  2. 分布函数的假定和常数设定。 很容易以为Jensen不等式是关键。但就像我在上面个走错的一样,这个不等式比较容易被想到。更重要的一步是equality hold,而这一步却是通过(Q(c_i))为分布函数的假定(和 ef{eq:constant}的设定一并)得到的。
    分布函数的假定,使得

[egin{equation} sum_{c_i=1}^{M}Q(c_i) =1 end{equation} ]

所以才有:

[egin{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) e 1)的话, ef{eq:key_hold}也就不能成立,这一点很有趣:) 。
而常数的设定,还可以使得(Q(c_i))能够被求解出来。

命名

似乎总是在完成之后才想起命名上的线索,但这里想强调的不是E(前文已经说过了)。回想之前对EM的印象,觉得似乎是不用求导的。然而看看命名就应该明白这是很显然的问题。

原文地址:https://www.cnblogs.com/chenyliang/p/6991274.html