完结篇 | 吴恩达《序列模型》精炼笔记(3)-- 序列模型和注意力机制
AI有道
不可錯(cuò)過(guò)的AI技術(shù)公眾號(hào)
關(guān)注
1
Basic Models
Sequence to sequence(序列)模型在機(jī)器翻譯和語(yǔ)音識(shí)別方面都有著廣泛的應(yīng)用。下面,我們來(lái)看一個(gè)機(jī)器翻譯的簡(jiǎn)單例子:
針對(duì)該機(jī)器翻譯問(wèn)題,可以使用“編碼網(wǎng)絡(luò)(encoder network)”+“解碼網(wǎng)絡(luò)(decoder network)”兩個(gè)RNN模型組合的形式來(lái)解決。encoder network將輸入語(yǔ)句編碼為一個(gè)特征向量,傳遞給decoder network,完成翻譯。具體模型結(jié)構(gòu)如下圖所示:
其中,encoder vector代表了輸入語(yǔ)句的編碼特征。encoder network和decoder network都是RNN模型,可使用GRU或LSTM單元。這種“編碼網(wǎng)絡(luò)(encoder network)”+“解碼網(wǎng)絡(luò)(decoder network)”的模型,在實(shí)際的機(jī)器翻譯應(yīng)用中有著不錯(cuò)的效果。
這種模型也可以應(yīng)用到圖像捕捉領(lǐng)域。圖像捕捉,即捕捉圖像中主體動(dòng)作和行為,描述圖像內(nèi)容。例如下面這個(gè)例子,根據(jù)圖像,捕捉圖像內(nèi)容。
首先,可以將圖片輸入到CNN,例如使用預(yù)訓(xùn)練好的AlexNet,刪去最后的softmax層,保留至最后的全連接層。則該全連接層就構(gòu)成了一個(gè)圖片的特征向量(編碼向量),表征了圖片特征信息。
然后,將encoder vector輸入至RNN,即decoder network中,進(jìn)行解碼翻譯。
2
Picking the Most Likely Sentence
Sequence to sequence machine translation模型與我們第一節(jié)課介紹的language模型有一些相似,但也存在不同之處。二者模型結(jié)構(gòu)如下所示:
Language model是自動(dòng)生成一條完整語(yǔ)句,語(yǔ)句是隨機(jī)的。而machine translation model是根據(jù)輸入語(yǔ)句,進(jìn)行翻譯,生成另外一條完整語(yǔ)句。上圖中,綠色部分表示encoder network,紫色部分表示decoder network。decoder network與language model是相似的,encoder network可以看成是language model的輸入,是模型的一個(gè)條件。也就是說(shuō),在輸入語(yǔ)句的條件下,生成正確的翻譯語(yǔ)句。因此,machine translation可以看成是有條件的語(yǔ)言模型(conditional language model)。這就是二者之間的區(qū)別與聯(lián)系。
所以,machine translation的目標(biāo)就是根據(jù)輸入語(yǔ)句,作為條件,找到最佳翻譯語(yǔ)句,使其概率最大:
例如,本節(jié)筆記開(kāi)始介紹的例子,列舉幾個(gè)模型可能得到的翻譯:
實(shí)現(xiàn)優(yōu)化目標(biāo)的方法之一是使用貪婪搜索(greedy search)。Greedy search根據(jù)條件,每次只尋找一個(gè)最佳單詞作為翻譯輸出,力求把每個(gè)單詞都翻譯準(zhǔn)確。例如,首先根據(jù)輸入語(yǔ)句,找到第一個(gè)翻譯的單詞“Jane”,然后再找第二個(gè)單詞“is”,再繼續(xù)找第三個(gè)單詞“visiting”,以此類(lèi)推。這也是其“貪婪”名稱(chēng)的由來(lái)。
Greedy search存在一些缺點(diǎn)。首先,因?yàn)間reedy search每次只搜索一個(gè)單詞,沒(méi)有考慮該單詞前后關(guān)系,概率選擇上有可能會(huì)出錯(cuò)。例如,上面翻譯語(yǔ)句中,第三個(gè)單詞“going”比“visiting”更常見(jiàn),模型很可能會(huì)錯(cuò)誤地選擇了“going”,而錯(cuò)失最佳翻譯語(yǔ)句。其次,greedy search大大增加了運(yùn)算成本,降低運(yùn)算速度。
因此,greedy search并不是最佳的方法。下一小節(jié),我們將介紹Beam Search,使用近似最優(yōu)的查找方式,最大化輸出概率,尋找最佳的翻譯語(yǔ)句。
3
Beam Search
Greedy search每次是找出預(yù)測(cè)概率最大的單詞,而beam search則是每次找出預(yù)測(cè)概率最大的B個(gè)單詞。其中,參數(shù)B表示取概率最大的單詞個(gè)數(shù),可調(diào)。本例中,令B=3。
按照beam search的搜索原理,首先,先從詞匯表中找出翻譯的第一個(gè)單詞概率最大的B個(gè)預(yù)測(cè)單詞。例如上面的例子中,預(yù)測(cè)得到的第一個(gè)單詞為:in,jane,september。
然后,再分別以in,jane,september為條件,計(jì)算每個(gè)詞匯表單詞作為預(yù)測(cè)第二個(gè)單詞的概率。從中選擇概率最大的3個(gè)作為第二個(gè)單詞的預(yù)測(cè)值,得到:in september,jane is,jane visits。
此時(shí),得到的前兩個(gè)單詞的3種情況的概率為:
接著,再預(yù)測(cè)第三個(gè)單詞。方法一樣,分別以in september,jane is,jane visits為條件,計(jì)算每個(gè)詞匯表單詞作為預(yù)測(cè)第三個(gè)單詞的概率。從中選擇概率最大的3個(gè)作為第三個(gè)單詞的預(yù)測(cè)值,得到:in september jane,jane is visiting,jane visits africa。
此時(shí),得到的前三個(gè)單詞的3種情況的概率為:
以此類(lèi)推,每次都取概率最大的三種預(yù)測(cè)。最后,選擇概率最大的那一組作為最終的翻譯語(yǔ)句。
Jane is visiting Africa in September.
值得注意的是,如果參數(shù)B=1,則就等同于greedy search。實(shí)際應(yīng)用中,可以根據(jù)不同的需要設(shè)置B為不同的值。一般B越大,機(jī)器翻譯越準(zhǔn)確,但同時(shí)也會(huì)增加計(jì)算復(fù)雜度。
4
Refinements to Beam Search
Beam search中,最終機(jī)器翻譯的概率是乘積的形式:
多個(gè)概率相乘可能會(huì)使乘積結(jié)果很小,遠(yuǎn)小于1,造成數(shù)值下溢。為了解決這個(gè)問(wèn)題,可以對(duì)上述乘積形式進(jìn)行取對(duì)數(shù)log運(yùn)算,即:
因?yàn)槿?duì)數(shù)運(yùn)算,將乘積轉(zhuǎn)化為求和形式,避免了數(shù)值下溢,使得數(shù)據(jù)更加穩(wěn)定有效。
這種概率表達(dá)式還存在一個(gè)問(wèn)題,就是機(jī)器翻譯的單詞越多,乘積形式或求和形式得到的概率就越小,這樣會(huì)造成模型傾向于選擇單詞數(shù)更少的翻譯語(yǔ)句,使機(jī)器翻譯受單詞數(shù)目的影響,這顯然是不太合適的。因此,一種改進(jìn)方式是進(jìn)行長(zhǎng)度歸一化,消除語(yǔ)句長(zhǎng)度影響。
實(shí)際應(yīng)用中,通常會(huì)引入歸一化因子α:
若α=1,則完全進(jìn)行長(zhǎng)度歸一化;若α=0,則不進(jìn)行長(zhǎng)度歸一化。一般令α=0.7,效果不錯(cuò)。
值得一提的是,與BFS (Breadth First Search) 、DFS (Depth First Search)算法不同,beam search運(yùn)算速度更快,但是并不保證一定能找到正確的翻譯語(yǔ)句。
5
Error Analysis in Beam Search
Beam search是一種近似搜索算法。實(shí)際應(yīng)用中,如果機(jī)器翻譯效果不好,需要通過(guò)錯(cuò)誤分析,判斷是RNN模型問(wèn)題還是beam search算法問(wèn)題。
一般來(lái)說(shuō),增加訓(xùn)練樣本、增大beam search參數(shù)B都能提高準(zhǔn)確率。但是,這種做法并不能得到我們期待的性能,且并不實(shí)際。
首先,為待翻譯語(yǔ)句建立人工翻譯,記為y?。在RNN模型上使用beam search算法,得到機(jī)器翻譯,記為y^。顯然,人工翻譯y?最為準(zhǔn)確。
Jane visite l’Afrique en septembre.
Human: Jane visits Africa in September.? ?y???
Algorithm: Jane visited Africa last September.? ?y^
這樣,整個(gè)模型包含兩部分:RNN和beam search算法。
如果beam search算法表現(xiàn)不佳,可以調(diào)試參數(shù)B;若RNN模型不好,則可以增加網(wǎng)絡(luò)層數(shù),使用正則化,增加訓(xùn)練樣本數(shù)目等方法來(lái)優(yōu)化。更多錯(cuò)誤分析方法,可以參照之前的筆記:吳恩達(dá)《構(gòu)建機(jī)器學(xué)習(xí)項(xiàng)目》精煉筆記(2)– 機(jī)器學(xué)習(xí)策略(下)
6
Bleu Score(optional)
使用bleu score,對(duì)機(jī)器翻譯進(jìn)行打分。
首先,對(duì)原語(yǔ)句建立人工翻譯參考,一般有多個(gè)人工翻譯(利用驗(yàn)證集火測(cè)試集)。例如下面這個(gè)例子:
French: Le chat est sur le tapis.
Reference 1: The cat is on the mat.
Reference 2: There is a cat on the mat.
上述兩個(gè)人工翻譯都是正確的,作為參考。相應(yīng)的機(jī)器翻譯如下所示:
French: Le chat est sur le tapis.
Reference 1: The cat is on the mat.
Reference 2: There is a cat on the mat.
MT output: the the the the the the the.
如上所示,機(jī)器翻譯為“the the the the the the the.”,效果很差。Bleu Score的宗旨是機(jī)器翻譯越接近參考的人工翻譯,其得分越高,方法原理就是看機(jī)器翻譯的各個(gè)單詞是否出現(xiàn)在參考翻譯中。
最簡(jiǎn)單的準(zhǔn)確度評(píng)價(jià)方法是看機(jī)器翻譯的每個(gè)單詞是否出現(xiàn)在參考翻譯中。顯然,上述機(jī)器翻譯的每個(gè)單詞都出現(xiàn)在參考翻譯里,準(zhǔn)確率為7/7=1,其中,分母為機(jī)器翻譯單詞數(shù)目,分子為相應(yīng)單詞是否出現(xiàn)在參考翻譯中。但是,這種方法很不科學(xué),并不可取。
另外一種評(píng)價(jià)方法是看機(jī)器翻譯單詞出現(xiàn)在參考翻譯單個(gè)語(yǔ)句中的次數(shù),取最大次數(shù)。上述例子對(duì)應(yīng)的準(zhǔn)確率為2/7,其中,分母為機(jī)器翻譯單詞數(shù)目,分子為相應(yīng)單詞出現(xiàn)在參考翻譯中的次數(shù)(分子為2是因?yàn)椤皌he”在參考1中出現(xiàn)了兩次)。這種評(píng)價(jià)方法較為準(zhǔn)確。
上述兩種方法都是對(duì)單個(gè)單詞進(jìn)行評(píng)價(jià)。按照beam search的思想,另外一種更科學(xué)的打分方法是bleu score on bigrams,即同時(shí)對(duì)兩個(gè)連續(xù)單詞進(jìn)行打分。仍然是上面那個(gè)翻譯例子:
French: Le chat est sur le tapis.
Reference 1: The cat is on the mat.
Reference 2: There is a cat on the mat.
MT output: The cat the cat on the mat.
對(duì)MIT output進(jìn)行分解,得到的bigrams及其出現(xiàn)在MIT output中的次數(shù)count為:
the cat: 2
cat the: 1
cat on: 1
on the: 1
the mat: 1
然后,統(tǒng)計(jì)上述bigrams出現(xiàn)在參考翻譯單個(gè)語(yǔ)句中的次數(shù)(取最大次數(shù))countclipcountclip為:
the cat: 1
cat the: 0
cat on: 1
on the: 1
the mat: 1
相應(yīng)的bigrams precision為:
如果只看單個(gè)單詞,相應(yīng)的unigrams precision為:
如果是n個(gè)連續(xù)單詞,相應(yīng)的n-grams precision為:
總結(jié)一下,可以同時(shí)計(jì)算p1,?,pnp1,?,pn,再對(duì)其求平均:
通常,對(duì)上式進(jìn)行指數(shù)處理,并引入?yún)?shù)因子brevity penalty,記為BP。顧名思義,BP是為了“懲罰”機(jī)器翻譯語(yǔ)句過(guò)短而造成的得分“虛高”的情況。
其中,BP值由機(jī)器翻譯長(zhǎng)度和參考翻譯長(zhǎng)度共同決定。
7
Attention Model Intuition
如果原語(yǔ)句很長(zhǎng),要對(duì)整個(gè)語(yǔ)句輸入RNN的編碼網(wǎng)絡(luò)和解碼網(wǎng)絡(luò)進(jìn)行翻譯,則效果不佳。相應(yīng)的bleu score會(huì)隨著單詞數(shù)目增加而逐漸降低。
對(duì)待長(zhǎng)語(yǔ)句,正確的翻譯方法是將長(zhǎng)語(yǔ)句分段,每次只對(duì)長(zhǎng)語(yǔ)句的一部分進(jìn)行翻譯。人工翻譯也是采用這樣的方法,高效準(zhǔn)確。也就是說(shuō),每次翻譯只注重一部分區(qū)域,這種方法使得bleu score不太受語(yǔ)句長(zhǎng)度的影響。
根據(jù)這種“局部聚焦”的思想,建立相應(yīng)的注意力模型(attention model)。
8
Attention Models
Attention model的一個(gè)缺點(diǎn)是其計(jì)算量較大,若輸入句子長(zhǎng)度為T(mén)x,輸出句子長(zhǎng)度為T(mén)y,則計(jì)算時(shí)間約為T(mén)x?Ty。但是,其性能提升很多,計(jì)算量大一些也是可以接受的。
有趣的是,Attention model在圖像捕捉方面也有應(yīng)用。
Attention model能有效處理很多機(jī)器翻譯問(wèn)題,例如下面的時(shí)間格式歸一化:
下圖將注意力權(quán)重可視化:
上圖中,顏色越白表示注意力權(quán)重越大,顏色越深表示權(quán)重越小。可見(jiàn),輸出語(yǔ)句單詞與其輸入語(yǔ)句單詞對(duì)應(yīng)位置的注意力權(quán)重較大,即對(duì)角線附近。
9
Speech Recognition
深度學(xué)習(xí)中,語(yǔ)音識(shí)別的輸入是聲音,量化成時(shí)間序列。更一般地,可以把信號(hào)轉(zhuǎn)化為頻域信號(hào),即聲譜圖(spectrogram),再進(jìn)入RNN模型進(jìn)行語(yǔ)音識(shí)別。
之前,語(yǔ)言學(xué)家們會(huì)將語(yǔ)音中每個(gè)單詞分解成多個(gè)音素(phoneme),構(gòu)建更精準(zhǔn)的傳統(tǒng)識(shí)別算法。但在end-to-end深度神經(jīng)網(wǎng)絡(luò)模型中,一般不需要這么做也能得到很好的識(shí)別效果。通常訓(xùn)練樣本很大,需要上千上萬(wàn)個(gè)小時(shí)的語(yǔ)音素材。
語(yǔ)音識(shí)別的注意力模型(attention model)如下圖所示:
一般來(lái)說(shuō),語(yǔ)音識(shí)別的輸入時(shí)間序列都比較長(zhǎng),例如是10s語(yǔ)音信號(hào),采樣率為100Hz,則語(yǔ)音長(zhǎng)度為1000。而翻譯的語(yǔ)句通常很短,例如“the quick brown fox”,包含19個(gè)字符。這時(shí)候,Tx與Ty差別很大。為了讓Tx=Ty,可以把輸出相應(yīng)字符重復(fù)并加入空白(blank),形如:
其中,下劃線”_“表示空白,”?“表示兩個(gè)單詞之間的空字符。這種寫(xiě)法的一個(gè)基本準(zhǔn)則是沒(méi)有被空白符”_“分割的重復(fù)字符將被折疊到一起,即表示一個(gè)字符。
這樣,加入了重復(fù)字符和空白符、空字符,可以讓輸出長(zhǎng)度也達(dá)到1000,即Tx=Ty。這種模型被稱(chēng)為CTC(Connectionist temporal classification)。
10
Trigger Word Detection
觸發(fā)字檢測(cè)(Trigger Word Detection)在很多產(chǎn)品中都有應(yīng)用,操作方法就是說(shuō)出觸發(fā)字通過(guò)語(yǔ)音來(lái)啟動(dòng)相應(yīng)的設(shè)備。例如Amazon Echo的觸發(fā)字是”Alexa“,百度DuerOS的觸發(fā)字是”小度你好“,Apple Siri的觸發(fā)字是”Hey Siri“,Google Home的觸發(fā)字是”O(jiān)kay Google“。
觸發(fā)字檢測(cè)系統(tǒng)可以使用RNN模型來(lái)建立。如下圖所示,輸入語(yǔ)音中包含一些觸發(fā)字,其余都是非觸發(fā)字。RNN檢測(cè)到觸發(fā)字后輸出1,非觸發(fā)字輸出0。這樣訓(xùn)練的RNN模型就能實(shí)現(xiàn)觸發(fā)字檢測(cè)。
但是這種模型有一個(gè)缺點(diǎn),就是通常訓(xùn)練樣本語(yǔ)音中的觸發(fā)字較非觸發(fā)字?jǐn)?shù)目少得多,即正負(fù)樣本分布不均。一種解決辦法是在出現(xiàn)一個(gè)觸發(fā)字時(shí),將其附近的RNN都輸出1。這樣就簡(jiǎn)單粗暴地增加了正樣本。
薦號(hào)
公眾號(hào)「癡海」
目前 AI 是一個(gè)風(fēng)口,只要把握風(fēng)口,豬也能飛起來(lái)。如今時(shí)代編程風(fēng)口「Python」,值得每個(gè)人關(guān)注。
癡海,一個(gè)專(zhuān)注于 Python 編程,每天定時(shí)推送各種 Python 干貨文章,但這不僅僅是一個(gè)技術(shù)公眾號(hào),每周還會(huì)分享職場(chǎng)、人生、認(rèn)知原創(chuàng)文章,想要「提高認(rèn)知和編程」的強(qiáng)烈推薦關(guān)注。
往期回顧
【1】吳恩達(dá)《序列模型》精煉筆記(1)-- 循環(huán)神經(jīng)網(wǎng)絡(luò)(RNN)
【2】吳恩達(dá)《序列模型》精煉筆記(2)-- NLP和Word Embeddings
【3】重磅 |“吳恩達(dá)deeplearningai”官方微信公眾號(hào)已經(jīng)上線!
【4】重磅 | 吳恩達(dá)新書(shū)《Machine Learning Yearning》最新版分享
【5】力薦 | 臺(tái)大林軒田《機(jī)器學(xué)習(xí)基石》資源匯總
【6】機(jī)器學(xué)習(xí)中的維度災(zāi)難
長(zhǎng)按二維碼掃描關(guān)注
AI有道
ID:redstonewill
紅色石頭
個(gè)人微信 : WillowRedstone
新浪微博:@RedstoneWill
喜歡就點(diǎn)個(gè)贊吧
總結(jié)
以上是生活随笔為你收集整理的完结篇 | 吴恩达《序列模型》精炼笔记(3)-- 序列模型和注意力机制的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 刚找到,还没整理
- 下一篇: 学习Enroll例程