自然语言处理之hmm(隐马尔可夫模型)

自然语言处理

Part 3 hmm(隐马尔可夫模型)


文章目录

  • 自然语言处理
  • 前言
  • 隐马尔科夫模型
    • 一、基本定义
    • 二、两个重要假设
    • 三、主要解决问题
    • 四、维特比算法
      • 1.已知条件
      • 2.初始化局部状态
      • 3.动态规划递推
      • 4.回溯
  • 总结


前言

作为因为科研需要刚开始接触机器学习、深度学习的菜鸟,看了关于某些算法大神的解释仍是似懂非懂,特在此记录学习过程,争取通俗易懂。


隐马尔科夫模型

为了便于理解,全文以实例贯穿。
假设我们有3个盒子,每个盒子里都有红色和白色两种球,这三个盒子里球的数量分别是:

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

按照下面的方法从盒子里抽球,开始的时候,从第一个盒子抽球的概率是0.2,从第二个盒子抽球的概率是0.4,从第三个盒子抽球的概率是0.4。以这个概率抽一次球后,将球放回。然后从当前盒子转移到下一个盒子进行抽球。规则是:如果当前抽球的盒子是第一个盒子,则以0.5的概率仍然留在第一个盒子继续抽球,以0.2的概率去第二个盒子抽球,以0.3的概率去第三个盒子抽球。如果当前抽球的盒子是第二个盒子,则以0.5的概率仍然留在第二个盒子继续抽球,以0.3的概率去第一个盒子抽球,以0.2的概率去第三个盒子抽球。如果当前抽球的盒子是第三个盒子,则以0.5的概率仍然留在第三个盒子继续抽球,以0.2的概率去第一个盒子抽球,以0.3的概率去第二个盒子抽球。


一、基本定义

  1. Q是所有可能的隐藏状态的集合:Q={盒子1,盒子2,盒子3}
  2. V是所有可能的观测状态的集合:V={红,白}
  3. N是可能的隐藏状态数:N=3
  4. M是所有的可能的观察状态数:M=2
  5. I 对应的状态序列
  6. O是对应的观察序列
  7. T是序列长度
  8. Π为初始状态分布:Π= ( 0.2 , 0.4 , 0.4 ) T (0.2,0.4,0.4)^\mathrm{T} (0.2,0.4,0.4)T

二、两个重要假设

  1. 齐次马尔科夫链假设。即任意时刻的隐藏状态只依赖于它前一个隐藏状态,上述示例可表示为(状态转移概率分布矩阵a):
盒子1 盒子2 盒子3
盒子1 0.5 0.2 0.3
盒子2 0.3 0.5 0.2
盒子3 0.2 0.3 0.5

a = [ 0.5 0.2 0.3 0.3 0.5 0.2 0.2 0.3 0.5 ] (1) a=\left[ \begin{matrix} 0.5 & 0.2 & 0.3 \\ 0.3 & 0.5 & 0.2 \\ 0.2 & 0.3 & 0.5 \end{matrix} \right] \tag{1} a=0.50.30.20.20.50.30.30.20.5(1)

  1. 观测独立性假设。即任意时刻的观察状态只仅仅依赖于当前时刻的隐藏状态,上述示例可表示为(观测状态概率矩阵b):
盒子1 0.5 0.5
盒子2 0.4 0.6
盒子3 0.7 0.3

b = [ 0.5 0.5 0.4 0.6 0.7 0.3 ] (2) b=\left[ \begin{matrix} 0.5 & 0.5 \\ 0.4 & 0.6 \\ 0.7 & 0.3 \end{matrix} \right] \tag{2} b=0.50.40.70.50.60.3(2)


三、主要解决问题

预测问题,也称为解码问题。即给定模型λ=(A,B,Π)和观测序列O={o1,o2,…oT},求给定观测序列条件下,最可能出现的对应的状态序列,这个问题的求解需要用到基于动态规划的维特比算法。


四、维特比算法

1.已知条件

观察集合是:

V={红,白},M=2

我们的状态集合是:

Q={盒子1,盒子2,盒子3},N=3

而观察序列和状态序列的长度为3.

初始状态分布为:
Π = ( 0.2 , 0.4 , 0.4 ) T Π=(0.2,0.4,0.4)^\mathrm{T} Π=(0.2,0.4,0.4)T

状态转移概率分布矩阵为:
a = [ 0.5 0.2 0.3 0.3 0.5 0.2 0.2 0.3 0.5 ] (1) a=\left[ \begin{matrix} 0.5 & 0.2 & 0.3 \\ 0.3 & 0.5 & 0.2 \\ 0.2 & 0.3 & 0.5 \end{matrix} \right] \tag{1} a=0.50.30.20.20.50.30.30.20.5(1)
观测状态概率矩阵为:
b = [ 0.5 0.5 0.4 0.6 0.7 0.3 ] (2) b=\left[ \begin{matrix} 0.5 & 0.5 \\ 0.4 & 0.6 \\ 0.7 & 0.3 \end{matrix} \right] \tag{2} b=0.50.40.70.50.60.3(2)
球的颜色的观测序列:

O={红,白,红}

2.初始化局部状态

首先需要得到三个隐藏状态在时刻1时对应的各自两个局部状态,此时观测状态为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

Ψ1(1)=Ψ1(2)=Ψ1(3)=0

3.动态规划递推

开始递推三个隐藏状态在时刻2时对应的各自两个局部状态,此时观测状态为2:


δ2(1)=max1≤j≤3[δ1(j)aj1]b1(o2)=max1≤j≤3[0.1×0.5,0.16×0.3,0.28×0.2]×0.5=0.028

Ψ2(1)=3

δ2(2)=max1≤j≤3[δ1(j)aj2]b2(o2)=max1≤j≤3[0.1×0.2,0.16×0.5,0.28×0.3]×0.6=0.0504

Ψ2(2)=3

δ2(3)=max1≤j≤3[δ1(j)aj3]b3(o2)=max1≤j≤3[0.1×0.3,0.16×0.2,0.28×0.5]×0.3=0.042

Ψ2(3)=3

继续递推三个隐藏状态在时刻3时对应的各自两个局部状态,此时观测状态为1:


δ3(1)=max1≤j≤3[δ2(j)aj1]b1(o3)=max1≤j≤3[0.028×0.5,0.0504×0.3,0.042×0.2]×0.5=0.00756

Ψ3(1)=2

δ3(2)=max1≤j≤3[δ2(j)aj2]b2(o3)=max1≤j≤3[0.028×0.2,0.0504×0.5,0.042×0.3]×0.4=0.01008

Ψ3(2)=2

δ3(3)=max1≤j≤3[δ2(j)aj3]b3(o3)=max1≤j≤3[0.028×0.3,0.0504×0.2,0.042×0.5]×0.7=0.0147

Ψ3(3)=3

4.回溯

因为δ3(3)最大,所以t=3时是从第三个盒子取出来的
因为Ψ3(3)=3,所以t=2时是从盒子3取出来的
因为Ψ2(3)=3,所以t=1时是从盒子3取出来的


从而得到最终的最可能的隐藏状态序列为:(3,3,3)


总结

以上就是今天学习的内容,本文仅仅简单介绍了hmm算法,下期学习crf算法。

你可能感兴趣的:(自然语言处理,算法,自然语言处理)