【机器学习】【DTW】

转自:https://blog.csdn.net/zouxy09/article/details/9140207

一、概述

       在大部分的学科中,时间序列是数据的一种常见表示形式。对于时间序列处理来说,一个普遍的任务就是比较两个序列的相似性。

在时间序列中,我们通常需要比较两端音频的差异。而这两段音频的长度大部分是不相等的。在语音处理领域上表现为不同人的语速不同。即时同一个人不同一时刻发同一个音,也不可能具有完全相同的时间长度。而且每个人对同一个单词的不同音素的发音速度也是不同的,有的人会把"A"这个音拖得稍长,或者"i"稍短。在这种复杂的情况下,利用传统的欧几里得距离是无法求得有效的两个时间序列之间的相似性的(即距离)。

例如图A所示,实线和虚线分别是同一个词“pen”的两个语音波形(在y轴上拉开了,以便观察)。可以看到他们整体上的波形形状很相似,但在时间轴上却是不对齐的。例如在第20个时间点的时候,实线波形的a点会对应于虚线波形的b’点,这样传统的通过比较距离来计算相似性很明显不靠谱。因为很明显,实线的a点对应虚线的b点才是正确的。而在图B中,DTW就可以通过找到这两个波形对齐的点,这样计算它们的距离才是正确的。

    也就是说,大部分情况下,两个序列整体上具有非常相似的形状,但是这些形状在x轴上并不是对齐的。所以我们在比较他们的相似度之前,需要将其中一个(或者两个)序列在时间轴下warping扭曲,以达到更好的对齐。而DTW就是实现这种warping扭曲的一种有效方法。DTW通过把时间序列进行延伸和缩短,来计算两个时间序列性之间的相似性。

       那如果才知道两个波形是对齐了呢?也就是说怎么样的warping才是正确的?直观上理解,当然是warping一个序列后可以与另一个序列重合recover。这个时候两个序列中所有对应点的距离之和是最小的。所以从直观上理解,warping的正确性一般指“feature to feature”的对齐。

二、动态时间规整DTW

         动态时间规整DTW是一个典型的优化问题,它用满足一定条件的的时间规整函数W(n)描述测试模板和参考模板的时间对应关系,求解两模板匹配时累计距离最小所对应的规整函数。

      假设我们有两个时间序列Q和C,他们的长度分别是n和m:(实际语音匹配运用中,一个序列为参考模板,一个序列为测试模板,序列中的每个点的值为语音序列中每一帧的特征值。例如语音序列Q共有n帧,第i帧的特征值(一个数或者一个向量)是qi。至于取什么特征,在这里不影响DTW的讨论。我们需要的是匹配这两个语音序列的相似性,以达到识别我们的测试语音是哪个词)

= q1, q2,…,qi,…, qn ;

= c1, c2,…, cj,…, cm ;

       如果n=m,那么就用不着折腾了,直接计算两个序列的距离就好了。但如果n不等于m我们就需要对齐。最简单的对齐方式就是线性缩放了。把短的序列线性放大到和长序列一样的长度再比较,或者把长的线性缩短到和短序列一样的长度再比较。但是这样的计算没有考虑到语音中各个段在不同情况下的持续时间会产生或长或短的变化,因此识别效果不可能最佳。因此更多的是采用动态规划(dynamic programming)的方法。

      为了对齐这两个序列,我们需要构造一个n x m的矩阵网格,矩阵元素(i, j)表示qi和cj两个点的距离d(qi, cj)(也就是序列Q的每一个点和C的每一个点之间的相似度,距离越小则相似度越高。这里先不管顺序),一般采用欧式距离,d(qi, cj)= (qi-cj)2(也可以理解为失真度)。每一个矩阵元素(i, j)表示点qi和cj的对齐。DP算法可以归结为寻找一条通过此网格中若干格点的路径,路径通过的格点即为两个序列进行计算的对齐的点。

       那么这条路径我们怎么找到呢?那条路径才是最好的呢?也就是刚才那个问题,怎么样的warping才是最好的。

我们把这条路径定义为warping path规整路径,并用W来表示, W的第k个元素定义为wk=(i,j)k,定义了序列Q和C的映射。这样我们有:

     首先,这条路径不是随意选择的,需要满足以下几个约束:

1)边界条件:w1=(1, 1)和wK=(m, n)。任何一种语音的发音快慢都有可能变化,但是其各部分的先后次序不可能改变,因此所选的路径必定是从左下角出发,在右上角结束。

2)连续性:如果wk-1= (a’, b’),那么对于路径的下一个点wk=(a, b)需要满足 (a-a’) <=1和 (b-b’) <=1。也就是不可能跨过某个点去匹配,只能和自己相邻的点对齐。这样可以保证Q和C中的每个坐标都在W中出现。

3)单调性:如果wk-1= (a’, b’),那么对于路径的下一个点wk=(a, b)需要满足0<=(a-a’)和0<= (b-b’)。这限制W上面的点必须是随着时间单调进行的。以保证图B中的虚线不会相交。

         结合连续性和单调性约束,每一个格点的路径就只有三个方向了。例如如果路径已经通过了格点(i, j),那么下一个通过的格点只可能是下列三种情况之一:(i+1, j),(i, j+1)或者(i+1, j+1)。

      满足上面这些约束条件的路径可以有指数个,然后我们感兴趣的是使得下面的规整代价最小的路径:

      分母中的K主要是用来对不同的长度的规整路径做补偿。我们的目的是什么?或者说DTW的思想是什么?是把两个时间序列进行延伸和缩短,来得到两个时间序列性距离最短也就是最相似的那一个warping,这个最短的距离也就是这两个时间序列的最后的距离度量。在这里,我们要做的就是选择一个路径,使得最后得到的总的距离最小。

      这里我们定义一个累加距离cumulative distances。从(0, 0)点开始匹配这两个序列Q和C,每到一个点,之前所有的点计算的距离都会累加。到达终点(n, m)后,这个累积距离就是我们上面说的最后的总的距离,也就是序列Q和C的相似度。

      累积距离γ(i,j)可以按下面的方式表示,累积距离γ(i,j)为当前格点距离d(i,j),也就是点qi和cj的欧式距离(相似性)与可以到达该点的最小的邻近元素的累积距离之和:

      最佳路径是使得沿路径的积累距离达到最小值这条路径。这条路径可以通过动态规划(dynamic programming)算法得到。

 

三、DTW在语音中的运用

       假定一个孤立字(词)语音识别系统,利用模板匹配法进行识别。这时一般是把整个单词作为识别单元。在训练阶段,用户将词汇表中的每一个单词说一遍,提取特征后作为一个模板,存入模板库。在识别阶段,对一个新来的需要识别的词,也同样提取特征,然后采用DTW算法和模板库中的每一个模板进行匹配,计算距离。求出最短距离也就是最相似的那个就是识别出来的字了。

————————————————————————————

个人总结补充:

参考https://ieeexplore.ieee.org/document/7552917/中的DTW,用于语音对齐align处理。source speeches和target speeches的时间序列长度是不一样的,而在train过程中需要source和target对齐,应用DTW,将不同时间序列强制warping到同一时刻上,即使得图B中的线条垂直,在过程中会对某些时刻进行压缩,这样,使得source和target的维度是一样的。因此,将处理后的source和target送入DBLSTM中训练DBLSTM模型。

  • 26
    点赞
  • 78
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
### 回答1: 时序分析是对时间序列数据进行建模和预测的一种方法。时间序列数据是按照一定时间顺序排列的观测值序列,如股票价格、气温变化等。 动态时间规整(Dynamic Time Warping,DTW)是一种常用的时序分析方法之一。DTW可以用来比较两个时间序列之间的相似度,即找到使得两个序列差异最小的对应关系。相较于常见的时间序列比较方法(如欧氏距离、相关系数等),DTW可以处理两个序列在时间轴上以不同速度变化的情况。 DTW算法的基本思想是通过将两个序列的节点对齐,找到使得总距离最小的路径。该路径的选择可以通过动态规划的方式进行。具体来说,将两个序列表示为二维矩阵,其中矩阵的每个元素表示两个节点之间的距离。通过计算累计距离最小的路径,就可以得到时间序列之间的相似度度量。 DTW算法在机器学习中有广泛的应用。例如,在语音识别中,可以使用DTW来识别不同速度发音的话语。在活动识别中,DTW可以用于比较人体动作信号的相似度。此外,DTW也可以应用于金融时间序列分析、心电图信号处理等领域。 虽然DTW在时序分析中具有一定的优势,但也存在一些限制。首先,DTW算法的计算复杂度较高,需要对整个矩阵进行计算,因此对于大规模数据集可能不适用。其次,DTW算法对于噪声和离群值敏感,可能导致路径的偏移。 总而言之,DTW机器学习是一种用于时序分析的方法,通过动态时间规整来比较两个时间序列之间的相似度。它在多个领域有实际应用,但也需要考虑其计算复杂度和对噪声的敏感性。 ### 回答2: 时序分析是一种用于处理时间序列数据的数据分析方法。它广泛应用于各种领域,如金融、天气预测、生物信息学等。而动态时间规整(Dynamic Time Warping,DTW)是时序分析中一种常用的机器学习算法。 DTW算法主要用于比较两个时间序列之间的相似度。相比于传统的距离计算方法(如欧氏距离或曼哈顿距离),DTW考虑了时间上的顺序差异,能够更好地处理时间序列中的时间延迟、不同速度和形态变化等情况。 DTW算法的基本思想是通过在两个时间序列之间找到一条最佳的匹配路径来计算它们的相似度。它通过动态规划的方式计算出最优的匹配路径,从而得到时间序列之间的相似度度量。 DTW算法可以采用不同的距离度量来计算匹配路径中每一对序列点的距离,例如欧氏距离、曼哈顿距离或者其他自定义的距离度量。同时,DTW算法还可以设置约束条件,以限制匹配路径的形状,避免无关的变化对相似度计算产生干扰。 在机器学习中,DTW算法可以用于许多应用场景,如模式识别、时间序列分类、异常检测等。通过将时间序列数据转化为DTW距离,可以建立模型来进行分类、预测或者异常检测等任务。 总而言之,时序分析是处理时间序列数据的一种数据分析方法,而DTW机器学习算法是时序分析的一种常用方法。DTW算法可以通过动态规划的方式计算时间序列之间的相似度,适用于多种应用场景,是处理时间序列数据的重要工具。 ### 回答3: 时序分析是一种针对时间序列数据进行分析和建模的方法。它通过研究时间序列的潜在模式、趋势和周期性,可以揭示数据的内在规律和变化趋势。而DTW(Dynamic Time Warping)是一种常用的时序分析算法,它被广泛应用于机器学习领域。 DTW算法可以用于比较两个时间序列之间的相似程度。它的基本思想是将两个时间序列进行对齐,以找到最佳匹配。具体来说,DTW算法通过计算两个时间序列之间的距离,并通过一系列的变形操作将它们进行对齐。在对齐的过程中,可以使用不同的距离度量方法,例如欧氏距离或曼哈顿距离。 DTW算法的优势在于它对时间序列的非线性变形和长度差异具有较强的鲁棒性。它可以有效地处理时间序列之间的变形,适用于具有不同采样率和变速的时间序列数据。因此,DTW算法常被用于时间序列相似度计算、模式识别和时间序列分类等任务中。 然而,DTW算法也存在一些限制。首先,由于DTW算法的计算复杂度较高,它在处理大规模数据时可能会面临计算资源的挑战。其次,DTW算法对于噪声敏感,如果时间序列包含较多的噪声或异常值,可能会影响算法的准确性。此外,DTW算法也存在过拟合的问题,需要在实际应用中进行适当的参数选择和模型评估。 综上所述,时序分析和DTW算法在机器学习中具有重要的应用价值。通过时序分析和DTW算法,我们可以更好地理解和分析时间序列数据,从中提取有价值的信息,为各种机器学习任务提供支持和指导。但在使用时需要考虑其计算复杂度、噪声鲁棒性和模型选择等因素。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值