做者|Renu Khandelwal
編譯|VK
來源|Towards Data Science算法
什麼是神經機器翻譯?網絡
神經機器翻譯是一種將一種語言翻譯成另外一種語言的技術。一個例子是把英語轉換成印地語。讓咱們想一想,若是你在一個印度村莊,那裏的大多數人都不懂英語。你打算絕不費力地與村民溝通。在這種狀況下,你可使用神經機器翻譯。框架
神經機器翻譯的任務是使用深層神經網絡從一個源語言(如英語)的一系列單詞轉換成一個序列的目標語言(如西班牙語)。機器學習
神經機器翻譯的特色是什麼?函數
NMT使用連續的數據,這些數據須要在幾個時間步中進行持久保存。人工神經網絡(ANN)不會將數據保存在幾個時間步長上。循環神經網絡(RNN),如LSTM(長短時記憶)或GRU(門控遞歸單元),可以在多個時間步長中持久保存數據性能
ANN和CNN須要一個固定的輸入向量,在這個向量上應用一個函數來產生一個固定大小的輸出。NMT將一種語言翻譯成另外一種語言,源語言和目標語言的單詞序列的長度是可變的。學習
RNN與LSTM或GRU同樣如何幫助進行順序數據處理?ui
RNN是一種神經網絡,結構中具備循環來保存信息。它們對序列中的每一個元素執行相同的任務,而且輸出元素依賴於之前的元素或狀態。這正是咱們處理順序數據所須要的。編碼
RNN能夠有一個或多個輸入以及一個或多個輸出。這是處理順序數據(即變量輸入和變量輸出)的另外一個要求.net
爲何咱們不能用RNN進行神經機器翻譯?
在人工神經網絡中,咱們不須要在網絡的不一樣層之間共享權重,所以,咱們不須要對梯度求和。RNN的共享權重,咱們須要在每一個時間步中得出W的梯度,以下所示。
在時間步t=0計算h的梯度涉及W的許多因素,由於咱們須要經過每一個RNN單元反向傳播。即便咱們不要權重矩陣,而且一次又一次地乘以相同的標量值,可是時間步若是特別大,好比說100個時間步,這將是一個挑戰。
若是最大奇異值大於1,則梯度將爆炸,稱爲爆炸梯度。
若是最大奇異值小於1,則梯度將消失,稱爲消失梯度。
權重在全部層中共享,致使梯度爆炸或消失
對於梯度爆炸問題,咱們可使用梯度剪裁,其中咱們能夠預先設置一個閾值,若是梯度值大於閾值,咱們能夠剪裁它。
爲了解決消失梯度問題,經常使用的方法是使用長短時間記憶(LSTM)或門控循環單元(GRU)。
什麼是LSTM和GRU?
LSTM是長短時記憶網絡(Long Short Term Memory),GRU是門控循環單元(Gated Recurrent Unit)。他們可以快速學習長期依賴性。LSTM能夠學習跨越1000步的時間間隔。這是經過一種高效的基於梯度的算法實現的。
LSTM和GRU在很長一段時間內記住信息。他們經過決定要記住什麼和忘記什麼來作到這一點。
LSTM使用4個門,你能夠將它們認爲是否須要記住之前的狀態。單元狀態在LSTMs中起着關鍵做用。LSTM可使用4個調節門來決定是否要從單元狀態添加或刪除信息。這些門的做用就像水龍頭,決定了應該經過多少信息。
GRU是求解消失梯度問題的LSTM的一個簡單變種
它使用兩個門:重置門和更新門,這與LSTM中的三個步驟不一樣。GRU沒有內部記憶
重置門決定如何將新輸入與前一個時間步的記憶相結合。更新門決定了應該保留多少之前的記憶。
GRU的參數更少,所以它們的計算效率更高,而且比LSTM須要的數據更少
如何使用LSTM或GRU進行神經機器翻譯?
咱們使用以LSTM或GRU爲基本塊的編解碼器框架建立Seq2Seq模型
序列到序列(seq2seq)模型將源序列映射到目標序列。源序列是機器翻譯系統的輸入語言,目標序列是輸出語言。
Encoder(編碼器):從源語言中讀取單詞的輸入序列,並將該信息編碼爲實值向量,也稱爲隱狀態向量或上下文向量。該向量將輸入序列的「意義」編碼爲單個向量。編碼器輸出被丟棄,只有隱狀態或內部狀態做爲初始輸入傳遞給解碼器
Decoder(解碼器):未來自編碼器的上下文向量做爲輸入,並將字符串標記的開始<start>
做爲初始輸入,以生成輸出序列。
編碼器逐字讀取輸入序列,相似地解碼器逐字生成輸出序列。
在訓練和推理階段,解碼器的工做方式不一樣,而在訓練和推理階段,編碼器的工做方式相同
解碼器的訓練階段
咱們使用Teacher forcing(強制教學)來快速有效地訓練解碼器。
Teacher forcing就像教師在學生接受新概念的訓練時糾正學生同樣。因爲教師在訓練過程當中給予學生正確的輸入,學生將更快、更有效地學習新概念。
Teacher forcing算法經過在訓練過程當中提供前一時間戳的實際輸出而不是前一時間的預測輸出做爲輸入來訓練解碼器。
咱們添加一個標記<START>
來表示目標序列的開始,並添加一個標記<END>
做爲目標序列的最後一個單詞。<END>
標記稍後在推斷階段用做中止條件,以表示輸出序列的結束。
解碼器的推理階段
在推斷或預測階段,咱們沒有實際的輸出序列或單詞。在推理階段,咱們將上一個時間步的預測輸出做爲輸入和隱藏狀態一塊兒傳遞給解碼器。
解碼器預測階段的第一時間步將具備來自編碼器和<START>
標記的最終狀態做爲輸入。
對於隨後的時間步驟,解碼器的輸入將是前一解碼器的隱藏狀態以及前一解碼器的輸出。
當達到最大目標序列長度或<END>
標記時,預測階段中止。
注:這只是Seq2Seq的直觀解釋。咱們爲輸入語言單詞和目標語言單詞建立單詞嵌入。嵌入提供了單詞及其相關含義的向量表示。
如何提升seq2seq模型的性能?
什麼是注意力機制?
編碼器將上下文向量傳遞給解碼器。上下文向量是總結整個輸入序列的單個向量。
注意力機制的基本思想是避免試圖爲每一個句子學習單一的向量表示。注意力機制根據注意權值來關注輸入序列的某些輸入向量。這容許解碼器網絡「聚焦」於編碼器輸出的不一樣部分。它使用一組注意權重對解碼器自身輸出的每一個時間步執行此操做。
原文連接:https://towardsdatascience.com/intuitive-explanation-of-neural-machine-translation-129789e3c59f
歡迎關注磐創AI博客站:
http://panchuang.net/
sklearn機器學習中文官方文檔:
http://sklearn123.com/
歡迎關注磐創博客資源彙總站:
http://docs.panchuang.net/