• 机器学习笔记之隐马尔可夫模型(六)解码问题


    机器学习笔记之隐马尔可夫模型——解码问题

    引言

    上一节介绍了使用狭义EM算法对模型参数 λ \lambda λ。本节将介绍使用维特比算法(Viterbi)处理解码问题(Decoding)

    解码问题介绍

    隐马尔可夫模型中,解码问题被看做为 给定长度为 T T T的观测序列 { o 1 , o 2 , ⋯   , o T } \{o_1,o_2,\cdots,o_T\} {o1,o2,,oT},目标是求解观测序列 O \mathcal O O对应状态序列 I \mathcal I I的后验概率 P ( I ∣ O ) P(\mathcal I \mid \mathcal O) P(IO)。即:
    在解码问题中,模型参数 λ \lambda λ是已知量,通常可以省略掉。
    P ( I ∣ O ) = P ( i 1 , i 2 , ⋯   , i T ∣ o 1 , o 2 , ⋯   , o T , λ ) P(\mathcal I \mid \mathcal O) = P(i_1,i_2,\cdots,i_T \mid o_1,o_2,\cdots,o_T,\lambda) P(IO)=P(i1,i2,,iTo1,o2,,oT,λ)

    实际上,解码问题预测问题(Prediction)是存在一些差别的:

    • 预测问题所表达的思想是,给定长度为 t t t观测序列 O = { o 1 , o 2 , ⋯   , o t } \mathcal O = \{o_1,o_2,\cdots,o_t\} O={o1,o2,,ot}作为条件,求解下一时刻的观测变量 o t + 1 o_{t+1} ot+1或者状态变量 i t + 1 i_{t+1} it+1后验概率。即:
      预测往往是给定前面若干时刻的观测序列,求解下一时刻的相关信息。
      P ( o t + 1 ∣ o 1 , o 2 , ⋯   , o t ) P ( i t + 1 ∣ o 1 , o 2 , ⋯   , o t ) P(o_{t+1} \mid o_1,o_2,\cdots,o_t) \\ P(i_{t+1} \mid o_1,o_2,\cdots,o_t) P(ot+1o1,o2,,ot)P(it+1o1,o2,,ot)
    • 解码问题更倾向于求解一个对应时刻的状态序列而不是未来时刻信息的判断。 即给定一个观测序列,将对应时刻的状态序列求解出来。

    关于隐马尔可夫模型的相关概念、模型参数表示、模型特殊性质机器学习笔记之隐马尔可夫模型(五)学习问题——EM算法中的场景介绍。

    首先,需要明确解码问题的目标:在给定 观测序列 O \mathcal O O 的条件下,找出一组后验概率最大的、与观测序列对应时刻的状态序列 I \mathcal I I

    假设观测序列 O \mathcal O O的长度为 T T T,那么最终寻找的最优状态序列 I \mathcal I I的长度也是 T T T。因此,可以统计一下,到底存在多少种满足条件的状态序列

    由于 i t ( t = 1 , 2 , ⋯   , T ) i_t(t =1,2,\cdots,T) it(t=1,2,,T)的取值范围是离散的,根据状态值集合 Q = { q 1 , q 2 , ⋯   , q K } \mathcal Q = \{q_1,q_2,\cdots,q_{\mathcal K}\} Q={q1,q2,,qK},因此,可以得到 K T \mathcal K^T KT个不重复的状态序列组合
    即:随着序列长度 T T T的增加,状态序列组合的数量随着指数级别增长

    而解码问题就是 K T \mathcal K^T KT个排列组合中选择出一个最优组合

    解码问题分析

    什么是最优组合?最优组合满足的标准是什么?通过解码问题的目标可以看出,希望找到这样一组状态序列 I ^ \hat {\mathcal I} I^使得关于 I ^ \hat {\mathcal I} I^的后验概率 P ( I ^ ∣ O , λ ) P(\hat {\mathcal I} \mid \mathcal O,\lambda) P(I^O,λ)最大。即:
    I ^ = arg ⁡ max ⁡ I P ( I ∣ O , λ ) \hat {\mathcal I} = \mathop{\arg\max}\limits_{\mathcal I} P(\mathcal I \mid \mathcal O,\lambda) I^=IargmaxP(IO,λ)

    I ^ = { i ^ 1 , i ^ 2 , ⋯   , i ^ T } \hat {\mathcal I} = \{\hat i_1,\hat i_2,\cdots,\hat i_T\} I^={i^1,i^2,,i^T},需要如何找出这些最优的状态值
    进行一些示例:

    • 假设我们的状态序列 I \mathcal I I t t t时刻的状态变量 i t = q k ( k ∈ { 1 , 2 , ⋯   , K } ) i_t = q_k (k \in \{1,2,\cdots,\mathcal K\}) it=qk(k{1,2,,K})的条件下,此时从初始概率分布出发,要如何表示最优序列对应的概率分布结果

      • 基于上述假设和问题,首先观察:达到状态变量 i t i_t it共经过观测变量状态变量 表示如下:
        o 1 , o 2 , ⋯   , o t , i 1 , i 2 , ⋯   , i t − 1 , i t = q k o_1,o_2,\cdots,o_t,i_1,i_2,\cdots,i_{t-1},i_t = q_k o1,o2,,ot,i1,i2,,it1,it=qk
      • 基于这些变量,我们如何描述这些变量组成序列的优劣性:基于模型参数 λ \lambda λ联合概率分布
        P ( o 1 , o 2 , ⋯   , o t , i 1 , i 2 , ⋯   , i t − 1 , i t = q k ∣ λ ) P(o_1,o_2,\cdots,o_t,i_1,i_2,\cdots,i_{t-1},i_t = q_k \mid \lambda) P(o1,o2,,ot,i1,i2,,it1,it=qkλ)
      • 联合概率分布结果越大,该序列就越优秀。如何获取联合概率分布的最大值?继续观察,其中 o 1 , o 2 , ⋯   , o t o_1,o_2,\cdots,o_t o1,o2,,ot观测变量,是已知项;实际只有通过对状态变量的合适选择,才能够找到最优的联合概率分布结果
        t t t时刻状态变量 i t = q k i_t=q_k it=qk的条件下,最优概率分布结果 δ t ( k ) \delta_t(k) δt(k),其表达式如下:
        δ t ( k ) = max ⁡ i 1 , i 2 , ⋯   , i t − 1 P ( o 1 , o 2 , ⋯   , o t , i 1 , i 2 , ⋯   , i t − 1 , i t = q k ∣ λ ) \delta_t(k) = \mathop{\max}\limits_{i_1,i_2,\cdots,i_{t-1}} P(o_1,o_2,\cdots,o_t,i_1,i_2,\cdots,i_{t-1},i_t = q_k \mid \lambda) δt(k)=i1,i2,,it1maxP(o1,o2,,ot,i1,i2,,it1,it=qkλ)
    • 同理,如果将 t t t时刻替换为 t + 1 t+1 t+1时刻,即状态变量 i t + 1 = q j i_{t+1} = q_{j} it+1=qj确定的条件下,依然从初始概率分布出发,其最优概率分布结果 δ t + 1 ( j ) \delta_{t+1}(j) δt+1(j) 的表达式如下:
      δ t + 1 ( j ) = max ⁡ i 1 , i 2 , ⋯   , i t P ( o 1 , o 2 , ⋯   , o t , o t + 1 , i 1 , i 2 , ⋯   , i t , i t + 1 = q j ) \delta_{t+1}(j) = \mathop{\max}\limits_{i_1,i_2,\cdots,i_t} P(o_1,o_2,\cdots,o_t,o_{t+1},i_1,i_2,\cdots,i_t,i_{t+1} = q_j) δt+1(j)=i1,i2,,itmaxP(o1,o2,,ot,ot+1,i1,i2,,it,it+1=qj)

    观察, δ t ( k ) \delta_t(k) δt(k) δ t + 1 ( j ) \delta_{t+1}(j) δt+1(j)之间是否存在关联关系

    • 思考:如果不看 δ t ( k ) , δ t + 1 ( j ) \delta_t(k),\delta_{t+1}(j) δt(k),δt+1(j)最优概率分布结果,它们只是两条序列产生的联合概率分布 δ t ( k ) , δ t + 1 ( j ) \delta_t(k),\delta_{t+1}(j) δt(k),δt+1(j)之间仅相差两项: i t + 1 = q j , o t + 1 i_{t+1} = q_j,o_{t+1} it+1=qj,ot+1
    • o t + 1 o_{t+1} ot+1依然是已知项,因此 δ t + 1 ( j ) \delta_{t+1}(j) δt+1(j)相当于 δ t ( k ) \delta_t(k) δt(k)的状态下,继续 执行了一次状态转移 得到 i t + 1 = q j i_{t+1} =q_j it+1=qj状态。即:
      δ t + 1 ( j ) = δ t ( k ) ⋅ a k j ⋅ b j ( o t + 1 ) \delta_{t+1}(j) = \delta_t(k)\cdot a_{kj} \cdot b_j(o_{t+1}) δt+1(j)=δt(k)akjbj(ot+1)
    • 但又因为 δ t ( k ) , δ t + 1 ( j ) \delta_t(k),\delta_{t+1}(j) δt(k),δt+1(j)都是最优概率分布结果,有必要 步骤2中执行的状态转移过程也是最优过程
      而从 i t → i t + 1 = q j i_t \to i_{t+1}=q_j itit+1=qj的状态转移过程存在 K \mathcal K K种情况,对应联合概率分布结果表示如下
      i = 1 → δ t ( 1 ) ⋅ a 1 j ⋅ b j ( o t + 1 ) i = 2 → δ t ( 2 ) ⋅ a 2 j ⋅ b j ( o t + 1 ) ⋮ i = K → δ t ( K ) ⋅ a K j ⋅ b j ( o t + 1 ) i=1 \to \delta_t(1)\cdot a_{1j} \cdot b_j(o_{t+1}) \\ i=2 \to \delta_t(2)\cdot a_{2j} \cdot b_j(o_{t+1}) \\ \vdots \\ i=\mathcal K \to \delta_t(\mathcal K)\cdot a_{\mathcal K j} \cdot b_j(o_{t+1}) i=1δt(1)a1jbj(ot+1)i=2δt(2)a2jbj(ot+1)i=Kδt(K)aKjbj(ot+1)
      从上述 K \mathcal K K种结果中,必然存在一个最大值。该最大值对应的 i i i就是能够产生最优过程状态值的编号
      δ t + 1 ( j ) = max ⁡ 1 ≤ k ≤ K [ δ t ( k ) ⋅ a k j ⋅ b j ( o t + 1 ) ] \delta_{t+1}(j) = \mathop{\max}\limits_{1\leq k \leq \mathcal K} [\delta_t(k)\cdot a_{kj} \cdot b_j(o_{t+1})] δt+1(j)=1kKmax[δt(k)akjbj(ot+1)]

    至此,找到 δ t ( k ) \delta_t(k) δt(k) δ t + 1 ( j ) \delta_{t+1}(j) δt+1(j)之间的关联关系
    δ t ( k ) , δ t + 1 ( j ) \delta_t(k),\delta_{t+1}(j) δt(k),δt+1(j)仅表示对应时刻最优联合概率分布,而实际需要的是一个最优序列。因此:
    ϕ t + 1 ( j ) \phi_{t+1}(j) ϕt+1(j)表示 δ t ( k ) \delta_{t}(k) δt(k) δ t + 1 ( j ) \delta_{t+1}(j) δt+1(j)选择状态转移最优的状态变量结果 q k q_k qk对应的下标 k k k。即:
    ϕ t + 1 ( j ) = arg ⁡ max ⁡ 1 ≤ k ≤ K [ δ t ( k ) ⋅ a k j ⋅ b j ( o t + 1 ) ] \phi_{t+1}(j) = \mathop{\arg\max}\limits_{1 \leq k \leq \mathcal K} [\delta_t(k)\cdot a_{kj} \cdot b_j(o_{t+1})] ϕt+1(j)=1kKargmax[δt(k)akjbj(ot+1)]

    最终得到下标序列 { ϕ 1 , ϕ 2 , ⋯   , ϕ T } \{\phi_1,\phi_2,\cdots,\phi_T\} {ϕ1,ϕ2,,ϕT}

    相关参考:
    机器学习-隐马尔可夫模型6-Decoding问题-Viterbi算法

  • 相关阅读:
    基于大数据的安防体系建设研究和实践
    Redis 缓存穿透击穿和雪崩
    基于STC89C52单片机空气PM2.5系统设计资料
    Jenkins测试报告样式优化
    第20章 OAuth2LoginAuthenticationWebFilter 之ReactiveAuthenticationManager认证授权管理器
    Git 命令详解
    详解PHP代码执行漏洞--无字母shell
    Java-矩阵(自动导航-越过障碍)
    第17节——高阶组件
    【机器学习算法】神经网络与深度学习-9 递归神经网络
  • 原文地址:https://blog.csdn.net/qq_34758157/article/details/126836363