HMM、CTC、RNN-T訓練是所有alignment的尋找方法
阿新 • • 發佈:2020-11-26
## 1.1 LAS產生label的計算
![](https://upload-images.jianshu.io/upload_images/25051069-508503ada101303a.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) LAS是可以看做能夠直接計算給定一段acoustic feature時輸出token sequences的概率,即$p(Y|X)$,LAS每次給定一個acoustic feature就會產生一個token 的概率,將所有的概率乘起來就是token sequences的概率。其實在訓練的時候,並不是在每一步都找概率最大的,這樣會陷入區域性最優,一般會用到beam search來尋找一個最優的概率。在圖中,$\hat{Y}$表示的是正確的token sequence ,訓練的目標就是要找到一個$\theta$,使得給定一段acoustic features時,輸出$\hat{Y}$的概率最大。在測試的時候,就是根據訓練找到的$\$在給定acoustic features時,找出概率最大的token sequence,就是語音識別的結果。
## 1.2 CTC和RNN-T的計算
CTC和RNN-T都需要alignment,所以不能像LAS那樣直接計算。![](https://upload-images.jianshu.io/upload_images/25051069-f97e21d2cc1ea059.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)。其概率是窮舉所有的alignment,將所有的alignment的概率加起來,就是token sequence的概率。所以會碰見的幾個問題如下圖:![image.png](https://upload-images.jianshu.io/upload_images/25051069-f47ced3c2ce8478e.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
- 怎麼計算所有可能的alignment
- 怎麼將所有可能的alignment加起來
- 怎麼訓練$\theta$
### 1.2.1 所有的alignment
![](https://upload-images.jianshu.io/upload_images/25051069-87d39e373a3882d0.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) HMM中是對token進行重複,CTC是引入了$\phi$,可以插在任何地方,但是其個數和token重複個數的和要等於acoustic features的個數,RNN-T也引入了$\phi$,但是其是作為一個acoustic feature結束,下一個acoustic features開始的間隔,因此,$\phi$的個數就等於acoustic features的個數。
- HMM
![](https://upload-images.jianshu.io/upload_images/25051069-ed30a195e1a8c02e.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)一個token可以重複$t_{i}$次,但是所有token重複次數的和要等於acoustic features的長度T,即圖中灰色部分所描述的公式。表中橫軸代表acoustic features,縱軸代表token。從左上角開始一直走到右下角,中間每一步只能有兩個方向:向右走或者是向右下走。但是終點一定要是右下角才算是合法的路徑。從起點開始一直走到終點的所有合法路徑就是所有可能的alignment。下圖就是一個非法路徑
![](https://upload-images.jianshu.io/upload_images/25051069-4218776d3cf668fb.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
- CTC
CTC在最後合併token的規則是:(1)首先合併重複項(2)去掉token.例如:a a $\phi$ $\phi$ r $\phi$ r$\phi$ s s s $\phi$s,經過第一步的結果是:a$\phi$r$\phi$r$\phi$s$\phi$ s,經過第二步的結果是a r r s s 。下面的合法路徑的選擇都是基於這個規則下。
![](https://upload-images.jianshu.io/upload_images/25051069-057712d35398089f.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
CTC中的$\phi$可以插在任何地方,開頭,token之間或者結尾。但是$\phi$的個數加上token的個數要等於acoustic features的個數。其中$\phi$的個數可以為0,但是每一個token的個數不能為0。
![1](https://upload-images.jianshu.io/upload_images/25051069-b8b5c60f74630bc5.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)![2](https://upload-images.jianshu.io/upload_images/25051069-d7639d2d8bedeab2.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)![3](https://upload-images.jianshu.io/upload_images/25051069-94766ba785e4e513.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)![4](https://upload-images.jianshu.io/upload_images/25051069-87aced6f9620f78f.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
CTC和HMM不同,在CTC進行的過程中,縱軸是在開頭,結尾和每一個token之間都插入一個$\phi$,其合法路徑的規則有3個要求
(1)其初始的起點可以有兩個,即$x^1$處的狀態可以使$\phi$或者是第一個token,這裡是C;
(2)其最後的終點也有兩個狀態,即$x^6$處的狀態可以是$\phi$或者是最後一個token,這裡是t
(3)當中間狀態是token時,且下一個token與之不重複時,其下一步的狀態可以有3個,向右走--下一步還是當前的token,向右下方走--下一步就是$\phi$,跨越$\phi$向右下方走(走馬步)--下一步就是下一個token,【見圖3】
(4) 當中間狀態為$\phi$時,下一步只能有2種情況,向右走或者向右下方走。【見圖2、圖3】
(5) 當中間狀態是token時,且下一個token與之重複時,其下一步的狀態只能是2個,向右走--下一步還是當前的token,向右下方走--下一步就是$\phi$【見圖4】,如果走馬步,就會在合併的時候丟失掉一個token,所以不能跨越$\phi$。
下圖舉例列出了兩條合法路徑:
![](https://upload-images.jianshu.io/upload_images/25051069-93e3b2d1bbad5c10.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
- RNN-T
![](https://upload-images.jianshu.io/upload_images/25051069-f423ce54951f376a.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) 在RNN-T的過程中,最後一個token後至少有一個$\phi$,因為他是作為一個acoustic feature和另一個acoustic feature的間隔,當一個單詞說完,它肯定要出現$\phi$,不然下一段acoustic features沒辦法進來。而在token之間則可以有也可以沒有。![](https://upload-images.jianshu.io/upload_images/25051069-7c2a676b2fba15c2.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) 向右走表示,插入$\phi$,可以理解為當前的acoustic feature沒有任何東西,什麼都沒有輸出的,我先插入一個$\phi$,你再給我下一個acoustic feature。向下走就表示輸出一個token,理解為當前的acoustic feature輸出一個token。由於最後一個必須是$\phi$,所以終點在右下角還右邊一格。
![](https://upload-images.jianshu.io/upload_images/25051069-940f1b57d007513d.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) RNN-T一個acoustic feature可以識別出很多token(參見上面的RNN-T的介紹),所以可能第一個acoustic features就把想要的東西全部都輸出了,後面全部插入$\phi$即可。下圖顯示了一條非法路徑![](https://upload-images.jianshu.io/upload_images/25051069-aa42f95c240c7f52.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
## 1.2.2 HMM、CTC、RNN-T的路徑方式比較
![](https://upload-images.jianshu.io/upload_images/25051069-618a0518531875a3.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
HMM的合法路徑只能是複製自己和到達下一個token,CTC的合法路徑是複製自己或者到$\phi$或者到下一個token,RNN-T的合法路徑是到達下一個token或者插入$\