zoukankan      html  css  js  c++  java
  • 机器学习模型之EM算法

    1、EM算法

    EM算法是针对含有隐变量的一种优化算法,如果不含有隐变量,我们可以直接利用极大似然估计方法,对需要优化的变量求导,用梯度下降的方法进行参数的更新。而当变量中含有隐变量时,就无法用极大似然估计方法,就需要用到EM算法进行迭代的求解,EM算法分为两步,第一步是E步,即得到隐变量的期望,第二步是M步,即需要更新需要优化的参数。公式如下所示

    • step1:E步

    [Q( heta, heta^{i}) = sumlimits_{Z} P(Z | Y, heta^{i}) log P(Y , Z| heta) ]

    第一步是求期望,这里的期望是对隐变量的期望,这里,我们首先根据先验知识获得( heta^{i}),这样我们便可以得到(P(Z | Y, heta^{i})),这个公式表示在已知( heta^{i})的情况下,我们通过样本数据得到在每一个隐变量上的概率值,通过该概率值,便可以求出(P(Y , Z| heta)),但是这里的( heta)是未知变量,我们进而对( heta)进行求导,并令求导公式等于0,得到更新的( heta^{i+1}),即M步。

    • step1:M步

    [ heta^{i+1} = mathop{argmax}_{ heta} Q( heta, heta^{i}) ]

    2、EM算法解释

    下面,我们来讲解EM算法是如何得出来的。首先,得到需要优化的函数

    [L( heta) = log P(Y | heta) \ = log sumlimits_{Z} P(Y,Z| heta) \ = log sumlimits_{Z} P(Z | heta) P(Y | Z, heta) ]

    接下来,我们定义

    [L( heta) - L( heta^{i}) = log sumlimits_{Z} P(Z | heta) P(Y | Z, heta) - log P(Y | heta^{i}) \ = log sumlimits_{Z} P(Z | Y, heta^{i}) frac {P(Z | heta) P(Y | Z, heta)} {P(Z | Y, heta^{i})} - log P(Y | heta^{i}) \ 根据jensen不等式可以得到 \ >= sumlimits_{Z} P(Z | Y, heta^{i}) log frac {P(Z | heta) P(Y | Z, heta)} {P(Z | Y, heta^{i})} - log P(Y | heta^{i}) \ = sumlimits_{Z} P(Z | Y, heta^{i}) log frac {P(Z | heta) P(Y | Z, heta)} {P(Z | Y, heta^{i}) P(Y | heta^{i})} ]

    我们令

    [B( heta, heta^{i}) = L( heta^{i}) + sumlimits_{Z} P(Z | Y, heta^{i}) log frac {P(Z | heta) P(Y | Z, heta)} {P(Z | Y, heta^{i}) P(Y | heta^{i})} \ 则 L( heta) >= B( heta, heta^{i}) ]

    在什么时候(L( heta))(B( heta, heta^{i}))两者相等呢?其实在(L( heta^{i})=B( heta^{i}, heta^{i}))时两者相等,即在( heta= heta^{i})的时候两者相等,由这个等式可知,(L( heta^{i}))(B( heta^{i}, heta^{i}))同增同减,那么我们只需要最大化(B( heta, heta^{i}))就可以更新( heta)了,即

    [ heta^{i+1} = mathop{argmax}_{ heta} B( heta, heta^{i}) \ = mathop{argmax}_{ heta} L( heta^{i}) + sumlimits_{Z} P(Z | Y, heta^{i}) log frac {P(Z | heta) P(Y | Z, heta)} {P(Z | Y, heta^{i}) P(Y | heta^{i})} \ = mathop{argmax}_{ heta} sumlimits_{Z} P(Z | Y, heta^{i}) log P(Z | heta) P(Y | Z, heta) \ = mathop{argmax}_{ heta} Q( heta, heta^{i}) ]

  • 相关阅读:
    2020-2021-01 20201230 《信息安全专业导论》第十一周学习总结
    2020-2021-01 20201230 《信息安全专业导论》第十周学习总结
    四则运算
    编程语言
    2020-2021-01 20201230 《信息安全专业导论》第九周学习总结
    2020-2021-01 20201230 《信息安全专业导论》第八周学习总结
    编程之路
    2020-2021-01 20201230 《信息安全专业导论》第七周学习总结
    进制转化
    密码算法及理论总结
  • 原文地址:https://www.cnblogs.com/stephen-goodboy/p/13067035.html
Copyright © 2011-2022 走看看