文章目录

  • 隐马尔可夫模型
    • 1.隐马尔可夫模型的基本概念
      • 1.1 隐马尔可夫模型的三个基本问题
    • 2.概率计算方法
      • 2.1 直接计算法
      • 2.2 前向算法
      • 2.3 后向算法(略)

隐马尔可夫模型

隐马尔可夫模型,(hidden Markov model)是可用于标注问题的统计学习模型,描述由隐藏的马尔可夫链随机生成观测序列的模型,属于生成模型。本章首先介绍隐马尔可夫模型的基本概念,然后分别叙述隐马尔可夫模型的概率计算方法,学习算法以及预测算法。隐马尔可夫模型再语音识别,自然语言处理,生物信息,模式识别等领域有着广泛的应用。

内容出自李航老师的《统计学习方法》,结合个人理解补充一些推导过程。

1.隐马尔可夫模型的基本概念

定义: 隐马尔可夫模型是关于时序的概率模型,描述由一个隐藏的马尔可夫链随机生成不可观测的状态随机序列,再由各个状态生成一个观测从而产生观测随机序列的过程。

  • 隐藏的马尔可夫链随机生成的状态的序列,称为状态序列。(state sequence)
  • 每个状态生成一个观测,由此产生的观测的随机序列,称为观测序列。( observation sequence)
  • 系列的每一个未知又可以看作是一个时刻

隐马尔可夫模型由初始概率分布状态转移概率分布以及观测概率分布确定。隐马尔可夫模型的形式定义如下:

  • QQQ是所有可能状态的集合,VVV是所有可能的观测的集合:所有可能的情况在这里

Q={q1,...qN},V={v1,...vM}Q=\{q_1,...q_N\},V=\{v_1,...v_M\} Q={q1​,...qN​},V={v1​,...vM​}

  • NNN是可能的状态数,MMM是可能的观测数。

  • III是长度为TTT的状态序列,OOO是对应的观测序列。这里表示当前情况的状态和观测
    I={i1,...iT},O={o1,...oT}I=\{i_1,...i_T\},O=\{o_1,...o_T\} I={i1​,...iT​},O={o1​,...oT​}

  • AAA是状态转移概率矩阵:

A=[aij]N×NA=[a_{ij}]_{N\times N} A=[aij​]N×N​

其中:
aij=P(it+1=qj∣it=qi),i=1,2,...,N;j=1,2,...,Na_{ij}=P(i_{t+1}=q_j|i_t=q_i),i=1,2,...,N;j=1,2,...,N aij​=P(it+1​=qj​∣it​=qi​),i=1,2,...,N;j=1,2,...,N

aija_{ij}aij​是时刻ttt处于状态qiq_iqi​的条件下在时刻t+1t+1t+1状态转移到状态qjq_jqj​的概率。

  • BBB是观测概率矩阵:
    B=[bj(K)]N×MB=[b_j(K)]_{N \times M} B=[bj​(K)]N×M​

其中:
bij=P(ot=vk∣it=qj),k=1,2,...,M;j=1,2,...,Nb_{ij}=P(o_{t}=v_k|i_t=q_j),k=1,2,...,M;j=1,2,...,N bij​=P(ot​=vk​∣it​=qj​),k=1,2,...,M;j=1,2,...,N

bijb_{ij}bij​是时刻ttt处于状态qjq_jqj​的条件下生成观测vkv_kvk​的概率。

  • π\piπ是初始状态概率向量

π=(πi)\pi=(\pi_i) π=(πi​)

其中,
πi=P(i1=q1),i=1,2,...,N\pi_i=P(i_1=q_1), \ i=1,2,...,N πi​=P(i1​=q1​), i=1,2,...,N

πi\pi_{i}πi​是时刻t=1t=1t=1时处于状态qiq_iqi​的概率。

隐马尔可夫模型由初始状态概况向量π\piπ、状态转移矩阵AAA和观测矩阵BBB决定。

  • π\piπ和AAA决定状态序列
  • BBB决定观测序列

因此,隐马尔可夫模型可以用三元符号表示,称为隐马尔可夫模型的三要素,即
λ=(A,B,π)\lambda=(A,B,\pi) λ=(A,B,π)

  • 状态转移矩阵AAA和初始状态概率向量π\piπ确定了隐藏的马尔可夫链,生成不可观测的状态序列。

  • 观测概率矩阵BBB确定了如何从状态生成观测,与状态序列综合确定了如何产生观测序列。

从定义可知,隐马尔可夫模型作了两个基本假设:

(1) 齐次马尔可夫决策,即假设隐藏的马尔可夫链在任意时刻ttt的状态只依赖于前一时刻的状态,与其他时刻ttt无关;

(2)观测独立性假设,即假设任意时刻的观测只依赖于该时刻的马尔可夫链的状态,与其他观测及其状态无关;

隐马尔可夫模型可以用于标注,这时状态对应着标记。标注问题是给定观测的序列预测其对应的标记序列。可以假设标注问题的数据是由隐马尔可夫模型生成的。这样就可以利用隐马尔可夫模型的学习和预测算法进行标注。

例1:盒子和球的模型,假设有444个盒子,每个盒子里都装有红色和白色两种颜色的球:

盒子号 1 2 3 4
红球数 5 3 6 8
白球树 5 7 4 2

按照下面的方法抽球,产生一个球的颜色的观测序列:

  • 开始,从444个盒子里以等概率随机选取111个盒子,从这个盒子里随机抽出111个球,记录其颜色后,放回;
  • 然后,从当前盒子随机转移到下一个盒子,规则是:如果当前的盒子是盒子111,那么下一个盒子一定是盒子222;如果当前是盒子222或333,那么分别以0.40.40.4和0.60.60.6的概率转移到左边或者右边的盒子;如果当前盒子是盒子444,那么各以0.5的概率停留在盒子4或者转移到盒子333;
  • 确定转移的盒子后,再从这个盒子里随机抽出111个球,记录其颜色,放回;
  • 如此下去,重复进行555次,得到一个球的颜色的观测序列:

O=(Red,Red,White,White,Red)O=(Red,Red,White,White,Red) O=(Red,Red,White,White,Red)

在这个过程中,观察者只能观测到球的颜色的序列,观测不到球是从哪个盒子取出的,即观测不到盒子的序列。

在这个例子中有两个随机序列,一个是盒子的序列(状态序列),一个是球的颜色(观测序列)。盒子的序列是隐藏的,只有后者球的颜色是可观测的。根据所给条件,可以确定状态集合,序列长度以及模型的三要素。

盒子对应状态,状态的集合是:
Q={Box1,Box2,Box3,Box4},N=4Q=\{Box1,Box2,Box3,Box4\},N=4 Q={Box1,Box2,Box3,Box4},N=4

球的颜色对应观测,观测的集合是:
V={Red,White},M=2V=\{Red,White\},M=2 V={Red,White},M=2
状态序列和观测序列长度为T=5T=5T=5,重复进行了5次。

初始的概率分布为,即随机从4个盒子里抽取一个:
π=(0.25,0.25,0.25,0.25)T\pi=(0.25,0.25,0.25,0.25)^T π=(0.25,0.25,0.25,0.25)T
状态转移概率分布为,横向和纵向分别表示盒子1234,一共有16种转移的可能:
A=[01000.400.6000.400.6000.50.5]\begin{aligned} A=\begin{bmatrix} 0 & 1 & 0 & 0 \\ 0.4 & 0 & 0.6 & 0 \\ 0 & 0.4 & 0 & 0.6 \\ 0 & 0 & 0.5 & 0.5 \\ \end{bmatrix} \end{aligned} A=⎣⎢⎢⎡​00.400​100.40​00.600.5​000.60.5​⎦⎥⎥⎤​​
观测概率分布为:
B=[0.50.50.30.70.60.40.80.2]\begin{aligned} B=\begin{bmatrix} 0.5 & 0.5 \\ 0.3 & 0.7 \\ 0.6 & 0.4 \\ 0.8 & 0.2 \\ \end{bmatrix} \end{aligned} B=⎣⎢⎢⎡​0.50.30.60.8​0.50.70.40.2​⎦⎥⎥⎤​​

1.1 隐马尔可夫模型的三个基本问题

隐马尔可夫模型有三个基本问题:

  • 概率计算问题。给定模型λ=(A,B,π)\lambda=(A,B,\pi)λ=(A,B,π)和观测序列O=(o1,...,oT)O=(o_1,...,o_T)O=(o1​,...,oT​),计算在模型λ\lambdaλ下观测序列OOO出现的概率P(O∣λ)P(O|\lambda)P(O∣λ)。

  • 学习问题。已知观测序列O=(o1,...,oT)O=(o_1,...,o_T)O=(o1​,...,oT​),估计模型λ=(A,B,π)\lambda=(A,B,\pi)λ=(A,B,π)的参数,使得该模型下观测序列的P(O∣λ)P(O|\lambda)P(O∣λ)最大。即用极大似然估计的方法估计参数。

  • 预测问题,也称为解码问题。已知模型λ=(A,B,π)\lambda=(A,B,\pi)λ=(A,B,π)和观测序列O=(o1,...,oT)O=(o_1,...,o_T)O=(o1​,...,oT​),求对给定观测序列条件概率P(O∣λ)P(O|\lambda)P(O∣λ)最大的状态序列I={i1,...iT}I=\{i_1,...i_T\}I={i1​,...iT​}。即给定观测序列,求最有可能的对应的状态序列。

    基本问题 已知 决策变量 目标
    概率计算问题 模型λ\lambdaλ,观测序列OOO 计算出 P(O∣λ)P(O\mid\lambda)P(O∣λ)
    学习问题 观测序列OOO 模型λ\lambdaλ的参数 maxP(O∣λ)max\ P(O\mid\lambda)max P(O∣λ)
    预测问题 模型λ\lambdaλ,观测序列OOO 状态序列III maxP(O∣λ)max\ P(O\mid\lambda)max P(O∣λ)
三要素 矩阵内元素的含义 计算公式
状态转概率矩阵AAA aija_{ij}aij​是时刻ttt处于状态qiq_iqi​的条件下在时刻t+1t+1t+1状态转移到状态qjq_jqj​的概率。 aij=P(it+1=qj∣it=qi)a_{ij}=P(i_{t+1}=q_j\mid i_t=q_i)aij​=P(it+1​=qj​∣it​=qi​)
观测概率矩阵BBB bijb_{ij}bij​是时刻ttt处于状态qjq_jqj​的条件下生成观测vkv_kvk​的概率。 bij=P(ot=vk∣it=qj)b_{ij}=P(o_{t}=v_k\mid i_t=q_j)bij​=P(ot​=vk​∣it​=qj​)
初始状态概率向量π\piπ πi\pi_{i}πi​是时刻t=1t=1t=1时处于状态qiq_iqi​的概率。 πi=P(i1=q1)\pi_i=P(i_1=q_1)πi​=P(i1​=q1​)

2.概率计算方法

主要包括观测序列概率P(O∣λ)P(O|\lambda)P(O∣λ)的前向和后向算法。

2.1 直接计算法

状态序列I=(i1,i2,...,iT)I=(i_1,i_2,...,i_T)I=(i1​,i2​,...,iT​)的概率是,从初始概率π\piπ出发,依次转移相乘直到最后一个状态:
P(I∣λ)=πi1ai1i2ai2i3...aiT−1iTP(I|\lambda)=\pi_{i_1}a_{i_1i_2}a_{i_2i_3}...a_{i_{T-1}i_{T}} P(I∣λ)=πi1​​ai1​i2​​ai2​i3​​...aiT−1​iT​​
对固定的状态序列I=(i1,i2,...,iT)I=(i_1,i_2,...,i_T)I=(i1​,i2​,...,iT​),观测序列O=(o1,o2,...,oT)O=(o_1,o_2,...,o_T)O=(o1​,o2​,...,oT​)的概率是:
P(O∣I,λ)=P(O1∣I1,λ)P(O2∣I2,λ)...P(OT∣IT,λ)=bi1(o1)bi2(o2)...biT(oT)P(O|I,\lambda)=P(O_1|I_1,\lambda)P(O_2|I_2,\lambda)...P(O_T|I_T,\lambda)=b_{i_1}(o_1)b_{i_2}(o_2)...b_{i_T}(o_T) P(O∣I,λ)=P(O1​∣I1​,λ)P(O2​∣I2​,λ)...P(OT​∣IT​,λ)=bi1​​(o1​)bi2​​(o2​)...biT​​(oT​)

P(O∣I,λ)P(O|I,\lambda)P(O∣I,λ)中OOO和III有关,是从某状态III下观测到状态OOO的概率,有TTT个。而P(I∣λ)P(I|\lambda)P(I∣λ)是状态之间的转移过程,有T−1T-1T−1个,只和下一个状态有关,表现为转移状态的乘积。

OOO和III同时出现的联合概率为:
P(O,I∣λ)=P(O∣I,λ)P(I∣λ)=πi1ai1i2ai2i3...aiT−1iT×bi1(o1)bi2(o2)...biT(oT)=πi1bi1(o1)ai1i2bi2(o2)ai2i3...aiT−1iTbiT(oT)\begin{aligned} P(O,I|\lambda)&=P(O|I,\lambda)P(I|\lambda) \\ &=\pi_{i_1}a_{i_1i_2}a_{i_2i_3}...a_{i_{T-1}i_{T}}\times b_{i_1}(o_1)b_{i_2}(o_2)...b_{i_T}(o_T) \\ &=\pi_{i_1}b_{i_1}(o_1)a_{i_1i_2}b_{i_2}(o_2)a_{i_2i_3}...a_{i_{T-1}i_{T}}b_{i_T}(o_T) \end{aligned} P(O,I∣λ)​=P(O∣I,λ)P(I∣λ)=πi1​​ai1​i2​​ai2​i3​​...aiT−1​iT​​×bi1​​(o1​)bi2​​(o2​)...biT​​(oT​)=πi1​​bi1​​(o1​)ai1​i2​​bi2​​(o2​)ai2​i3​​...aiT−1​iT​​biT​​(oT​)​

然后,对所有可能的状态序列III求和,得到观测序列OOO的概率P(O∣λ)P(O|\lambda)P(O∣λ),即:
P(O,I∣λ)=∑IP(O∣I,λ)P(I∣λ)=∑i1,...,iTπi1bi1(o1)ai1i2bi2(o2)ai2i3...aiT−1iTbiT(oT)\begin{aligned} P(O,I|\lambda)&=\sum_IP(O|I,\lambda)P(I|\lambda) \\ &=\sum_{i_1,...,i_T}\pi_{i_1}b_{i_1}(o_1)a_{i_1i_2}b_{i_2}(o_2)a_{i_2i_3}...a_{i_{T-1}i_{T}}b_{i_T}(o_T) \end{aligned} P(O,I∣λ)​=I∑​P(O∣I,λ)P(I∣λ)=i1​,...,iT​∑​πi1​​bi1​​(o1​)ai1​i2​​bi2​​(o2​)ai2​i3​​...aiT−1​iT​​biT​​(oT​)​

2.2 前向算法

前向概率:给定隐马尔可夫模型λ\lambdaλ,定义到时刻ttt部分观测序列为o1,...,oto_1,...,o_to1​,...,ot​且状态为qiq_iqi​的概率为前向概率,即为

αi=P(o1,o2,...,ot,it=qi∣λ)\alpha_i=P(o_1,o_2,...,o_t,i_t=q_i|\lambda) αi​=P(o1​,o2​,...,ot​,it​=qi​∣λ)

可以递推地求得前向概率αt(i)\alpha_t(i)αt​(i)及观测序列P(O∣λ)P(O|\lambda)P(O∣λ)。

算法:观测序列的前向算法

输入:隐马尔可夫模型λ\lambdaλ,观测序列OOO;

输出:观测序列概率P(O∣λ)P(O|\lambda)P(O∣λ)

(1)初值,表示初始时刻的状态i1=qii_1=q_ii1​=qi​和观测o1o_1o1​的联合概率
α1(i)=πibi(oi)\alpha_1(i)=\pi_ib_i(o_i) α1​(i)=πi​bi​(oi​)
(2)递推,对t=1,2,...,T−1t=1,2,...,T-1t=1,2,...,T−1,计算到时刻t+1t+1t+1部分观测序列为o1,o2,...,ot,ot+1o_1,o_2,...,o_t,o_{t+1}o1​,o2​,...,ot​,ot+1​且在时刻t+1t+1t+1处于状态qiq_iqi​的前向概率。

  • αt(j)\alpha_t(j)αt​(j)是到时刻ttt观察到o1,...,oto_1,...,o_to1​,...,ot​并在时刻ttt处于状态qjq_jqj​的前向概率
  • αt(j)aji\alpha_t(j)a_{ji}αt​(j)aji​是到时刻ttt观察到o1,...,oto_1,...,o_to1​,...,ot​并在时刻ttt处于状态qjq_jqj​的前向概率而在时刻t+1t+1t+1到达状态qiq_iqi​的联合概率
  • ∑j=1Nαt(j)aji]bi(ot+1)\sum_{j=1}^N\alpha_t(j)a_{ji}]b_i(o_{t+1})∑j=1N​αt​(j)aji​]bi​(ot+1​)即时刻t+1t+1t+1观测到o1,...,ot+1o_1,...,o_{t+1}o1​,...,ot+1​并在时刻t+1t+1t+1处于状态qiq_iqi​的前向概率αt+1(i)\alpha_{t+1}(i)αt+1​(i)

αt+1=[∑j=1Nαt(j)aji]bi(ot+1)=[αt(1)a1i+αt(2)a2i+...+αt(N)aNi]bi(ot+1)\begin{aligned} \alpha_{t+1}&=[\sum_{j=1}^N\alpha_t(j)a_{ji}]b_i(o_{t+1}) \\ &=[\alpha_t(1)a_{1i}+\alpha_t(2)a_{2i}+...+\alpha_t(N)a_{Ni}]b_i(o_{t+1}) \\ \end{aligned} αt+1​​=[j=1∑N​αt​(j)aji​]bi​(ot+1​)=[αt​(1)a1i​+αt​(2)a2i​+...+αt​(N)aNi​]bi​(ot+1​)​

#mermaid-svg-V7WKg9jNbCep3OJd .label{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);fill:#333;color:#333}#mermaid-svg-V7WKg9jNbCep3OJd .label text{fill:#333}#mermaid-svg-V7WKg9jNbCep3OJd .node rect,#mermaid-svg-V7WKg9jNbCep3OJd .node circle,#mermaid-svg-V7WKg9jNbCep3OJd .node ellipse,#mermaid-svg-V7WKg9jNbCep3OJd .node polygon,#mermaid-svg-V7WKg9jNbCep3OJd .node path{fill:#ECECFF;stroke:#9370db;stroke-width:1px}#mermaid-svg-V7WKg9jNbCep3OJd .node .label{text-align:center;fill:#333}#mermaid-svg-V7WKg9jNbCep3OJd .node.clickable{cursor:pointer}#mermaid-svg-V7WKg9jNbCep3OJd .arrowheadPath{fill:#333}#mermaid-svg-V7WKg9jNbCep3OJd .edgePath .path{stroke:#333;stroke-width:1.5px}#mermaid-svg-V7WKg9jNbCep3OJd .flowchart-link{stroke:#333;fill:none}#mermaid-svg-V7WKg9jNbCep3OJd .edgeLabel{background-color:#e8e8e8;text-align:center}#mermaid-svg-V7WKg9jNbCep3OJd .edgeLabel rect{opacity:0.9}#mermaid-svg-V7WKg9jNbCep3OJd .edgeLabel span{color:#333}#mermaid-svg-V7WKg9jNbCep3OJd .cluster rect{fill:#ffffde;stroke:#aa3;stroke-width:1px}#mermaid-svg-V7WKg9jNbCep3OJd .cluster text{fill:#333}#mermaid-svg-V7WKg9jNbCep3OJd div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);font-size:12px;background:#ffffde;border:1px solid #aa3;border-radius:2px;pointer-events:none;z-index:100}#mermaid-svg-V7WKg9jNbCep3OJd .actor{stroke:#ccf;fill:#ECECFF}#mermaid-svg-V7WKg9jNbCep3OJd text.actor>tspan{fill:#000;stroke:none}#mermaid-svg-V7WKg9jNbCep3OJd .actor-line{stroke:grey}#mermaid-svg-V7WKg9jNbCep3OJd .messageLine0{stroke-width:1.5;stroke-dasharray:none;stroke:#333}#mermaid-svg-V7WKg9jNbCep3OJd .messageLine1{stroke-width:1.5;stroke-dasharray:2, 2;stroke:#333}#mermaid-svg-V7WKg9jNbCep3OJd #arrowhead path{fill:#333;stroke:#333}#mermaid-svg-V7WKg9jNbCep3OJd .sequenceNumber{fill:#fff}#mermaid-svg-V7WKg9jNbCep3OJd #sequencenumber{fill:#333}#mermaid-svg-V7WKg9jNbCep3OJd #crosshead path{fill:#333;stroke:#333}#mermaid-svg-V7WKg9jNbCep3OJd .messageText{fill:#333;stroke:#333}#mermaid-svg-V7WKg9jNbCep3OJd .labelBox{stroke:#ccf;fill:#ECECFF}#mermaid-svg-V7WKg9jNbCep3OJd .labelText,#mermaid-svg-V7WKg9jNbCep3OJd .labelText>tspan{fill:#000;stroke:none}#mermaid-svg-V7WKg9jNbCep3OJd .loopText,#mermaid-svg-V7WKg9jNbCep3OJd .loopText>tspan{fill:#000;stroke:none}#mermaid-svg-V7WKg9jNbCep3OJd .loopLine{stroke-width:2px;stroke-dasharray:2, 2;stroke:#ccf;fill:#ccf}#mermaid-svg-V7WKg9jNbCep3OJd .note{stroke:#aa3;fill:#fff5ad}#mermaid-svg-V7WKg9jNbCep3OJd .noteText,#mermaid-svg-V7WKg9jNbCep3OJd .noteText>tspan{fill:#000;stroke:none}#mermaid-svg-V7WKg9jNbCep3OJd .activation0{fill:#f4f4f4;stroke:#666}#mermaid-svg-V7WKg9jNbCep3OJd .activation1{fill:#f4f4f4;stroke:#666}#mermaid-svg-V7WKg9jNbCep3OJd .activation2{fill:#f4f4f4;stroke:#666}#mermaid-svg-V7WKg9jNbCep3OJd .mermaid-main-font{font-family:"trebuchet ms", verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-V7WKg9jNbCep3OJd .section{stroke:none;opacity:0.2}#mermaid-svg-V7WKg9jNbCep3OJd .section0{fill:rgba(102,102,255,0.49)}#mermaid-svg-V7WKg9jNbCep3OJd .section2{fill:#fff400}#mermaid-svg-V7WKg9jNbCep3OJd .section1,#mermaid-svg-V7WKg9jNbCep3OJd .section3{fill:#fff;opacity:0.2}#mermaid-svg-V7WKg9jNbCep3OJd .sectionTitle0{fill:#333}#mermaid-svg-V7WKg9jNbCep3OJd .sectionTitle1{fill:#333}#mermaid-svg-V7WKg9jNbCep3OJd .sectionTitle2{fill:#333}#mermaid-svg-V7WKg9jNbCep3OJd .sectionTitle3{fill:#333}#mermaid-svg-V7WKg9jNbCep3OJd .sectionTitle{text-anchor:start;font-size:11px;text-height:14px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-V7WKg9jNbCep3OJd .grid .tick{stroke:#d3d3d3;opacity:0.8;shape-rendering:crispEdges}#mermaid-svg-V7WKg9jNbCep3OJd .grid .tick text{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-V7WKg9jNbCep3OJd .grid path{stroke-width:0}#mermaid-svg-V7WKg9jNbCep3OJd .today{fill:none;stroke:red;stroke-width:2px}#mermaid-svg-V7WKg9jNbCep3OJd .task{stroke-width:2}#mermaid-svg-V7WKg9jNbCep3OJd .taskText{text-anchor:middle;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-V7WKg9jNbCep3OJd .taskText:not([font-size]){font-size:11px}#mermaid-svg-V7WKg9jNbCep3OJd .taskTextOutsideRight{fill:#000;text-anchor:start;font-size:11px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-V7WKg9jNbCep3OJd .taskTextOutsideLeft{fill:#000;text-anchor:end;font-size:11px}#mermaid-svg-V7WKg9jNbCep3OJd .task.clickable{cursor:pointer}#mermaid-svg-V7WKg9jNbCep3OJd .taskText.clickable{cursor:pointer;fill:#003163 !important;font-weight:bold}#mermaid-svg-V7WKg9jNbCep3OJd .taskTextOutsideLeft.clickable{cursor:pointer;fill:#003163 !important;font-weight:bold}#mermaid-svg-V7WKg9jNbCep3OJd .taskTextOutsideRight.clickable{cursor:pointer;fill:#003163 !important;font-weight:bold}#mermaid-svg-V7WKg9jNbCep3OJd .taskText0,#mermaid-svg-V7WKg9jNbCep3OJd .taskText1,#mermaid-svg-V7WKg9jNbCep3OJd .taskText2,#mermaid-svg-V7WKg9jNbCep3OJd .taskText3{fill:#fff}#mermaid-svg-V7WKg9jNbCep3OJd .task0,#mermaid-svg-V7WKg9jNbCep3OJd .task1,#mermaid-svg-V7WKg9jNbCep3OJd .task2,#mermaid-svg-V7WKg9jNbCep3OJd .task3{fill:#8a90dd;stroke:#534fbc}#mermaid-svg-V7WKg9jNbCep3OJd .taskTextOutside0,#mermaid-svg-V7WKg9jNbCep3OJd .taskTextOutside2{fill:#000}#mermaid-svg-V7WKg9jNbCep3OJd .taskTextOutside1,#mermaid-svg-V7WKg9jNbCep3OJd .taskTextOutside3{fill:#000}#mermaid-svg-V7WKg9jNbCep3OJd .active0,#mermaid-svg-V7WKg9jNbCep3OJd .active1,#mermaid-svg-V7WKg9jNbCep3OJd .active2,#mermaid-svg-V7WKg9jNbCep3OJd .active3{fill:#bfc7ff;stroke:#534fbc}#mermaid-svg-V7WKg9jNbCep3OJd .activeText0,#mermaid-svg-V7WKg9jNbCep3OJd .activeText1,#mermaid-svg-V7WKg9jNbCep3OJd .activeText2,#mermaid-svg-V7WKg9jNbCep3OJd .activeText3{fill:#000 !important}#mermaid-svg-V7WKg9jNbCep3OJd .done0,#mermaid-svg-V7WKg9jNbCep3OJd .done1,#mermaid-svg-V7WKg9jNbCep3OJd .done2,#mermaid-svg-V7WKg9jNbCep3OJd .done3{stroke:grey;fill:#d3d3d3;stroke-width:2}#mermaid-svg-V7WKg9jNbCep3OJd .doneText0,#mermaid-svg-V7WKg9jNbCep3OJd .doneText1,#mermaid-svg-V7WKg9jNbCep3OJd .doneText2,#mermaid-svg-V7WKg9jNbCep3OJd .doneText3{fill:#000 !important}#mermaid-svg-V7WKg9jNbCep3OJd .crit0,#mermaid-svg-V7WKg9jNbCep3OJd .crit1,#mermaid-svg-V7WKg9jNbCep3OJd .crit2,#mermaid-svg-V7WKg9jNbCep3OJd .crit3{stroke:#f88;fill:red;stroke-width:2}#mermaid-svg-V7WKg9jNbCep3OJd .activeCrit0,#mermaid-svg-V7WKg9jNbCep3OJd .activeCrit1,#mermaid-svg-V7WKg9jNbCep3OJd .activeCrit2,#mermaid-svg-V7WKg9jNbCep3OJd .activeCrit3{stroke:#f88;fill:#bfc7ff;stroke-width:2}#mermaid-svg-V7WKg9jNbCep3OJd .doneCrit0,#mermaid-svg-V7WKg9jNbCep3OJd .doneCrit1,#mermaid-svg-V7WKg9jNbCep3OJd .doneCrit2,#mermaid-svg-V7WKg9jNbCep3OJd .doneCrit3{stroke:#f88;fill:#d3d3d3;stroke-width:2;cursor:pointer;shape-rendering:crispEdges}#mermaid-svg-V7WKg9jNbCep3OJd .milestone{transform:rotate(45deg) scale(0.8, 0.8)}#mermaid-svg-V7WKg9jNbCep3OJd .milestoneText{font-style:italic}#mermaid-svg-V7WKg9jNbCep3OJd .doneCritText0,#mermaid-svg-V7WKg9jNbCep3OJd .doneCritText1,#mermaid-svg-V7WKg9jNbCep3OJd .doneCritText2,#mermaid-svg-V7WKg9jNbCep3OJd .doneCritText3{fill:#000 !important}#mermaid-svg-V7WKg9jNbCep3OJd .activeCritText0,#mermaid-svg-V7WKg9jNbCep3OJd .activeCritText1,#mermaid-svg-V7WKg9jNbCep3OJd .activeCritText2,#mermaid-svg-V7WKg9jNbCep3OJd .activeCritText3{fill:#000 !important}#mermaid-svg-V7WKg9jNbCep3OJd .titleText{text-anchor:middle;font-size:18px;fill:#000;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-V7WKg9jNbCep3OJd g.classGroup text{fill:#9370db;stroke:none;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);font-size:10px}#mermaid-svg-V7WKg9jNbCep3OJd g.classGroup text .title{font-weight:bolder}#mermaid-svg-V7WKg9jNbCep3OJd g.clickable{cursor:pointer}#mermaid-svg-V7WKg9jNbCep3OJd g.classGroup rect{fill:#ECECFF;stroke:#9370db}#mermaid-svg-V7WKg9jNbCep3OJd g.classGroup line{stroke:#9370db;stroke-width:1}#mermaid-svg-V7WKg9jNbCep3OJd .classLabel .box{stroke:none;stroke-width:0;fill:#ECECFF;opacity:0.5}#mermaid-svg-V7WKg9jNbCep3OJd .classLabel .label{fill:#9370db;font-size:10px}#mermaid-svg-V7WKg9jNbCep3OJd .relation{stroke:#9370db;stroke-width:1;fill:none}#mermaid-svg-V7WKg9jNbCep3OJd .dashed-line{stroke-dasharray:3}#mermaid-svg-V7WKg9jNbCep3OJd #compositionStart{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-V7WKg9jNbCep3OJd #compositionEnd{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-V7WKg9jNbCep3OJd #aggregationStart{fill:#ECECFF;stroke:#9370db;stroke-width:1}#mermaid-svg-V7WKg9jNbCep3OJd #aggregationEnd{fill:#ECECFF;stroke:#9370db;stroke-width:1}#mermaid-svg-V7WKg9jNbCep3OJd #dependencyStart{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-V7WKg9jNbCep3OJd #dependencyEnd{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-V7WKg9jNbCep3OJd #extensionStart{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-V7WKg9jNbCep3OJd #extensionEnd{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-V7WKg9jNbCep3OJd .commit-id,#mermaid-svg-V7WKg9jNbCep3OJd .commit-msg,#mermaid-svg-V7WKg9jNbCep3OJd .branch-label{fill:lightgrey;color:lightgrey;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-V7WKg9jNbCep3OJd .pieTitleText{text-anchor:middle;font-size:25px;fill:#000;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-V7WKg9jNbCep3OJd .slice{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-V7WKg9jNbCep3OJd g.stateGroup text{fill:#9370db;stroke:none;font-size:10px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-V7WKg9jNbCep3OJd g.stateGroup text{fill:#9370db;fill:#333;stroke:none;font-size:10px}#mermaid-svg-V7WKg9jNbCep3OJd g.statediagram-cluster .cluster-label text{fill:#333}#mermaid-svg-V7WKg9jNbCep3OJd g.stateGroup .state-title{font-weight:bolder;fill:#000}#mermaid-svg-V7WKg9jNbCep3OJd g.stateGroup rect{fill:#ECECFF;stroke:#9370db}#mermaid-svg-V7WKg9jNbCep3OJd g.stateGroup line{stroke:#9370db;stroke-width:1}#mermaid-svg-V7WKg9jNbCep3OJd .transition{stroke:#9370db;stroke-width:1;fill:none}#mermaid-svg-V7WKg9jNbCep3OJd .stateGroup .composit{fill:white;border-bottom:1px}#mermaid-svg-V7WKg9jNbCep3OJd .stateGroup .alt-composit{fill:#e0e0e0;border-bottom:1px}#mermaid-svg-V7WKg9jNbCep3OJd .state-note{stroke:#aa3;fill:#fff5ad}#mermaid-svg-V7WKg9jNbCep3OJd .state-note text{fill:black;stroke:none;font-size:10px}#mermaid-svg-V7WKg9jNbCep3OJd .stateLabel .box{stroke:none;stroke-width:0;fill:#ECECFF;opacity:0.7}#mermaid-svg-V7WKg9jNbCep3OJd .edgeLabel text{fill:#333}#mermaid-svg-V7WKg9jNbCep3OJd .stateLabel text{fill:#000;font-size:10px;font-weight:bold;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-V7WKg9jNbCep3OJd .node circle.state-start{fill:black;stroke:black}#mermaid-svg-V7WKg9jNbCep3OJd .node circle.state-end{fill:black;stroke:white;stroke-width:1.5}#mermaid-svg-V7WKg9jNbCep3OJd #statediagram-barbEnd{fill:#9370db}#mermaid-svg-V7WKg9jNbCep3OJd .statediagram-cluster rect{fill:#ECECFF;stroke:#9370db;stroke-width:1px}#mermaid-svg-V7WKg9jNbCep3OJd .statediagram-cluster rect.outer{rx:5px;ry:5px}#mermaid-svg-V7WKg9jNbCep3OJd .statediagram-state .divider{stroke:#9370db}#mermaid-svg-V7WKg9jNbCep3OJd .statediagram-state .title-state{rx:5px;ry:5px}#mermaid-svg-V7WKg9jNbCep3OJd .statediagram-cluster.statediagram-cluster .inner{fill:white}#mermaid-svg-V7WKg9jNbCep3OJd .statediagram-cluster.statediagram-cluster-alt .inner{fill:#e0e0e0}#mermaid-svg-V7WKg9jNbCep3OJd .statediagram-cluster .inner{rx:0;ry:0}#mermaid-svg-V7WKg9jNbCep3OJd .statediagram-state rect.basic{rx:5px;ry:5px}#mermaid-svg-V7WKg9jNbCep3OJd .statediagram-state rect.divider{stroke-dasharray:10,10;fill:#efefef}#mermaid-svg-V7WKg9jNbCep3OJd .note-edge{stroke-dasharray:5}#mermaid-svg-V7WKg9jNbCep3OJd .statediagram-note rect{fill:#fff5ad;stroke:#aa3;stroke-width:1px;rx:0;ry:0}:root{--mermaid-font-family: '"trebuchet ms", verdana, arial';--mermaid-font-family: "Comic Sans MS", "Comic Sans", cursive}#mermaid-svg-V7WKg9jNbCep3OJd .error-icon{fill:#522}#mermaid-svg-V7WKg9jNbCep3OJd .error-text{fill:#522;stroke:#522}#mermaid-svg-V7WKg9jNbCep3OJd .edge-thickness-normal{stroke-width:2px}#mermaid-svg-V7WKg9jNbCep3OJd .edge-thickness-thick{stroke-width:3.5px}#mermaid-svg-V7WKg9jNbCep3OJd .edge-pattern-solid{stroke-dasharray:0}#mermaid-svg-V7WKg9jNbCep3OJd .edge-pattern-dashed{stroke-dasharray:3}#mermaid-svg-V7WKg9jNbCep3OJd .edge-pattern-dotted{stroke-dasharray:2}#mermaid-svg-V7WKg9jNbCep3OJd .marker{fill:#333}#mermaid-svg-V7WKg9jNbCep3OJd .marker.cross{stroke:#333}:root { --mermaid-font-family: "trebuchet ms", verdana, arial;}#mermaid-svg-V7WKg9jNbCep3OJd {color: rgba(0, 0, 0, 0.75);font: ;}

递推公式
a1i
a2i
a3i
axi
aNi
q1
qi
q2
q3
...
qN
alpha_t(j)
alpha_t+1(i)

(3)终止
P(O∣λ)=∑i=1NαT(i)P(O|\lambda)=\sum_{i=1}^N\alpha_T(i) P(O∣λ)=i=1∑N​αT​(i)

例2 考虑盒子和球模型λ=(A,B,π)\lambda=(A,B,\pi)λ=(A,B,π),状态集合Q={1,2,3}Q=\{1,2,3\}Q={1,2,3},观测集合V={Red,White}V=\{Red,White\}V={Red,White}
A=[0.50.20.30.30.50.20.20.30.5],B=[0.50.50.40.60.70.3],π=[0.20.40.4]\begin{aligned} A=\begin{bmatrix} 0.5 & 0.2 & 0.3 \\ 0.3 & 0.5 & 0.2 \\ 0.2 & 0.3 & 0.5 \\ \end{bmatrix}, B=\begin{bmatrix} 0.5 & 0.5 \\ 0.4 & 0.6 \\ 0.7 & 0.3 \\ \end{bmatrix}, \pi=\begin{bmatrix} 0.2 \\ 0.4 \\ 0.4 \\ \end{bmatrix} \end{aligned} A=⎣⎡​0.50.30.2​0.20.50.3​0.30.20.5​⎦⎤​,B=⎣⎡​0.50.40.7​0.50.60.3​⎦⎤​,π=⎣⎡​0.20.40.4​⎦⎤​​
设T=3T=3T=3,O=(Red,White,White)O=(Red,White,White)O=(Red,White,White),试用前向算法计算P(O∣λ)P(O|\lambda)P(O∣λ)

简单理解一下这三个矩阵的含义,AAA表示转移概率,一共有三个状态,因此分别对应三个状态转移到三个状态的概率,因此一共有9种可能,BBB矩阵表示观测概率,一共有两个观测状态,白球和红球,也就是每一行表示从当前状态111下,观测到红球和白球的概率分别为0.5和0.50.5和0.50.5和0.5,一共有三个状态,因此共有6个元素,而π\piπ表示状态概率向量,分别表示处于状态1,2,31,2,31,2,3的概率,共有3个元素。

(1)计算初值
α1(1)=π1b1(o1)=0.2×0.5=0.1α1(2)=π2b2(o1)=0.4×0.4=0.16α1(3)=π3b3(o1)=0.4×0.7=0.28(2)\alpha_1(1)=\pi_1b_1(o_1)=0.2 \times 0.5=0.1 \\ \alpha_1(2)=\pi_2b_2(o_1)=0.4 \times 0.4=0.16 \\ \alpha_1(3)=\pi_3b_3(o_1)=0.4 \times 0.7=0.28 \\(2) α1​(1)=π1​b1​(o1​)=0.2×0.5=0.1α1​(2)=π2​b2​(o1​)=0.4×0.4=0.16α1​(3)=π3​b3​(o1​)=0.4×0.7=0.28(2)
(2)递推计算
α2(1)=[∑i=13α1(i)ai1]b1(o2)=0.1×0.5+0.16×0.3+0.28×0.2=0.154×0.5=0.077α2(2)=[∑i=13α1(i)ai1]b1(o2)=0.1104α2(3)=[∑i=13α1(i)ai1]b1(o2)=0.0606α3(1)=[∑i=13α2(i)ai1]b1(o3)=0.04187α3(2)=[∑i=13α2(i)ai1]b1(o3)=0.03551α3(3)=[∑i=13α2(i)ai1]b1(o3)=0.05284\alpha_2(1)=[\sum_{i=1}^3\alpha_1(i)a_{i1}]b_1(o_{2})=0.1\times 0.5+0.16\times 0.3+0.28\times 0.2=0.154\times 0.5=0.077 \\ \alpha_2(2)=[\sum_{i=1}^3\alpha_1(i)a_{i1}]b_1(o_{2}) =0.1104\\ \alpha_2(3)=[\sum_{i=1}^3\alpha_1(i)a_{i1}]b_1(o_{2})=0.0606 \\ \alpha_3(1)=[\sum_{i=1}^3\alpha_2(i)a_{i1}]b_1(o_{3})=0.04187 \\ \alpha_3(2)=[\sum_{i=1}^3\alpha_2(i)a_{i1}]b_1(o_{3}) =0.03551\\ \alpha_3(3)=[\sum_{i=1}^3\alpha_2(i)a_{i1}]b_1(o_{3})=0.05284 \\ α2​(1)=[i=1∑3​α1​(i)ai1​]b1​(o2​)=0.1×0.5+0.16×0.3+0.28×0.2=0.154×0.5=0.077α2​(2)=[i=1∑3​α1​(i)ai1​]b1​(o2​)=0.1104α2​(3)=[i=1∑3​α1​(i)ai1​]b1​(o2​)=0.0606α3​(1)=[i=1∑3​α2​(i)ai1​]b1​(o3​)=0.04187α3​(2)=[i=1∑3​α2​(i)ai1​]b1​(o3​)=0.03551α3​(3)=[i=1∑3​α2​(i)ai1​]b1​(o3​)=0.05284
(3)终止
P(O∣λ)=∑i=13α3(i)=0.13022P(O|\lambda)=\sum_{i=1}^3\alpha_3(i)=0.13022 P(O∣λ)=i=1∑3​α3​(i)=0.13022

2.3 后向算法(略)

[强化学习一]隐马尔可夫基本概念相关推荐

  1. 【强化学习入门】马尔科夫决策过程

    本文介绍了马尔可夫决策过程,首先给出了马尔可夫决策过程的定义形式 ,其核心是在时序上的各种状态下如何选择最优决策得到最大回报的决策序列,通过贝尔曼方程得到累积回报函数:然后介绍两种基本的求解最优决策的 ...

  2. 深度学习:隐马尔科夫模型

    概率图 隐马尔科夫模型属于概率图范畴,简单介绍一下概率图模型,概率图模型(probabilistic graphical model)是一类用图的形式表示随机变量之间条件依赖关系的概率模型,是概率论与 ...

  3. 【深度学习】隐马尔科夫

    文章目录 一 隐马尔可夫 1. 自动机 2. 马尔可夫链和马尔可夫假设 3. 隐马尔可夫模型 3.1 马尔科夫模型中的三个问题: 3.2 似然度问题: 3.3 解码问题 案例 如何对句子进行分词 统计 ...

  4. 隐马尔科夫模型 概念(上)

    隐马尔可夫模型(Hidden Markov Model,HMM)是统计模型,它用来描述一个含有隐含未知参数的马尔可夫过程. 隐马尔可夫模型(HMM)可以用五个元素来描述,包括2个状态集合和3个概率矩阵 ...

  5. 强化学习:2 马尔科夫决策过程

    总结 无数的学者通过几十年的努力,提出了一套可以解决大部分强化学习问题的框架,这个框架就是马尔科夫决策过程. 马尔科夫性 ----> 马尔科夫过程 -> 马尔科夫决策过程 马尔科夫性描述的 ...

  6. 浅谈强化学习二之马尔卡夫决策过程与动态规划

    书接上文,目前普遍认为强化学习的算法分为基于值函数和基于策略搜索以及其他强化学习算法. 先说强化学习的基础,提及强化学习,就要先认知马尔可夫.确认过眼神,大家都是被公式折磨的人,这里就不讲公式了,只是 ...

  7. 隐马尔科夫模型(HMM)笔记(公式+代码)

    文章目录 1. 基本概念 1.1 HMM模型定义 1.2 盒子和球模型 1.3 观测序列生成过程 1.4 HMM模型3个基本问题 2. 概率计算问题 2.1 直接计算法 2.2 前向算法 2.2.1 ...

  8. 《统计学习方法》——隐马尔可夫模型

        隐马尔可夫模型(hidden Markov model,HMM)是可用于标注问题的统计学模型,描述由隐藏的马尔可夫链生成观测序列的过程,属于生成模型. 10.1 隐马尔可夫模型的基本概念 10 ...

  9. 隐马尔可夫模型之Baum-Welch算法详解

    隐马尔可夫模型之Baum-Welch算法详解 前言 在上篇博文中,我们学习了隐马尔可夫模型的概率计算问题和预测问题,但正当要准备理解学习问题时,发现学习问题中需要EM算法的相关知识,因此,上一周转而学 ...

最新文章

  1. 使用fiddler4做代理调试手机页面
  2. 080_html5 Canvas和SVG
  3. 回调函数 —— 借助中间通用函数(形参里有函数指针,实现函数注册)调用不同的回调函数 (多态/分层)
  4. html透明页面锁定窗口,CSS弹出背景半透明窗口
  5. cocos2d-lua3.7组件篇(三)-http通信demo
  6. java 迷你桌面地图_求教贴,Java桌面小游戏的地图怎么做
  7. (转)新ITC提交APP常见问题与解决方法(Icon Alpha,Build version,AppIcon120x120)(2014-11-17)...
  8. 5月第二周全球五大顶级域名总量新增10.5万个
  9. 使用wget命令镜像网站
  10. 模块化方案esl以及amd的依赖方式
  11. 走进量化投资奇妙的模型世界
  12. Android图片选择器PhotoPicker
  13. 【VS问题已解决】警告被视为错误 - 没有生成“object”文件
  14. redis学习之redis的发布和订阅
  15. 无线路由器经常掉线怎么办
  16. 计算机的硬盘维修,计算机硬盘的维修方法和技巧
  17. incrby redis 最大值_redis incr incrby decr decrby命令
  18. const指针、数组指针、指针数组理解
  19. SpringBean篇 (2) 注解配置形式
  20. 未上线PP模块的生产领料处理

热门文章

  1. 京东云 - 增值税发票识别
  2. 枚举方法在swtch中的用法
  3. 解决Flash Helper Service老是弹出流氓广告
  4. 让人又爱又恨的C语言
  5. 安卓游戏优化加速器v1.0.5
  6. Excel 多个 Sheet 数据关联
  7. 程序员如何读懂火焰图
  8. 打造个性QQ,适合网吧做自己安全的QQ
  9. QA | SWCF2022 笔记:C波段卫星与5G之间的干扰排查及解决方案
  10. 软件工程复习知识点汇总(2)