HMM学习笔记

目录

隐马尔可夫模型

Viterbi算法

马尔可夫性质

\{X(t),t\in T)\}是一个随机过程,E为其状态空间,若对于任意t_1<t_2<\cdots <t_n<t,任意的x_1,x_2,\cdots ,x_n,x\in E,随机变量X(t)在已知变量X(t_1)=x_1,\cdots X(t_{n})=x_{n}之下的条件分布函数只与X(t_{n})=x_{n}有关,而与X(t_1)=x_1,\cdots X(t_{n-1})=x_{n-1}无关,即条件分布函数满足下列等式,此性质称为马尔可夫行;如果随机过程满足马尔可夫性,则该过程称为马尔可夫过程

P(X(t) \le x| X(t_1) =x_1,......,X(t_n) =x_n)=P(X(t) \le x|X(t_n) =x_n)

P(X_{n+1}=x|X_1=x_1,\cdots ,X_n=x_n)=P(X_{n+1}=x|X_n=x_n)

马尔科夫链

  • 马尔可夫链是指具有马尔可夫性质的随机过程。在过程中,在给定当前信息的情况下,过去的信息状态对应预测将来的状态是无关的
  • 在马尔科夫链的每一步,系统根据概率分布,可以从一个状态变成另一个状态,也可以保持当前状态不变。状态的改变叫做转移,状态改变的相关概率叫做转移概率
  • 马尔可夫链中的三元素:状态空间S,转移概率矩阵P,初始概率分布\pi
  • 示意图

马尔科夫链案例

  • 设将天气状态分为晴,阴,雨三种状态,将顶某天的天气状态之和上一天的天气状态有关,状态使用1(晴),2(阴),3(雨)表示,状态概率矩阵P如下
今\明
0.750.1250.125
0.50.250.25
0.250.50.25

  • n+1天天气状态为j的概率为:

\pi(X_{n+1}=j)=\sum_{i=1}^{K}\pi(X_{n}=i)\cdot P(X_{n+1}=j|X_n=i)\Rightarrow {\pi}^{n+1}={\pi}^{n}\cdot P

  • 因此,矩阵P即为条件概率的转移矩阵
    • 矩阵的第i行元素表示,在上一个状态为i的时候的分布概率,即每行元素的和必须为1
  • 初始概率\pi=\begin{bmatrix} 0.5 & 0.3 & 0.2 \end{bmatrix},转移矩阵P=\begin{bmatrix} 0.75 & 0.125 & 0.125\\ 0.5 & 0.25 & 0.25\\ 0.25 & 0.5 & 0.25 \end{bmatrix}的计算过程
1CDE
2P0.750.1250.125
30.50.250.25
40.250.50.25
5
6
7第n天
8

0

\pi

0.50.30.2
91C2*C8+C3*D8+C4*E8=0.575D2*C8+D3*D8+D4*E8=0.2375E2*C8+E3*D8+E4*E8=0.1875
102C2*C9+C3*D9+C4*E9=0.5969D2*C9+D3*D9+D4*E9=0.225E2*C9+E3*D9+E4*E9=0.1781
113C2*C10+C3*D10+C4*E10=0.6047D2*C10+D3*D10+D4*E10=0.2199E2*C10+E3*D10+E4*E10=0.1754
124C2*C11+C3*D11+C4*E11=0.6073D2*C11+D3*D11+D4*E11=0.2183E2*C11+E3*D11+E4*E11=0.1744
135C2*C12+C3*D12+C4*E12=0.6082D2*C12+D3*D12+D4*E12=0.2177E2*C12+E3*D12+E4*E12=0.1741
146C2*C13+C3*D13+C4*E13=0.6085D2*C13+D3*D13+D4*E13=0.2175E2*C13+E3*D13+E4*E13=0.174
157C2*C14+C3*D14+C4*E14=0.6086D2*C14+D3*D14+D4*E14=0.2174E2*C14+E3*D14+E4*E14=0.1739
168C2*C15+C3*D15+C4*E15=0.6087D2*C15+D3*D15+D4*E15=0.2174E2*C15+E3*D15+E4*E15=0.1739
179C2*C16+C3*D16+C4*E16=0.6087D2*C16+D3*D16+D4*E16=0.2174E2*C16+E3*D16+E4*E16=0.1739
1810C2*C17+C3*D17+C4*E17=0.6087D2*C17+D3*D17+D4*E17=0.2174E2*C17+E3*D17+E4*E17=0.1739

HMM

  • 隐马尔可夫模型(Hidden Markov Model,HMM)是一种统计模型,在语音识别,行为识别,NLP,故障诊断等领域具有高效的性能
  • HMM是关于时序的概率模型,描述一个含有未知参数的马尔可夫链所生成的不可观测的状态随机序列,再由各个状态生成观测随机序列的过程。HMM是一个双重随机过程---具有一定状态的隐马尔可夫链和随机的观测序列。
  • HMM随机生成的状态随机序列被称为状态序列;每个状态生成一个观测,由此产生的观测随机序列,被称为观测序列。
  • HMM图

  • i_1,i_2,...,i_{n-1},i_{n},i_{n+1}是不可观测的状态,q_1,q_2,...,q_{n-1},q_{n},q_{n+1}是可观测的序列
  • i_1,i_2不可观测的情况下,在i_1确定的情况下q_1i_2独立,在i_1,i_2确定的情况下q_1q_2独立。
  • HMM由隐含状态S,可观测状态O,初始状态概率矩阵\pi,隐含状态转移矩阵A,可观测转移矩阵B(又称混淆矩阵,Confusion Matrix)
  •  \pi和A决定了状态序列,B决定了观测序列,因此HMM可以用三元符号表示,称为HMM的三元素

\lambda =(A,B,\pi)

HMM参数-A(隐含状态转移矩阵)

  • A是隐含状态转移矩阵:A={\begin{bmatrix} a_{ij} \end{bmatrix}}_{n\times n}=\begin{bmatrix} a_{11} & a_{12} & \cdots & a_{1n}\\ a_{21} & a_{22} & \cdots & a_{2n}\\ \vdots & \vdots & \ddots & \vdots\\ a_{n1} & a_{n2} & \cdots & a_{nn} \end{bmatrix}
  • 其中a_{ij}=p(i_{t+1}=s_j|t_i=s_i)
    • a_{ij}是在时刻t处于状态s_i的条件下时刻t+1转移到状态s_j的概率

HMM参数-B(可观测值转移概率矩阵)

  • B是可观测值转移概率矩阵:B={\begin{bmatrix} b_{ij} \end{bmatrix}}_{n\times m}=\begin{bmatrix} b_{11} & b_{12} & \cdots & b_{1m}\\ b_{21} & b_{22} & \cdots & b_{2m}\\ \vdots & \vdots & \ddots &\vdots\\ b_{n1} & b_{n2} & \cdots & b_{nm} \end{bmatrix}
  • 其中b_{ij}=p(q_t=o_j|i_t=s_i)
    • b_{ij}是在时刻t处于状态s_i的条件下生成观测值o_j的概率

HMM的两个基本性质

  • p(i_t|i_{t-1},q_{t-1},i_{t-2},q_{t-2},\cdots,i_{1},q_{1})=p(i_t|i_{t-1})
  • p(q_t|t_t,i_{t-1},q_{t-1},i_{t-2},q_{t-2},\cdots,i_{1},q_{1})=p(q_t|i_t)

HMM案列

  • 假设有三个盒子,编号为1,2,3;每个盒子都装有黑白两种颜色的小球,球的比例如下:
    编号白球黑球
    146
    282
    355
  • 按照下列规则的方式进行又放回的抽取小球,得到球颜色的观测序列:
    • 第一次随机从盒子1(选择概率0.2),盒子2(选择概率0.5),盒子3(选择概率0.3)中随机抽取一个小球,记录颜色后,放回盒子中
    • 按照以下规则重新随机抽取一个小球,记录颜色后,放回盒子中,重复该操作
      • 如果上一个球是从盒子1抽取的话,这次重新从盒子1(选择概率0.5),盒子2(选择概率0.4),盒子3(选择概率0.1)中随机抽取一个小球
      • 如果上一个球是从盒子2抽取的话,这次重新从盒子1(选择概率0.2),盒子2(选择概率0.2),盒子3(选择概率0.6)中随机抽取一个小球
      • 如果上一个球是从盒子3抽取的话,这次重新从盒子1(选择概率0.2),盒子2(选择概率0.5),盒子3(选择概率0.3)中随机抽取一个小球
    • 最终得到观测序列:白黑白白黑
  • 状态集合:S={盒子1,盒子2,盒子3}
  • 观测集合:O={白,黑}
  • 状态序列和观测序列的长度T=5
  • 初始概率分布\pi=\begin{bmatrix} 0.2\\ 0.5\\ 0.3 \end{bmatrix}

  • 状态转移概率矩阵A=\begin{bmatrix} 0.5 & 0.4 & 0.1\\ 0.2 & 0.2 & 0.6\\ 0.2 & 0.5 & 0.3 \end{bmatrix}
  • 观测概率矩阵B=\begin{bmatrix} 0.4 & 0.6\\ 0.8 & 0.2\\ 0.5 & 0.5 \end{bmatrix}
  • 思考
    • 在给定参数\lambda =(A,B,\pi)的时候,得到观测序列为白黑白白黑的概率是多少?

HMM的三个问题

  • 概率计算问题:直接-向前-向后算法
    • 给定模型\lambda =(A,B,\pi)和观测序列Q=\begin{Bmatrix} q_1,q_2,\cdots ,q_T \end{Bmatrix},计算模型\lambda下观测到序列Q出现的概率p(Q|\lambda )
  • 学习问题:Baum-Welch算法(状态未知)
    • 已知观测序列Q=\begin{Bmatrix} q_1,q_2,\cdots ,q_T \end{Bmatrix},估计计算模型\lambda =(A,B,\pi)的参数,是的在该模型下观测序列p(Q|\lambda )最大
  • 预测问题:Viterbi算法
    • 给定模型\lambda =(A,B,\pi)和观测序列Q=\begin{Bmatrix} q_1,q_2,\cdots ,q_T \end{Bmatrix},求给定观测序列条件概率p=(I|Q,\lambda )最大的状态序列I=\begin{bmatrix} i_1,i_2,\cdots ,i_T \end{bmatrix}

概率计算问题

  • 直接计算法
    • 暴力计算
  • 前向算法
  • 后向算法

直接计算法

  • 按照概率公式,列举所有可能的长度为T的状态序列I=\begin{bmatrix} i_1,i_2,\cdots ,i_T \end{bmatrix},求各个状态序列的I和观测序列Q=\begin{Bmatrix} q_1,q_2,\cdots ,q_T \end{Bmatrix}的联合概率P(Q,I;\lambda),然后对所有可能的状态序列求和,从而得到最终的概率P(Q;\lambda)
  • 伪代码如下

                p(Q;\lambda)=0//初始化为0,为之后累加计算

                S=\{s_1,s_2,\cdots,s_n\} //已知集合

                O=\{o_1,o_2,\cdots,o_m\}//已知集合

                Q=\begin{Bmatrix} q_1,q_2,\cdots ,q_T \end{Bmatrix}//已知观测序列,q_1\in O,q_2\in O,\cdots,q_n\in O

                 //未知序列,需要列举左右可能性计算,i_1\in S,i_2\in S,\cdots,i_n\in S

                I=\begin{bmatrix} i_1,i_2,\cdots ,i_T \end{bmatrix}

                for (i_1 \text{ in } S)//列举i_1S中所有值s_1,s_2,\cdots ,s_n,n次循环 

                        for (i_2 \text{ in } S)//列举i_2S中所有值s_1,s_2,\cdots ,s_n,n次循环 

                                \vdots

                                for (i_T \text{ in } S)//列举i_nS中所有值s_1,s_2,\cdots ,s_n,n次循环 

                                        //根据状态概率转移矩阵A_{n\times n}计算该被列举状态序列的概率 

                                         p(I;\lambda)={\pi}_{i_1}{a}_{​{i_1}{i_2}}{a}_{​{i_2}{i_3}}\cdots {a}_{​{i_{T-1}}{i_T}}

                                        //根据观测概率矩阵B_{n \times m}计算I\lambda确定的情况下观测Q的概率

                                        p(Q|I;\lambda )=b_{​{i_1}{q_1}}b_{​{i_2}{q_2}}\cdots b_{​{i_T}{q_T}}

                                        //根据贝叶斯公式P(A,B)=P(A|B)P(B),A=Q,B=I;\lambda

                                        //计算\small p(Q,I;\lambda )

                                        \small p(Q,I;\lambda )=p(Q|I;\lambda)p(I;\lambda)={\pi}_{i_1}{a}_{​{i_1}{i_2}}{a}_{​{i_2}{i_3}}\cdots {a}_{​{i_{T-1}}{i_T}}b_{​{i_1}{q_1}}b_{​{i_2}{q_2}}\cdots b_{​{i_T}{q_T}}

                                        //将所有列举的状态序列后计算得到的观测序列的概率累加得到最终概率

                                        //\small p(Q;\lambda )=\sum_{I}^{}p(Q,I;\lambda )

                                        \small p(Q;\lambda )=p(Q;\lambda )+p(Q,I;\lambda )

前向概率-后向概率

  • 前向概率-后向概率指的其实是在一个观测序列中,时刻\small t应的状态为\small s_i的概率值转换过来的信息

\small p(q_1,q_2,\cdots .q_T,i_t=s_i)

\small =p({\color{Red} q_{t+1},q_{t+2},\cdots,q_T},{\color{Blue} q_1,q_2,\cdots,q_t,i_t=s_i})

\small =p({\color{Blue} q_1,q_2,\cdots,q_t,i_t=s_i})p({\color{Red} q_{t+1},q_{t+2},\cdots,q_T}|{\color{Blue} q_1,q_2,\cdots,q_t,i_t=s_i})

\small =p(q_1,q_2,\cdots,q_t,i_t=s_i)p(q_{t+1},q_{t+2},\cdots,q_T|i_t=s_i)//隐马尔可夫

前向算法

  • 定义:给定\small \lambda,定义到时刻\small t部分观测序列为\small q_1,q_2,\cdots ,q_t,且状态为\small s_i的概率为前向概率。记作:

\small {\alpha}_{t}(i)=p(q_1,q_2,\cdots ,q_t,i_t=s_i;\lambda )

  • 公式理解
  • 公式推导
    • \small {\alpha}_{t}(i)=p({\color{Blue} q_1,q_2,\cdots ,q_{t-1},{\color{Red} q_t},i_t=s_i};\lambda )
    • \small {\alpha}_{t}(i)=p({\color{Blue} q_1,q_2,\cdots ,q_{t-1},i_t=s_i};\lambda )\cdot p({\color{Red} q_t}|{\color{Blue} q_1,q_2,\cdots ,q_{t-1},i_t=s_i};\lambda ) //贝叶斯
    • \small {\alpha}_{t}(i)=p({ q_1,q_2,\cdots ,q_{t-1},i_t=s_i};\lambda )\cdot p({ q_t}|{ {​{\color{Teal} q_1,q_2,\cdots ,q_{t-1}},}i_t=s_i};\lambda )
    • \small {\alpha}_{t}(i)=p({ q_1,q_2,\cdots ,q_{t-1},i_t=s_i};\lambda )\cdot p({ q_t}|{ i_t=s_i};\lambda )//马尔可夫
    • \small {\alpha}_{t}(i)={\color{Blue} \sum_{j=1}^{n}}\begin{bmatrix} p({ q_1,q_2,\cdots ,q_{t-1},{\color{Blue} i_{t-1}=s_j},i_t=s_i};\lambda ) \end{bmatrix}\cdot p({ q_t}|{ i_t=s_i};\lambda )
    • \small {\alpha}_{t}(i)=\sum_{j=1}^{n}\begin{bmatrix} p({\color{Blue} q_1,q_2,\cdots ,q_{t-1}, i_{t-1}=s_j},{\color{Red} i_t=s_i};\lambda ) \end{bmatrix}\cdot p({ q_t}|{ i_t=s_i};\lambda )
    • \tiny {\alpha}_{t}(i)= \sum_{j=1}^{n}\begin{bmatrix}p({\color{Blue} q_1,q_2,\cdots ,q_{t-1}, i_{t-1}=s_j};\lambda )\cdot p({\color{Red} i_t=s_i}|{\color{Blue} q_1,q_2,\cdots ,q_{t-1}, i_{t-1}=s_j};\lambda ) \end{bmatrix}\cdot p({ q_t}|{ i_t=s_i};\lambda )//贝叶斯
    • \tiny {\alpha}_{t}(i)= \sum_{j=1}^{n}\begin{bmatrix}p( q_1,q_2,\cdots ,q_{t-1}, i_{t-1}=s_j;\lambda )\cdot p( i_t=s_i| {\color{Teal} q_1,q_2,\cdots ,q_{t-1},} i_{t-1}=s_j;\lambda ) \end{bmatrix}\cdot p({ q_t}|{ i_t=s_i};\lambda )
    • \tiny {\alpha}_{t}(i)= \sum_{j=1}^{n}\begin{bmatrix}p( q_1,q_2,\cdots ,q_{t-1}, i_{t-1}=s_j;\lambda )\cdot p( i_t=s_i| i_{t-1}=s_j;\lambda ) \end{bmatrix}\cdot p({ q_t}|{ i_t=s_i};\lambda )//马尔可夫
    • {\alpha}_{t}(i)= \sum_{j=1}^{n}\begin{bmatrix}\alpha_{t-1}(j) \cdot a_{ji} \end{bmatrix}\cdot b_{ix_t}
    • {\alpha}_{t+1}(i)= \sum_{j=1}^{n}\begin{bmatrix}\alpha_{t}(j) \cdot a_{ji} \end{bmatrix}\cdot b_{ix_{t+1}}

前向算法案例

  • HMM模型参数\large \pi=\begin{bmatrix} 0.2\\ 0.5\\ 0.3 \end{bmatrix}, A=\begin{bmatrix} 0.5 & 0.4 & 0.1\\ 0.2 & 0.2 & 0.6\\ 0.2 & 0.5 & 0.3 \end{bmatrix}, B=\begin{bmatrix} 0.4 & 0.6\\ 0.8 & 0.2\\ 0.5 & 0.5 \end{bmatrix},观测到的序列为\large S=\begin{Bmatrix} o_1,o_2,o_1,o_1,o_2 \end{Bmatrix}
  • 计算
    • \large t=1(q_1=o_1)
      • \large \alpha _1(1)=\pi_1\cdot b_{11}=0.08
      • \large \alpha _1(2)=\pi_2\cdot b_{21}=0.4
      • \large \alpha _1(3)=\pi_3\cdot b_{31}=0.15
    • \large t=2(q_2=o_2)
      • \small \alpha _2(1)=[\sum_{j=1}^{3}\alpha _1(j)\cdot a_{j1}]b_{12}=[0.08\times 0.5+0.4\times 0.2+0.15\times 0.2 ]\times 0.6=0.09
      • \small \alpha _2(2)=[\sum_{j=1}^{3}\alpha _1(j)\cdot a_{j2}]b_{22}=[0.08\times 0.4+0.4\times 0.2+0.15\times 0.5 ]\times 0.2=0.0374
      • \small \alpha _2(3)=[\sum_{j=1}^{3}\alpha _1(j)\cdot a_{j3}]b_{32}=[0.08\times 0.1+0.4\times 0.6+0.15\times 0.3 ]\times 0.5=0.1465
    • \small t=3(q_3=o_1)
      • \tiny \alpha _3(1)=[\sum_{j=1}^{3}\alpha _2(j)\cdot a_{j1}]b_{11}=[0.09\times 0.5+0.0374\times 0.2+0.01465\times 0.2 ]\times 0.4=0.032712
      • \tiny \alpha _3(2)=[\sum_{j=1}^{3}\alpha _2(j)\cdot a_{j2}]b_{21}=[0.09\times 0.4+0.0374\times 0.2+0.1465\times 0.5 ]\times 0.8=0.093384
      • \tiny \alpha _3(3)=[\sum_{j=1}^{3}\alpha _2(j)\cdot a_{j3}]b_{31}=[0.09\times 0.1+0.0374\times 0.6+0.1465\times 0.3 ]\times 0.5=0.037695
    • \small t=4(q_4=o_1)
      • \tiny \alpha _4(1)=[\sum_{j=1}^{3}\alpha _3(j)\cdot a_{j1}]b_{11}=[0.032712\times 0.5+0.093384\times 0.2+0.037695\times 0.2 ]\times 0.4=0.01702872
      • \tiny \alpha _4(2)=[\sum_{j=1}^{3}\alpha _3(j)\cdot a_{j2}]b_{21}=[0.032712\times 0.4+0.093384\times 0.2+0.037695\times 0.5 ]\times 0.8=0.04048728
      • \tiny \alpha _4(3)=[\sum_{j=1}^{3}\alpha _3(j)a_{j3}]b_{31}=(0.032712*0.1+0.093384*0.6+0.037695*0.3)*0.5=0.03530505
    • t=5(q_5=o_2)
      • \tiny \alpha _5(1)=[\sum_{j=1}^{3}\alpha _4(j)a_{j1}]*b_{12}=(0.01702872*0.5+0.04048728*0.2+0.03530505*0.2)*0.6=0.014203696
      • \tiny \alpha _5(2)=[\sum_{j=1}^{3}\alpha _4(j)a_{j2}]b_{22}=(0.01702872*0.4+0.04048728*0.2+0.03530505*0.5)*0.2=0.006512294
      • \tiny \alpha _5(3)=[\sum_{j=1}^{3}\alpha _4(j)a_{j3}]b_{32}=(0.01702872*0.1+0.04048728*0.6+0.03530505*0.3)*0.5=0.018293378
    • 计算最终概率
      • \tiny p(Q=\begin{Bmatrix} o_1,o_2,o_1,o_1,o_2 \end{Bmatrix} |\lambda =\begin{Bmatrix} \pi,A,B \end{Bmatrix})
      • \tiny p=\sum_{i=1}^{3}p(Q,i_5=s_i|\lambda )=\sum_{i=1}^{3}\alpha _5(i)=0.014203696+0.006512294+0.018293378=0.039009367

后向算法

  • 定义:给定\lambda,定义时刻t状态为s_i的前提下,从t+1T部分观测序列为q_{t+1},q_{t+2},\dots,q_T的概率为后向概率,记作

\beta _t(i)=p(q_{t+1},q_{t+2},\dots,q_T|i_t=s_i;\lambda )

  • 公式理解
    • 初值:
      • \small p(q_1,q_2,\dots,q_T,i_t=s_i)=p(q_1,q_2,\dots,q_t,i_t=s_i)\cdot p(q_{t+1},q_{t+2},\dots,q_T|i_t=s_i)
      • \small t=T\small {\color{Red} p(q_1,q_2,\dots,q_T,i_T=s_i)}={\color{Red} p(q_1,q_2,\dots,q_T,i_T=s_i)}\cdot p(|i_T=s_i)
      • \small \beta _T(i)=p(|i_T=s_i)=1
    • 递推:对于\small t=T-1,T-2,\dots,1
    • 最终:\small t=0

  • 公式推导
    • \beta _t(i)=p(q_{t+1},q_{t+2},\dots,q_T|i_t=s_i)
    • \beta _t(i)={\color{Blue} \sum_{j=1}^{n}}p({\color{Blue} i_{t+1}=s_j},q_{t+1},q_{t+2},\dots,q_T|i_t=s_i)//全概率公式
    • \beta _t(i)=\sum_{j=1}^{n}p({\color{Red} q_{t+1},q_{t+2},\dots,q_T}|{\color{Blue}i_t=s_i, i_{t+1}=s_j})\cdot p({\color{Blue} i_{t+1}=s_j|i_{t}=s_i})//贝叶斯
    • \beta _t(i)=\sum_{j=1}^{n}p( q_{t+1},q_{t+2},\dots,q_T|i_{t+1}=s_j)\cdot p( i_{t+1}=s_j|i_{t}=s_i)//马尔可夫
    • \small \beta _t(i)=\sum_{j=1}^{n}p(q_{t+1}|i_{t+1}=s_j)p(q_{t+2},\dots,q_T|i_{t+1}=s_j)\cdot p( i_{t+1}=s_j|i_{t}=s_i)
    • \small \beta _t(i)=\sum_{j=1}^{n}[b_{jx_{t+1}}\cdot \beta _{t+1}(j)\cdot a_{ij}]

后向算法案例

  • HMM模型参数\large \pi=\begin{bmatrix} 0.2\\ 0.5\\ 0.3 \end{bmatrix}, A=\begin{bmatrix} 0.5 & 0.4 & 0.1\\ 0.2 & 0.2 & 0.6\\ 0.2 & 0.5 & 0.3 \end{bmatrix}, B=\begin{bmatrix} 0.4 & 0.6\\ 0.8 & 0.2\\ 0.5 & 0.5 \end{bmatrix},观测到的序列为\large S=\begin{Bmatrix} o_1,o_2,o_1,o_1,o_2 \end{Bmatrix}
  • 计算
    • \small t=T=5
      • \small \beta _5(1)=\beta _5(2)=\beta _5(3)=1
    • \small t=4(q_{4+1}=o_2)
      • \beta _4(1)=\sum_{j=1}^{3}[b_{j2}\cdot \beta _5(j)\cdot a_{1j}]=[0.6*1 *0.5+0.2*1*0.4+0.5*1*0.1]=0.43
      • \beta _4(2)=\sum_{j=1}^{3}[b_{j2}\cdot \beta _5(j)\cdot a_{2j}]=[0.6*1 *0.2+0.2*1*0.2+0.5*1*0.6]=0.46
      • \beta _4(2)=\sum_{j=1}^{3}[b_{j2}\cdot \beta _5(j)\cdot a_{3j}]=[0.6*1 *0.2+0.2*1*0.5+0.5*1*0.3]=0.37
    • \small t=3(q_{3+1}=o_1)
      • \tiny \beta _3(1)=\sum_{j=1}^{3}[b_{j1}\cdot \beta _4(j)\cdot a_{1j}]=[0.4*0.43 *0.5+0.8*0.46*0.4+0.5*0.37*0.1]=0.2517
      • \tiny \beta _3(2)=\sum_{j=1}^{3}[b_{j1}\cdot \beta _4(j)\cdot a_{2j}]=[0.4*0.43 *0.2+0.8*0.46*0.2+0.5*0.37*0.6]=0.219
      • \tiny \beta _3(3)=\sum_{j=1}^{3}[b_{j1}\cdot \beta _4(j)\cdot a_{3j}]=[0.4*0.43 *0.2+0.8*0.46*0.5+0.5*0.37*0.3]=0.2739
    • \small t=2(q_{2+1}=o_1)
      • \tiny \tiny \beta _2(1)=\sum_{j=1}^{3}[b_{j2}\cdot \beta _3(j)\cdot a_{1j}]=[0.4*0.2517 *0.5+0.8*0.219*0.4+0.5*0.2739*0.1]=0.134115
      • \tiny \tiny \beta _2(2)=\sum_{j=1}^{3}[b_{j2}\cdot \beta _3(j)\cdot a_{2j}]=[0.4*0.2517*0.2+0.8*0.219*0.2+0.5*0.2739*0.6]=0.137346
      • \tiny \tiny \beta _2(2)=\sum_{j=1}^{3}[b_{j2}\cdot \beta _3(j)\cdot a_{3j}]=[0.4*0.2517*0.2+0.8*0.219*0.5+0.5*0.2739*0.3]=0.148821
    • \small t=1(q_{1+1}=o_2)
      • \tiny \tiny \beta _1(1)=\sum_{j=1}^{3}[b_{j1}\cdot \beta _2(j)\cdot a_{1j}]=[0.6*0.134115*0.5+0.2*0.137346*0.4+0.5*0.148821*0.1]=0.05866323
      • \tiny \tiny \beta _1(2)=\sum_{j=1}^{3}[b_{j1}\cdot \beta _2(j)\cdot a_{2j}]=[0.6*0.134115*0.2+0.2*0.137346*0.2+0.5*0.148821*0.6]=0.06623394
      • \tiny \tiny \beta _1(3)=\sum_{j=1}^{3}[b_{j1}\cdot \beta _2(j)\cdot a_{3j}]=[0.6*0.134115*0.2+0.2*0.137346*0.5+0.5*0.148821*0.3]=0.05215155
    • 最终\tiny (t=0)
      • \tiny p(Q)=\sum_{i=1}^{3}\pi_i\beta_1(i)b_{ix_1}=0.2*0.05866323*0.4+0.5*0.06623394*0.8+0.3*0.05215155*0.5=0.039009367

前向后向算法总结

  • 前向后向算出来的结果是一样的,如果不一样是计算有误
  • 关于状态转移矩阵\large A
    • 前向算法是从前往后算,所以是多个前状态转换成一个后状态,所以在计算一个\large \alpha时用的时状态转移矩阵\large A的一列\small \sum_{j=1}^{n}a_{ji}
    • 后向算法时从后往前算,所以是一个前状态转换成多个后状态,所以在计算一个\small \beta时 用的时状态转移矩阵\large A的一行\small \sum_{j=1}^{n}a_{ij}
  •  关于观测概率矩阵\small B

    • 前向算法迭代计算时,每次新增的观测是前向概率最后一个观测值,是t时刻的,所以前向算法每次增加计算时,用的是t时刻状态转换成观测概率值,即t时刻的B

    • 后向算法迭代计算时,每次新增的观测是后向概率第一个观测值,是t+1时刻的,所以后向算法每次增加计算时,用的是t+1时刻状态转换成观测概率值,即t+1

  • 关于初始化
    • 前向算法t=1时刻的初值是由\small \pi\small B计算出来的
      • 前向概率的定义(T=1):状态序列\small i_1=s_i且观测序列\small q_1=o_{x_1}的概率
        • \small \alpha_1(i)=\begin{Bmatrix} q_1=o_{x_1},i_1=s_i|\lambda \end{Bmatrix}=\pi_ib_{ix_1}
          • 状态序列\small i_1=s_i :\small \pi_i
          • 观测序列\small q_1=o_{x_1}:\small b_{ix_1} 
    • 后向算法t=T时刻的初值为1
      • 这个比较难理解,先把\small t=T代入公式\small \beta _T(i)=p(q_{T+1},q_{T+2},\dots,q_T|i_T=s_i;\lambda )
        • \small q_{T+1},q_{T+2},\dots,q_T是什么序列?\small \rightarrow一个不存在得序列
          • \small T+1\small T的序列是不存在的,因为\small T\small T+1前面,没有 \small T+1\small T的序列,所有\small \small \beta _T(i)变成了一个不存在的序列不存在的概率,那是多少,当然是1
          • 如果觉得不好理解就按公式推导,记住它是1
  • 关于迭代计算
    • 前向算法
      • 定义:\small \small {\alpha}_{t}(i)=p({\color{Blue} q_1,q_2,\cdots ,q_{t-1},{\color{Red} q_t},i_t=s_i};\lambda ),所以就是多个t-1时刻的状态\small \small i_{t-1}=s_j转移到t时刻的状态时 状态为\small i_t=s_i , 观测值为\small q_t=o_{x_t} 的概率,并且联合(乘以)\small {\alpha}_{t-1}(j)的概率
        • 计算其中一个t-1时刻的状态为\small s_j的概率
          • 前一次概率\small {\alpha}_{t-1}(j)
          • t-1时刻的状态\small \small i_{t-1}=s_j转移到t时刻状态\small i_t=s_i的概率\small a_{ji}
          • \small q_t=o_{x_t}发生的概率,\small b_{ix_t}
          • 上述三者累乘就得到一个t-1时刻的状态为\small s_j时,前向序列发生的概率
        • 把t-1时刻所有状态(即\{s_1,s_2,\cdots,s_n\})的概率累加起来即为\small {\alpha}_{t}(i)的概率\sum_{j=1}^{n}\begin{bmatrix}\alpha_{t-1}(j) \cdot a_{ji} \end{bmatrix}\cdot b_{ix_t}
    • 后向算法
      • 定义:\beta _t(i)=p(q_{t+1},q_{t+2},\dots,q_T|i_t=s_i;\lambda ),所以就是在t时刻的状态\small i_t=s_i转移到多个t+1时刻的状态\small i_{t+1}=s_j时,观测值为\small \small q_{t+1}=o_{x_{t+1}}的概率,并且联合(乘以)\small \beta _{t+1}(j)的概率
        • 前一次概率\small \beta _{t+1}(j)
        • t时刻的状态\small i_t=s_i转移到t+1时刻状态\small i_{t+1}=s_j的概率\small \small a_{ij}
        • t+1时刻的状态为\small i_{t+1}=s_j时,观测值为\small \small q_{t+1}=o_{x_{t+1}}的概率\small \small b_{jx_{t+1}}

        • 上述三者累乘就得到一个t+1时刻的状态为\small s_j时,后向序列发生的概率

      • 把t+1时刻所有状态(即\{s_1,s_2,\cdots,s_n\})的概率累加起来即为\small \beta _t(i)的概率\small \sum_{j=1}^{n}[b_{jx_{t+1}}\cdot \beta _{t+1}(j)\cdot a_{ij}] 

    • 关于最终计算

      • 前向算法

        • 先看t=T时刻的公式{\alpha}_{T}(i)=p(q_1,q_2,\cdots ,q_T,i_T=s_i;\lambda ),和我们要求的唯一的差别是多了i_T=s_i,根据全概率公式,把i_T所有的可能性,即i_T\in \{s_1,s_2,\cdots,s_n\}所有的可能性累加起来就是所求的概率,所以也就是把\sum_{i=1}^{n}{\alpha}_{T}(i)

      • 后向算法

        • 先看t=1时刻的公式\beta _1(i)=p(q_{1+1},q_{1+2},\dots,q_T|i_1=s_i;\lambda ),也就是\beta _1(i)=p(q_2,q_3,\dots,q_T|i_1=s_i;\lambda ),这个公式和我们要求的概率的差别有两点

          • 多了i_1=s_i

            • 这个好办和前向一样,如果有 p(q_1,q_2,q_3,\dots,q_T|i_1=s_i;\lambda )的话做累加即可

          • q_1状态还未计算 

            • 根据公式计算即可

单个状态概率

  • 求给定模型\lambda和观测序列Q的情况下,在时刻t处于状态s_i的概率,记作
    • 公式的分子说明
    • 公式的分母说明

{\gamma}_t(i)=p(i_t=s_i|Q;\lambda)=\frac{p(i_t=s_i,Q|\lambda)}{p(Q|\lambda)}=\frac{\alpha _t(i)\cdot \beta _t(i)}{\sum_{j=1}^{n}\alpha _t(j)\cdot \beta _t(j)}

  • 单个状态的意义主要是用于判断在每个时刻最可能存在的状态,从而可以得到一个状态序列作为最终的预测结果
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值