RNN Encoder–Decoder的attention機制簡介
NEURAL MACHINE TRANSLATION BY JOINTLY LEARNING TO ALIGN AND TRANSLATE
對讀者要求:
對RNN和Encoder–Decoder有基本的了解。
背景介紹:
神經網路在機器翻譯裡面比較有名的模型之一就是Encoder–Decoder了,然而在attention機制出來之前,神經網路方法還是沒有真正達到傳統方法的水平的,用神經網路搞翻譯這幫人只敢說「我們還在研究之中~~」。有了attention機制之後,這幫人終於可以揚眉吐氣了,神經網路方法做翻譯總算敢說超越傳統方法了。(這些故事是一位NLP界的同學跟我吹牛時說的,我反正是信了)
一、原來的Encoder–Decoder
在這個模型中,encoder只將最後一個輸出遞給了decoder,這樣一來,decoder就相當於對輸入只知道梗概意思,而無法得到更多輸入的細節,比如輸入的位置信息。所以想想就知道了,如果輸入的句子比較短、意思比較簡單,翻譯起來還行,長了複雜了就做不好了嘛。二、對齊問題
前面說了,只給我遞來最後一個輸出,不好;但如果把每個step的輸出都傳給我,又有一個問題了,怎麼對齊?
什麼是對齊?比如說英文翻譯成中文,假設英文有10個詞,對應的中文翻譯只有6個詞,那麼就有了哪些英文詞對哪些中文詞的問題了嘛。
傳統的翻譯專門有一塊是搞對齊的,是一個比較獨立的task(傳統的NLP基本上每一塊都是獨立的task啦)。
三、attention機制
我們從輸出端,即decoder部分,倒過來一步一步看公式。 (1)是指decoder在t時刻的狀態輸出,是指decoder在t-1時刻的狀態輸出,是t-1時刻的label(注意是label,不是我們輸出的y),看下一個公式,是一個RNN。
(2)是指第j個輸入在encoder里的輸出,是一個權重
(3)這個公式跟softmax是何其相似,道理是一樣的,是為了得到條件概率,這個的意義是當前這一步decoder對齊第j個輸入的程度。
最後一個公式, (4)
這個可以用一個小型的神經網路來逼近。
好了,把四個公式串起來看,這個attention機制可以總結為一句話,「當前一步輸出應該對齊哪一步輸入,主要取決於前一步輸出和這一步輸入的encoder結果」。
我當時看了這個方法的感受是,計算力發達的這個年代,真是什麼複雜的東西都有人敢試了啊。這要是放在以前,得跑多久才能收斂啊......
神經網路搞NLP雖然還有諸多受限的地方,但這種end-to-end 的one task方式,太吸引人,有前途。
推薦閱讀:
※淺談自然語言處理 – 開端
※詳解梯度下降法的三種形式BGD、SGD以及MBGD
※Deep Learning 最優化方法之AdaGrad
※隱馬爾科夫模型(HMM)一前向與後向演算法
※TensorFlow入門