任務(wù)定義和概念解釋
CTC是一種損失函數(shù),解決的是未分段的序列數(shù)據(jù)的轉(zhuǎn)換任務(wù)的訓(xùn)練問題演怎。
序列數(shù)據(jù):比如說一段語音牺六;
標(biāo)注:語音的內(nèi)容是“我愛你”三個字
未分段:比如說采樣率是16000Hz,音頻的時間長度是1S畏纲,那么數(shù)據(jù)有16000幀春缕,未分段就是沒有告訴你哪些幀是哪個字。
轉(zhuǎn)換任務(wù):把A序列轉(zhuǎn)換成B序列票灰,比如把音頻文件轉(zhuǎn)換成字符串序列宅荤。
Temporal Classification
S——樣本集合,其中一個樣本就是一個(x惹盼,z)對組合
x——樣本中轉(zhuǎn)換前的原序列惫确,x是一個由m維向量組成的序列,其所屬的集合X叫做輸入空間(例如經(jīng)過MFCC后的音頻序列)
z——樣本中轉(zhuǎn)換后的序列掩蛤,z是一個其所屬的集合L叫做目標(biāo)空間陈肛,L是由有限的元素組成的序列的集合燥爷,并且z的長度一定小于x的長度(例如L可以是所有漢字的任意排序的集合懦窘,香農(nóng)采樣定理告訴我們一句話里能解析出來的字?jǐn)?shù)不可能比音頻幀數(shù)還多)
Temporal Classification就是訓(xùn)練一個從X到L的映射h(x,z)稚配,來滿足下面的標(biāo)準(zhǔn)
Label Error Rate(衡量Temporal Classification任務(wù)的標(biāo)準(zhǔn))
這個值越小,說明任務(wù)完成得越準(zhǔn)確午衰。
S`是S的一個子集臊岸,這里就是測試集
ED:編輯距離——用來衡量兩個序列之間的差異大小
the minimum number of insertions, substitutions and deletions required to change p into q.
From Network Outputs to Labellings
x序列(假設(shè)長度是T)首先通過RNN網(wǎng)絡(luò)+softmax(或者FC+softmax也可以尊流?)轉(zhuǎn)化成一個n維向量組成的序列(長度也是T),這里的n是目標(biāo)空間中有限元素的數(shù)量+1(其實就是字庫里有多少個字逻住,為啥加一往下看)迎献,n個數(shù)字代表在這個位置出現(xiàn)某個字的概率。
下面這個公式就是在輸入為x這個條件下輸出序列π的條件概率扒秸。
π是某一個長度為T的序列比如“- - 我 我 - 愛”冀瓦,其中的“-”代表blank,這就是加一的原因渔伯。
上面的公式成立的條件是每一幀之間條件概率相互獨立肄程。
然后定義一個多對一的映射B选浑,把blank和相連的重復(fù)字符都去掉古徒,這個意思:
就得到了轉(zhuǎn)換成最終表達(dá)的條件概率公式,公式中的l是最終生成的字符序列代态。
至此我們的問題轉(zhuǎn)換成了尋找h(x),其生成的字符序列l(wèi)使得上面的條件概率p(l|x)取到最大值
到這里我們可以想一下,h(x)應(yīng)該由兩部分組成歉摧,第一部分是x到n維向量的轉(zhuǎn)換(RNN+softmax),第二部分是這個向量到最終序列l(wèi)的轉(zhuǎn)換再悼。文中沿用了隱馬爾可夫模型中的術(shù)語將第二部分稱作decoding膝但。并列出了兩種在實際中用到的decoding方法冲九。
第一種是best path decoding:非常簡單,就取每一個n維序列元素的最大值生成的序列跟束,然后經(jīng)過轉(zhuǎn)換B莺奸。簡單粗暴,但是并不能保證取到的序列使得上述條件概率最大泳炉。
第二種是Prefix search decoding:其實這個問題是有確定解的憾筏,條件概率最大的組合只有一個,這種方法其實就是去暴力搜索花鹅,但是隨著序列長度和維度的增加氧腰,求解這個問題的復(fù)雜度呈指數(shù)級上升(細(xì)思恐極),一種折中的方法就是限定prefix的數(shù)量刨肃,比如每一步只考慮前一步概率最大的那三個項目的子情況古拴,這里貼一個鏈接,圖畫得很美真友,比我講的強(qiáng)。
有點累了盔然,后面就是一臉懵逼的前向后向桅打,還沒看明白,留個坑愈案,希望能填上挺尾,下班。