统计学习方法10—隐马尔可夫模型详细推导

  隐马尔可夫模型(HMM)是一种标注模型,描述由隐藏的马尔可夫链随机生成观测序列的过程,属于生成模型。其在语音识别,自然语言处理,模式识别等领域有着广泛的应用。1.基本概念  友好起见,我们以例子来导出马尔可夫的定义盒子与球模型  设有4个盒子,每个盒子里装有红白两种颜色的球。该模型抽取过程定义如下:先等概率选择一个盒子,从中抽取一次得到一个观测结果,然后换盒子,并且换盒子的过程中服从...
摘要由CSDN通过智能技术生成

  隐马尔可夫模型(HMM)是一种标注模型,描述由隐藏的马尔可夫链随机生成观测序列的过程,属于生成模型。其在语音识别,自然语言处理,模式识别等领域有着广泛的应用。

1.基本概念

  友好起见,我们以例子来导出马尔可夫的定义

  • 盒子与球模型
      设有4个盒子,每个盒子里装有红白两种颜色的球。该模型抽取过程定义如下:先等概率选择一个盒子,从中抽取一次得到一个观测结果,然后换盒子,并且换盒子的过程中服从一些概率,比如1号盒子到2、3、4号的概率分别为0.1、0.4、0.5。2号盒子到1、2、3、4号的概率分别为0.3、0.2、0.1、0.4。假设抽取了5次,结果为“红,白,白,红,红”。
      总共抽取了5次,那么得到一个时间长度为5的观测序列,这里”红,白,白,红,红“便是最终的观测序列,其中每次抽取是在不同的盒子中进行的,这5次选择的盒子构成了一个状态随机序列,表示是在什么状态下抽取的。注意模型开始假设是等概率选择一个盒子,这个概率叫初始状态概率 π \pi π
      设所有可能的状态Q有N种,可能的V观测有M种,为了公式表达方便, 用 q = i q=i q=i 表示状态为第 i i i 个状态, q t = i q_t=i qt=i表示在 t t t 时刻的状态是第 i i i 个状态, y t y_t yt 表示第 t t t个时刻的观测。
      其中每个状态(当前盒子)都有转移到另一个状态的概率,这些概率可以方便的用矩阵表示,并且这个矩阵一定是方阵,
    A = [ a i j ] N ∗ N A=[a_{ij} ] _ {N*N} A=[aij]NN其中, a i j = P ( q ( t + 1 ) = j ∣ q t = i ) , i = 1 , 2 , . . . , N ; j = 1 , 2 , . . . , N a_{ij} = P(q_{(t+1)} =j|q_t = i), i=1,2,...,N;j=1,2,...,N aij=P(q(t+1)=jqt=i),i=1,2,...,N;j=1,2,...,N表示在时刻 t 处于状态 i 的条件下在下一时刻 t+1 转移到状态 j 的概率。
      除了状态转移矩阵,要知道还有每个状态下各个观测事件发生的概率,因此也用矩阵B将其表示
    B = [ b j ( k ) ] N ∗ M B = [b_j(k)]_{N*M} B=[bj(k)]NM其中, b j ( k ) = P ( y t = v k ∣ q t = j ) b_j(k) = P(y_t = v_k|q_t = j) bj(k)=P(yt=vkqt=j)表示在状态 j j j 下生成观测 v k v_k vk的概率。
       π \pi π表示初始状态概率向量
    π = ( π i ) , \pi = (\pi_i) , π=(πi),其中, π = P ( q 1 = i ) \pi = P(q_1 =i) π=P(q1=i),表示 t = 1 t = 1 t=1时刻处于状态 i i i 的概率。
      状态转移概率矩阵A,观测概率矩阵B和初始状态概率 π \pi π构成了隐马尔可夫模型的三要素,常用三元符表示隐马尔可夫模型的参数
    λ = ( A , B , π ) \lambda = (A,B,\pi) λ=(A,B,π)  隐马尔可夫模型有两个非常重要的假设,后面简化算法的推导都是基于这两个假设
  • 齐次马尔可夫性假设
      即假设隐马尔可夫链在任意时刻 t t t的状态只依赖与前一时刻的状态,与其他时刻的装态和观测值无关,也与 t t t时刻无关,即得概率简化公式如下
    P ( q t ∣ y 1 , y 2 , . . . , y t − 1 , q 1 , q 2 , . . . , q t − 1 ) = P ( q t ∣ q t − 1 ) P(q_t|y_1,y_2,...,y_{t-1},q_1,q_2,...,q_{t-1})= P(q_t|q_{t-1}) P(qty1,y2,...,yt1,q1,q2,...,qt1)=P(qtqt1)
  • 观测独立性假设
      即假设任意时刻的观测只依赖于当前时刻马尔可夫链的状态,而与其他观测和状态无关
    P ( y t ∣ y 1 , y 2 , . . . , y t − 1 , q 1 , q 2 , . . . , q t ) = P ( y t ∣ q t ) P(y_t|y_1,y_2,...,y_{t-1},q_1,q_2,...,q_t) = P(y_t|q_t) P(yty1,y2,...,yt1,q1,q2,...,qt)=P(ytqt)  总结一下隐马尔可夫的过程,那么假设 λ \lambda λ的参数已知,生成一个长度为T的时间序列的过程如下:
      (1) 按照初始状态概率 π \pi π产生一个状态 q 1 q_1 q1
      (2)令 t = 1
      (3)按照状态 q t q_t qt的观测概率矩阵B生成 y t y_t yt
      (4)安装状态 q t q_t qt的状态转移矩阵A产生下一个时刻的状态。
      (5) t = t + 1 t= t +1 t=t+1, 如果 t &lt; T t &lt; T t<T,转至(3),否则结束。

  大致明白隐马尔可夫模型是什么之后我们需要考虑它是干嘛的,能做什么。事实上隐马尔可夫模型有三个基本问题,解决这三个基本问题的过程也就是解决不同问题的过程,同时其问题描述也很明确,相信看完问题描述之后便对它能做什么有大致的了解。

  • 隐马尔可夫的三个基本问题
    (1) 概率计算问题。给定隐马尔可夫模型的参数 λ = ( A , B , π ) \lambda=(A,B,\pi) λ=(A,B,π)和观测序列 Y = ( y 1 , y 2 , . . . , y t ) Y=(y_1,y_2,...,y_t) Y=(y1,y2,...,yt),计算在该模型下观测 序列 Y Y Y出现的概率 P ( Y ∣ λ ) P(Y|\lambda) P(Yλ)
    (2) 学习问题。已知观测序列 Y = ( y 1 , y 2 , . . . , y t ) Y= (y_1,y_2,...,y_t) Y=(y1,y2,...,yt),估计模型的参数 λ = ( A , B , π ) \lambda=(A,B,\pi) λ=A,B,π,使得该模型下的该观测序列发生的概率 P ( Y ∣ λ ) P(Y|\lambda) P(Yλ)最大,即极大似然估计该模型参数。
    (3) 预测问题,也称为解码(decoding)问题。已知模型 λ = ( A , B , π ) \lambda=(A,B,\pi) λ=(A,B,π)和观测序列 Y = ( y 1 , y 2 , . . . , y t ) Y=(y_1,y_2,...,y_t) Y=(y1,y2,...,yt),求使给定序列条件下状态序列的概率 P ( Q ∣ Y ) P(Q|Y) P(QY)最大的状态序列,即给定观测序列,求最有可能生成该观测序列的状态序列。

  后面继续讨论如何计算这些问题以及如何简化这些问题。

2. P ( Y ∣ λ ) P(Y|\lambda) P(Yλ)概率计算问题

  本问题可以通过前向和后向算法进行计算,不过先来看看该问题的直接解法,以及该方法为什么不可行。前面已经说过隐马尔可夫有两个基本假设,其计算基本都是基于它们来化简的,先考虑其基本用法,即一个观测序列可以如何简化表达,以三个观测序列为例 P ( y 1 , y 2 , y 3 ) P(y_1,y_2,y_3) P(y1,y2,y3),其中共有K个状态
P ( y 1 , y 2 , y 3 ) = ∑ q 3 K ∑ q 2 K ∑ q 1 K P ( y 1 , y 2 , y 3 , q 1 , q 2 , q 3 ) = ∑ q 3 K ∑ q 2 K ∑ q 1 K P ( y 3 ∣ y 1 , y 2 , q 1 , q 2 , q 3 ) ⋅ P ( y 1 , y 2 , q 1 , q 2 , q 3 ) = ∑ q 3 K ∑ q 2 K ∑ q 1 K P ( y 3 ∣ q 3 ) ⋅ P ( q 3 ∣ y 1 , y 2 , q 1 , q 2 ) ⋅ P ( y 1 , y 2 , q 1 , q 2 ) = ∑ q 3 K ∑ q 2 K ∑ q 1 K P ( y 3 ∣ q 3 ) ⋅ P ( q 3 ∣ q 2 ) ⋅ P ( y 1 , y 2 , q 1 , q 2 ) ⋯ ⋯ = ∑ q 3 K ∑ q 2 K ∑ q 1 K P ( y 3 ∣ q 3 ) ⋅ P ( q 3 ∣ q 2 ) ⋅ P ( y 2 ∣ q 2 ) ⋅ P ( q 2 ∣ q 1 ) ⋅ P ( y 1 ∣ q 1 ) ⋅ P ( q 1 ) = ∑ q 3 K ∑ q 2 K ∑ q 1 K P ( y 3 ∣ q 3 ) ⋅ P ( q 3 ∣ q 2 ) ⋅ P ( y 2 ∣ q 2 ) ⋅ P ( q 2 ∣ q 1 ) ⋅ P ( y 1 ∣ q 1 ) ⋅ π ( π 1 ) \begin{aligned} P(y_1,y_2,y_3) = &amp; \sum_{q_3}^K\sum_{q_2}^K\sum_{q_1}^KP(y_1,y_2,y_3,q_1,q_2,q_3)\\ = &amp;\sum_{q_3}^K\sum_{q_2}^K\sum_{q_1}^KP(y_3|y_1,y_2,q_1,q_2,q_3)\cdot P(y_1,y_2,q_1,q_2,q_3)\\ = &amp;\sum_{q_3}^K\sum_{q_2}^K\sum_{q_1}^KP(y_3|q_3)\cdot P(q_3|y_1,y_2,q_1,q_2)\cdot P(y_1,y_2,q_1,q_2)\\ =&amp; \sum_{q_3}^K\sum_{q_2}^K\sum_{q_1}^KP(y_3|q_3) \cdot P(q_3|q_2) \cdot P(y_1,y_2,q_1,q_2)\\ &amp; \cdots \cdots\\ =&amp; \sum_{q_3}^K\sum_{q_2}^K\sum_{q_1}^KP(y_3|q_3) \cdot P(q_3|q_2) \cdot P(y_2|q_2)\cdot P(q_2|q_1) \cdot P(y_1|q_1) \cdot P(q_1)\\ =&amp; \sum_{q_3}^K\sum_{q_2}^K\sum_{q_1}^KP(y_3|q_3) \cdot P(q_3|q_2) \cdot P(y_2|q_2)\cdot P(q_2|q_1) \cdot P(y_1|q_1) \cdot \pi(\pi_1) \end{aligned} P(y1,y2,y3)======q3Kq2Kq1KP(y1,y2,y3,q1,q2,q3)q3Kq2Kq1KP(y3y1,y2,q1,q2,q3)P(y1,y2,q1,q2,q3)q3Kq2Kq1KP(y3q3)P(q3y1,y2,q1,q2)P(y1,y2,q1,q2)q3Kq2Kq1KP(y3q3)P(q3q2)P(y1,y2,q1,q2)q3Kq2Kq1KP(y3q3)P(q3q2)P(y2q2)P(q2q1)P(y1q1)P(q1)q3Kq2Kq1KP(y3q3)P(q3q2)P(y2q2)P(q2q1)P(y1q1)π(π1)  虽然这一方法在直接计算法中没有用到,但是是后面化简都会用到的,所以先写在这儿。

  • 直接计算方法

   回忆问题,给定模型参数和一个观测序列,计算这个观测序列出现的概率 P ( Y , λ ) P(Y,\lambda) P(Y,λ),若要直接计算,需考虑我们有哪些已知条件。首先初始状态概率 π \pi π知道,状态转移概率矩阵A也知道,那么生成和这个观测序列相同长度的状态序列的概率 P ( Q ∣ λ ) P(Q|\lambda) P(Qλ)就能表示出来了
P ( Q ∣ λ ) = π q 1 a q 1 q 2 a q 2 q 3 ⋯ a q t − 1 q t P(Q|\lambda)=\pi_{q_1} a_{q_1q_2}a_{q_2q_3} \cdots a_{q_{t-1}q_{t}} P(Qλ)=πq1aq1q2aq2q

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值