相比LAS算法,CTC能夠克服LAS不能online的弊端。只要在Encoder階段,不採用Bi-LSTM,那麼CTC就可以online

CTC算法是如何處理的?

CTC是Connectionist Temporal Classification的縮寫,它可以做到線上實時地語音識別。它用的是單向的RNN,且只作爲編碼器,用MLP作爲解碼預測文字分佈。RNN對當前語音輸入xi編碼成hi。MLP再對它乘上一個權重,接上Softmax。但有時候當前的語音輸入可能並不能對應實際的文本token,所以預測要額外多一個爲空的類別,表示模型不知道要輸出什麼,因此最終會得到V+1大小的概率分佈

CTC沒有下采樣,所以輸入和輸出的序列長度都是T。模型預測完後,它還要進行後處理,一是把重複的token合併,二是空類別去掉,最終纔是預測序列。CTC的這種預測方式,會讓它的數據標註變得很難,因爲要確保剛好每個輸入聲音特徵都對應一個正確的token。而標註語料的數量,會直接影響模型評測的表現。此外,一個序列正確的標註方式又可以存着很多種,造成標註多標準問題。這也加大標註數據選擇的困難

CTC的效果如何?

單純使用CTC的效果並不是很好;單純使用CTC的WER處在30左右;採用CTC+LM的WER普遍能夠達到10左右

事實上,LM的引入正是爲了克服CTC independent解碼所基於的不合理假設。也因此,通過LM進行後處理後,能夠大幅提升CTC的效果。從這個角度來說,CTC並不是end-to-end的

CTC有什麼問題?

最大的問題就在於每個時間步之間的獨立性假設,每個MLP的解碼器工作是獨立的。它可能會遇到一個奇怪的問題。比如語音數據部分前三幀都在發音c,第一個隱層hi解碼出是c後,後面兩個隱層就無須再解碼出c了。但由於它們是獨立工作的,後面的解碼部分不知道前面解碼的是什麼,所以第二個可能解碼成空或c,第三個也可能解碼成空或c。但如果編碼器是足夠深的RNN,它也可能在編碼過程中考慮這種前後關係的依賴,讓第一個輸出隱層包含更多關於c的信息,而後面兩個隱層包含更多關於空類別的信息

相關文章