1 Star 0 Fork 0

王浩天 / MyNote

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
隐马尔可夫模型.md 7.42 KB
一键复制 编辑 原始数据 按行查看 历史
王浩天 提交于 2022-05-16 17:36 . 2022年2月-5月

隐马尔可夫模型

隐马尔可夫模型(Hidden Markov Model, HMM)是描述两个时序序列联合分布 p(x,y) 的概率模型:$x$序列外界可见(外界指的是观测者),成为观测序列(observation sequence);$y$序列外界不可见,称为状态序列(state sequence)。比如观测$x$为单词,状态$y$为词性,我们需要根据单词序列去猜测他们的词性。隐马尔可夫模型之所以称为“隐”,是因为从外界来看,状态序列(例如词性)隐藏不可见,是待求的因变量。从这个角度来讲,人们也称状态为隐状态,而称观测为显状态。隐马尔可夫模型之所以称为“马尔可夫模型”,是因为它满足马尔可夫假设。

通俗易懂的解释可以看以下链接:

https://www.cnblogs.com/fulcra/p/11065474.html

1、马尔可夫假设

​ 每个事情的发生概率只取决于前一个事件。将满足该假设的连续多个事件串联在一起,就构成了马尔可夫链。在NLP的语境下,可以将事件具象为单词,于是马尔可夫模型就具象为二元语法模型。

​ 在此基础上,隐马尔可夫模型理解起来就并不复杂了:它的马尔可夫假设作用于状态序列,假设①当前状态$y_i$ 仅仅依赖前一个状态$y_{i-1}$ ,连续多个状态构成隐马尔可夫链$y$。有了隐马尔可夫链,如何与观测序列x建立联系呢?

隐马尔可夫模型做了第二个假设:②任意时刻的观测$x_t$ 只依赖于该时刻的状态$y_t$,与其他时刻的状态或观测独立无关。如果用箭头表示事件的依赖关系(箭头终点表示结果,依赖于起点的因缘),则隐马尔可夫模型可以表示为图4-7。

image-20220210135821867

这张图也许有一丝违和感,按通常理解,应当是$x$决定$y$,而不是反过来。这是由于在联合概率分布$p(x,y)$中,两个随机变量并没有固定的先后与因果关系,即$p(x,y)=p(y,x)$。从贝叶斯定理的角度来讲,联合分布完全可以做两种等价变换: $$ p(x,y) = p(x)p(y|x)=p(y)p(x|y) $$ ​ 隐马尔可夫只不过在假设②中采用了后一种变换而已,即假定先有状态,后有观测,取决于两个序列的可见与否。这种因果关系在现实生活中也能找到例子,比如写文章可以想象为先在脑子中构思好一个满足语法词性的词性序列,然后再将每个词性填充为具体的词语。

​ 状态和观测之间的依赖关系确定之后,隐马尔可夫模型利用三个要素来模拟时序序列的发生过程——即初始状态概率向量、状态转移概率矩阵和发射概率矩阵(也称作观测概率矩阵),接下来三小节中分别介绍。

2、初始状态概率向量

​ 系统启动时进入的第一个状态$y_1$ 称为初始状态,假设y有N中可能的取值,即$y∈{s_1,···,s_N}$,那么y1 就是一个独立的离散型随机变量,由$p(y_1|\pi)$描述。其中$\pi=(\pi_1,\cdots,\pi_N)^T,0\leq\pi_i\leq1,\sum_{i=1}^{N}\pi=1$是概率分布的参数向量,称为初始状态概率向量。让我们把它添加到示意图上,如图4-8虚线所示。

image-20220210143022089

给定$\pi$,初始状态$y_1$的取值分布就确定了。比如中文分词问题采用{B,M,E,N}标注集时,$y_1$所有可能的取值及对应概率如下: $p(y_1=B)=0.7$ $p(y_1=M)=0$ $p(y_1=E)=0$ $p(y_1=S)=0.3$

那么此时隐马尔可夫模型的初始状态概率向量为$\pi=[0.7,0,0,0.3]$。注意标签M和E的概率为0,因为句子第一个字符不可能称为单词的中部或尾部。另外,$p(y_1=B)>p(y_1=S)$,也说明句子第一个词是单字的可能性要小一些。

3、状态转移概率矩阵

​ $y_t$确定之后,如何转移到$y_{t+1}$呢?根据马尔可夫假设,$t+1$时的状态仅仅取决于$t$时的状态。既然一共有$N$种状态,那么从状态$s_i$到状态$s_j$的概率就构成了一个$N\times N$的方阵,称为状态转移概率矩阵A: $$ A=[p(y_{t+1}=s_j|y_t=s_i)]_{N\times N} $$ 其中下注i、j分别表示状态的第i、j中取值,比如我们约定1表示标注集中的B,依序类推。

​ 状态转移概率矩阵的作用范围添加到示意图上,得到图4-9.

image-20220211152401858

​ 状态转移概率的存在有其实际意义,在中文分词中,标签B的后面不可能是S,于是只需要赋予$p(y_{t+1}=S|y_t=B)=0$就可以模拟这种禁止转移的需求。此外,汉语中的长词相对较少,于是隐马尔可夫模型可以通过较小的$p(y_{t+1}=M|y_t=M)$来模拟该语言现象。同样,词性标注中的“形容词$\longrightarrow$名词”“副词$\longrightarrow$动词”也可以通过状态转移概率来模拟。值得一提的是,这些概率分布的参数都不需要程序员手动赋予,而是通过语料库上的统计自动学习。

4、发射概率矩阵

​ 有了状态$y_t$之后,如何确定观测$x_t$的概率分布呢?根据隐马尔可夫假设②,当前观测$x_t$仅仅取决于当前状态$y_t$。也就是说,给定每种y,x都是一个独立的离散型随机变量,其参数对应一个向量。假设观测x一共有M种可能的取值,即$x∈{o_1,···,o_M}$,则x的概率分布参数向量维度为M。由于y一共有N种,所以这些参数向量构成了$N\times M$的矩阵,称为发射概率矩阵B。 $$ B=[p(x_t=o_i|y_t=s_j)]_{N\times M} $$ 其中,第i行j列的元素下标i和j分别代表观测和状态的第i种和第j中取值,比如我们约定i=1表示字符集中的“阿”。此时$p(x_1=阿|y_1=B)$对应矩阵中左上角第一个元素。如果字符集大小为1000的话,则B就是一个$4\times1000$的矩阵。

​ 将发射概率矩阵B的作用范围添加到示意图上,得到图4-10。

image-20220211160004922

​ 发射(emission)概率矩阵是一个非常形象的术语:将$y_t$想象为不同的彩弹枪,$x_t$想象为不同颜色的子弹,则根据$y_t$确定$x_t$的过程就像拔枪发射彩弹一样。不同的彩弹枪弹舱内的每种色彩弹比例不同,导致有些彩弹枪更容易发射红色彩弹,另一些更容易发射绿色彩弹。

​ 发射概率在中文分词中也具备实际意义,有些字符构词时的位置比较固定。比如作为词首的话,不容易观测到“忑”,因为“忑”一般作为“忐忑”的词尾出现。通过赋予$p(x_1=忑|y_1=B)$较低的概率,隐马尔可夫模型可以有效的防止“忐忑”被错误切开。

​ 初始状态概率向量、状态转移概率矩阵与发射概率矩阵被称为隐马尔可夫模型的三元组$\lambda=(\pi,A,B)$,只要三元组确定了,隐马尔可夫模型就确定了。

5、隐马尔可夫模型的三个基本用法

隐马尔可夫模型的作用并不仅限于预测序列标注,它一共解决如下三个问题。

(1)样本生成问题:给定模型$\lambda=(\pi,A,B)$,生成满足模型约束的样本,即一系列观测序列及其对应的状态序列{$(x^{(i)},y^{(i)})$}。

(2)模型训练问题:给定训练集{$(x^{(i)},y^{(i)})$},估计模型参数$\lambda=(\pi,A,B)$。

(3)序列预测问题:已知模型参数$\lambda=(\pi,A,B)$,给定观测序列$x$,求最可能的状态序列$y$。

1
https://gitee.com/wanghaotian123/my-no.git
git@gitee.com:wanghaotian123/my-no.git
wanghaotian123
my-no
MyNote
master

搜索帮助

53164aa7 5694891 3bd8fe86 5694891