隐马尔可夫模型 (hidden Markov model, HMM)

  • 本文为《统计学习方法》的读书笔记

目录

  • 隐马尔可夫模型的基本概念
    • 隐马尔可夫模型的定义
    • 观测序列的生成过程
    • 隐马尔可夫模型的 3 个基本问题
  • 概率计算算法
    • 直接计算法
    • 前向算法 (forward algorithm)
    • 后向算法 (backward algorithm)
    • 一些概率与期望值的计算
  • 学习算法
    • 监督学习方法
    • Baum-Welch 算法 (无监督学习方法)
  • 预测算法
    • 近似算法
    • 维特比算法 (Viterbi algorithm)

隐马尔可夫模型的基本概念

隐马尔可夫模型的定义

  • 隐马尔可夫模型是关于时序的概率模型。它描述由一个隐藏的马尔可夫链随机生成不可观测的状态随机序列 (state sequence), 再由各个状态生成一个观测从而产生观测随机序列 (observation sequence) 的过程。序列的每一个位置可以看作是一个时刻
  • 隐马尔可夫模型属于生成模型,表示状态序列和观测序列的联合分布,但是状态序列是隐藏的,不可观测的

隐马尔可夫模型的形式定义

  • 隐马尔可夫模型由初始概率分布状态转移概率分布以及观测概率分布确定
  • Q Q Q 是所有可能的状态的集合 V V V 是所有可能的观测的集合:
    在这里插入图片描述 I I I 是长度为 T T T状态序列 O O O 是对应的观测序列:
    在这里插入图片描述 A A A状态转移概率矩阵:
    在这里插入图片描述其中, a i j a_{ij} aij 是在时刻 t t t 处于状态 q i q_i qi 的条件下在时刻 t + 1 t+1 t+1 转移到状态 q j q_j qj 的概率
    在这里插入图片描述 B B B观测概率矩阵:
    在这里插入图片描述其中, b j ( k ) b_j(k) bj(k) 是在时刻 t t t 处于状态 q j q_j qj 的条件下生成观测 v k v_k vk 的概率
    在这里插入图片描述 π \pi π初始状态概率向量:
    在这里插入图片描述其中, π i \pi_i πi 是时刻 t = 1 t=1 t=1 处于状态 q i q_i qi 的概率
    在这里插入图片描述
  • 隐马尔可夫模型由初始状态概率向量 π \pi π状态转移概率矩阵 A A A观测概率矩阵 B B B 决定。因此,隐马尔可夫模型 λ λ λ 可以用三元符号表示,即
    在这里插入图片描述状态转移概率矩阵 A A A 与初始状态概率向量 π \pi π 确定了隐藏的马尔可夫链,生成不可观测的状态序列。观测概率矩阵 B B B 确定了如何从状态生成观测,与状态序列综合确定了如何产生观测序列

隐马尔可夫模型的两个基本假设

  • (1) 齐次马尔可夫性假设,即假设隐藏的马尔可夫链在任意时刻 t t t 的状态只依赖于其前一时刻的状态,与其他时刻的状态及观测无关,也与时刻 t t t 无关:
    在这里插入图片描述
  • (2) 观测独立性假设,即假设任意时刻的观测只依赖于该时刻的马尔可夫链的状态,与其他观测及状态无关:
    在这里插入图片描述

隐马尔可夫模型 (hidden Markov model, HMM)_第1张图片

观测序列的生成过程

隐马尔可夫模型 (hidden Markov model, HMM)_第2张图片

隐马尔可夫模型的 3 个基本问题

  • (1) 概率计算问题: 给定模型 λ = ( A , B , π ) λ = (A ,B, π) λ=(A,B,π) 和观测序列 O = ( o 1 , . . . , o T ) O= (o_1 ,...,o_T) O=(o1,...,oT),计算在模型 λ λ λ 下观测序列 O O O 出现的概率 P ( O ∣ λ ) P(O| λ) P(Oλ)
  • (2) 学习问题。己知观测序列 O = ( o 1 , . . . , o T ) O= (o_1 ,...,o_T) O=(o1,...,oT) 估计模型 λ = ( A , B , π ) λ = (A ,B, π) λ=(A,B,π) 参数,使得在该模型下观测序列概率 P ( O ∣ λ ) P(O| λ) P(Oλ) 最大。即用极大似然估计的方法估计参数
  • (3) 预测问题 / 解码 (decoding) 问题。已知模型 λ = ( A , B , π ) λ = (A ,B, π) λ=(A,B,π) 和观测序列 O = ( o 1 , . . . , o T ) O= (o_1 ,...,o_T) O=(o1,...,oT) 求对给定观测序列条件概率 P ( I ∣ O ) P (I|O) P(IO) 最大的状态序列 I = ( i 1 , , . . . , i T ) I = (i_1, ,...,i_T ) I=(i1,,...,iT)。即给定观测序列,求最有可能的对应的状态序列

标注问题

  • 隐马尔可夫模型可以用于标注。标注问题是给定观测的序列预测其对应的标记序列。可以假设标注问题的数据是由隐马尔可夫模型生成的。这样我们可以利用隐马尔可夫模型的学习与预测算法进行标注,即输入为观测序列,输出为标记序列 (状态序列)

概率计算算法

  • 概率计算问题: 给定模型 λ = ( A , B , π ) λ = (A ,B, π) λ=(A,B,π) 和观测序列 O = ( o 1 , . . . , o T ) O= (o_1 ,...,o_T) O=(o1,...,oT),计算在模型 λ λ λ 下观测序列 O O O 出现的概率 P ( O ∣ λ ) P(O| λ) P(Oλ)

直接计算法

  • 最直接的方法是按概率公式直接计算。通过列举所有可能的长度为 T T T 的状态序列 I = ( i 1 , i 2 , . . . , i T ) ′ I = (i_1, i_2,... , i_T)' I=(i1,i2,...,iT),求各个状态序列 I I I 与观测序列 O = ( o 1 , o 2 , . . . , o T ) O= (o_1 ,o_2 ,...,o_T) O=(o1,o2,...,oT) 的联合概率 P ( O , I ∣ λ ) P(O ,I| λ) P(O,Iλ),然后对所有可能的状态序列求和,得到 P ( O ∣ λ ) P(O| λ) P(Oλ)
    隐马尔可夫模型 (hidden Markov model, HMM)_第3张图片
  • 但显然,利用上式计算量很大,是 O ( T N T ) O(TN^T) O(TNT) 阶的,这种算法不可行

前向算法 (forward algorithm)

隐马尔可夫模型 (hidden Markov model, HMM)_第4张图片

隐马尔可夫模型 (hidden Markov model, HMM)_第5张图片

  • 按照上面的算法可以递推地求得前向概率 α t ( i ) α_t (i) αt(i) 及观测序列概率 P ( O ∣ λ ) P(O| λ) P(Oλ),计算量是 O ( N 2 T ) O(N^2 T) O(N2T) 阶的

后向算法 (backward algorithm)

在这里插入图片描述

隐马尔可夫模型 (hidden Markov model, HMM)_第6张图片

  • 按照上面的算法可以递推地求得后向概率 β t ( i ) \beta_t (i) βt(i) 及观测序列概率 P ( O ∣ λ ) P(O| λ) P(Oλ),计算量是 O ( N 2 T ) O(N^2 T) O(N2T) 阶的

一些概率与期望值的计算

  • 给定模型 λ λ λ 和观测 O O O,在时刻 t t t 处于状态 q i q_i qi 的概率。记
    在这里插入图片描述由前向概率和后向概率定义可知:
    在这里插入图片描述于是得到:
    隐马尔可夫模型 (hidden Markov model, HMM)_第7张图片

  • 给定模型 λ λ λ 和观测 O O O,在时刻 t t t 处于状态 q i q_i qi 且在时刻 t + 1 t+1 t+1 处于状态 q j q_j qj 的概率。记
    在这里插入图片描述可以通过前向后向概率计算:
    在这里插入图片描述
    在这里插入图片描述所以
    在这里插入图片描述

  • γ t ( i ) \gamma_t(i) γt(i) ξ t ( i , j ) \xi_t(i,j) ξt(i,j) 对各个时刻 t t t 求和,可以得到一些有用的期望值
    • (1) 在观测 O O O 下状态 i i i 出现的期望值:
      在这里插入图片描述
    • (2) 在观测 O O O 下由状态 i i i 转移的期望值:
      在这里插入图片描述
    • (3) 在观测 O O O 下由状态 i i i 转移到状态 j j j 的期望值:
      在这里插入图片描述

学习算法

  • 学习问题。己知观测序列 O = ( o 1 , . . . , o T ) O= (o_1 ,...,o_T) O=(o1,...,oT) 估计模型 λ = ( A , B , π ) λ = (A ,B, π) λ=(A,B,π) 参数,使得在该模型下观测序列概率 P ( O ∣ λ ) P(O| λ) P(Oλ) 最大。即用极大似然估计的方法估计参数
  • 如果训练数据除了观测序列,还包含状态序列,那么就可由监督学习实现;否则用无监督学习实现

监督学习方法

  • 假设给训练数据包含 S S S 个长度相同的观测序列和对应的状态序列 { ( O 1 , I 1 ) , . . . , ( O S , I S ) } \{(O_1,I_1),...,(O_S, I_S)\} {(O1,I1),...,(OS,IS)}. 那么可以利用极大似然估计法来估计隐马尔可夫模型的参数

  • (1) 转移概率 a i j a_{ij} aij 的估计: 设样本中时刻 t t t 处于状态 i i i 时刻 t + 1 t+1 t+1 转移到状态 j j j 的频数为 A i j A_{ij} Aij,那么状态转移概率 a i j a_{ij} aij 的估计是
    在这里插入图片描述
  • (2) 观测概率 b j ( k ) b_j (k) bj(k) 的估计: 设样本中状态为 j j j 并观测为 k k k 的频数是 B j k B_{jk} Bjk,那么状态为 j j j 观测为 k k k 的概率 b j ( k ) b_j(k) bj(k) 的估计是
    在这里插入图片描述
  • (3) 初始状态概率 π i \pi_i πi 的估计 π ^ i \hat\pi_i π^i S S S 个样本中初始状态为 q i q_i qi 的频率

Baum-Welch 算法 (无监督学习方法)

  • 由于监督学习需要使用标注的训练数据,而人工标注训练数据往往代价很高,有时就会利用无监督学习的方法。假设给定训练数据只包含 S S S 个长度为 T T T 的观测序列 { O 1 , . . . , O S } \{O_1,...,O_S\} {O1,...,OS} 而没有对应的状态序列,目标是学习隐马尔可夫模型 λ = ( A , B , π ) λ = (A, B,\pi) λ=(A,B,π) 的参数。我们将观测序列数据看作观测数据 O O O,状态序列数据看作不可观测的隐数据 I I I,那么隐马尔可夫模型事实上是一个含有隐变量的概率模型
    在这里插入图片描述它的参数学习可以由 EM 算法实现

E 步: 求 Q Q Q 函数 Q ( λ , λ ˉ ) Q(\lambda,\bar\lambda) Q(λ,λˉ)

max ⁡ λ E I [ log ⁡ P ( O , I ∣ λ ) ∣ O , λ ˉ ] = max ⁡ λ ∑ I log ⁡ P ( O , I ∣ λ ) P ( I ∣ O , λ ˉ ) = max ⁡ λ ∑ I log ⁡ P ( O , I ∣ λ ) P ( O , I ∣ λ ˉ ) P ( O ∣ λ ˉ ) = max ⁡ λ ∑ I log ⁡ P ( O , I ∣ λ ) P ( O , I ∣ λ ˉ ) \begin{aligned} \max_\lambda E_I[\log P(O,I\mid\lambda)\mid O,\bar\lambda] &=\max_\lambda \sum_{I} \log P(O, I \mid \lambda) P(I \mid O,\bar{\lambda}) \\&=\max_\lambda \sum_{I} \log P(O, I \mid \lambda) \frac{P(O, I \mid \bar{\lambda})}{P(O\mid\bar\lambda)} \\&=\max_\lambda \sum_{I} \log P(O, I \mid \lambda) {P(O, I \mid \bar{\lambda})} \end{aligned} λmaxEI[logP(O,Iλ)O,λˉ]=λmaxIlogP(O,Iλ)P(IO,λˉ)=λmaxIlogP(O,Iλ)P(Oλˉ)P(O,Iλˉ)=λmaxIlogP(O,Iλ)P(O,Iλˉ)

  • 因此,可直接设 Q ( λ , λ ˉ ) = ∑ I log ⁡ P ( O , I ∣ λ ) P ( O , I ∣ λ ˉ ) Q(λ,\bar\lambda)=\sum_{I} \log P(O, I \mid \lambda) {P(O, I \mid \bar{\lambda})} Q(λ,λˉ)=IlogP(O,Iλ)P(O,Iλˉ)。其中, λ ˉ \bar\lambda λˉ 是隐马尔可夫模型参数的当前估计值, λ \lambda λ 是要极大化的隐马尔可夫模型参数
    在这里插入图片描述
  • 于是函数 Q ( λ , λ ˉ ) Q(λ,\bar\lambda) Q(λ,λˉ) 可以写成:
    隐马尔可夫模型 (hidden Markov model, HMM)_第8张图片

M 步: 极大化 Q ( λ , λ ˉ ) Q(λ,\bar\lambda) Q(λ,λˉ) 求模型参数 A , B , π A,B,\pi A,B,π

  • 由于要极大化的参数在式 (10.34) 中单独地出现在 3 个项中,所以只需对各项分别极大化
  • (1) 式 (10.34) 的第 1 项可以写成:
    在这里插入图片描述注意到 π i \pi_i πi 满足约束条件 ∑ i = 1 N π i = 1 \sum_{i=1}^N\pi_i=1 i=1Nπi=1,利用拉格朗日乘子法,写出拉格朗日函数:
    在这里插入图片描述由 KKT 条件可知
    在这里插入图片描述
    在这里插入图片描述 i i i 求和得到 γ γ γ
    在这里插入图片描述因此
    在这里插入图片描述
  • (2) 式 (10.34) 的第 2 项可以写成
    在这里插入图片描述类似第 1 项,应用具有约束条件 ∑ j = 1 a i j = 1 \sum_{j=1}a_{ij} = 1 j=1aij=1 的拉格朗日乘子法可以求出
    隐马尔可夫模型 (hidden Markov model, HMM)_第9张图片
  • (3) 式 (10.34) 的第 3 项为
    在这里插入图片描述同样用拉格朗日乘子法,约束条件是 ∑ k = 1 M b j ( k ) = 1 \sum_{k=1}^Mb_j(k)=1 k=1Mbj(k)=1。求得
    隐马尔可夫模型 (hidden Markov model, HMM)_第10张图片其中 I I I 为指示函数

Baum-Welch 算法

  • 将参数迭代公式中的各概率分别用 γ t ( i ) , ξ t ( i , j ) \gamma_t(i),\xi_t(i,j) γt(i),ξt(i,j) 表示,则可将 Baum-Welch 算法写为以下形式:

隐马尔可夫模型 (hidden Markov model, HMM)_第11张图片

预测算法

  • 预测问题 / 解码 (decoding) 问题。已知模型 λ = ( A , B , π ) λ = (A ,B, π) λ=(A,B,π) 和观测序列 O = ( o 1 , . . . , o T ) O= (o_1 ,...,o_T) O=(o1,...,oT) 求对给定观测序列条件概率 P ( I ∣ O ) P (I|O) P(IO) 最大的状态序列 I = ( i 1 , , . . . , i T ) I = (i_1, ,...,i_T ) I=(i1,,...,iT)。即给定观测序列,求最有可能的对应的状态序列

近似算法

  • 近似算法的想法是,在每个时刻 t t t 选择在该时刻最有可能出现的状态 i t ∗ i_t^* it,从而得到一个状态序列 I ∗ = ( i 1 ∗ , . . , i T ∗ ) I^* = (i_1^*,..,i_T^*) I=(i1,..,iT),将它作为预测的结果
    在这里插入图片描述其中,
    在这里插入图片描述

  • 近似算法的优点是计算简单,其缺点是不能保证预测的状态序列整体是最有可能的状态序列,因为预测的状态序列可能有实际不发生的部分。尽管如此,近似算法仍然是有用的

维特比算法 (Viterbi algorithm)

  • 维特比算法实际是用动态规划求概率最大路径 (最优路径)。这时一条路径对应着一个状态序列
  • 根据动态规划原理,最优路径具有这样的特性: 如果最优路径在时刻 t t t 通过结点 i t ∗ i_t^* it,那么这一路径从结点 i t ∗ i_t^* it 到终点 i T ∗ i_T^* iT 的部分路径,对于从 i t ∗ i_t^* it i T ∗ i_T^* iT 的所有可能的部分路径来说,必须是最优的。依据这一原理,我们只需从时刻 t = 1 t=1 t=1 开始,递推地计算在时刻 t t t 状态为 i i i 的各条部分路径的最大概率,直至得到时刻 t = T t = T t=T 状态为 i i i 的各条路径的最大概率。时刻 t = T t = T t=T 的最大概率即为最优路径的概率 P ∗ P^* P,最优路径的终结点 i T ∗ i^*_T iT 也同时得到。之后,为了找出最优路径的各个结点,从终结点 i T ∗ i^*_T iT 开始,由后向前逐步求得结点 i T − 1 ∗ , . . . , i 1 ∗ i_{T-1}^*,...,i_1^* iT1,...,i1,得到最优路径 I ∗ = ( i 1 ∗ , . . . , i T ∗ ) I^* = (i_1^*,...,i_T^*) I=(i1,...,iT)

Notation

  • 首先导入两个变量 δ \delta δ ψ \psi ψ。定义在时刻 t t t 状态为 i i i 的所有单个路径 ( i 1 , . . . , i t − 1 , i ) (i_1,...,i_{t-1},i) (i1,...,it1,i) 中概率最大值为
    在这里插入图片描述由定义可得变量 δ \delta δ递推公式:
    在这里插入图片描述定义在时刻 t t t 状态为 i i i 的所有单个路径 ( i 1 , . . . , i t − 1 , i ) (i_1,...,i_{t-1},i) (i1,...,it1,i) 中概率最大的路径的第 t − 1 t-1 t1 个结点为
    在这里插入图片描述

维特比算法

隐马尔可夫模型 (hidden Markov model, HMM)_第12张图片

你可能感兴趣的:(机器学习,概率论,自然语言处理,机器学习)