aihot  2020-11-12 11:20:41  OpenCV |   查看评论   

  第一行是描述初始概率分布,其中,δ(x,y)为克罗奈克函数,当x=y时,δ(x,y)=1;否则δ(x,y)=0。这个其实很好理解,如果状态序列都有了,那什么样的初始概率分布最能拟合这个状态序列呢?当然是让初始概率分布中,状态序列里真实的那个初始状态作为初始状态的概率为1,其余的都是0了。

  第二个式子描述的是状态转移概率,同样的,状态序列都有了,就按照状态序列的结果去构造模型就好了。比如,状态序列中,si只转移到sj,那aij我们就定为100%,如果sj一次转移到了sk一次转移到了sl,那ajkajl的概率就都是50%好了。

  第三个式子描述的是符号发射概率,同样的思路,状态序列也有,观察序列也有,我们直接计算一下这两个序列所反映出来的实际符号发射概率是多少,然后把它们作为参数赋给模型就好了,这肯定是概率最大的情况。

  上面的想法看起来很好,但是关键问题是我们要处理的是隐马尔可夫模型,也就意味着我们是不知道状态序列Q的,所以没办法直接用这种最大似然估计。但是期望最大化算法(expection maximization,EM)可以用于这种含有隐变量的统计模型的最大似然估计。

  前面的《浅谈机器学习基础》和《浅谈深度学习基础》提到过最大似然估计、梯度上升/下降算法,现在又提到了期望最大化算法,那它们有什么区别呢?

  讲逻辑回归算法(LR)的时候我们就提到了最大似然估计,我们根据最大似然估计得到了目标函数,也即最大自然估计是一种求得目标函数的方法;而梯度上升/下降算法是一种最优化算法,在LR中,最大似然估计得到的目标函数就是由梯度上升算法进行优化的。

  EM与梯度上升/下降算法一样,也是一种最优化方法,用于优化目标函数,但区别就在于梯度上升/下降算法的『梯度』上,我们知道梯度实际上是偏导,梯度上升/下降算法实际上是根据不同维度上的偏导来决定参数的改变,但是EM并不求导,因为并不是所有的式子都是方便求导的。

  EM 算法是作为一种求参数极大似然估计的方法而被提出的,举个形象的例子,比如说食堂的大师傅炒了一份菜,要等分成两份给两个人吃,显然没有必要拿来天平一点一点的精确的去称分量,最简单的办法是先随意的把菜分到两个碗中,然后观察是否一样多,把比较多的那一份取出一点放到另一个碗中,这个过程一直迭代地执行下去,直到大家看不出两个碗所容纳的菜有什么分量上的不同为止。

  EM算法就是这样,假设我们估计知道A和B两个参数,在开始状态下二者都是未知的,并且知道了A的信息就可以得到B的信息,反过来知道了B也就得到了A。可以考虑首先赋予A某种初值,以此得到B的估计值,然后从B的当前值出发,重新估计A的取值,这个过程一直持续到收敛为止。

  如果将EM算法的思想应用于最大似然估计HMM模型的参数,其基本思想是,初始时随机地给模型的参数赋值(随意的给第一个同学打饭),该赋值遵循模型对参数的限制(饭的总量是一定的),例如,从某一状态出发的所有转移概率的和为1。给模型参数赋值以后,得到模型µ0,然后根据µ0可以得到模型中隐变量的期望值(剩下的饭给第二个同学),例如,从µ0得到从某一状态转移到另一状态的期望次数,用期望次数来替代我们不知道的实际状态转移次数,这样可以得到模型参数的新估计值,由此得到新的模型µ1(发现第二个同学饭多了,取一部分给第一个同学),然后不断迭代,直到参数收敛于最大似然估计值(两个同学饭一样多)。

  这种迭代爬山算法可以局部地使P(O|µ)最大化,HMM中具体实现这种EM方法的算法叫做Baum-Welch算法,也叫前向后向算法,下面我们详细介绍这种算法:

  这里我们引入这样一个变量ξt(i,j)ξt(i,j)是给定HMM的参数µ和观察序列O=O1O2...OT,在时间t位于状态si,时间t+1位于状态sj的概率。与前向变量和后向变量的定义很相近:

前向变量

前向变量

后向变量

后向变量

  那ξt(i,j)与前向变量和后向变量的关系是什么呢?首先是计算公式:

浅谈自然语言处理基础

 

 

除特别注明外,本站所有文章均为 赢咖4注册 原创,转载请注明出处来自浅谈自然语言处理基础(上)

留言与评论(共有 0 条评论)
   
验证码:
[lianlun]1[/lianlun]