Pre-Neural Machine Translation
機器翻譯(MT)是将⼀個句⼦ x 從⼀種語⾔( 源語⾔ )轉換為另⼀種語⾔( ⽬智語⾔ )的句⼦ y 的任務。
- 核⼼想法:從資料中學習機率模型。
- 我們想要找到最好的英語句⼦ y ,給定法語句⼦ x
- 使⽤Bayes規則将其分解為兩個元件從⽽分别學習
P(x|y)
- 翻譯模型
- 分析單詞和短語應該如何翻譯(逼真)
- 從并⾏資料中學習
P(y)
- 語⾔模型
- 模型如何寫出好英語(流利)
- 從單語資料中學習
對⻬是翻譯句⼦中特定詞語之間的對應關系。
注意:有些詞沒有對應詞
對⻬可以是多對⼀的
對齊可以是一對多的
對齊可以是多對多(短語級)
Decoding for SMT
如何計算argmax
- 我們可以列舉所有可能的 y 并計算機率? 太貴了
- 使⽤啟發式搜尋算法搜尋最佳翻譯,丢棄機率過低的假設
- 這個過程稱為解碼
- SMT是⼀個巨⼤的研究領域
- 最好的系統⾮常複雜
- 數以百計的重要細節我們還沒有提到
- 系統有許多分别設計⼦元件⼯程
- 需要編譯和維護額外的資源
- 需要⼤量的⼈⼒來維護
Neural Machine Translation
- 神經機器翻譯是利⽤單個神經⽹絡進⾏機器翻譯的⼀種⽅法
- 神經⽹絡架構稱為sequence-to-sequence (⼜名seq2seq),它包含兩個RNNs
Neural Machine Translation (NMT)
編碼器RNN⽣成源語句的編碼;源語句的編碼為解碼器RNN提供初始隐藏狀态;解碼器RNN是⼀種以編碼為條件⽣成⽬标句的語⾔模型.
Sequence-to-sequence is versatile!
- sequence-to-sequence 模型是 Conditional Language Model 條件語⾔模型的⼀個例⼦
- 語⾔模型,
- 因為解碼器正在預測⽬标句的下⼀個單詞 y
- 有條件的,因為它的預測也取決于源句 x
- NMT直接計算 P(y|x)
- 上式中最後⼀項為,給定到⽬前為⽌的⽬标詞和源句 x ,下⼀個⽬标詞的機率
seq2seq被優化為⼀個單⼀的系統。反向傳播運⾏在“端到端”中
Greedy decoding
我們了解了如何⽣成(或“解碼”)⽬标句,通過對解碼器的每個步驟使⽤ argmax
上圖是貪婪解碼(每⼀步都取最可能的單詞).貪婪解碼的問題:沒有辦法撤銷決定。
Exhaustive search decoding
- 理想情況下,我們想要找到⼀個(⻓度為 T )的翻譯 y 使其最⼤化:
Beam search decoding
- 核⼼思想 :在解碼器的每⼀步,跟蹤 k 個最可能的部分翻譯(我們稱之為 hypotheses 假設 )。
- k是Beam的⼤⼩(實際中⼤約是5到10): 1.分數都是負數,分數越⾼越好。 2.我們尋找得分較⾼的假設,跟蹤每⼀步的 top k 個部分翻譯。波束搜尋不⼀定能找到最優解,但⽐窮舉搜尋效率⾼得多。
Beam search decoding: example
計算下一個詞的機率分布
取前k個單詞并計算分數
對于每⼀次的 k 個假設,找出最前⾯的 k 個單詞并計算分數
在k^2 的假設中,保留 k 個最⾼的分值,如 t = 2 時,保留分數最⾼的 pie 和 with
在k^2 的假設中,保留 k 個最⾼的分值,如 t = 2 時,保留分數最⾼的 a 和 one
這裡pie 是得分最高的超參數
回溯以獲得完整的假設
Beam search decoding: stopping criterion
- 在貪⼼解碼中,我們通常解碼到模型産⽣⼀個 令牌
- 在 Beam Search 解碼中,不同的假設可能在不同的時間步⻓上産⽣ 令牌
- 當⼀個假設⽣成了 令牌,該假設完成
- 把它放在⼀邊,通過 Beam Search 繼續探索其他假設
- 通常我們繼續進⾏ Beam Search ,直到:
- 我們到達時間步⻓ T (其中 T 是預定義截⽌點)
- 我們⾄少有 n 個已完成的假設(其中 n 是預定義截⽌點)
Beam search decoding: finishing up
- We have our list of completed hypotheses.
- How to select top one with highest score?
SMT vs NMT
Advantages of NMT
與SMT相⽐,NMT有很多優點:1.更好的性能2.更流利3. 更好地使⽤上下⽂4.更好地使⽤短語相似性5.單個神經⽹絡端到端優化6.沒有⼦元件需要單獨優化7.對所有語⾔對使⽤相同的⽅法
Disadvantages of NMT?
1.SMT相⽐NMT的可解釋性較差2.難以調試3.NMT很難控制4.安全問題
Attention
Sequence-to-sequence: the bottleneck problem
源語句的編碼需要捕獲關于源語句的所有資訊.資訊瓶頸!
Attention作用:
- 注意⼒為瓶頸問題提供了⼀個解決⽅案
- 核⼼理念 :在解碼器的每⼀步,使⽤ 與編碼器的直接連接配接 來專注于源序列的特定部分
- ⾸先我們将通過圖表展示(沒有⽅程),然後我們将⽤⽅程展示
Attention: in equations
Attention is great
- 注意⼒顯著提⾼了NMT性能
- 注意⼒解決瓶頸問題
- 注意⼒幫助消失梯度問題
- 注意⼒提供了⼀些可解釋性
- 通過檢查注意⼒的分布,我們可以看到解碼器在關注什麼
- 我們可以免費得到(軟)對⻬
- ⽹絡隻是⾃主學習了對⻬
Attention is a general Deep Learning technique
- 注意⼒是改進機器翻譯的序列到序列模型的⼀個很好的⽅法。可以在許多體系結構(不僅僅是seq2seq)和許多任務(不僅僅是MT)中使⽤注意⼒。
- 注意⼒的更⼀般定義
- 給定⼀組向量 值 和⼀個向量 查詢 ,注意⼒是⼀種根據查詢,計算值的權重和的技術
- 我們有時說 query attends to the values
- 例如,在seq2seq + attention模型中,每個解碼器的隐藏狀态(查詢)關注所有編碼器的隐藏狀态(值)
- 直覺
- 權重和是值中包含的資訊的選擇性彙總,查詢在其中确定要關注哪些值
- 注意是⼀種擷取任意⼀組表示(值)的固定⼤⼩表示的⽅法,依賴于其他⼀些表示(查詢)。
There are several attention variants
采取softmax來獲得注意⼒分布。使⽤注意⼒分布對值進⾏權重求和:從⽽得到注意輸出 (有時稱為上下⽂向量)。
參考:
- 斯坦福CS224N深度學習⾃然語⾔處理2019冬學習筆記⽬錄 (課件核⼼内容的提煉,并包含作者的⻅解 與建議)
- 斯坦福⼤學 CS224n⾃然語⾔處理與深度學習筆記彙總 {>>這是針對note部分的翻譯<<}