文章目录
- 1 隐马尔科夫模型定义
- 2 概率计算算法
- 2.1 前向概率
- 2.2 概率计算
- 3 学习算法
- 3.1 EM算法
- 3.2EM在HMM
- 4 预测算法
1 隐马尔科夫模型定义
隐马尔科夫模型是一个seq2seq模型。例如词性标注。
时间序列 | t1 | t2 | t3 |
---|---|---|---|
状态序列 | 代词 | 动词 | 名词 |
观察序列 | 我 | 爱 | 机器学习 |
能够看到的,例如词语是观察序列。看不到的部分是状态序列,例如词性。
状态集合:Q={q1,q2,...qN}Q=\{q_1,q_2,...q_N\}Q={q1,q2,...qN},∣Q∣=N|Q|=N∣Q∣=N
观察集合:V={v1,v2,...vM}V=\{v_1,v_2,...v_M\}V={v1,v2,...vM},∣V∣=M|V|=M∣V∣=M
强定义:状态是观测不到的,类比于心理活动。观察是可以看到的,类比于面部表情。
状态序列:I={i1,i2,...it...iT}I=\{i_1,i_2,...i_t...i_T\}I={i1,i2,...it...iT}, it∈Qi_t\in Qit∈Q, (t=1,2,…T)
观察序列:O={o1,o2,...ot,....oT}O=\{o_1,o_2,...o_t,....o_T\}O={o1,o2,...ot,....oT}, oi∈Vo_i\in Voi∈V, (t=1,2,…T)
- 序列与集合是不同的。序列中的元素是有前后顺序的。
- 总的时刻用T表示
- 强定义:每个时刻的观察只与这个时刻的状态有关系。(心理活动影响了面部表情)
状态转移矩阵:是从一个状态转移到另外一个状态的概率。例如从代词转到动词的概率。A=[aij]N∗NA=[a_{ij}]_{N*N}A=[aij]N∗N,表示从状态i到状态j的转换概率。在t时刻,处于状态qiq_iqi条件下,在t+1时刻,转移到状态qjq_jqj的概率aij=P(it+1=qj∣it=qi)a_{ij}=P(i_{t+1}=q_j|i_t=q_i)aij=P(it+1=qj∣it=qi)
观测概率矩阵:B=[bj(k)]N∗MB=[b_{j}(k)]_{N*M}B=[bj(k)]N∗M。在t时刻处于状态qjq_jqj下生成观测vkv_kvk的概率bj(k)=P(ot=vk∣it=qj)b_j(k)=P(o_t=v_k|i_t=q_j)bj(k)=P(ot=vk∣it=qj)
初始概率向量:π=(πi)\pi=(\pi_i)π=(πi),在t=1的时刻,状态处于qiq_iqi的概率。πi=P(i1=qi)\pi_i=P(i_1=q_i)πi=P(i1=qi),π\piπ是一个N维向量。
隐马尔科夫模型:λ=(A,B,π)\lambda = (A,B,\pi)λ=(A,B,π)
以上可以成立的假设是:
1 ⻬次⻢尔科夫性假设:在任意时刻t的状态只依赖于t-1时刻的状态。
P(it∣it−1,,ot−1,...i1,o1)=P(it∣it−1)P(i_t|i_{t-1,},o_{t-1},...i_1,o_1)=P(i_t|i_{t-1})P(it∣it−1,,ot−1,...i1,o1)=P(it∣it−1)
2 观测独立性假设:任意时刻t的观测只与t时刻的状态有关。
P(ot∣it,it−1...i1,ot−1,ot−2...o1)=P(ot∣it)P(o_t|i_t,i_{t-1}...i_1,o_{t-1},o_{t-2}...o_1)=P(o_t|i_{t})P(ot∣it,it−1...i1,ot−1,ot−2...o1)=P(ot∣it)
观测序列生成算法
输入:隐马尔科夫模型λ=(A,B,π)\lambda=(A,B,\pi)λ=(A,B,π),观测序列长度T
输出:观测序列O=o1,o2,...,oTO={o_1,o_2,...,o_T}O=o1,o2,...,oT
HMM三个问题
1 概率计算,已知λ=(A,B,π)\lambda=(A,B,\pi)λ=(A,B,π)和O=o1,o2,...,oTO={o_1,o_2,...,o_T}O=o1,o2,...,oT,计算P(O∣λ)P(O|\lambda)P(O∣λ)
在模型已知的情况下,出现观测序列的概率
2 学习:已知O=o1,o2,...,oTO={o_1,o_2,...,o_T}O=o1,o2,...,oT,计算λ∗=argmaxP(O∣λ)\lambda^{*}= argmax P(O|\lambda)λ∗=argmaxP(O∣λ)
已知观测序列,计算模型,计算得到的模型应该是使得观测序列的概率最大。
3 预测/编码问题:已知λ=(A,B,π)\lambda=(A,B,\pi)λ=(A,B,π)和O=o1,o2,...,oTO={o_1,o_2,...,o_T}O=o1,o2,...,oT,计算I∗=argmaxP(I∣Oλ)I^*=argmaxP(I|O\lambda)I∗=argmaxP(I∣Oλ)
已知模型和观测序列,计算概率最大的状态序列。
2 概率计算算法
2.1 前向概率
给定模型λ\lambdaλ,时刻t部分观测序列为o1,o2,...,oto_1,o_2,...,o_to1,o2,...,ot且状态为qiq_iqi的概率
递推公式:
这一步是简写,用O1tO^t_1O1t 表示从1到t时刻的观察序列。
当it=qii_t=q_iit=qi的时候,在t−1t-1t−1时刻的状态可能为q1,q2,...qNq_1,q_2,...q_Nq1,q2,...qN,那么P(it=qi)=P(it=qi∣it−1=q1)+P(it=qi∣it−1=q2)+...+P(it=qi∣it−1=qN)P(i_t=q_i)=P(i_t=q_i|i_{t-1}=q_1)+P(i_t=q_i|i_{t-1}=q_2)+...+P(i_t=q_i|i_{t-1}=q_N)P(it=qi)=P(it=qi∣it−1=q1)+P(it=qi∣it−1=q2)+...+P(it=qi∣it−1=qN),根据加法公式得到这一步递推。
这一步利用的是乘法公式:P(AB)=P(A|B)P(B)
在这里A=it=qi,oti_t=q_i,o_tit=qi,ot,B=it−1=qj,o1t−1i_{t-1}=q_j,o^{t-1}_1it−1=qj,o1t−1
根据定义P(it−1=qj,o1t−1)=αt−1(j)P(i_{t-1}=q_j,o^{t-1}_1)=\alpha_{t-1}(j)P(it−1=qj,o1t−1)=αt−1(j)
能够省略公式中的o1t−1o^{t-1}_1o1t−1是因为假设,t时刻的状态只与t-1时刻的状态有关,t时刻的观察只与t时刻的状态有关。所以可以去掉。
这里同样是利用乘法规则做变换。:P(AB)=P(A|B)P(B)
在这里A=oto_tot,B=it=qii_{t}=q_iit=qi
这一步替换是根据A方程和B方程的定义来的。
2.2 概率计算
具体计算过程可以通过前向或者后向计算得到。
3 学习算法
已知O=o1,o2,...,oTO={o_1,o_2,...,o_T}O=o1,o2,...,oT,计算λ∗=argmaxP(O∣λ)\lambda^{*}= argmax P(O|\lambda)λ∗=argmaxP(O∣λ)
已知观测序列,计算模型,计算得到的模型应该是使得观测序列的概率最大。
EM算法是一个一般算法,涉及两类数据,一类数据已知,一类数据未知的时候,可以用EM。
3.1 EM算法
EM算法中观测变量Y 对应 观测序列
EM算法中隐随机变量Z 对应 状态序列
含有隐变量 的概率模型,⽬标是极⼤化观测变量 关于参数 的对数似然函数,即maxθL(θ)max_{\theta}L(\theta)maxθL(θ)
其中
L(θ)=logP(Y∣θ)L(\theta)=logP(Y|\theta)L(θ)=logP(Y∣θ)
=log∑ZP(Y,Z∣θ)=log\sum_ZP(Y,Z|\theta)=log∑ZP(Y,Z∣θ)(边缘概率到联合概率)
=log∑ZP(Y∣Z,θ)P(Z∣θ)=log\sum_ZP(Y|Z,\theta)P(Z|\theta)=log∑ZP(Y∣Z,θ)P(Z∣θ) (乘法规则)
对数似然函数𝐿 (𝜃)与第𝑖次迭代后的对数似然函数L(θ(i))L(\theta^{(i)})L(θ(i))的差 :
根据Jensen不等式
将上面的式子做以下变形,
得到:L(θ)>=B(θ,θ(i))L(\theta)>=B(\theta,\theta^{(i)})L(θ)>=B(θ,θ(i)),B(θ,θ(i))B(\theta,\theta^{(i)})B(θ,θ(i))是一个下界函数。如果不断找到下界函数的最大值,就近似找到了上界函数的最大值。
记Q=argmaxθ(∑ZP(Z∣Y,θ(i))logP(Y,Z∣θ))Q=arg max_{\theta}(\sum_ZP(Z|Y,\theta^{(i)})logP(Y,Z|\theta))Q=argmaxθ(∑ZP(Z∣Y,θ(i))logP(Y,Z∣θ))
3.2EM在HMM
对于HMM而言
θ\thetaθ就是(A,B,π)
Z就是状态序列I
Y就是观测序列O
隐马尔科夫模型是含有隐变量的概率模型:P(O∣λ)=∑P(O∣I,λ)P(I∣λ)P(O|\lambda)=\sum P(O|I,\lambda)P(I|\lambda)P(O∣λ)=∑P(O∣I,λ)P(I∣λ)
完全数据(O,I)=(o1,o2...oT,i1,i2,...iT)(O,I)=(o_1,o_2...o_T,i_1,i_2,...i_T)(O,I)=(o1,o2...oT,i1,i2,...iT)
完全数据的对数似然函数logP(O,I∣λ)logP(O,I|\lambda)logP(O,I∣λ)
Q(λ,λ−)Q(\lambda,\lambda^-)Q(λ,λ−)函数
使用Baum-Welch算法完成学习过程。
4 预测算法
已知λ=(A,B,π)\lambda=(A,B,\pi)λ=(A,B,π)和O=o1,o2,...,oTO={o_1,o_2,...,o_T}O=o1,o2,...,oT,计算I∗=argmaxP(I∣Oλ)I^*=argmaxP(I|O\lambda)I∗=argmaxP(I∣Oλ)
已知模型和观测序列,计算概率最大的状态序列。
在时刻𝑡状态为𝑖的所有单个路径(𝑖1, 𝑖2, ⋯ , 𝑖𝑡)中概率最⼤值
得到递推公式:
这是一个动态规划的过程。在求得δT(i)\delta_{T}(i)δT(i)取得最大概率的i,经过倒推获得整个I序列。