离开EM接近一年了,昨晚的PR课继续保持了沉闷的风格,于是打算推一遍...结果半路卡住了。先看看走到哪一步了,然后借了Ng的lecture才解脱(去年也是找到这本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成功的关键
- 类变量的引入。显然,没有auxiliary变量的引入,就不能使用Jensen inequality,所以这很关键。然而更有意思的,是这与通常要进行classification问题正好契合了其中的class变量。
- 分布函数的假定和常数设定。 很容易以为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的印象,觉得似乎是不用求导的。然而看看命名就应该明白这是很显然的问题。