1.Background:
在时间序列中,需要比较相似性的两段时间序列的长度可能并不相等,在语音识别领域表现为不同人的语速不同。在这些复杂情况下,使用传统的欧几里得距离无法有效求解两个时间序列之间的距离,即相识度。
大部分情况下,两个序列整体上具有非常相似的形状,但是这些形状在x轴(时间轴)上并不是对齐的。DTW的思想是把两个时间序列进行延伸和缩短,来得到两个时间序列性距离最短也就是最相似的那一个warping,这个最短的距离也就是这两个时间序列的最后的距离度量。
- Warping正确性判定:直观上理解,当然是warping一个序列后可以与另一个序列重合recover。这个时候两个序列中所有对应点的距离之和是最小的。warping的正确性一般指“feature to feature”对齐,即特征对齐。
- 和一些序列匹配一样,本算法基于动态规划计算;
2. Algorithm
DTW是用满足一定条件的时间规整函数
W
K
W_K
WK,是一个路径(K的大小与路径长度有关),描述测试模板和参考模板(两个序列)的时间对应关系,求解两模板匹配时累计距离最小所对应的规整函数。
我们有两个时间序列 Q = [ q 1 , q 2 , . . . , q n ] Q=[q_1,q_2,...,q_n] Q=[q1,q2,...,qn]和 C = [ c 1 , c 2 , . . c m ] C=[c_1,c_2,..c_m] C=[c1,c2,..cm],他们的长度分别是n和m:序列中的每个点的值为语音序列中每一帧的特征值(实际语音匹配运用中,一个序列为参考模板,一个序列为测试模板,特征值如语音的频率、MFCC等特征)。
这里,语音等序列具有以下特点:
-
边界条件: w 1 = ( 1 , 1 ) w_1=(1, 1) w1=(1,1)和 w K = ( m , n ) w_K=(m, n) wK=(m,n)。任何一种语音的发音快慢都有可能变化,但是其各部分的先后次序不可能改变,因此所选的路径必定是从左下角出发,在右上角结束;
-
连续性:如果 w k − 1 = ( a ′ , b ′ ) w_{k-1}= (a', b') wk−1=(a′,b′),那么对于路径的下一个点 w k = ( a , b ) w_k=(a, b) wk=(a,b)需要满足 a ≤ a ′ + 1 a \le a' +1 a≤a′+1和 b ≤ b ′ + 1 b \le b' +1 b≤b′+1。也就是不可能跨过某个点去匹配,只能和自己相邻的点对齐。这样可以保证Q和C中的每个坐标都在W中出现;
-
单调性(“保序性”):如果 w k − 1 = ( a ′ , b ′ ) w_{k-1}= (a', b') wk−1=(a′,b′),那么对于路径的下一个点 w k = ( a , b ) w_k=(a, b) wk=(a,b)需要满足 a ′ ≤ a a' \le a a′≤a和 b ′ ≤ b b' \le b b′≤b。这限制W路径上面的点必须是随着时间单调进行的,其实就是语音序列的“保序性”。
如果我们记录路径上位置
j
j
j的代价就是
W
j
W_j
Wj,那么:
D
T
W
(
Q
,
C
)
=
m
i
n
(
∑
k
=
1
K
W
k
)
DTW(Q,C)=min(\sum^K_{k=1}W_k)
DTW(Q,C)=min(k=1∑KWk)
- 分母是否要K?我觉得是不用的,此外,我们可以意识到,对于长度为n和m的序列, m a x ( m , n ) ≤ K ≤ m + n − 1 max(m,n) \le K \le m+n-1 max(m,n)≤K≤m+n−1
我们如果把序列下标为
(
i
,
j
)
(i,j)
(i,j)位置的距离记作
d
(
i
,
j
)
d(i,j)
d(i,j),而累积的DTW损失为
γ
(
i
,
j
)
\gamma(i,j)
γ(i,j),那么我们可以得到如下的递归式:
γ
(
i
,
j
)
=
d
(
i
,
j
)
+
m
i
n
{
γ
(
i
−
1
,
j
−
1
)
,
γ
(
i
,
j
−
1
)
,
γ
(
i
−
1
,
j
)
}
\gamma(i,j)=d(i,j)+min\{\gamma(i-1,j-1),\gamma(i,j-1),\gamma(i-1,j)\}
γ(i,j)=d(i,j)+min{γ(i−1,j−1),γ(i,j−1),γ(i−1,j)}
我们初始化DP数组
γ
(
0
,
j
)
=
γ
(
i
,
0
)
=
0
\gamma(0,j)=\gamma(i,0)=0
γ(0,j)=γ(i,0)=0
并且最终结果即为
γ
(
n
,
m
)
\gamma(n,m)
γ(n,m),一路上的最佳序列即为最佳匹配(optimal path)
W
K
W_K
WK。