一. 基礎模型
- 編碼-解碼 如圖中所示,輸入一個法語句子,然後将其轉換為英語句子。我們設定一個RNN結構的編碼器和解碼器,先将輸入的法語句子編碼為一個向量,再通過解碼器将其轉換為英語句子。
Andrew Ng's deeplearning Course5Week3 Sequence models & Attention mechanism一. 基礎模型二. 選擇最可能的句子三. 定向搜尋四. Bleu得分五. 注意力模型六. 語音識别 - 圖像描述 圖像描述,顧名思義就是給出一幅圖檔,然後根據圖檔給出相應的描述。我們将之前RNN中學到的AlexNet結構最後的softmax層去掉,前面的就是類似于一個編碼網絡,可以将圖檔編碼成一個向量;然後我們再添加一個RNN結構,類似于解碼網絡,這個RNN結構生成的就是圖像的描述。
Andrew Ng's deeplearning Course5Week3 Sequence models & Attention mechanism一. 基礎模型二. 選擇最可能的句子三. 定向搜尋四. Bleu得分五. 注意力模型六. 語音識别
二. 選擇最可能的句子
機器翻譯模型其實和語言模型非常相似,不同在于,語言模型總是以0向量開始,而機器翻譯模型是以編碼網絡後的向量開始。
而機器模型就是一種有條件的語言模型,就類似于在輸入的法語條件下,取得一個機率最高的,最有可能的英語句子。
- 貪心搜尋 按照上面的描述,我們很自然的會想到貪心算法,但是我們為什麼不使用貪心算法呢?如上圖所示:
Andrew Ng's deeplearning Course5Week3 Sequence models & Attention mechanism一. 基礎模型二. 選擇最可能的句子三. 定向搜尋四. Bleu得分五. 注意力模型六. 語音識别 - Jane is visiting Africa in September.
-
Jane is going to be visiting Africa in September.
第一句翻譯的要比第二句話好,但是按照貪心算法的原理,我們在前2個單詞Jane is的情況下,第三個單詞選擇going的可能性要比visiting的可能性要大,但是整體來看的話,第一句話翻譯的要比第二句話好。是以我們不使用貪心算法。
三. 定向搜尋
- 定向搜尋算法
Andrew Ng's deeplearning Course5Week3 Sequence models & Attention mechanism一. 基礎模型二. 選擇最可能的句子三. 定向搜尋四. Bleu得分五. 注意力模型六. 語音識别 定向搜尋算法和貪心算法很像,不同之處在于,貪心算法選擇可能性最大的那一個,而定向搜尋算法是選擇可能性最大的前B(beam width波束寬度)個。
以B為3舉例,假設有10000個單詞,經過解碼網絡的第一層後,我們可以得到10000個單詞的可能性機率,我們選擇最優的前3個(假設是in,jane,September)。我們繼續到解碼網絡的第二層,這時已經有2個分支了,也就是總共3個網絡,如上圖中黃色所示,在第一個單詞為in的前提下,第二個單詞有1W種可能(第一個網絡);第一個單詞為jane的前提下,第二個單詞也有1W種可能(第二個網絡);第一個單詞為september的前提下,第二個單詞也有1W種可能(第三個網絡);總共加起來就有3W種可能。計算機率的公式為:
P(y<1>,y<2>|x)=P(y<1>|x)P(y<2>|x,y<1>) P ( y < 1 > , y < 2 > | x ) = P ( y < 1 > | x ) P ( y < 2 > | x , y < 1 > )
我們選擇前3種可能性最大的,假設是in september,jane is,jane visiting的話,那我們就相當于排除了第一個單詞為September的可能;以此類推,接下來的每一層都有3*10000=30000種可能,我們選擇其中前三,直到最後一層。
- 定向搜尋算法的優化措施
Andrew Ng's deeplearning Course5Week3 Sequence models & Attention mechanism一. 基礎模型二. 選擇最可能的句子三. 定向搜尋四. Bleu得分五. 注意力模型六. 語音識别 在前面,我們通過使得如下公式最大化來選擇可能的翻譯。
∏t=1TyP(y<t>|x,y<1>,…,y<t−1>) ∏ t = 1 T y P ( y < t > | x , y < 1 > , … , y < t − 1 > )
但是,這樣會有一些缺點:
1.每一次選擇單詞時的機率值是小于1的,相乘後就會越來越小,導緻數值下溢,導緻電腦的浮點不能精确的存儲。我們通過在上式加一個log來解決這個問題,并不改變原先的單調性,這樣可以将上式轉換成如下的機率相加
∑t=1TyP(y<t>|x,y<1>,…,y<t−1>) ∑ t = 1 T y P ( y < t > | x , y < 1 > , … , y < t − 1 > )
2.因為乘了很多項小于1的數字來估計句子的機率,是以就會得到很小的數字,是以目标函數更傾向于選擇短的句子。
1Tαy∑t=1TyP(y<t>|x,y<1>,…,y<t−1>) 1 T y α ∑ t = 1 T y P ( y < t > | x , y < 1 > , … , y < t − 1 > )
我們通過歸一化來解決,即通過除以翻譯結果的單詞數量,減少了對輸出結果長的懲罰。我們可以通過調控α來控制歸一化的程度。
- 誤差分析
Andrew Ng's deeplearning Course5Week3 Sequence models & Attention mechanism一. 基礎模型二. 選擇最可能的句子三. 定向搜尋四. Bleu得分五. 注意力模型六. 語音識别 有的時候,定向搜尋算法并沒有得到讓你滿意的一個翻譯,這個時候就可以通過誤差分析來判斷到底是定向搜尋算法的鍋還是RNN模型的鍋。
如上圖所示,假設人類翻譯的比較好的是 y∗ y ∗ ,機器翻譯的是 y^ y ^ 。
1. P(y∗|x)>P(y^|x) P ( y ∗ | x ) > P ( y ^ | x )
說明是beam search的鍋,因為beam search 選擇了 y^ y ^ ,但是實際上 y∗ y ∗ 的機率要比 y^ y ^ 高。
2. P(y∗|x)⩽P(y^|x) P ( y ∗ | x ) ⩽ P ( y ^ | x )
說明是RNN模型的鍋,因為 y^ y ^ 的機率的确比 y∗ y ∗ 高,說明beam search沒選擇錯,而實際上 y^ y ^ 的機率是要比 y∗ y ∗ 低的,是以是RNN模型給出了一個錯誤的預測。
Andrew Ng's deeplearning Course5Week3 Sequence models & Attention mechanism一. 基礎模型二. 選擇最可能的句子三. 定向搜尋四. Bleu得分五. 注意力模型六. 語音識别
我們可以繪制如上的一個表格,周遊訓練集,将所有的錯誤情況進行分析,看看Beam Search和RNN model的錯誤所占比例,由此來幫助我們判斷并修改。
對于波束寬度B,我們有以下的一些的常識:
- larger B :更好的結果,計算慢,占用記憶體很大
- smaller B:更壞的結果,計算快,占用記憶體很小
- 10~100 企業更多選擇這個範圍内的B
- 1000~3000 科研人員更多選擇這個範圍内的B以獲得更好的結果
四. Bleu得分
Blue得分: bilingual evaluation understudy 雙語評估替補,是一個單一實數評估名額,用來在有同樣多優秀的翻譯的情況時,衡量評估機器翻譯系統。
- 一進制詞組 假設我們有2個翻譯的比較好的句子作為參考,還有一個是機器翻譯的句子。以上圖舉例,機器的翻譯輸出為the the the the the the the。那麼the在這個句子中出現了7次,the在參考1裡出現了2次,參考2裡出現了1次,我們取次數最大的那次,是以最後的Bleu得分為 27 2 7 ,即 P1=27 P 1 = 2 7 ,我們用 P1 P 1 表示1元詞組的精确度,類似, P2 P 2 表示2元詞組的精确度, Pn P n 表示n元詞組的精确度。
Andrew Ng's deeplearning Course5Week3 Sequence models & Attention mechanism一. 基礎模型二. 選擇最可能的句子三. 定向搜尋四. Bleu得分五. 注意力模型六. 語音識别 - 二進制詞組 如上圖所示,機翻中有二進制詞組{the cat, cat the, cat on, on the, the mat},在機翻中分别出現{2,1,1,1,1}次,在參考1或參考2中出現的最大次數為{1,0,1,1,1},是以Bleu得分 P2=46=23 P 2 = 4 6 = 2 3
Andrew Ng's deeplearning Course5Week3 Sequence models & Attention mechanism一. 基礎模型二. 選擇最可能的句子三. 定向搜尋四. Bleu得分五. 注意力模型六. 語音識别 - n元詞組
Andrew Ng's deeplearning Course5Week3 Sequence models & Attention mechanism一. 基礎模型二. 選擇最可能的句子三. 定向搜尋四. Bleu得分五. 注意力模型六. 語音識别 計算公式如上圖所示。
最終,我們合并所有的Bleu得分求平均:
BP∗exp(1k∑kn=1Pk) B P ∗ e x p ( 1 k ∑ k n = 1 P k )
其中,BP(brevity penalty)為調整因子,能夠懲罰太短翻譯結果的翻譯系統,因為一旦最後的翻譯結果很短,很有可能得分就會很高。BP的值通過下述公式計算:
Andrew Ng's deeplearning Course5Week3 Sequence models & Attention mechanism一. 基礎模型二. 選擇最可能的句子三. 定向搜尋四. Bleu得分五. 注意力模型六. 語音識别
五. 注意力模型
當機器翻譯一個很長很長的句子時,往往Bleu得分不會太好,是以我們讓他學習人類翻譯時的習慣,将一個長難句拆分成很多段去翻譯。注意力模型就是一種如何讓一個神經網絡隻注意到一部分輸入句子的方法。
如上圖所示的雙向RNN模型,我們将 a⃗ <t>,a←<t> a → < t > , a ← < t > 合并為 a<t′> a < t ′ > ,代表時間步t上的特征向量; α<t,t′> α < t , t ′ > 是注意力參數,表示 y<t> y < t > 應該花多少注意力在t’個單詞上,其中:
∑t′α<1,t′>=1 ∑ t ′ α < 1 , t ′ > = 1
。
通過如下公式我們可以計算得到 c<k> c < k > :
c<k>=∑t′α<k,t′>a<t′> c < k > = ∑ t ′ α < k , t ′ > a < t ′ >
其中的 α<t,t′> α < t , t ′ > 是通過如上圖所示的公式計算得到的。
六. 語音識别
簡單的介紹了下語音識别中的CTC損失函數和觸發字檢測,稍微講解了下,感興趣的話可以去找相關的paper閱讀。