论文阅读【7】HHM隐马尔科夫模型
创始人
2024-02-12 22:04:07
0

1.隐马尔科夫模型(HMM)的介绍

在这里插入图片描述
隐马尔科夫模型有两个序列,上面一层序列的值称之为影藏值(隐式变量),下面一个序列中的值被称为观察值,想这个的序列模型被称为生成模型(Generate model)。z表示的是一个状态,z所在的这条线上的箭头被称之为状态的转移,箭头表明转移的方向(Direction)。所以隐马尔科夫模型符合2个条件Dirction+Generate.

2.隐马尔科夫模型的深度理解

栗子1:硬币概率问题

假设我手上有2种硬币,一个硬币叫做A,另外一个叫做B,但是这两个外观一样的硬币,但是出现的概率却不一样,A可能出现正面的概率是μ1μ_1μ1​,B出现正面的概率是μ2μ_2μ2​,所以μ1μ_1μ1​和μ2μ_2μ2​有可能相同也有可能不一样。
然后小明去扔硬币,我去观测硬币,小明负责扔硬币,我负责观测硬币,但是小明具体扔的是那一枚硬币我不知道,我只记录下我观测到的是正面还是反面。
在这里插入图片描述
因此这里面就可以提出2个问题:

  • 问题1:究竟小明每次扔的是A还是B(推测问题)
  • 问题2:扔A的概率μ1μ_1μ1​是多少,扔B的概率μ2μ_2μ2​是多少,并且扔完A之后扔B的概率是多少,生成了一个状态转移矩阵。(参数估算问题)
  • 问题3:计算P(正反正…正)的概率,计算序列的概率(边缘概率问题)。

栗子2:词性标注任务

把绿色的看成我们观测到的单词,灰色的代表是这些单词的词性,是我们不知道的,所以这个任务就是推测出每个单词的词性是什么。因此也可以罗列出三个问题。
问题1:给定每个单词反推出每个单词的词性(inference、decoder),一般使用维特比算法去解决这个问题
问题2:参数估算问题,给定这一句话怎么去估计整个模型的参数。
问题3:计算p(w1,w2,......wn)p(w_1,w_2,......w_n)p(w1​,w2​,......wn​)的概率,这是一个边缘概率,这个计算与序列有关,涉及到大量的计算,会使用动态规划算法。
在这里插入图片描述

栗子3:语音识别问题

语音输入的是一条条的波形,则需要预测出这个一条条波形表达的背后的语义信息。
在这里插入图片描述

3.隐马尔科夫模型的参数问题

HMM模型θ=(A,B,π)\theta=(A,B,π)θ=(A,B,π),对于模型中的数据我做了以下定义,观测变量为x1,x2,x3.......xnx_1,x_2,x_3.......x_nx1​,x2​,x3​.......xn​,隐式变量定义为z1,z2,......znz_1,z_2,......z_nz1​,z2​,......zn​.假设ziz_izi​是离散型的
不懂就问:离散变量是指其数值只能用自然数或整数单位计算的则为离散变量。例如,企业个数,职工人数,设备台数等,只能按计量单位数计数,这种变量的数值一般用计数方法取得。反之,在一定区间内可以任意取值的变量叫连续变量,其数值是连续不断的,相邻两个数值可作无限分割,即可取无限个数值.

  • A代表状态转移矩阵,其中的每一行代表从状态c转移到状态i的概率,每一个值代表转移的每一个状态的概率,这一行中的概率之和为1.
  • B代表生成(Emession)观测值的可能性。假设在一个隐式的状态下看到的观测值得概率是多少。其中的行向量中的每一列表示词库中每一个单词在i状态下的概率。
  • π代表的是一个向量,其中的值为π=[π1π2π3π4π5π6]π=[π_1 π_2 π_3 π_4 π_5 π_6]π=[π1​π2​π3​π4​π5​π6​],表示其中的某一个z1z2....zmz_1z_2....z_mz1​z2​....zm​出现在第一个位置的概率是多少,概率之和为1.
    在这里插入图片描述
    问题1:能不能在给定x状态下估计出θ
    问题2:在给定一个θ和某一个观测值X的情况下预测z

4.HMM中的inference问题

在这里插入图片描述

首先第一个问题就是,当我输入一个序列X之后如何去预测每个x所对应的标签,这就需要使用到维特比算法。

最笨的方法

假设需要每个x所对应的标签有3个,ziz_izi​属于{a,b,c},则把每一种可能出现的结果进行排列组合,那么可能得序列就会有3n3^n3n种结果,将所有序列罗列出来之后其实可以很好的计算这些序列的极大似然概率。
p(z1)p(z2∣z1)P(z3∣z2)............P(zn∣zn−1)∗P(x1∣z1)P(x2∣z2)p(x3∣z3).......p(xn∣zn)p(z_1)p(z_2|z_1)P(z_3|z_2)............P(z_n|z_{n-1})*P(x1|z1)P(x_2|z_2)p(x_3|z_3).......p(x_n|z_n)p(z1​)p(z2​∣z1​)P(z3​∣z2​)............P(zn​∣zn−1​)∗P(x1∣z1)P(x2​∣z2​)p(x3​∣z3​).......p(xn​∣zn​)
在这里插入图片描述
但是使用这种算法显而易见,计算量太大了。于是考虑使用下面一种方法,维特比算法。

维特比算法

维特比算法属于动态规划算法,对于那些复杂度是指数级计算的算法,使用一个中间变量,减轻其中的计算量。
将每个预测影藏值节点连接起来成一个图,则计算方式为
p=p(z1=2)p(x1∣z1=2)p(z2=1∣z1=2)p(x2∣z2=1)..........p=p(z_1=2)p(x_1|z_1=2)p(z_2=1|z_1=2)p(x_2|z_2=1)..........p=p(z1​=2)p(x1​∣z1​=2)p(z2​=1∣z1​=2)p(x2​∣z2​=1)..........,当p的概率最大的时候就是最好的时候
使用维特比算法进行动态规划:
在这里插入图片描述

δk(i)\delta_k(i)δk​(i):在第k个时刻状态为i的时候的最好的路径。
则计算他的k+1个时刻的状态的概率,假设看k+1时候的值为J,则δk+1(j)\delta_{k+1}(j)δk+1​(j)为下面式子的最大值max,用log就可以简化步骤:
δk(1)+logp(zk+1=j∣zk=1)+logp(xk+1∣zk+1=j))\delta_k(1)+logp(z_{k+1}=j|z_k=1)+logp(x_{k+1}|z_{k+1}=j))δk​(1)+logp(zk+1​=j∣zk​=1)+logp(xk+1​∣zk+1​=j));
δk(2)+logp(zk+1=j∣zk=2)+logp(xk+1∣zk+1=j))\delta_k(2)+logp(z_{k+1}=j|z_k=2)+logp(x_{k+1}|z_{k+1}=j))δk​(2)+logp(zk+1​=j∣zk​=2)+logp(xk+1​∣zk+1​=j));

δk(m)+logp(zk+1=j∣zk=m)+logp(xk+1∣zk+1=j))\delta_k(m)+logp(z_{k+1}=j|z_k=m)+logp(x_{k+1}|z_{k+1}=j))δk​(m)+logp(zk+1​=j∣zk​=m)+logp(xk+1​∣zk+1​=j));
化简为一个递归的表示:
δk+1(i)=maxi[δk(i)+logp(zk+1=j∣zk=i)+logp(xk+1∣zk+1=j))]\delta_{k+1}(i)=\underset{i}{max}[\delta_k(i)+logp(z_{k+1}=j|z_k=i)+logp(x_{k+1}|z_{k+1}=j))]δk+1​(i)=imax​[δk​(i)+logp(zk+1​=j∣zk​=i)+logp(xk+1​∣zk+1​=j))];
在这里插入图片描述
所以基于上面的方法,从前往后依次计算每个状态的概率,并使用一个m*n的矩阵保存,然后将最大的值的路径也保存,这样就得到了最优的路径。

5.HMM的FB算法

FB算法的全程为(Forward and Backward)
他们分别的作用:
Forward:计算p(zk,x1:k)p(z_k,x_{1:k})p(zk​,x1:k​)的概率,其中 x1:k=(x1,x2,x3........xn)x_{1:k}=(x_1,x_2,x_3........x_n)x1:k​=(x1​,x2​,x3​........xn​)。
Backward:计算p(xk+1∣zk)p(x_{k+1}|z_k)p(xk+1​∣zk​)的概率。
不懂就问:其中p(A,B)表示AB同时发生的概率,等同于p(AB),称之为联合概率分布
由于乘法法则知道:p(Zk∣X)=p(Zk,X)p(X)p(Z_k|X)={p(Z_k,X)\over p(X)}p(Zk​∣X)=p(X)p(Zk​,X)​∝p(Zk,x)∝p(Z_k,x)∝p(Zk​,x)
其中∝叫做正比符号(英文叫做proportion),因为上面的公式中的分母是不变的,变的是分子,所以可以直接看成求分子
p(Zk,X)=P(Xk+1:n∣Zk,X1:k)⋅p(Zk⋅X1:k)p(Z_k,X)=P(X_{k+1:n}|Z_k,X_{1:k})·p(Z_k·X_{1:k})p(Zk​,X)=P(Xk+1:n​∣Zk​,X1:k​)⋅p(Zk​⋅X1:k​)
如果X1:kX_{1:k}X1:k​独立于Xk+1:nX_{k+1:n}Xk+1:n​则可以将X1:kX_{1:k}X1:k​省略掉,很显然他们是独立的,于是上式转换为:
p(Zk,X)=P(Xk+1:n∣Zk)⋅p(Zk,X1:k)p(Z_k,X)=P(X_{k+1:n}|Z_k)·p(Z_k,X_{1:k})p(Zk​,X)=P(Xk+1:n​∣Zk​)⋅p(Zk​,X1:k​)
把上式的第一部分称为Backward,第二部分称之为Forward.
在这里插入图片描述
通过F/B算法,一方面可以计算出模型参数,这个是比较重要的一方面.

6.Forward 算法

这个算法的目标设计计算p(zk,x1:k)p(z_k,x_{1:k})p(zk​,x1:k​)的概率,详细计算过程如下图:
在这里插入图片描述
其中x1:x−1,zkx_{1:x-1},z_kx1:x−1​,zk​是相关独立事件,可以都可以直接抵消掉.(实在有点检查不下去了,烂尾了,哈哈)

7.Backward算法

这个算法的目标就是计算p(xk+1:n∣zk)p(x_{k+1:n}|z_k)p(xk+1:n​∣zk​)的概率.计算过程如下图:
在这里插入图片描述

总结

看到这一堆,是不是感觉脑袋都是大的,我确实也是的,看到最后脑袋也是变大了,最后 找到一个生动形象的例子:https://zhuanlan.zhihu.com/p/497045631
我总结一下这个HMM算法就是用已知去推导位置,首先要搞清楚几个概念,观测值,隐藏值,还有维特比算法(动态规划算法)

相关内容

热门资讯

喜欢穿一身黑的男生性格(喜欢穿... 今天百科达人给各位分享喜欢穿一身黑的男生性格的知识,其中也会对喜欢穿一身黑衣服的男人人好相处吗进行解...
发春是什么意思(思春和发春是什... 本篇文章极速百科给大家谈谈发春是什么意思,以及思春和发春是什么意思对应的知识点,希望对各位有所帮助,...
网络用语zl是什么意思(zl是... 今天给各位分享网络用语zl是什么意思的知识,其中也会对zl是啥意思是什么网络用语进行解释,如果能碰巧...
为什么酷狗音乐自己唱的歌不能下... 本篇文章极速百科小编给大家谈谈为什么酷狗音乐自己唱的歌不能下载到本地?,以及为什么酷狗下载的歌曲不是...
华为下载未安装的文件去哪找(华... 今天百科达人给各位分享华为下载未安装的文件去哪找的知识,其中也会对华为下载未安装的文件去哪找到进行解...
家里可以做假山养金鱼吗(假山能... 今天百科达人给各位分享家里可以做假山养金鱼吗的知识,其中也会对假山能放鱼缸里吗进行解释,如果能碰巧解...
四分五裂是什么生肖什么动物(四... 本篇文章极速百科小编给大家谈谈四分五裂是什么生肖什么动物,以及四分五裂打一生肖是什么对应的知识点,希...
怎么往应用助手里添加应用(应用... 今天百科达人给各位分享怎么往应用助手里添加应用的知识,其中也会对应用助手怎么添加微信进行解释,如果能...
客厅放八骏马摆件可以吗(家里摆... 今天给各位分享客厅放八骏马摆件可以吗的知识,其中也会对家里摆八骏马摆件好吗进行解释,如果能碰巧解决你...
美团联名卡审核成功待激活(美团... 今天百科达人给各位分享美团联名卡审核成功待激活的知识,其中也会对美团联名卡审核未通过进行解释,如果能...