HMM(参数训练无监督方法EM)
2016-07-07 11:02
267 查看
隐马尔可夫事实上是一个含有隐变量的概率模型
P(O|λ)=∑IP(O,I|λ)P(I|λ)
它的训练可以用EM算法(上文已讲)
1、首先确定完全数据的对数似然函数,即p(O,I|λ)
2、E-step:完全数据的期望,即Q函数Q(λ,λ¯)
Q(λ,λ¯)=∑IlogP(O,I|λ)p(O,I|λ¯)
其中logP(O,I|λ)=πi1bi1(o1)ai1i2....aiT−1iTbiT(oT)
则Q函数可以写成
Q(λ,λ¯)=∑IlogP(O,I|λ)p(O,I|λ¯)
=∑Ilogπi1p(O,I|λ¯)
+∑I⟮∑T−1t=1logaitit+1p(O,I|λ¯)⟯
+∑I⟮∑Tt=1logbit(ot)p(O,I|λ¯)⟯
3、M-step:极大化Q函数
我们首先对上式等号右边第一项处理:
∑Ilogπi1p(O,I|λ¯)=∑Ni=1logπip(O,i1=|λ¯)
其中πi满足∑Ni=1πi=1,利用拉格朗日乘子法,写出拉格朗日函数:
F(π,λ)=∑Ni=1logπip(O,i1=|λ¯)+λ⟮∑Ni=1πi−1⟯
对πi求偏导数,且令它为0,得到P(O,ii=i|λ¯)+γπi=0
对πi求和,得到γ=−P(O|λ¯)得到πi=P(O,ii=i|λ)P(O|λ¯)
我们队第二项处理
同上,最终得到αij=∑T−1t=1P(O,it=i,it+1=j|λ¯)∑T−1t=1P(O,it=i|λ¯
根据上节讲述的前向后向求概率。αij=∑T−1t=1ζt(i,j)∑T−1t=1γt(i)
我们对第三项处理
bj(k)=∑Tt−1P(O,it=j|λ¯)I(ot=vk)∑Tt−1P(O,it=j|λ¯)=∑Tt=1γt(i)∗I(ot=vk)∑Tt=1γt(i)
4、算法,即初始化参数,ME求参数,迭代直至次数或收敛(EM是可收敛的)
-
P(O|λ)=∑IP(O,I|λ)P(I|λ)
它的训练可以用EM算法(上文已讲)
1、首先确定完全数据的对数似然函数,即p(O,I|λ)
2、E-step:完全数据的期望,即Q函数Q(λ,λ¯)
Q(λ,λ¯)=∑IlogP(O,I|λ)p(O,I|λ¯)
其中logP(O,I|λ)=πi1bi1(o1)ai1i2....aiT−1iTbiT(oT)
则Q函数可以写成
Q(λ,λ¯)=∑IlogP(O,I|λ)p(O,I|λ¯)
=∑Ilogπi1p(O,I|λ¯)
+∑I⟮∑T−1t=1logaitit+1p(O,I|λ¯)⟯
+∑I⟮∑Tt=1logbit(ot)p(O,I|λ¯)⟯
3、M-step:极大化Q函数
我们首先对上式等号右边第一项处理:
∑Ilogπi1p(O,I|λ¯)=∑Ni=1logπip(O,i1=|λ¯)
其中πi满足∑Ni=1πi=1,利用拉格朗日乘子法,写出拉格朗日函数:
F(π,λ)=∑Ni=1logπip(O,i1=|λ¯)+λ⟮∑Ni=1πi−1⟯
对πi求偏导数,且令它为0,得到P(O,ii=i|λ¯)+γπi=0
对πi求和,得到γ=−P(O|λ¯)得到πi=P(O,ii=i|λ)P(O|λ¯)
我们队第二项处理
同上,最终得到αij=∑T−1t=1P(O,it=i,it+1=j|λ¯)∑T−1t=1P(O,it=i|λ¯
根据上节讲述的前向后向求概率。αij=∑T−1t=1ζt(i,j)∑T−1t=1γt(i)
我们对第三项处理
bj(k)=∑Tt−1P(O,it=j|λ¯)I(ot=vk)∑Tt−1P(O,it=j|λ¯)=∑Tt=1γt(i)∗I(ot=vk)∑Tt=1γt(i)
4、算法,即初始化参数,ME求参数,迭代直至次数或收敛(EM是可收敛的)
- -
-
相关文章推荐
- 书评:《算法之美( Algorithms to Live By )》
- 动易2006序列号破解算法公布
- C#递归算法之分而治之策略
- Ruby实现的矩阵连乘算法
- C#插入法排序算法实例分析
- C#算法之大牛生小牛的问题高效解决方法
- C#算法函数:获取一个字符串中的最大长度的数字
- 超大数据量存储常用数据库分表分库算法总结
- C#数据结构与算法揭秘二
- C#冒泡法排序算法实例分析
- 算法练习之从String.indexOf的模拟实现开始
- C#算法之关于大牛生小牛的问题
- C#实现的算24点游戏算法实例分析
- 经典排序算法之冒泡排序(Bubble sort)代码
- c语言实现的带通配符匹配算法
- 浅析STL中的常用算法
- 算法之排列算法与组合算法详解
- C++实现一维向量旋转算法
- Ruby实现的合并排序算法
- C#折半插入排序算法实现方法