HMM学习笔记_1(从一个实例中学习DTW算法)

转自:http://www.cnblogs.com/tornadomeet/archive/2012/03/23/2413363.html

以及理解部分参考:https://www.jianshu.com/p/4c905853711c

  DTW为(Dynamic Time Warping,动态时间归准)的简称。应用很广,主要是在模板匹配中,比如说用在孤立词语音识别,计算机视觉中的行为识别,信息检索等中。可能大家学过这些类似的课程都看到过这个算法,公式也有几个,但是很抽象,当时看懂了但不久就会忘记,因为没有具体的实例来加深印象。

这次主要是用语音识别课程老师上课的一个题目来理解DTW算法。

  首先还是介绍下DTW的思想:假设现在有一个标准的参考模板R,是一个M维的向量,即R={R(1),R(2),……,R(m),……,R(M)},每个分量可以是一个数或者是一个更小的向量。现在有一个才测试的模板T,是一个N维向量,即T={T(1),T(2),……,T(n),……,T(N)}同样每个分量可以是一个数或者是一个更小的向量,注意M不一定等于N,但是每个分量的维数应该相同。

由于M不一定等于N,现在要计算R和T的相似度,就不能用以前的欧式距离等类似的度量方法了。那用什么方法呢?DTW就是为了解决这个问题而产生的。

首先我们应该知道R中的一个分量R(m)和T中的一个分量T(n)的维数是相同的,它们之间可以计算相似度(即距离)。在运用DTW前,我们要首先计算R的每一个分量和T中的每一个分量之间的距离,形成一个M*N的矩阵。(为了方便,行数用将标准模板的维数M,列数为待测模板的维数N)。

然后下面的步骤该怎么计算呢?用个例子来看看。

这个例子中假设标准模板R为字母ABCDEF(6个),测试模板T为1234(4个)。R和T中各元素之间的距离已经给出。如下:

既然是模板匹配,所以各分量的先后匹配顺序已经确定了,虽然不是一一对应的。现在题目的目的是要计算出测试模板T和标准模板R之间的距离。因为2个模板的长度不同,所以其对应匹配的关系有很多种,我们需要找出其中距离最短的那条匹配路径。现假设题目满足如下的约束:当从一个方格((i-1,j-1)或者(i-1,j)或者(i,j-1))中到下一个方格(i,j),如果是横着或者竖着的话其距离为d(i,j),如果是斜着对角线过来的则是2d(i,j).其约束条件如下图像所示:

其中g(i,j)表示2个模板都从起始分量逐次匹配,已经到了M中的i分量和T中的j分量,并且匹配到此步是2个模板之间的距离。并且都是在前一次匹配的结果上加d(i,j)或者2d(i,j),然后取最小值。

所以我们将所有的匹配步骤标注后如下:

怎么得来的呢?比如说g(1,1)=4, 当然前提都假设是g(0,0)=0,就是说g(1,1)=g(0,0)+2d(1,1)=0+2*2=4.

g(2,2)=9是一样的道理。首先如果从g(1,2)来算的话是g(2,2)=g(1,2)+d(2,2)=5+4=9,因为是竖着上去的。

如果从g(2,1)来算的话是g(2,2)=g(2,1)+d(2,2)=7+4=11,因为是横着往右走的。

如果从g(1,1)来算的话,g(2,2)=g(1,1)+2*d(2,2)=4+2*4=12.因为是斜着过去的。

综上所述,取最小值为9. 所有g(2,2)=9.

当然在这之前要计算出g(1,1),g(2,1),g(1,2).因此计算g(I,j)也是有一定顺序的。

其基本顺序可以体现在如下:

计算了第一排,其中每一个红色的箭头表示最小值来源的那个方向。当计算了第二排后的结果如下:

最后都算完了的结果如下:

到此为止,我们已经得到了答案,即2个模板直接的距离为26. 我们还可以通过回溯找到最短距离的路径,通过箭头方向反推回去。如下所示:

到这里,估计大家动手算一下就会明白了。其实很简单,通过例子的学习后再回去看那些枯燥的理论公式就发现很容易了。

在实际应用中,比如说语音识别中的孤立词识别,我们首先训练好常见字的读音,提取特征后作为一个模板。当需要识别一个新来的词的时候,也同样提取特征,然后和训练数据库中的每一个模板进行匹配,计算距离。求出最短距离的那个就是识别出来的字了。

dwt:动态时间规整相关推荐

  1. 动态时间规整DWT(Dynamic Time Warping)

    1. DTW作用 动态时间规整算法,能够将两个代表同一个类型的事物的不同长度序列进行时间上的"对齐". 比如在语音识别中,同一个字母,由不同人发音,时间长短不一,但信号相似.故需要 ...

  2. 动态时间规整算法: 从DTW到FastDTW

    目录 动态时间规整算法: 从DTW到FastDTW 总结: 简介[^1] DTW[^1] FastDTW:使用多级粗化的方法[^1] 结果 动态时间规整算法: 从DTW到FastDTW 总结: Fas ...

  3. 动态时间规整_动态时间规整下时间序列子序列的搜索与挖掘

    一.DTW的背景 对于时间序列数据挖掘算法的相似性搜索来说最大的瓶颈就是所花费的时间,所以大多数关于时间序列数据挖掘的学术研究都在考虑数百万个时间序列对象时停滞不前,而许多工业和科学都在数十亿个等待探 ...

  4. 语音信号处理之(一)动态时间规整(DTW)

    语音信号处理之(一)动态时间规整(DTW) zouxy09@qq.com http://blog.csdn.net/zouxy09 这学期有<语音信号处理>这门课,快考试了,所以也要了解了 ...

  5. 动态时间规整_动态规划-数组系列(10%)

    哇呀呀呀呀~~~好!实不相瞒,小弟我就是人称玉树临风胜潘安,一支梨花压海棠的小淫虫周伯通!<唐伯虎点秋香> 不同路径 II​leetcode-cn.com 一个机器人位于一个 m x n ...

  6. 动态时间规整-DTW算法

    作者:桂. 时间:2017-05-31  16:17:29 链接:http://www.cnblogs.com/xingshansi/p/6924911.html 前言 动态时间规整(Dynamic ...

  7. 【重大修改】动态时间规整(Dynamic Time Warping)

    本文只是简单的介绍DTW算法的目的和实现.具体的DTW可以参考一下文献: 离散序列的一致性度量方法:动态时间规整(DTW)  http://blog.csdn.net/liyuefeilong/art ...

  8. DTW动态时间规整算法

    原文地址:https://blog.csdn.net/qcyfred/article/details/53824507 https://zhuanlan.zhihu.com/p/43247215 动态 ...

  9. 动态时间规整算法(DTW)通俗易懂

    动态时间规整算法(Dynamic Time Warping ) 来源: -假定一个孤立词识别系统,利用模板匹配法进行识别.训练阶段,用户将词汇表种每一个词都念一遍,将其特征矢量的时间序列作为模板(te ...

  10. ## 论文学习—用一个可接受的的剪枝策略来加速动态时间规整聚类的算法

    论文学习-用一个可接受的的剪枝策略来加速动态时间规整聚类的算法 "Accelerating Dynamic Time Warping Clustering with a Novel Admi ...

最新文章

  1. pstools中如何绕过协议提示
  2. 怎样格式化电脑_160G移动硬盘做PE启动盘 要怎样做
  3. python做Linux进程运行,Python实现在Linux系统下更改当前进程运行用户
  4. RESTFUL协议入门介绍
  5. alert弹框里弹一个表格_Python学习第十三弹 输入与输出
  6. css如何让两个div上下排列_CSS层叠上下文
  7. iOS中使用图片作为颜色的背景图
  8. c语言大神,C语言入门大神有话说(一)
  9. JavaWeb项目结构
  10. vue 圆形百分比进度条_vue圆形进度条
  11. 骰子游戏实验报告C语言,掷骰子游戏电路的设计与实现实验报告
  12. Matlab imcrop 与 opencv ROI
  13. UserWarning: Usage of dash-separated ‘script-dir‘ will not be supported in future versions. 笔记
  14. linux中man 2与man 3区别
  15. Java 版植物大战僵尸思路和源码分享!
  16. python爬取问卷星内容,Python 问卷星自动填写 爬虫
  17. MATLAB:Radon正变换的理解
  18. cmd控制台的点阵字体不能调整大小怎么办?
  19. 撸了隔壁的网,满足一下窝的偷窥癖
  20. 使用 iPad 远程访问 win10

热门文章

  1. 基于线性函数近似的安全强化学习 Safe RL with Linear Function Approximation 翻译 2
  2. RabbitMQ学习(二)-Rabbit的使用
  3. 内置函数总结(待更新)C++
  4. 字符串切分,stream,JSONObject,lambda表达式的应用
  5. 企业级负载均衡LVS集群——DR模式下的(加权)轮询调度器、DR模式下的健康检测(ldirectord)
  6. 电子计算机X线体层摄影,X线计算机体层摄影.pdf
  7. 病毒分析三:勒索病毒分析
  8. (转载)消息队列详解
  9. 断点续传 scp rsync
  10. systemctl重新加载_CentOS7利用systemctl添加自定义系统服务【转】