每日最新頭條.有趣資訊

五張動圖,看清神經機器翻譯裡的Attention!

新智元報導

來源:towardsdatascience

編輯:大明

【新智元導讀】近年來,神經機器翻譯的突飛猛進讓越來越多的人類翻譯感到壓力山大,瑟瑟發抖,那麽如此強大的機器翻譯架構內部的運行機制究竟是怎樣的?本文用一系列動圖帶你看個明白。

過去幾十年來,統計機器翻譯一直是佔據主導地位的機器翻譯模型[9],直到神經機器翻譯(NMT)誕生。神經機器翻譯(NMT)是近幾年來新興的機器翻譯模式,該模式試圖構建和訓練能夠讀取輸入文本,並輸出翻譯結果的單個大型神經網絡。

NMT的最初來自Kalchbrenner和Blunsom(2013)等人的提議。今天更為人所知的框架是從Sutskever等人提出的seq2seq框架。本文就將重點介紹seq2seq框架以及如何構建基於seq2seq框架的注意力機制。

總體來說,注意力層的部署可以分為4步(其實是5步)

第0步:準備隱藏狀態。

首先準備第一個解碼器隱藏狀態(紅色)和所有可用的編碼器隱藏狀態(綠色)。在我們的例子中有4個編碼器隱藏狀態和當前解碼器隱藏狀態。

步驟1:獲取每個編碼器隱藏狀態的分數

通過評分函數(也稱為比對評分函數或比對模型)獲得評分(標量)。在該示例中,得分函數是解碼器和編碼器隱藏狀態之間的點積。

步驟2:通過softmax圖層運行所有分數。

我們將得分放到softmax函數層,使softmax處理後的得分(標量)之和為1。這些得分代表注意力的分布。

步驟3:將每個編碼器隱藏狀態乘以其softmax得分。

通過將每個編碼器隱藏狀態與其對應的softmax得分(標量)相乘,獲得對齊向量或注釋向量。這就是對齊的機制。

步驟4:總結對齊向量。

對齊向量的總結可以生成上下文向量。上下文向量反映的是前一步的對齊向量的聚合資訊。

步驟5:將上下文向量送到解碼器。

具體傳送方式取決於翻譯系統的架構設計。我們將在下文示例中看到不同的架構如何利用解碼器的上下文向量。

下面來看看幾種seq2seq模型的運行機制,為便於理解,我們採用比較直觀的描述(對於每種模型,均以德-英翻譯為例)。

seq2seq

翻譯會從頭至尾把德語文本閱讀一遍,讀完開始逐詞翻譯成英語,如果句子過長,他可能會忘了文章開始時都讀過哪些內容。

一個簡單的seq2seq模型就是這樣了,至於面向注意力層的逐級計算,是下面要講的seq2seq+注意力模型,下面是這個模型的直觀表述。

seq2seq+ 注意力

翻譯一遍閱讀德文文本,一邊從頭至尾地記錄關鍵詞,然後開始翻譯成英語。每翻譯一個德語詞匯,都要用一次記下來的關鍵詞。

該機制下會為每個單詞分配一個得分,根據分數高低投入不同的注意力。然後根據Softmax函數處理過的分數,使用編碼器隱藏狀態的加權和來聚合編碼器隱藏狀態,獲得上下文向量。注意力層的實現可以分為4個步驟。

注意力機制的運行究竟是怎樣的?

答案是:反向傳播,沒想到吧。反向傳播將盡一切努力確保產出成果接近實際情況。通過改變RNN中的權重和得分函數(如果有的話)來實現這一目標。這些權重將影響編碼器隱藏狀態和解碼器隱藏狀態,進而影響注意力得分。

帶雙向編碼器的seq2seq+注意力

這一機制相當於有兩名翻譯。翻譯A一邊閱讀德語文本,一邊記錄關鍵詞。翻譯B(比A更高級的翻譯,可以從後往前倒著閱讀然後進行翻譯)也在逐詞閱讀同樣的德語文本,同時記下關鍵詞。

這兩個翻譯會定期討論到目前為止閱讀的每一個詞。一旦閱讀完畢,翻譯B會負責根據討論結果和選擇的綜合關鍵詞,將德語的句子逐字翻譯成英語。

翻譯A就是前向RNN,翻譯B就是後向RNN。

採用雙層堆疊編碼器的seq2seq+注意力

翻譯A一邊閱讀德語文本,一邊記錄關鍵詞。翻譯B(比A更高級的翻譯,可以從後往前倒著閱讀然後進行翻譯)也在逐詞閱讀同樣的德語文本,同時記下關鍵詞。注意,初級翻譯A必須把閱讀到的每個單詞向翻譯B報告。閱讀完成後,兩位翻譯都會根據他們所選擇的綜合關鍵詞,逐字逐句地將句子翻譯成英語。

谷歌的神經機器翻譯:帶8個堆疊編碼器的seq2seq(+雙向+剩餘連接)+注意力

相當於翻譯A、B、...到H一共8位翻譯,從下到上排成一列。每位翻譯都閱讀相同的德語文本。每閱讀一個單詞,翻譯A會與翻譯B分享發現,翻譯B對發現內容進行改進,並與翻譯C分享,以此類推重複這個過程,直到翻譯H為止。此外,在閱讀德語文本時,翻譯H會根據自己的知識和收到的資訊記錄下相關的關鍵詞。

在每個翻譯都閱讀過英文文本之後,命令翻譯A開始翻譯第一個單詞。首先,翻譯A試圖回憶起,然後他與譯者B分享他的答案,譯者B改進答案並與譯者C分享,以此類推重複這一過程,直到翻譯H。然後,翻譯H根據記錄的關鍵詞寫出第一個翻譯。重複這個過程,直到翻譯完成為止。

【加入社群】

新智元AI技術+產業社群招募中,歡迎對AI技術+產業落地感興趣的同學,加小助手微信號:aiera2015_2入群;通過審核後我們將邀請進群,加入社群後務必修改群備注(姓名 - 公司 - 職位;專業群審核較嚴,敬請諒解)。

獲得更多的PTT最新消息
按讚加入粉絲團