《统计自然语言处理》 第六章 笔记

隐马尔可夫模型

马尔可夫模型

  1. 马尔可夫模型描述了什么?
    马尔可夫模型描述了一个每个随机变量的值都依赖于这个序列的前面的状态的随机过程。
    通常所说的马尔可夫模型是离散的一阶马尔科夫链,指的是系统在时间t下的状态,只与其在时间t-1时的状态有关系。
    用数学关系式来描述就是: P ( q t = s j ∣ q t − 1 = s i ) = a i j P(q_t=s_j|q_{t-1}=s_i)=a_{ij} P(qt=sjqt1=si)=aij
    这里的 a i j a_{ij} aij称之为状态转移概率。
    马尔可夫模型可以视作转移弧上有概率的非确定性的有限自动机。
  2. 语言模型和马尔可夫模型之间的关系?
    n元语言模型就是n-1阶马尔可夫模型。

隐马尔科夫模型

  1. 隐马尔科夫模型是什么?与马尔科夫模型有什么区别?
    隐马尔可夫模型与马尔可夫模型的核心区别在于,后者可以观察到状态序列,而前者只能够观察到由状态发射的符号,然后再根据符号发射的概率去反推状态,换句话说,观察到的事件是状态随机函数。
  2. 隐马尔可夫模型的数学描述。
    一个HMM用一个五元组表示: μ = ( S , K , A , B , π ) \mu=(S,K,A,B,\pi) μ=(S,K,A,B,π)
    其中,S表示状态集合;K表示输出符号的集合;A为状态转移概率矩阵,有 P ( q t = s j ∣ q t − 1 = s i ) = a i j P(q_t=s_j|q_{t-1}=s_i)=a_{ij} P(qt=sjqt1=si)=aij;B是状态发射符号的概率分布矩阵; π \pi π是初始状态的概率分布。
  3. 隐马尔科夫模型的基本问题或者说是应用场合。
  • 给定观察序列和模型,估计观察到该序列的概率。
  • 给定观察序列和模型,选择概率最高的状态序列来解释观察序列。
  • 给定观察序列,如何确定模型的参数值。

Q1 前后向算法以及参数估计

基础思路

符号表示

π \pi π表示初始分布; b j ( k ) b_j(k) bj(k)表示由状态 q j q_j qj发射出符号 o k o_k ok的概率; a q i q j a_{q_iq_j} aqiqj表示由状态 q i q_i qi转移到状态 q j q_j qj的概率

公式推导

P ( O ∣ μ ) = ∑ Q P ( O , Q ∣ μ ) = ∑ Q P ( O ∣ Q , μ ) P ( Q ∣ μ ) P(O|\mu)=\sum_QP(O,Q|\mu)=\sum_QP(O|Q,\mu)P(Q|\mu) P(Oμ)=QP(O,Qμ)=QP(OQ,μ)P(Qμ)

这里的连加号表示遍历每一种状态序列的可能性。

P ( Q ∣ μ ) = π q 1 a q 1 q 2 . . . a q T − 1 q T P(Q|\mu)=\pi_{q_1}a_{q_1q_2}...a_{q_{T-1}q_T} P(Qμ)=πq1aq1q2...aqT1qT

P ( O ∣ Q , μ ) = b q 1 ( O 1 ) . . . b q T ( O T ) P(O|Q,\mu)=b_{q_1}(O_1)...b_{q_T}(O_T) P(OQ,μ)=bq1(O1)...bqT(OT)

公式非常简单,但是问题是遍历所有的状态序列需要的计算量过大以至于不可能实现。

前向算法

主要思路是使用动态规划的思想来减小时间复杂度。

核心定义为输出观察序列 O 1 . . . O t O_1...O_t O1...Ot且状态为 S j S_j Sj的概率, a t ( j ) a_t(j) at(j)

核心状态转移公式为: a t + 1 ( j ) = ∑ i = 1 N a t ( i ) a i j b j ( O t + 1 ) a_{t+1}(j)=\sum_{i=1}^Na_t(i)a_{ij}b_j(O_{t+1}) at+1(j)=i=1Nat(i)aijbj(Ot+1)

最终结果为: P ( O ∣ μ ) = ∑ i = 1 N a T ( i ) P(O|\mu)=\sum_{i=1}^Na_T(i) P(Oμ)=i=1NaT(i)

时间复杂度为: O ( N 2 T ) O(N^2T) O(N2T)

后向算法

主要思路同上,只不过是从后往前推导。

核心定义为输出观察序列 O t + 1 . . . O T O_{t+1}...O_T Ot+1...OT且时间t时刻状态为 s j s_j sj的概率, β t ( j ) \beta_t(j) βt(j)

核心状态转移公式为: β t ( i ) = ∑ j = 1 N a i j b j ( O t + 1 ) β t + 1 ( j ) \beta_t(i)=\sum_{j=1}^N a_{ij}b_j(O_{t+1})\beta_{t+1}(j) βt(i)=j=1Naijbj(Ot+1)βt+1(j)

最终结果为: P ( O ∣ μ ) = ∑ i = 1 N π i β 1 ( i ) b i ( O 1 ) P(O|\mu)=\sum_{i=1}^N \pi_i \beta_1(i)b_i(O_1) P(Oμ)=i=1Nπiβ1(i)bi(O1)
为什么书上没有乘b那部分?

前后向算法结合

Q2 维特比算法

问题重述

在给定模型 μ \mu μ和观察序列O的前提下,使得条件概率 P ( Q ∣ μ , O ) P(Q|\mu,O) P(Qμ,O)最大的状态序列,用式子表示即如下:
Q ^ = a r g m a x Q P ( Q ∣ O , μ ) \hat Q=argmax_Q P(Q|O,\mu) Q^=argmaxQP(QO,μ)

维特比算法

主要思路仍然是使用动态规划算法。

核心定义为 δ t ( i ) \delta_t(i) δt(i),含义为在时刻t时沿着某一条路径到达状态为 s i s_i si并且输出序列为 O 1 . . . O t O_1...O_t O1...Ot的最大概率。

核心状态转移公式为 δ t + 1 ( i ) = a r g m a x j [ δ t ( j ) a j i ] b i ( O t + 1 ) \delta_{t+1}(i)=argmax_j[\delta_t(j)a_{ji}]b_i(O_{t+1}) δt+1(i)=argmaxj[δt(j)aji]bi(Ot+1)

最终结果为概率最大的路径,在推导过程中,使用变量保存路径。

Q3 HMM的参数估计

问题重述

给定观察序列O,调整模型 μ = ( π , A , B ) \mu=(\pi,A,B) μ=(π,A,B)的参数,从而使得 P ( O ∣ μ ) P(O|\mu) P(Oμ)最大。用数学公式表达如下:
a r g m a x μ P ( O ∣ μ ) argmax_{\mu} P(O|\mu) argmaxμP(Oμ)

求解思想

期望最大化算法,即EM算法。
初始时随机给模型参数赋值,使用赋值之后的参数重新按照最大似然法更新参数,直至收敛。
适用于含有隐变量的统计模型的参数最大似然估计。

前向后向算法/Baum-Welch算法

具体实现或者说求解EM方法的算法。

核心定义为在时刻t时候位于状态 s i s_i si,在时刻t+1时候位于状态 s j s_j sj的概率, ξ t ( i , j ) = P ( q t = s i , q t + 1 = s j ∣ O , μ ) = P ( q t = s i , q t + 1 = s j , O ∣ μ ) P ( O ∣ μ ) = α t ( i ) a i j b j ( O t + 1 ) β t + 1 ( j ) ∑ i = 1 N ∑ j = 1 N α t ( i ) a i j b j ( O t + 1 ) β t + 1 ( j ) \xi_t(i,j)=P(q_t=s_i,q_{t+1}=s_j|O,\mu)=\frac{P(q_t=s_i,q_{t+1}=s_j,O|\mu)}{P(O|\mu)}=\frac{\alpha_t(i)a_{ij}b_j(O_{t+1})\beta_{t+1}(j)}{\sum_{i=1}^N \sum_{j=1}^N \alpha_t(i)a_{ij}b_j(O_{t+1})\beta_{t+1}(j)} ξt(i,j)=P(qt=si,qt+1=sjO,μ)=P(Oμ)P(qt=si,qt+1=sj,Oμ)=i=1Nj=1Nαt(i)aijbj(Ot+1)βt+1(j)αt(i)aijbj(Ot+1)βt+1(j)

那么,可以得到在时刻t位于状态 s i s_i si的概率 γ t ( i ) = ∑ j = 1 N ξ t ( i , j ) \gamma_t(i)=\sum_{j=1}^N \xi_t(i,j) γt(i)=j=1Nξt(i,j)

可以重新估计 μ \mu μ的参数。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值