机器学习 - 期望最大(EM)算法

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/weixin_37352167/article/details/86485136

机器学习 - 期望最大(EM)算法

  • 引述

    之前我们讲过 最大似然估计 与 最大后验概率估计,这两种方法都是根据已有的数据标签 y 对参数进行估计,适用于监督学习。但是当面对无监督学习时便无从下手,因为我们并不知道样本数据服从哪个类别标签的分布。而 期望最大(Expectation Maximization)法就可针对此种情况进行应用。

    EM 算法是一种迭代算法,用于含有 隐变量 的概率模型参数的极大似然估计,或极大后验概率估计(其中隐变量可视为类别标签)。我们可以将 EM 算法视为含有隐变量的概率模型参数的极大似然估计法。EM 算法的每次迭代由两步组成:E 步,求期望;M 步,求极大。

    稍微具体一点,EM 算法解决两个问题:

    (1)样本属于哪个分布;
    (2)并求出每一个分布的参数。

    下面看一个具体例子。

  • 引例

    问题:

    假设有 3 枚硬币 A、B、C. 这些硬币正面出现的概率分别为 π p q π、p、q .
    进行如下抛硬币的实验,在每一次实验中:

    (1)先抛硬币 A,根据其结果,正面选择硬币 B,反面选择硬币 C;
    (2)而后抛选出的硬币,出现正面记作 1,反面记作 0.

    独立重复试验 n 次(这里,n=10),最终结果为:1, 1, 0, 1, 0, 0, 1, 0, 1, 1

    扫描二维码关注公众号,回复: 5128759 查看本文章

    假设我们只能观测到结果 1 或 0,但无法观测硬币 A 的结果(即无法得知选择 B 或 C),问如何估计 3 硬币正面出现的概率 π p q π、p、q


    解:

    三硬币的模型可写做(一次实验):

    P ( y θ ) = z { B , C } P ( y , z θ ) = z { B , C } P ( z θ ) P ( y z , θ ) = π p y ( 1 p ) 1 y + ( 1 π ) q y ( 1 q ) 1 y \begin{aligned} P(y|θ) =& \sum_{z∈\{B,C\}}P(y,z|θ)=\sum_{z∈\{B,C\}}P(z|θ)P(y|z,θ)\\ =& πp^y(1-p)^{1-y}+(1-π)q^y(1-q)^{1-y}\\ \end{aligned}

    其中 y 是观测变量,表示实验结果 1 或 0;z 是隐变量,表示无法观测道德硬币 A 的结果; θ = ( π , p , q ) θ=(π,p,q) 是模型的参数。

    将观测数据表示为 Y=(y1,y2,…,yn),未观测数据表示为 Z=(z1,z2,…,zn),则观测数据的似然函数为:

    L ( y ; θ ) = j = 1 n P ( y j θ ) = j = 1 n [ π p y ( 1 p ) 1 y + ( 1 π ) q y ( 1 q ) 1 y ] L(y;θ)=\prod_{j=1}^{n}P(y_j|θ)=\prod_{j=1}^{n}[πp^y(1-p)^{1-y}+(1-π)q^y(1-q)^{1-y}]

    对数似然函数的极大似然估计为:

    θ = θ a r g   m a x L ( y ; θ ) \overline θ=\mathop{}_{θ}^{arg~max }L(y;θ)

    此问题是没有解析解的,只有通过迭代的方法求解。EM 方法就是可以用于求解这个问题的一种迭代算法。


    下面给出 EM 算法的 求解过程

    1)选取参数的初值,记作 θ ( 0 ) = ( π ( 0 ) , p ( 0 ) , q ( 0 ) ) θ^{(0)}=(π^{(0)},p^{(0)},q^{(0)})

    2)设第 i 次迭代的参数值为 θ ( i ) = ( π ( i ) , p ( i ) , q ( i ) ) θ^{(i)}=(π^{(i)},p^{(i)},q^{(i)}) ,则第 i+1 次的迭代如下:

    • E 步:计算在模型参数 π ( i ) , p ( i ) , q ( i ) π^{(i)},p^{(i)},q^{(i)} 下观测数据 y j y_j ,来自抛硬币 B 的概率:

      μ j ( i + 1 ) = π ( i ) ( p ( i ) ) y j ( 1 p ( i ) ) 1 y j π ( i ) ( p ( i ) ) y j ( 1 p ( i ) ) 1 y j + ( 1 π ) ( i ) ( q ( i ) ) y j ( 1 q ( i ) ) 1 y j μ_j^{(i+1)}=\frac{π^{(i)}(p^{(i)})^{y_j}(1-p^{(i)})^{1-y_j}}{π^{(i)}(p^{(i)})^{y_j}(1-p^{(i)})^{1-y_j} + (1-π)^{(i)}(q^{(i)})^{y_j}(1-q^{(i)})^{1-y_j}}

      (可以这样理解:硬币 B 与 硬币 C 都可以得到观测数据 yj,所以产生 yj 的概率为二者概率的和,要求结果来自硬币 B 的概率,就应用 硬币 B 的概率除以和。)

    • M 步:计算模型参数的新估计值:

      (1) π ( i + 1 ) = 1 n j = 1 n μ j ( i + 1 ) π^{(i+1)}=\frac{1}{n}\sum_{j=1}^{n}μ_j^{(i+1)}

      (硬币 B 出现的概率等于硬币 A 正面出现的概率 π π ,所以对 10 次实验所得的 μ 求均值(期望)即得 π π


      (2) p ( i + 1 ) = j = 1 n μ j ( i + 1 ) y j j = 1 n μ j ( i + 1 ) p^{(i+1)}=\frac{\sum_{j=1}^{n}μ_j^{(i+1)}y_j}{\sum_{j=1}^{n}μ_j^{(i+1)}}

      (分母为选择硬币 B 的概率,分子为选择硬币 B 且抛硬币 B 的结果为 正的概率;也可认为分母为选择硬币 B 的次数,分子为选择硬币 B 且抛硬币 B 的结果为正的次数;二者相比可得硬币 B 出现正面的概率 p)


      (3) q ( i + 1 ) = j = 1 n [ 1 μ j ( i + 1 ) ] y j j = 1 n [ 1 μ j ( i + 1 ) ] q^{(i+1)}=\frac{\sum_{j=1}^{n}[1-μ_j^{(i+1)}]y_j}{\sum_{j=1}^{n}[1-μ_j^{(i+1)}]}

      (分母为选择硬币 C 的概率,分子为选择硬币 C 且抛硬币 C 的结果为 正的概率;也可认为分母为选择硬币 C 的次数,分子为选择硬币 C 且抛硬币 C 的结果为正的次数;二者相比可得硬币 C 出现正面的概率 q)


    根据观测结果 1, 1, 0, 1, 0, 0, 1, 0, 1, 1 进行代数计算:

    • 初始值 π ( 0 ) = 0.5 p ( 0 ) = 0.5 q ( 0 ) = 0.5 π^{(0)}=0.5,p^{(0)}=0.5,q^{(0)}=0.5

    • 第 1 次 迭代:

      E 步: μ j ( 1 ) = 0.5 μ_j^{(1)}=0.5

      M 步: π ( 1 ) = 0.5 p ( 1 ) = 0.6 q ( 1 ) = 0.6 π^{(1)}=0.5,p^{(1)}=0.6,q^{(1)}=0.6

    • 第 2 次 迭代:

      E 步: μ j ( 2 ) = 0.5 j = 1 , 2 , . . . , 10 μ_j^{(2)}=0.5,j=1,2,...,10

      M 步: π ( 2 ) = 0.5 p ( 2 ) = 0.6 q ( 2 ) = 0.6 π^{(2)}=0.5,p^{(2)}=0.6,q^{(2)}=0.6

    • 结果

      因为 ||θ21||<ξ,其中 ξ 为较小的正数,所以迭代停止,于是得到模型参数 θ 的极大似然估计:

      π = 0.5 p = 0.6 q = 0.6 π^*=0.5,p^*=0.6,q^*=0.6

    • 注意

      当初始值为 π ( 0 ) = 0.4 p ( 0 ) = 0.6 q ( 0 ) = 0.7 π^{(0)}=0.4,p^{(0)}=0.6,q^{(0)}=0.7 时,最终参数极大似然估计为: π = 0.4064 p = 0.5368 q = 0.6432 π^*=0.4064,p^*=0.5368,q^*=0.6432 ,说明 EM 算法是 初始值敏感 的。

  • 算法过程

    输入:观测变量数据 Y,隐变量 Z,联合分布 P(Y,Z|θ),条件分布 P(Z|Y,θ)

    输出:模型参数 θ

    • 选择参数的初值 θ(0),开始迭代

    • E 步:记 θ(i) 为第 i 次迭代参数 θ 的估计值,在第 i+1 次迭代的 E 步,计算:
      Q ( θ θ i ) = E z [ l o g P ( Y , Z θ ) Y , θ i ] = z l o g P ( Y , Z θ ) P ( Z Y , θ i ) \begin{aligned} Q(θ|θ^i)=&amp;E_z[log P(Y,Z|θ)|Y,θ^i]\\ =&amp;\sum_{z}logP(Y,Z|θ)P(Z|Y,θ^i) \end{aligned}

      其中, P ( Z Y , θ ( i ) ) P(Z|Y,θ^{(i)}) 是在给定观测数据 Y 和当前参数估计 θ(i) 下隐变量数据 Z 的条件概率分布。

    • M 步:求使 Q ( θ θ i ) Q(θ|θ^i) 极大化的 θ,确定第 i+1 次迭代的参数的估计值 θi+1

      θ i + 1 = θ a r g m a x Q ( θ θ i ) θ^{i+1}=\mathop{}_{θ}^{arg max}Q(θ|θ^i)

    • 重复 E 步与 M 步,直到收敛,停止条件 θ 2 θ 1 &lt; ξ 1 Q ( θ θ i + 1 ) Q ( θ θ i ) &lt; ξ 2 ξ 1 ξ 2 ||θ^2-θ^1||&lt;ξ_1,或 ||Q(θ|θ^{i+1})-Q(θ|θ^i)||&lt;ξ_2,其中 ξ_1,ξ_2 为较小的正数

    其中 Q ( θ θ i ) Q(θ|θ^i) 是 EM 算法的核心,称为 Q 函数。

    • Q 函数定义:对数似然函数 P(Z|Y,θ) 关于在给定观测数据 Y 和当前参数 θ(i) 下对隐变量数据 Z 的条件概率分布 P(Z|Y,θi) 的期望称为 Q 函数,即:

      Q ( θ θ i ) = E z [ l o g P ( Y , Z θ ) Y , θ i ] Q(θ|θ^i)=E_z[log P(Y,Z|θ)|Y,θ^i]

  • 过程推导

    对于含有隐变量的概率模型,目标是极大化观测数据 Y 关于参数 θ 的对数似然函数,即极大化:

    L ( θ ) = l o g P ( Y θ ) = l o g z P ( Y , Z θ ) = l o g z P ( Y Z , θ ) P ( Z θ ) \begin{aligned} L(θ)=&amp;log P(Y|θ)=log\sum_{z}P(Y,Z|θ)\\ =&amp;log\lgroup\sum_{z}P(Y|Z,θ)P(Z|θ)\rgroup\\ \end{aligned}


    要对其进行极大似然估计,其困难点在于包含 未观测数据 以及包含 和的对数

    而 EM 算法是通过迭代逐步近似极大化 L(θ) 的。我们希望后一次的估计值 θ(i+1) 能使 L(θ) 增加,即 L(θ(i+1)) > L(θ(i)),并逐步达到极大值。所以我们可以考虑两次的差值:

    L ( θ i + 1 ) L ( θ i ) = l o g z P ( Y Z , θ i + 1 ) P ( Z θ i + 1 ) l o g z P ( Y Z , θ i ) P ( Z θ i ) L(θ^{i+1})-L(θ^{i})=log\lgroup\sum_{z}P(Y|Z,θ^{i+1})P(Z|θ^{i+1})\rgroup-log\lgroup\sum_{z}P(Y|Z,θ^{i})P(Z|θ^{i})


    利用 Jensen 不等式: l o g j λ j y j j λ j l o g y j λ j 0 j λ j = 1 log\sum_{j}λ_jy_j\ge\sum_{j}λ_jlogy_j,其中 λ_j\ge0,\sum_{j}λ_j=1

    L ( θ i + 1 ) L ( θ i ) = log z P ( Y , Z θ i + 1 ) l o g z P ( Y , Z θ i ) = log z P ( Y , Z θ i + 1 ) P ( Y , Z θ i ) = log z P ( Z Y , θ i ) P ( Y , Z θ i + 1 ) P ( Z Y , θ i ) P ( Y , Z θ i ) z P ( Z Y , θ i ) log P ( Y , Z θ i + 1 ) P ( Z Y , θ i ) P ( Y , Z θ i ) \begin{aligned} L(θ^{i+1})-L(θ^{i})=&amp;\log\sum_{z}P(Y,Z|θ^{i+1})-log\sum_{z}P(Y,Z|θ^i)\\ =&amp;\log\lgroup\sum_{z}\frac{P(Y,Z|θ^{i+1})}{P(Y,Z|θ^i)}\rgroup\\ =&amp;\log\lgroup \sum_{z}P(Z|Y,θ^{i})\frac{P(Y,Z|θ^{i+1})}{P(Z|Y,θ^{i})P(Y,Z|θ^i)}\rgroup\\ \ge&amp;\sum_{z}P(Z|Y,θ^{i}) \log \frac{P(Y,Z|θ^{i+1})}{P(Z|Y,θ^{i})P(Y,Z|θ^i)}\\ \end{aligned}


    J ( θ i + 1 , θ i ) = L ( θ i ) + z P ( Z Y , θ ( i ) ) log P ( Y , Z θ i + 1 ) P ( Z Y , θ ( i ) ) P ( Y , Z θ i ) J(θ^{i+1},θ^{i})=L(θ^{i})+\sum_{z}P(Z|Y,θ^{(i)}) \log \frac{P(Y,Z|θ^{i+1})}{P(Z|Y,θ^{(i)})P(Y,Z|θ^i)}

    L ( θ i + 1 ) J ( θ i + 1 , θ i ) L(θ^{i+1})\ge J(θ^{i+1},θ^{i})


    所以此时函数 J ( θ i + 1 , θ i ) J(θ^{i+1},θ^i) 相当于 L ( θ i + 1 ) L(θ^{i+1}) 的一个下界,且 L ( θ i ) = J ( θ i , θ i ) L(θ^i) = J(θ^i,θ^i) ,所以,任何可以使 J ( θ i + 1 , θ i ) J(θ^{i+1},θ^i) 增大的 θ,也可以使 L ( θ ) L(θ) 增大。为了使 L ( θ ) L(θ) 有尽可能大的增长,选择 θi+1 使 J ( θ i + 1 , θ i ) J(θ^{i+1},θ^i) 达到,即

    θ i + 1 = θ a r g m a x J ( θ i + 1 , θ i ) θ^{i+1}=\mathop{}_{θ}^{arg max}J(θ^{i+1},θ^i)


    J ( θ i + 1 , θ i ) J(θ^{i+1},θ^i) 中对于 θi+1 是常数的项省去:

    θ i + 1 = z P ( Z Y , θ ( i ) ) P ( Y , Z θ i + 1 ) = θ a r g m a x Q ( θ i + 1 θ i ) \begin{aligned} θ^{i+1}=&amp;\sum_{z}P(Z|Y,θ^{(i)})P(Y,Z|θ^{i+1})\\ =&amp;\mathop{}_{θ}^{arg max}Q(θ^{i+1}|θ^i) \end{aligned}

    也就是说,极大化 Q 函数相当于极大化两次迭代的对数似然函数 L ( θ i + 1 ) L ( θ i ) L(θ^{i+1})-L(θ^{i}) 的差值,也就相当于在逐步近似最大化 L ( θ ) L(θ) .

    且等价于 EM 算法中的一次迭代。

    • 一种形式化地理解

      EM 的算法的过程,相当于:

      先固定 θold,调整 Q 函数使下界上升至 L ( θ ) L(θ) 的值;然后固定 Q 函数,调整 θ 使下届达到最大值,此时为新的 θ;而后重复上面两步,直至收敛。

    • 混合模型

      混合模型是由多个参数不同的相似分布函数(称为分模型)组成(相当于多个盒子),且每个分模型对应一个概率(相当于各盒子被选择的概率)。首先根据概率选出分模型(选出隐变量),而后依据分模型自身的概率分布生成观测,进行多次以生成观测序列。

    • 极大-极大算法(广义EM算法,GEM)

      由 Q 函数以及隐变量 z 的分布的熵构成 F 函数,首先固定 θ 以极大化 F 函数,而后固定隐变量 z 的分布以极大化 F 函数。

猜你喜欢

转载自blog.csdn.net/weixin_37352167/article/details/86485136