关于吴恩达老师的cs229讲义和视频与《统计学习方法》这本书上的EM算法,作为初学者,强烈建议只看前者,恐怕是我比较菜只看后者的话会有很多地方不明白,比如为什么似然函数不是 ∏ i = 1 n P ( y i ; θ ) \prod\limits_{i=1}^{n}P(y_i;\theta) i=1∏nP(yi;θ)而是 P ( Y ) P(Y) P(Y)呢?导致后面的收敛性证明也有这样的疑问,为什么后面EM应用高斯那部分的E步的Q函数成了那样?想破了脑子也想不清楚。如果看cs229的话,很容易理解,但是推导我更喜欢后者的推导,关于推导我补充了我认为缺少的那部分,参考EM算法推导。接下来对两者的EM算法进行简单比较。
说明:下面的 p θ ( ) 和 p ( ; θ ) p_\theta()和p(;\theta) pθ()和p(;θ)是一样的,只是写法不同,都只是表示模型参数是 θ \theta θ而已。
1、EM算法比较
1.1、《统计学习方法》之EM算法流程
输入:观测数据
Y
Y
Y,联合分布
P
(
Y
,
Z
;
θ
)
P(Y,Z;\theta)
P(Y,Z;θ),条件分布
P
(
Z
∣
Y
;
θ
)
P(Z|Y;\theta)
P(Z∣Y;θ)
输出:模型参数
θ
\theta
θ
(1)、选择参数的初始值
θ
0
\theta_0
θ0开始进行迭代;
(2)、E(Expection)步:记第n次迭代参数为
θ
n
\theta_n
θn,那么计算
n
+
1
n+1
n+1次的E步
Q ( θ ∣ θ n ) = ∑ i = 1 n ∑ z p θ n ( z ∣ y i ) l n p θ ( y i , z ) Q(\theta|\theta_n)=\sum\limits_{i=1}^{n} \sum\limits_{z}p_{\theta_n}(z|y_i)ln^{p_\theta(y_i,z)} Q(θ∣θn)=i=1∑nz∑pθn(z∣yi)lnpθ(yi,z)
(3)、M(Maximization)步:求使得 Q ( θ ∣ θ n ) Q(\theta|\theta_n) Q(θ∣θn)最大化的 θ n + 1 \theta_{n+1} θn+1,即确定第 n + 1 n+1 n+1次的模型参数
θ n + 1 = arg max θ Q ( θ ∣ θ n ) \theta_{n+1}=\arg\max\limits_{\theta}Q(\theta|\theta_n) θn+1=argθmaxQ(θ∣θn)
(4)、重复(2),(3)直到收敛。
注意:上面这个EM算法是本人对原有的EM算法的 Q Q Q函数进行了修改的,加了最外层的 ∑ i = 1 n \sum\limits_{i=1}^{n} i=1∑n,同时这个Q函数就跟cs229讲义上的Q函数一样了。 E步是写出 Q Q Q函数,在后面的高斯混合模型中可以看到,使用该EM算法是先求出Q函数,也就是先求出联合分布 p ( y , z ) p(y,z) p(y,z),接着写出似然函数最后求期望得到Q函数,在M步求使得函数极大化的 θ n + 1 \theta_{n+1} θn+1值作为下一次E步的 θ \theta θ值使用,如此循环下去直到收敛。
补充:书上的似然函数是下面这样的
Q ( θ , θ i ) = E Z [ l o g P ( Y , Z ∣ θ ) ∣ Y , θ i ] = ∑ Z l o g P ( Y , Z ∣ θ ) P ( Z ∣ Y , θ i ) Q(\theta,\theta^i)=E_{Z}[logP(Y,Z|\theta)|Y,\theta^i]\\=\sum\limits_{Z}logP(Y,Z|\theta)P(Z|Y,\theta^i) Q(θ,θi)=EZ[logP(Y,Z∣θ)∣Y,θi]=Z∑logP(Y,Z∣θ)P(Z∣Y,θi)
1.2、CS229之EM算法流程
注意:这里的 x x x和上面的 y y y都是只观察数据(显变量), z z z表示隐变量。在E步骤是初始给定了 θ 0 \theta_0 θ0作为初始参数值的,在上面没写出来。可以发现这个 Q i ( z ( i ) ) Q_i(z^{(i)}) Qi(z(i))跟前面的EM算法的 p θ n ( z ∣ y i ) p_{\theta_{n}}(z|y_i) pθn(z∣yi)是一样的,在M步也是求极大化。但是该算法在E不是对于每个i求后验概率,然后在M步直接带入所求得的后验概率来求极大化时的参数 θ n + 1 \theta_{n+1} θn+1。
补充:由于在M步中已经知道了 Q i ( z ( i ) ) Q_i(z^{(i)}) Qi(z(i)),也就是说 Q i ( z ( i ) ) Q_i(z^{(i)}) Qi(z(i))是常量,那么在求极大化时候我们求导会略掉,所以M步的公式可以写成 θ : = a r g max ∑ i ∑ z ( i ) Q i ( z ( i ) ) l o g p ( x ( i ) , z ( i ) ; θ ) \theta:=arg\max\sum\limits_{i}\sum\limits_{z^{(i)}}Q_i(z^{(i)})logp(x^{(i)},z^{(i)};\theta) θ:=argmaxi∑z(i)∑Qi(z(i))logp(x(i),z(i);θ),而 Q i ( z ( i ) ) = p θ n ( z ∣ y i ) Q_i(z^{(i)})=p_{\theta_{n}}(z|y_i) Qi(z(i))=pθn(z∣yi),所以可以写成 Q ( θ ∣ θ n ) = ∑ i = 1 n ∑ z p θ n ( z ∣ y i ) l n p θ ( y i , z ) Q(\theta|\theta_n)=\sum\limits_{i=1}^{n} \sum\limits_{z}p_{\theta_n}(z|y_i)ln^{p_\theta(y_i,z)} Q(θ∣θn)=i=1∑nz∑pθn(z∣yi)lnpθ(yi,z)。
到这里我想已经说清楚了两者的区别以及建议如果和我一样是初学者的话关于EM算法建议学cs229。最终我们的EM算法可以写成如下形式。
(1)、选择参数的初始值
θ
0
\theta_0
θ0开始进行迭代;
(2)、E(Expection)步:记第n次迭代参数为
θ
n
\theta_n
θn,那么计算
n
+
1
n+1
n+1次的E步,针对每个i计算条件概率
p θ n ( z ∣ y i ) p_{\theta_{n}}(z|y_i) pθn(z∣yi)
(3)、M(Maximization)步:求使得 Q ( θ ∣ θ n ) Q(\theta|\theta_n) Q(θ∣θn)最大化的 θ n + 1 \theta_{n+1} θn+1,即确定第 n + 1 n+1 n+1次的模型参数
Q
(
θ
∣
θ
n
)
=
∑
i
=
1
n
∑
z
p
θ
n
(
z
∣
y
i
)
l
n
p
θ
(
y
i
,
z
)
Q(\theta|\theta_n)=\sum\limits_{i=1}^{n} \sum\limits_{z}p_{\theta_n}(z|y_i)ln^{p_\theta(y_i,z)}
Q(θ∣θn)=i=1∑nz∑pθn(z∣yi)lnpθ(yi,z)
θ
n
+
1
=
arg
max
θ
Q
(
θ
∣
θ
n
)
\theta_{n+1}=\arg\max\limits_{\theta}Q(\theta|\theta_n)
θn+1=argθmaxQ(θ∣θn)
(4)、重复(2),(3)直到收敛。
2、EM算法收敛性证明
假设我们使用EM算法得到了一系列的 θ 1 , θ 2 , . . . , θ n . . . \theta_1,\theta_2,...,\theta_n... θ1,θ2,...,θn...,那么得到的似然函数值是否逐渐在增大呢?即证明 l ( θ j + 1 ) > l ( θ j ) l(\theta_{j+1})>l(\theta_j) l(θj+1)>l(θj)
l ( θ ) = ∑ i = 1 n l o g p ( y i ; θ ) = ∑ i = 1 n l o g p ( y i , z ; θ ) p ( z ∣ y i ; θ ) = ∑ i = 1 n l o g p ( y i , z ; θ ) − ∑ i = 1 n p ( z ∣ y i ; θ ) l(\theta)=\sum\limits_{i=1}^{n}logp(y_i;\theta)\\=\sum\limits_{i=1}^{n}log\frac{p(y_i,z;\theta)}{p(z|y_i;\theta)}\\=\sum\limits_{i=1}^{n}logp(y_i,z;\theta)-\sum\limits_{i=1}^{n}p(z|y_i;\theta) l(θ)=i=1∑nlogp(yi;θ)=i=1∑nlogp(z∣yi;θ)p(yi,z;θ)=i=1∑nlogp(yi,z;θ)−i=1∑np(z∣yi;θ)
因为 ∑ z p ( z ∣ y i ; θ j ) = 1 \sum\limits_{z}p(z|y_i;\theta_j)=1 z∑p(z∣yi;θj)=1,我们将他乘到上式中去,得到
l ( θ ) = ∑ i = 1 n l o g p ( y i ; θ ) = ∑ i = 1 n ∑ z p ( z ∣ y i ; θ j ) l o g p ( y i , z ; θ ) − ∑ i = 1 n ∑ z p ( z ∣ y i ; θ j ) l o g p ( z ∣ y i ; θ ) l(\theta)=\sum\limits_{i=1}^{n}logp(y_i;\theta)\\=\sum\limits_{i=1}^{n}\sum\limits_{z}p(z|y_i;\theta_j)logp(y_i,z;\theta)-\sum\limits_{i=1}^{n}\sum\limits_{z}p(z|y_i;\theta_j)logp(z|y_i;\theta) l(θ)=i=1∑nlogp(yi;θ)=i=1∑nz∑p(z∣yi;θj)logp(yi,z;θ)−i=1∑nz∑p(z∣yi;θj)logp(z∣yi;θ)
注意到第一项就是 Q ( θ ∣ θ j ) Q(\theta|\theta_j) Q(θ∣θj),将后一项记为 H ( θ ∣ θ j ) H(\theta|\theta_j) H(θ∣θj)
l ( θ j + 1 ) − l ( θ j ) = [ Q ( θ j + 1 ∣ θ j ) − Q ( θ j ∣ θ j ) ] − [ H ( θ j + 1 ∣ θ j ) − H ( θ j ∣ θ j ) ] l(\theta_{j+1})-l(\theta_j)=[Q(\theta_{j+1}|\theta_j)-Q(\theta_{j}|\theta_j)]-[H(\theta_{j+1}|\theta_j)-H(\theta_j|\theta_j)] l(θj+1)−l(θj)=[Q(θj+1∣θj)−Q(θj∣θj)]−[H(θj+1∣θj)−H(θj∣θj)]
对于前一项,由于 θ j + 1 = arg max θ Q ( θ ∣ θ j ) \theta_{j+1}=\arg\max\limits_{\theta}Q(\theta|\theta_j) θj+1=argθmaxQ(θ∣θj),所以 Q ( θ j + 1 ∣ θ j ) − Q ( θ j ∣ θ j ) > = 0 Q(\theta_{j+1}|\theta_j)-Q(\theta_{j}|\theta_j)>=0 Q(θj+1∣θj)−Q(θj∣θj)>=0
对于后一项:
H ( θ j + 1 ∣ θ j ) − H ( θ j ∣ θ j ) = ∑ i = 1 n ∑ z p ( z ∣ y i ; θ j ) l o g p ( z ∣ y i ; θ j + 1 ) p ( z ∣ y i ; θ j ) < = ∑ i = 1 n l o g ∑ z p ( z ∣ y i ; θ j ) p ( z ∣ y i ; θ j + 1 ) p ( z ∣ y i ; θ j ) = ∑ i = 1 n l o g ∑ z p ( z ∣ y i ; θ j + 1 ) = ∑ i = 1 n l o g 1 = 0 H(\theta_{j+1}|\theta_j)-H(\theta_j|\theta_j)\\=\sum\limits_{i=1}^{n}\sum\limits_{z}p(z|y_i;\theta_j)log\frac{p(z|y_i;\theta_{j+1})}{p(z|y_i;\theta_j)}\\<=\sum\limits_{i=1}^{n}log\sum\limits_{z}p(z|y_i;\theta_j)\frac{p(z|y_i;\theta_{j+1})}{p(z|y_i;\theta_j)}\\=\sum\limits_{i=1}^{n}log\sum\limits_{z}p(z|y_i;\theta_{j+1})\\=\sum\limits_{i=1}^{n}log1=0 H(θj+1∣θj)−H(θj∣θj)=i=1∑nz∑p(z∣yi;θj)logp(z∣yi;θj)p(z∣yi;θj+1)<=i=1∑nlogz∑p(z∣yi;θj)p(z∣yi;θj)p(z∣yi;θj+1)=i=1∑nlogz∑p(z∣yi;θj+1)=i=1∑nlog1=0
所以得到 l ( θ j + 1 ) − l ( θ j ) > = 0 l(\theta_{j+1})-l(\theta_j)>=0 l(θj+1)−l(θj)>=0,说明似然函数递增,而 l ( θ ) < = 1 l(\theta)<=1 l(θ)<=1,所以如果似然函数有上界那么必然会收敛到某一个值。