動態時間規整演算法DTW

2021-09-23 22:04:31 字數 2408 閱讀 4026

動態時間規整演算法(dynamic time warping,dtw),最早由日本學者itakura提出,用於衡量兩個時間序列的相似度,也可用於將多個測試序列與標準序列對齊,從而實現序列長度的歸一化。

主要應用於語音識別、手勢識別、步態識別等領域。

在語言識別領域,同乙個詞,由於不同個體發音習慣及語速的差異,採集得到的語音頻號也呈現出相當大的隨機性。比如有的人會把「a」這個音拖得很長,或者把「i」發的很短。通常會表現為整體波形形狀相似,但在時間軸上不對齊。在這些複雜情況下,使用傳統的歐幾里得距離無法有效地求的兩個時間序列之間的距離(或者相似性)。dtw通過將序列資料的時間軸扭曲(warping),從而實現時間序列間的對齊。

動態時間規整dtw是乙個典型的優化問題,它用滿足一定條件的的時間規整函式w(n)描述測試模板和參考模板的時間對應關係,求解兩模板匹配時累計距離最小所對應的規整函式。

假設我們有兩個時間序列q和c,他們的長度分別是n和m:

若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 path),並用w來表示, w的第k個元素定義為wk=(i,j)k,定義了序列q和c的對映。這樣我們有:

滿足上面這些約束條件的路徑可以有指數個,然後我們感興趣的是使得下面的規整代價最小的路徑:

k用來對長度做補償。同時定義累積距離r(i,j)。

從(0, 0)點開始匹配這兩個序列q和c,每到乙個點,之前所有的點計算的距離都會累加。到達終點(n, m)後,這個累積距離就是我們上面說的最後的總的距離,也就是序列q和c的相似度。

累積距離γ(i,j)可以按下面的方式表示,累積距離γ(i,j)為當前格點距離d(i,j),也就是點qi和cj的歐式距離(相似性)與可以到達該點的最小的鄰近元素的累積距離之和: 

這個例子中假設標準模板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),然後取最小值。

所以我們將所有的匹配步驟標註後如下:

即2個模板直接的距離為26. 我們還可以通過回溯找到最短距離的路徑,通過箭頭方向反推回去。如下所示:

參考:動態時間規整/4732354?fr=aladdin

(c++)

(python)

動態時間規整(DTW)

dtw為 dynamic time warping,動態時間歸準 的簡稱。應用很廣,主要是在模板匹配中,比如說用在孤立詞語音識別,計算機視覺中的行為識別,資訊檢索等中。可能大家學過這些類似的課程都看到過這個演算法,公式也有幾個,但是很抽象,當時看懂了但不久就會忘記,因為沒有具體的例項來加深印象。這次...

動態時間規整DTW

在日常的生活中我們最經常使用的距離毫無疑問應該是歐式距離,但是對於一些特殊情況,歐氏距離存在著其很明顯的缺陷,比如說時間序列,舉個比較簡單的例子,序列a 1,1,1,10,2,3,序列b 1,1,1,2,10,3,如果用歐氏距離,也就是distance i j b j a i b j a i 來計算...

DTW動態時間規整 學習整理

大舅為了激勵我學習的日常對話 大舅 dtw演算法了解嗎?學習一下,明天給我講講?我 我沒法講的讓人聽懂 dtw演算法,這種方法在語音識別,機器學習方便有著很重要的作用。基於動態規劃 dp 的思想,解決了發音長短不一 語速多變 的模板匹配問題 比如不同的人讀同乙個詞的音訊序列 可以有效地將語音搜尋比對...