一、引言

这篇blog主要讲序列问题和其解法——维特比算法。

二、HMM中的第二个基本问题

序列问题:给定一个观察序列O=O1O2…OTO=O_1O_2\dots O_T和模型u=(A,B,π)u=(\boldsymbol{A,B,\pi}),如何快速有效地选择在一定意义下”最优”的状态序列Q=q1q2…qTQ=q_1q_2\dots q_T,使得该状态序列“最好地解释”观察序列?

三、定义最优状态序列

序列问题的答案并不是唯一的,那是因为它取决于对“最优状态序列的理解”。
定义 最优状态序列 在给定模型uu和观察序列OO的条件下,使得条件概率P(Q|O,u)P(Q|O,u)最大的状态序列:

Q^=argmaxQP(Q|O,u)

\hat{Q}=arg \max_Q P(Q|O,u)

四、维特比算法

维特比算法运用动态规划的搜索算法求解这种最优状态序列。为了实现这种搜索,首先定义一个维特比变量δt(i)\delta_t(i)。
定义 维特比变量δt(i)\delta_t(i) 是在时间tt时,HMM沿着某一条路径到达状态sis_i,并输出观察序列O1O2…OtO_1O_2\dots O_t的最大概率:

δt(i)=maxq1,q2,…,qt−1P(q1,q2,…,qt=si,O1O2…Ot|u)

\delta_t(i) = \max_{q_1,q_2, \dots, q_t-1} P(q_1,q_2, \dots, q_t=s_i, O_1O_2\dots O_t|u)
与前向变量类似, δt(i)\delta_t(i)有如下递推关系:

δt+1(i)=maxj[δt(j)aji]bi(Ot+1)

\delta_{t+1}(i) = \max_j[\delta_t(j)a_{ji}]b_i(O_{t+1})
     为了记录在时间 tt时,HMM通过哪一条概率最大的路径到达状态sis_i,维特比算法设置了另外一个变量 ψt(i)\psi_t(i),用于路径记忆,让 ψt(i)\psi_t(i)记录该路径上的状态 sis_i的前一个(在时间 t−1t-1)状态。

维特比算法
1. 初始化

δ1(i)=πibi(O1),1≤i≤Nψ1(i)=0

\delta_1(i) = \pi_ib_i(O_1), 1 \le i \le N \\\psi_1(i) = 0
2. 归纳计算

δt(j)=max1≤i≤N[δt−1(i)aij]bj(Ot),2≤t≤T;1≤j≤N记忆回退路径:ψt(j)=argmax1≤i≤N[δt−1(i)aij]bj(Ot),2≤t≤T;1≤i≤N

\delta_{t}(j) = \max_{1 \le i \le N}[\delta_{t-1}(i)a_{ij}]b_j(O_t), 2 \le t \le T; 1 \le j \le N\\ 记忆回退路径:\\ \psi_t(j) =arg \max_{1 \le i \le N}[\delta_{t-1}(i)a_{ij}]b_j(O_t), 2 \le t \le T; 1 \le i \le N\\
3. 终结

QT^=argmax1≤i≤N[δT(i)]P^(QT^)=max1≤i≤N[δT(i)]

\hat{Q_T} = arg \max_{1 \le i \le N}[\delta_{T}(i)]\\ \hat{P}(\hat{Q_T}) = \max_{1 \le i \le N}[\delta_{T}(i)]\\
4. 路径(状态序列)回溯

qt^=ψt+1(q^t+1),t=T−1,T−2,…,1

\hat{q_t} = \psi_{t+1}(\hat{q}_{t+1} ) , t =T-1, T-2, \dots, 1
     维特比算法的时间复杂度也是 O(N2T)O(N^2T)。

机器学习笔记(十五)——HMM序列问题和维特比算法相关推荐

  1. 机器学习笔记(十五)规则学习

    15.规则学习 15.1基本概念 机器学习中的规则(rule)通常是指语义明确.能描述数据分布所隐含的客观规律或领域概念.可写成若-则-形式的逻辑规则.规则学习(rulelearning)是从训练数据 ...

  2. 机器学习笔记(十八)——HMM的参数估计

    一.HMM中的第三个基本问题 参数估计问题:给定一个观察序列O=O1O2-OTO=O_1O_2\dots O_T,如何调节模型μ=(A,B,π)\mu = (A, B, \pi)的参数,使得P(O|μ ...

  3. 机器学习笔记 十五:随机森林(Random Forest)评估机器学习模型的特征重要性

    随机森林 1. 随机森林介绍 1.1 租赁数据案例 2. 特征相关性分析(热图) 2.1 热图绘制 2.2 构建随机森林模型 2.3 不同特征合并的重要性 2.3.1 经纬度合并(分3类) 2.3.2 ...

  4. 机器学习笔记十五之图片文字识别

    本节目录 1 问题描述 2 滑动窗口 3 获取大量数据集和人工数据 4 上限分析 1 问题描述 图像文字识别应用所作的事是,从一张给定的图片中识别文字.这比从一份扫描文档中识别文字要复杂的多. 为了完 ...

  5. 机器学习笔记十四:随机森林

    在上一篇机器学习笔记十三:Ensemble思想(上)中,简要的提了一下集成学习的原理和两种主要的集成学习形式.  而在这部分要讲的随机森林,就算是其中属于bagging思路的一种学习方法.为了篇幅,b ...

  6. 花书+吴恩达深度学习(十五)序列模型之循环神经网络 RNN

    目录 0. 前言 1. RNN 计算图 2. RNN 前向传播 3. RNN 反向传播 4. 导师驱动过程(teacher forcing) 5. 不同序列长度的 RNN 如果这篇文章对你有一点小小的 ...

  7. python复制指定字符串_python3.4学习笔记(十五) 字符串操作(string替换、删除、截取、复制、连接、比较、查找、包含、大小写转换、分割等)...

    python3.4学习笔记(十五) 字符串操作(string替换.删除.截取.复制.连接.比较.查找.包含.大小写转换.分割等) python print 不换行(在后面加上,end=''),prin ...

  8. windows内核开发学习笔记十五:IRP结构

    windows内核开发学习笔记十五:IRP结构   IRP(I/O Request Package)在windows内核中,有一种系统组件--IRP,即输入输出请求包.当上层应用程序需要访问底层输入输 ...

  9. Polyworks脚本开发学习笔记(十五)-用Python连接Polyworks的COM组件

    Polyworks脚本开发学习笔记(十五)-用Python连接Polyworks的COM组件 用Polyworks脚本开发,没有高级语言的支持,功能难免单一,一些比较复杂的交互实现不了,界面和报告也很 ...

最新文章

  1. RocketMQ 基本概念
  2. python入门教程共四本书籍-Python入门经典书籍有哪些?有这三本就够了
  3. 【组合数学】递推方程 ( 非齐次部分是指数的情况 | 非齐次部分是指数的情况示例 )
  4. 在 N 条水平线与 M 条竖直线构成的网格中,放 K 枚石子
  5. 知乎高赞回答:是否有必要系统学习概率图模型?
  6. 关于关闭浏览器Session就丢失的讨论
  7. 根因分析初探:一种报警聚类算法在业务系统的落地实施 1
  8. mysql query cache 关闭_为什么要关闭MySQL query cache-Fun言
  9. springmvc处理器及前端控制器介绍
  10. linux服务器上svn的log_SVN如何查看修改的文件记录
  11. mysql 调用存储过程 inout_MySQL存储过程in、out和inout参数示例和总结
  12. PHP zip 文件压缩、解压
  13. sql server 函数根据分隔符号拆分字符
  14. Android P 隐藏状态栏电池图标
  15. 1.scrapy项目创建——python scrapy 爬取新浪财经财经新闻
  16. 三维动画在计算机上的应用,计算机图技术在三维动画中的应用.doc
  17. 在Unity2018如何使用代码一键设置Icon
  18. html+css 制作简单QQ登录页面
  19. 计算机组装与维护结业报告,计算机维修与维护的结课论文
  20. 中兴新支点安装broadcom博通wifi无线网卡驱动

热门文章

  1. c语言备忘录算法矩阵链乘,矩阵链乘法(备忘录法)
  2. mysql外键猫头,SQL进阶
  3. mockito mock void方法_一文让你快速上手 Mockito 单元测试框架
  4. object detection错误Message type object_detection.protos.SsdFeatureExtractor has no field named bat
  5. Linux简单实用小技巧
  6. Dojo实现Tabs页报错(二)
  7. 网络操作系统 第七章 管理TCP/IP网络
  8. Java Lambda表达
  9. 5.UiScrollable API 详细介绍
  10. ECMall2.x模板制作入门系列之2(模板标签/语法)