Dynamic Time Warping Algorithm
3-1 Dynamic time warping (DTW)
辨識的主要目的,就是希望人類與電腦機器之間能夠互動,能命 令電腦執行人類所要求的工作,現今在此領域上有常見的幾種方法:
(1) 動態時間扭曲演算法(Dynamic Time Warping, DTW) [43][44]
(2) 神經網路法(Neural Networks)[45]-[48]
(3) 隱藏式馬可夫模型(Hidden Markov Model)[49][50]
(4) 混合式作法(Hybrid)[51]
以上的方法各有優劣,但是動態時間扭曲演算法之所以被廣泛地運 用在辨識領域上的原因,就是因為此演算法能在兩序列之間進行時間 扭曲的交錯比對,而且有著較高的辨識準確度。
動態時間扭曲演算法已經是發展成熟的演算法,其在語音訊號處理 上常常被用來進行相似度估測,主要精神是希望在時間軸上有著更大 彈性的相似度比對演算法,使待測資料能藉由時間軸上的扭曲,不管 是伸展或是壓縮,都能找到和參考資料誤差最小的比對。自從發表至 今已經廣泛的應用在聲音、圖形、影像,只要是能夠轉換成線性表示
- 20 - 料之間的最小距離(Minimum Distance),進行相似度的判斷。
時間序列在科學與商業應用中是被廣泛採用的。測量時間序列之間
- 21 -
可以看出來向量Y只是向量X的兩倍延伸,也就是說X與Y的相似度極 高,可以判斷兩時間序列的相似度,不會造成判斷的錯誤。在圖3-1中 展示出兩個相似的時間序列,但是它們無法在時間軸上校準。在圖3-2 中展示出非線性校準可以容許較直觀的距離計算。
圖 3-1 兩組相似時間序列的歐機里德距離
圖 3-2 在時間軸校準之下比對的兩組時間序列
計算出兩個時間序列的相似度就是動態時間扭曲演算法的主要目的,
而其依據是兩序列之間求得最小距離的大小來判斷,若最小距離越小,
表示兩序列越相似,反之則是不相似,圖3-3所示,我們假設兩組時間
- 22 -
序列參考資料(Reference)R 和輸入資料(Input)In,R的長度是I;而In的 長度是J:
R={x1,x2,x3,···,xi,···,xI-1,xI} In={y1,y2,y3,···,yj···,yJ-1,yJ}
接下來我們建構一個扭曲路徑,路徑取名為path, Path=p1,p2,p3,···,pk,···,pk-1,pk}
Max(I,J)≤K≤I+J
並假設扭曲路徑的長度為K,而扭曲路徑第K個的元素
pk= (i,j)
在上式中,i跟j分別是時間序列X跟Y的索引值。在每個時間序列 的第一個點在p1 = (1, 1)就是扭曲路徑的起始點,而在每個時間序列的 最後一個點在pK = (I, J)當作是結束點。如此一來才能確保每個索引都 會被標記在扭曲路徑中。
最小距離的扭曲路徑通常就是最佳的扭曲路徑,所以扭曲路徑的 距離將如下式:
D(C)= ∑ − −1 ( )
D(C)是扭曲路徑p 的距離,而D(pki, pkj)是序列X 和序列Y 在扭曲路徑
- 23 -
k 元素的距離。圖3-3展示用動態時間演算法比對兩個時間序列(X和 Y)。
圖 3-3 兩序列的扭曲路徑圖
動態時間扭曲演算法使用動態規劃(dynamic programming)的方法,
動態規劃很適合用來尋找多層次運算的最佳解,若要找到一條最佳路 徑,其中任意子路徑都必須是相關子路徑的最佳路徑,否則最後的路 徑便不是最佳解;我們利用圖3-4簡單的解釋一下,假設每一條連結代 表一條道路,道路上的p函數代表經過此道路所花費的時間,而每一個 方塊代表一個城市,方塊內的q函數代表通過城市花費的時間,我們要 找出一條從起點出發,最終穿越d城市所花費最短時間的路徑,這就是
- 24 -
最佳路徑,而其中花費的時間t(d)就可以表示成下列方程式:
t(d)=min{[q(a)+p(a,d)] , [q(b)+p(b,d)], [q(c)+p(c,d)] }+q(d)
若將動態規劃的技巧利用在更多層的規劃計算上,更能顯示出動態規 劃的優勢。
圖 3-4 動態規劃
利用此架構計算出最小距離的扭曲路徑。下列方程式是用在動態時 間扭曲演算法求出最小距離解,其中D(i,j)是維度為I 乘J 的矩陣。d(i,j) 稱為局部距離(Local Distance),d(i, j)在計算D(i-1, j-1)常常會乘上一個 加權值。
D(i, j) = d(i, j)+ min[D(i −1, j),D(i, j −1),D(i −1, j −1)]
動態時間扭曲演算法有其連續限制,有鑑於動態時間扭曲演算法是動
- 25 -
態規劃的方法,因此最小距離的計算有著固定的規則,圖3-5列出常見 動態程式的兩種比對方式,我們稱這種比對方式為動態規劃比對方式,
又稱為連續限制(Continuity Constraint)。
由圖中可知D(i, j)由D(i-1, j) (水平方向),D(i, j-1)(垂直方向)和D(i-1, j-1) (斜方向)加上局部距離決定。故將每一點到下一點之方向收集起來,
即可找出最佳路徑。
圖 3-5 連續限制
下圖為動態時間扭曲演算法的整體架構,將參考樣本的資料與輸入 樣本資料進行局部距離計算,之後計算最小距離,最後我們可以得到 兩者輸入資料的相似值。而圖3-6為使用動態時間扭曲演算法計算出相 似度的流程圖。
- 26 -
圖 3-6 動態時間扭曲演算法的流程圖
以下為範例,將兩組一維序列進行DTW演算,最後呈現出兩組序列 的動態扭曲路徑。
vec1= [1 1 1 2 10 3]
vec2= [1 1 1 10 2 3]
圖 3-7 DTW 等長序列扭曲路徑
另外,我們用兩組等長序列直接比對的方式呈現,為了清楚的呈現,
- 27 -
把vec2與vec1分隔開來,得以看出兩組序列之間比對的順序以及整體結 構。
圖 3-8 等長序列 DTW 比對範例
接下來我們再用兩組不等長序列進行比對,不等長序列可以視為時間 軸不匹配的序列。
vec1=[0 1 2 3 3 2 1 0 0 1 2 1 0];
vec2=[0 1 2 2 3 2 1 0 0 0 1 3 2 2 0];
圖 3-9 不等長序列的扭曲路徑
- 28 -
圖 3-10 不等長序列 DTW 比對範例
由上圖可以發現,兩組序列雖然為時間軸不匹配的情況,比對後的 最小距離非常小,代表相似度很高,因此利用DTW演算法可以高度辨 識時間軸不匹配的資料序列,十分適合運用在此論文中的辨識系統。
- 29 -
開發軟體環境為Visual Studio2010,開發軟體語言為C#語言,C#是 微軟於2000年發佈的一種高級程式語言,其物件導向以及基於.NET框
CPU Intel core i5-2400 (3.1GHz)
顯示卡 NVIDIA
GeForce GTS450
RAM DDR3(1333MHz) 8GB
作業系統 Windows 7 (x64)