目录

  • 隐马尔科夫模型的结构
    • 马尔科夫链与隐马尔科夫模型
    • 实例
    • HMM的要素
    • 模型的性质
  • 推理问题:HMM的状态解码
    • 隐状态解码问题
    • 最大路径概率与维特比算法
    • 使用维特比算法解码
    • 实例演示
    • 基于Python对盒子摸球实验进行状态解码

隐马尔科夫模型的结构

马尔科夫链与隐马尔科夫模型

隐马尔科夫模型的全称为 Hidden Markov Model(HMM),这是一种统计模型,广泛应用于语音识别,词性自动标注等问题。马尔科夫链(回顾第十四课-马尔科夫链)与HMM的差距体现于Hidden,在这个模型中,首先由一个隐藏的马尔科夫链随机生成一个状态随机序列,再由状态随机序列中的每一个状态对应生成各自的观测,由这些观测构成一个观测随机序列。

实例

为了清晰说明问题,现在通过举例介绍HMM,第一个例子叫做:盒子摸球实验。有3个盒子,编号为1号,2号,3号,每个盒子里都装着个数不等的黑球和白球,具体情况如下描述:

  • 1号盒子:黑球2个,白球8个;
  • 2号盒子:黑球6个,白球4个;
  • 3号盒子:黑球4个,白球6个;

实验过程如下:

每次先随机选择一个盒子,然后从随机选中的盒子中随机摸出一个球,并记录球的颜色,最后把球放回盒子。下一次再随机选择一个盒子,重复以上操作。

在实验过程中,我们只能在每次摸出球之后看到被摸出球的颜色,但不知道盒子的编号。因此,随着实验的进行,会依次出现不同编号的盒子,这个盒子的序列就是隐藏的状态序列ZZZ。由于我们只能观测到球的颜色,所以球的颜色序列为观测序列XXX。

现在,我们假设每次盒子随机出现的过程是马尔科夫过程,状态集合为Q=Q=Q={盒子1,盒子2,盒子3},N=3N=3N=3。同时,第一次各个盒子出现所满足的概率分布如下:

  • 1号盒子出现的概率:0.3;
  • 2号盒子出现的概率:0.5;
  • 3号盒子出现的概率:0.2;

用π\piπ表示初始状态的概率向量为:π=(0.3,0.5,0.2)T\pi=(0.3,0.5,0.2)^{T}π=(0.3,0.5,0.2)T,这就是状态的初始概率分布。

同时假设各个盒子之间相互转换的概率转移图如下:

从上图可以得到关于盒子的状态转移矩阵,记作AAA:

对于实验中隐藏的状态序列,即三个盒子随机出现的过程如上所述,下面是从盒子中摸球的过程,比如在1号盒子中:黑球2个,白球8个,摸球后并放回。这是最简单的古典概型,从1号盒子中摸出黑球的概率为0.2,摸出白球的概率为0.8,即观测概率,也叫输出概率,它是从特定的隐含状态中生成指定观测的概率。

同样的,我们可以把2号盒子和3号盒子的观测概率求出,得到另一个矩阵(观测概率矩阵BBB):

观测集合为V=V=V={黑球,白球},M=2M=2M=2。

通过以上描述,重复7次上述过程,得到两个序列:

  • 一个是长度为7的隐藏状态序列:I=I=I={2号,2号,1号,3号,1号,2号,3号};注意这个序列是实际存在的,只是我们不能观测到;
  • 另一个是长度为7的观测序列:O=O=O={黑球,黑球,白球,黑球,白球,白球,黑球},这是我们可以观测到的序列;

在本次盒子摸球实验中,可以得到以下序列关系:

上图直观表达了HMM的两个核心:

  • 1.:即状态序列,盒子序列是我们看不到的,即隐藏的;
  • 2.马尔科夫:指的是整个隐藏状态序列,隐状态之间的转换是一个马尔科夫过程,即隐状态之间的转换遵循指定的概率。

将以上信息反映到概率转移图中,可以看到隐马尔科夫的全部信息:

另一个实例更加贴近生活,一个婴儿有两种状态:{饿了,困了},但是婴儿不会说话,所以我们无法观测到这两个状态。我们只能从他的行为去推断隐状态,行为有三种:{哭闹,无精打采,爬来爬去},这就是观测集。

隐状态之间的转移是一个马尔科夫过程,而从状态表现出的行为也会符合一定的概率分布:

这其中的状态集合QQQ,观测集合VVV,状态转移概率矩阵AAA,观测概率矩阵BBB,可以直观从上图得到。

HMM的要素

通过上面的两个实例,用形式化的语言总结HMM的要素:

HMM是一个时序模型,首先由一个隐藏的马尔科夫链按照其设定的状态转移概率,生成一个状态序列,但是这个状态序列是不能观测到的,然后再由每个状态按照观测概率(又称为输出概率)生成对应的观测,由此构成可观测的观测序列。

HMM中所有的隐含状态构成状态集合Q={q1,q2,...,qN}Q=\left\{q_{1},q_{2},...,q_{N}\right\}Q={q1​,q2​,...,qN​},状态个数为NNN,所有的观测构成观测集合V={v1,v2,...,vM}V=\left\{v_{1},v_{2},...,v_{M}\right\}V={v1​,v2​,...,vM​},观测的个数为MMM。经过一段时间TTT之后,生成长度为TTT的状态序列I={i1,i2,...,iT}I=\left\{i_{1},i_{2},...,i_{T}\right\}I={i1​,i2​,...,iT​}和对应的观测序列O={o1,o2,...,oT}O=\left\{o_{1},o_{2},...,o_{T}\right\}O={o1​,o2​,...,oT​}。

以上是HMM的外在表征,推动HMM运行的是三个要素:状态转移概率矩阵AAA,观测概率矩阵BBB(输出概率矩阵),初始隐含状态的概率向量π\piπ,简写为λ={A,B,π}\lambda=\left\{A,B,\pi\right\}λ={A,B,π}。

初始概率向量π=(π1,π2,...,πN)\pi=(\pi_{1},\pi_{2},...,\pi_{N})π=(π1​,π2​,...,πN​),其中πn\pi_{n}πn​表示隐含状态序列中第1个状态为qnq_{n}qn​的概率,即:πn=P(i1=qn)\pi_{n}=P(i_{1}=q_{n})πn​=P(i1​=qn​)
状态转移概率矩阵AAA本质上就是马尔科夫链的转移概率矩阵,AAA是一个N×NN\times NN×N的方阵:

其中,aija_{ij}aij​表示从隐含状态iii转移到隐含状态jjj的概率,即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​);

观测概率矩阵BBB是一个N×MN\times MN×M的矩阵:

其中,bijb_{ij}bij​指的是在某时刻ttt,隐含状态为qiq_{i}qi​的情况下,生成观测vjv_{j}vj​的概率,即bij=P(o1=vj∣it=qi)b_{ij}=P(o_{1}=v_{j}|i_{t}=q_{i})bij​=P(o1​=vj​∣it​=qi​)

模型的性质

ttt时刻的隐状态只与前一时刻的隐状态相关

在隐马尔科夫模型的三要素中,状态转移概率矩阵AAA和初始状态概率向量π\piπ完全确定了隐藏的马尔科夫链,其性质服从马尔科夫性,可以描述为:P(it∣it−1,ot−1,it−2,ot−2,...,i1,o1)=P(it∣it−1)P(i_{t}|i_{t-1},o_{t-1},i_{t-2},o_{t-2},...,i_{1},o_{1})=P(i_{t}|i_{t-1})P(it​∣it−1​,ot−1​,it−2​,ot−2​,...,i1​,o1​)=P(it​∣it−1​)
ttt时刻的观测只与该时刻的隐状态相关

该性质描述为:P(ot∣it,it−1,ot−1,it−2,ot−2,...,i1,o1)=P(ot∣it)P(o_{t}|i_{t},i_{t-1},o_{t-1},i_{t-2},o_{t-2},...,i_{1},o_{1})=P(o_{t}|i_{t})P(ot​∣it​,it−1​,ot−1​,it−2​,ot−2​,...,i1​,o1​)=P(ot​∣it​)

推理问题:HMM的状态解码

隐状态解码问题

前面描述了HMM的概率估计,现在讨论HMM的状态解码。解码,即给定已知的观测序列,求它最有可能对应的状态序列。

即已知模型λ=(A,B,π)\lambda=(A,B,\pi)λ=(A,B,π),观测序列O=(o1,o2,...,oT)O=(o_{1},o_{2},...,o_{T})O=(o1​,o2​,...,oT​),求使得条件概率P(I∣O)P(I|O)P(I∣O)最大的隐状态序列I=(i1,i2,...,iT)I=(i_{1},i_{2},...,i_{T})I=(i1​,i2​,...,iT​);

先不考虑输出的观测,只考虑隐状态的转移,目标是找到路径概率最大的一条状态序列。对照下图,图中展现了HMM的状态序列,其中一共包含5种隐状态,状态的序列长度为7,图中横轴是时间轴,纵轴是状态轴:

最大路径概率与维特比算法

从整个隐状态序列的最后面向前看,在第7个时间点,即最后一个时间点,要考虑状态序列的最后一个状态是状态[1,2,3,4,5][1,2,3,4,5][1,2,3,4,5]中的哪一个,即路径以哪个结束可以获得最大概率。

首先关注最后一个时间点(时间点7),问题变成如果状态转移的路径以结束于状态kkk的路径概率最大,概率该如何表示?而时间点6也可以取5种状态的任一种,最终取决于从哪个状态转移到时间点7的状态kkk有最大概率。如下所示:

我们令X6iX_{6i}X6i​表示到达时间点6时,此时状态为iii的最大路径概率,状态iii可以取{1,2,3,4,5}\left\{1,2,3,4,5\right\}{1,2,3,4,5}中的任意一个,那么实际上就有X61,X62,X63,X64,X65X_{61},X_{62},X_{63},X_{64},X_{65}X61​,X62​,X63​,X64​,X65​五个不同的值。在上图中,对应了虚线框内五种颜色示意的到达时间节点6的五条路径,他们分别是在时间节点6时到达对应状态iii的最大概率路径。

那么用它乘以对应的状态转移概率,即X6iAikX_{6i}A_{ik}X6i​Aik​,就推进到第7个时间节点。首先固定第7个时间节点结束的状态,比如选择状态1,则可以分别求出从第6个时间节点的状态1,状态2,状态3,状态4,状态5转移到时间点7状态1的概率:X61A11,X62A21,X63A31,X64A41,X65A51X_{61}A_{11},X_{62}A_{21},X_{63}A_{31},X_{64}A_{41},X_{65}A_{51}X61​A11​,X62​A21​,X63​A31​,X64​A41​,X65​A51​
我们计算出这5个值,取最大值为结束于状态1的最大路径概率。

同理,我们分别假设,令时间点7的结束状态为2,3,4,5,按照上述步骤,取每个结束状态的最大概率路径。然后在这些结束状态的最大路径中选最大的一个,作为最后真正的最大路径。

对于X6iX_{6i}X6i​,它依赖于时间点5的X5jX_{5j}X5j​,一直追溯到最早的时间点1为尽头。因此,现在从时间点1出发,描述以上过程:

  • 首先在时间点1,我们计算出各种状态出现的概率,由于只有一个节点,因此这个概率值就是此时的最大路径概率X1iX_{1i}X1i​;
  • 然后我们再向前前进到时间点2,对于每一个状态jjj,我们通过利用时间点1的每一个状态的最大路径乘以转移概率,得到5个到达时间点2,状态jjj的路径概率,取最大的一个作为此时的最大路径概率X2jX_{2j}X2j​,即:X2j=max(X1iAij)X_{2j}=max(X_{1i}A_{ij})X2j​=max(X1i​Aij​)其中,iii遍历1,2,3,4,5每一个状态。同时,我们把最大路径的序列记录下来。
  • 以此类推,我们基于时间点ttt中,各状态的最大路径概率,就可以前向计算出t+1t+1t+1中各状态的最大路径概率,直到最后一个时间节点TTT,我们得到时间节点TTT的所有状态的最大概率路径XTiX_{Ti}XTi​,取最大值:max(XTi)max(X_{Ti})max(XTi​)其中,iii遍历1,2,3,4,5每一个状态。这就是我们要求的最大路径概率,以及结束的状态,然后依据记录的路径得到目标的隐状态序列。

以上即为求最大概率路径的方法,即维特比算法(用于计算最大或最小路径的动态规划算法)。

使用维特比算法解码

下面,我们将维特比算法用于HMM的解码,维特比算法中最大概率路径对应着HMM要求的状态序列,不过现在不光要考虑隐状态的转移概率,还有观测输出概率。

即要寻找一条隐状态(i1,i2,...,it)(i_{1},i_{2},...,i_{t})(i1​,i2​,...,it​),用它生成指定的观测序列(o1,o2,...,ot)(o_{1},o_{2},...,o_{t})(o1​,o2​,...,ot​),使得观测序列的存在概率最大。描述为:δt(i)=maxP(it=i,it−1,...,i1,ot,...,o1)\delta_{t}(i)=maxP(i_{t}=i,i_{t-1},...,i_{1},o_{t},...,o_{1})δt​(i)=maxP(it​=i,it−1​,...,i1​,ot​,...,o1​)其中,i=1,2,3,...,Ni=1,2,3,...,Ni=1,2,3,...,N,表示在时刻ttt,结束于隐状态iii,同时满足观测序列(o1,o2,...,ot)(o_{1},o_{2},...,o_{t})(o1​,o2​,...,ot​)的最大路径概率,这个表达式同时考虑了隐状态和输出观测,是一个联合概率,其中iii取1,2,3,...,N1,2,3,...,N1,2,3,...,N,最终我们取最大的PPP。

以此类推:δt+1(i)=maxP(it+1=i,it,...,i1,ot+1,...,o1)\delta_{t+1}(i)=maxP(i_{t+1}=i,i_{t},...,i_{1},o_{t+1},...,o_{1})δt+1​(i)=maxP(it+1​=i,it​,...,i1​,ot+1​,...,o1​)其中,i=1,2,3,...,Ni=1,2,3,...,Ni=1,2,3,...,N;

对于δt+1(i)\delta_{t+1}(i)δt+1​(i)和δt(i)\delta_{t}(i)δt​(i)的递推关系,我们根据HMM进行状态转移,再进行观测输出,所以有:δt+1(i)=max(δt(j)ajibiot+1)\delta_{t+1}(i)=max(\delta_{t}(j)a_{ji}b_{io_{t+1}})δt+1​(i)=max(δt​(j)aji​biot+1​​)证明如下:max(δt(j)ajibiot+1)=max(δt(j)aji)biot+1max(\delta_{t}(j)a_{ji}b_{io_{t+1}})=max(\delta_{t}(j)a_{ji})b_{io_{t+1}}max(δt​(j)aji​biot+1​​)=max(δt​(j)aji​)biot+1​​=max[(maxP(it=j,it−1,...,i1,ot,...,o1))P(it+1=i∣it=j)P(ot+1∣it+1=i)]=max[(maxP(i_{t}=j,i_{t-1},...,i_{1},o_{t},...,o_{1}))P(i_{t+1}=i|i_{t}=j)P(o_{t+1}|i_{t+1}=i)]=max[(maxP(it​=j,it−1​,...,i1​,ot​,...,o1​))P(it+1​=i∣it​=j)P(ot+1​∣it+1​=i)]=max[P(it+1=i,it=j,it−1,...,i1,ot,...,o1)]P(ot+1∣it+1=i)=max[P(i_{t+1}=i,i_{t}=j,i_{t-1},...,i_{1},o_{t},...,o_{1})]P(o_{t+1}|i_{t+1}=i)=max[P(it+1​=i,it​=j,it−1​,...,i1​,ot​,...,o1​)]P(ot+1​∣it+1​=i)=max[P(it+1=i,it,it−1,...,i1,ot+1,ot,...,o1))]=δt+1(i)=max[P(i_{t+1}=i,i_{t},i_{t-1},...,i_{1},o_{t+1},o_{t},...,o_{1}))]=\delta_{t+1}(i)=max[P(it+1​=i,it​,it−1​,...,i1​,ot+1​,ot​,...,o1​))]=δt+1​(i)
现在回顾递推公式:δt+1(i)=max(δt(j)ajibiot+1)\delta_{t+1}(i)=max(\delta_{t}(j)a_{ji}b_{io_{t+1}})δt+1​(i)=max(δt​(j)aji​biot+1​​),与上一部分维特比算法求路径概率的例子相比,多了一个观测输出概率biot+1b_{io_{t+1}}biot+1​​,这个值是已知的,只是比单纯的路径概率多进行了一次观测输出概率的乘积运算。

按照维特比算法从δ1(i)\delta_{1}(i)δ1​(i)起步,一步一步按照上述方法推导到δT(i)\delta_{T}(i)δT​(i),求得最大的概率,同时在递推过程中记录序列。

实例演示

现在用盒子摸球模型演示计算过程,隐状态集合为Q=Q=Q={盒子1,盒子2,盒子3},N=3N=3N=3,初始概率π=(0.3,0.5,0.2)T\pi=(0.3,0.5,0.2)^{T}π=(0.3,0.5,0.2)T,状态概率矩阵为AAA:

观测集合V=V=V={黑球,白球},M=2M=2M=2,观测概率矩阵为BBB:

并且,已知观测序列为 {黑球,白球,黑球};

首先,在初始化时,对于在t=1t=1t=1时刻,隐状态为iii,观测o1o_{1}o1​为黑球的概率δ1(i)\delta_{1}(i)δ1​(i),有:δ1(1)=π1b1o1=0.3×0.2=0.06\delta_{1}(1)=\pi_{1}b_{1o_{1}}=0.3\times 0.2=0.06δ1​(1)=π1​b1o1​​=0.3×0.2=0.06δ1(2)=π2b2o1=0.5×0.6=0.30\delta_{1}(2)=\pi_{2}b_{2o_{1}}=0.5\times 0.6=0.30δ1​(2)=π2​b2o1​​=0.5×0.6=0.30δ1(3)=π3b3o1=0.2×0.4=0.08\delta_{1}(3)=\pi_{3}b_{3o_{1}}=0.2\times 0.4=0.08δ1​(3)=π3​b3o1​​=0.2×0.4=0.08递推到t=2t=2t=2时,表示在t=1t=1t=1时隐状态为jjj号盒子,输出观测o1o_{1}o1​为黑球,t=2t=2t=2时隐状态为iii号盒子,输出观测o2o_{2}o2​为白球的最大概率为:
δ2(i)=max[δ1(j)aji]bio2\delta_{2}(i)=max[\delta_{1}(j)a_{ji}]b_{io_{2}}δ2​(i)=max[δ1​(j)aji​]bio2​​

所以有:

δ2(1)=max[δ1(j)aj1]b1o2=max[δ1(1)a11,δ1(2)a21,δ1(3)a31]b1o2\delta_{2}(1)=max[\delta_{1}(j)a_{j1}]b_{1o_{2}}=max[\delta_{1}(1)a_{11},\delta_{1}(2)a_{21},\delta_{1}(3)a_{31}]b_{1o_{2}}δ2​(1)=max[δ1​(j)aj1​]b1o2​​=max[δ1​(1)a11​,δ1​(2)a21​,δ1​(3)a31​]b1o2​​
=max[0.06×0.4,0.3×0.3,0.08×0.2]0.8=max[0.024,0.09,0.016]0.8=0.072=max[0.06\times 0.4,0.3\times 0.3,0.08\times 0.2]0.8=max[0.024,0.09,0.016]0.8=0.072=max[0.06×0.4,0.3×0.3,0.08×0.2]0.8=max[0.024,0.09,0.016]0.8=0.072

同时记录t=1t=1t=1时,j=2j=2j=2;

δ2(2)=max[δ1(j)aj2]b2o2=max[δ1(1)a12,δ1(2)a22,δ1(3)a32]b2o2\delta_{2}(2)=max[\delta_{1}(j)a_{j2}]b_{2o_{2}}=max[\delta_{1}(1)a_{12},\delta_{1}(2)a_{22},\delta_{1}(3)a_{32}]b_{2o_{2}}δ2​(2)=max[δ1​(j)aj2​]b2o2​​=max[δ1​(1)a12​,δ1​(2)a22​,δ1​(3)a32​]b2o2​​
=max[0.024,0.06,0.048]0.4=0.024=max[0.024,0.06,0.048]0.4=0.024=max[0.024,0.06,0.048]0.4=0.024

其中b2o2=0.4b_{2o_{2}}=0.4b2o2​​=0.4,同时记录t=1t=1t=1时,j=2j=2j=2;

δ2(3)=max[δ1(j)aj3]b3o2=max[δ1(1)a13,δ1(2)a23,δ1(3)a33]b3o2\delta_{2}(3)=max[\delta_{1}(j)a_{j3}]b_{3o_{2}}=max[\delta_{1}(1)a_{13},\delta_{1}(2)a_{23},\delta_{1}(3)a_{33}]b_{3o_{2}}δ2​(3)=max[δ1​(j)aj3​]b3o2​​=max[δ1​(1)a13​,δ1​(2)a23​,δ1​(3)a33​]b3o2​​
=max[0.012,0.15,0.016]0.6=0.09=max[0.012,0.15,0.016]0.6=0.09=max[0.012,0.15,0.016]0.6=0.09

其中b3o2=0.6b_{3o_{2}}=0.6b3o2​​=0.6,同时记录t=1t=1t=1时,j=2j=2j=2;

我们把上述过程的结果可视化:

现在递推到t=3t=3t=3:

结果可视化为:

现在,我们从最后一个时间节点3开始,选择状态2,它的路径概率最大;

通过追溯,得到状态序列为:{盒子2,盒子3,盒子2}

基于Python对盒子摸球实验进行状态解码

下面基于Python实现了上述过程的手工计算,HMM使用hmmlearn实现,相关文档为:hmmlearn,其提供了三种模型:

名称 简介 观测类型
hmm.GaussianHMM 观测服从高斯分布的HMM 连续
hmm.GMMHMM 观测服从混合高斯分布的HMM 连续
hmm.MultinomialHMM 观测为离散型的HMM 离散

隐马尔科夫模型,要求隐变量为离散型随机变量,观测变量可以是离散型的也可以是连续型的


程序如下:

import numpy as np
from hmmlearn import hmm# 隐状态集合Q
states = ['box1', 'box2', 'box3']
# 观测集合V
observations = ['black', 'white']
# 初始概率pi
start_probability = np.array([0.3, 0.5, 0.2])
# 状态转移矩阵A
transition_probability = np.array([[0.4, 0.4, 0.2],[0.3, 0.2, 0.5],[0.2, 0.6, 0.2]
])# 观测概率矩阵B
emission_probability = np.array([[0.2, 0.8],[0.6, 0.4],[0.4, 0.6]
])# 选用MultinomialHMM对离散观测状态建模
model = hmm.MultinomialHMM(n_components=len(states))
model.startprob_ = start_probability
model.transmat_ = transition_probability
model.emissionprob_ = emission_probability# 观测序列
obervation_list = np.array([0, 1, 0])
# 调用维特比算法对观测序列进行隐含状态解码
logprob, box_list = model.decode(obervation_list.reshape(-1, 1), algorithm='viterbi')# 对数最大路径概率
print(logprob)# 输出解码的隐含状态序列
print(box_list)
for i in range(len(obervation_list)):print(states[box_list[i]])

输出为:

-3.429596856183853
[1 2 1]
box2
box3
box2

可见,程序计算的结果与手工计算结果一致;


对于HMM的学习问题,HMM属于无监督学习,我们需要先设置HMM的隐状态数,再根据观测序列,由EM算法迭代更新模型参数λ=(π,A,B)\lambda=(\pi,A,B)λ=(π,A,B)


第十九课.隐马尔科夫模型相关推荐

  1. 机器学习(十五)隐马尔科夫模型-未完待续

    一.HMM相关概念 二.前向传导 #coding=utf-8 import numpy as np #前向传导算法def Forward(A,B,Pi,O):n=O.shape[0]m=A.shape ...

  2. 20200918:【广发金融工程】2018年重磅专题系列之九:基于隐马尔科夫模型的选股策略研究

    参考链接:https://www.sohu.com/a/252454782_465470 [广发金融工程]2018年重磅专题系列之九:基于隐马尔科夫模型的选股策略研究 2018-09-07 11:26 ...

  3. 机器学习知识点(二十五)Java实现隐马尔科夫模型HMM之jahmm库

    1.隐马尔可夫模型HMM的应用场景,关乎于序列和状态变化的都可以.    发现java有可库,专为开发HMM,可惜只能在CSDN上有得下载.     2.jahmm是java开发隐马尔科夫模型的一个j ...

  4. 统计学习方法十:隐马尔科夫模型

    一.基本概念 1.马尔科夫假设:当前的状态只与之前的状态有关 2.马尔科夫过程:当前的状态只与前n个状态有关,被称为n阶马尔科夫模型. 3.马尔科夫链:可以理解为带有概率的状态转移链 3.一阶马尔科夫 ...

  5. 基于隐马尔科夫模型文本相似度问题研究

    文本相似度是表示两个或者多个文本之间匹配程度的一个度量参数,相似度数值大,说明文本相似度高:反之文件相似程度就低.文本相似度的精确计算问题是进行信息处理的关键. 在如今信息技术飞速发展的互联网时代,文 ...

  6. 机器学习-- > 隐马尔科夫模型(HMM)

    博客内容将首发在微信公众号"跟我一起读论文啦啦",上面会定期分享机器学习.深度学习.数据挖掘.自然语言处理等高质量论文,欢迎关注! 本篇博文将详细总结隐马模型相关知识,理解该模型有 ...

  7. 隐马尔科夫模型HMM(一)HMM模型

    2019独角兽企业重金招聘Python工程师标准>>> 隐马尔科夫模型(Hidden Markov Model,以下简称HMM)是比较经典的机器学习模型了,它在语言识别,自然语言处理 ...

  8. 隐马尔科夫模型之Baum-Wech算法

    隐马尔科夫模型之Baum-Wech算法 https://blog.csdn.net/u014688145/article/details/53046765 Baum-Wech算法之EM算法 https ...

  9. 隐马尔科夫模型HMM自学 (3)

    Viterbi Algorithm 本来想明天再把后面的部分写好,可是睡觉今天是节日呢?一时情不自禁就有打开电脑.......... 找到可能性最大的隐含状态序列 崔晓源 翻译 多数情况下,我们都希望 ...

最新文章

  1. R语言pretty函数生成等间距的数值向量实战
  2. 随机器学习兴起的Julia编程语言
  3. 导出数据库数据成txt格式
  4. python字典教程:添加与删除
  5. 对 makefile中 order-only 前提条件的理解
  6. FFmpeg avio_alloc_context函数剖析
  7. SSH putty Disconnected: Server protocol violation: unexpected SSH2_MSG_UNIMPLEMENTED packet
  8. URLConnection和HttpURLConnection类
  9. photorec_如何在Linux / Ubuntu中使用PhotoRec恢复已删除的文件
  10. SAP QM 可以控制到没有收到Vendor 的certificate的话就不能做UD.
  11. android 编译c代码吗,在Android手机上编译C代码
  12. 如何将Google表格电子表格插入Google文档
  13. 如何找到能商用的背景纯音乐
  14. 面对电车难题,自动驾驶会怎么选?
  15. 十二载征程犹未止,看今朝星光尽闪耀丨万字长文回顾2023数据技术嘉年华
  16. 大学计算机原理知识点,四川大学计算机组成原理知识点
  17. 炒股杠杆放大多少合适
  18. 网络基本概念之TCP, UDP, 单播(Unicast), 组播(Multicast)
  19. 项目管理相关认证简要介绍(1)- 体系
  20. 云VR的未来发展方向

热门文章

  1. git push origin与git push -u origin master的区别
  2. 用敏捷开发工具leangoo管理需求看板示例
  3. 公司的电脑为什么卡——因为缺少工程师文化!
  4. 字节首推Java成长笔记:(原理+应用+源码+调优全都有)
  5. 不会这些搜索技巧,真别说你懂 GitHub!
  6. 阿里云二面:你对限流了解多少?
  7. 使用深度神经网络进行自动呼叫评分(二)
  8. 数字化绩效管理解决方案,评估周期缩短80%,成本下降60%
  9. 推荐10个小众简约,但是实用的软件和网站
  10. OKR能带来哪些价值