CTC學習筆記(三) 解碼

2021-07-14 07:26:54 字數 1308 閱讀 7379

解碼是對於輸入序列x找出概率最大的輸出序列l,而不是概率最大的一條輸出路徑,因為輸出路徑和輸出序列是多對一關係。

l ∗=

argm

axl^*=argmax \

l∗=arg

max最優路徑找出每一幀輸出的最大概率組成的輸出序列即為最後的解碼結果,這種方式會引入問題。

對於上圖,這種方法解碼出來的結果是blank,但是a的概率反而更高。

對於語音識別,可以引入語言模型等grammar限制,求解問題變為如下形式:

l ∗=

argm

axl^*=argmax \\

l∗=arg

max其中g表示grammar。

可以使用傳統的token傳播演算法進行解碼。

演算法流程圖如下:

假設詞典d包含2個單詞w,分別是,每個單詞對應兩個因素,所以∣w′

∣=5|w'|=5

∣w′∣=5

北 b ei

京 j ing

當t=1的時候,每個w的前兩個tok被啟用

當t=2的時候,每個w的tok只能在單詞內傳播,對於「北」來說,tok(北,3,2)和tok(北,4,2)將會被啟用,同時tok(北,2,2)有兩條路徑可以達到,這裡取兩條路徑的最大概率,加上b音素在t=2時刻對應的概率的對數值,作為tok(北,2,2)的得分。與此同時,b->ei這條路徑完成了「北」這個單詞對應的輸出,所以此時「北」將會有對應的輸出tok(北,-1,2)。

當t=3的時候,對於「京」這個單詞,除了正常的單詞內tok傳播,還將涉及到單詞和單詞之間的tok傳播,找到所有單詞w的輸出tok得分和p(京|w)之和的最大值,作為tok(京,0,3),並且將該w對應的單詞放到tok(京,0,3)的history。tok(京,0,3)將可以向tok(京,1,4)傳播。

以此類推…

整體上來看,解碼過程類似於hmm的維特比,找出最大概率對應的路徑,不同之處在於ctc解碼引入了blank節點用於得到最終的輸出序列,而不關心每一幀的輸出結果。

通過設定beam,可以對每個時刻t對應的word輸出tok進行剪枝,加快解碼速度。

CTC學習筆記(三) 解碼

解碼是對於輸入序列x找出概率最大的輸出序列l,而不是概率最大的一條輸出路徑,因為輸出路徑和輸出序列是多對一關係。l ar gmax l argmax 北 b ei京 j ing 當t 1的時候,每個w的前兩個tok被啟用 當t 2的時候,每個w的tok只能在單詞內傳播,對於 北 來說,tok 北,3...

CTC學習筆記(一) 簡介

connectionist temporal classification簡稱ctc,翻譯不太清楚,可以理解為基於神經網路的時序類分類。其中classification比較好理解,表示分類問題 temporal可以理解為時序類問題,比如語音識別的一幀資料,很難給出乙個label,但是幾十幀資料就容易...

語音筆記 CTC

ctc全稱,connectionist temporal classification,可以理解為基於神經網路的時序類分類。語音識別中聲學模型的訓練屬於監督學習,需要知道每一幀對應的label才能進行有效的訓練,在訓練的資料準備階段必須要對語音進行強制對齊。對於語音的一幀資料,很難給出乙個label...