王小新 編譯自Quora
談神經網路中注意力機制的論文和博客都不少, 但很多人還是不知道從哪看起。 於是, 在國外問答網站Quora上就有了這個問題:如何在自然語言處理中引入注意力機制?
Quora自家負責NLP和ML的技術主管Nikhil Dandekar做出了一個簡要的回答:
概括地說, 在神經網路實現預測任務時, 引入注意力機制能使訓練重點集中在輸入資料的相關部分, 忽略無關部分。
注意力是指人的心理活動指向和集中於某種事物的能力。 比如說, 你將很長的一句話人工從一種語言翻譯到另一種語言, 在任何時候, 你最關注的都是當時正在翻譯的詞或短語,
注意力機制最經常被用於序列轉換(Seq-to-Seq)模型中。 如果不引入注意力機制, 模型只能以單個隱藏狀態單元, 如下圖中的S, 去捕獲整個輸入序列的本質資訊。 這種方法在實際應用中效果很差, 而且輸入序列越長, 這個問題就越糟糕。
圖1:僅用單個S單元連接的序列轉換模型
注意力機制在解碼器(Decoder)運行的每個階段中, 通過回顧輸入序列, 來增強該模型效果。 解碼器的輸出不僅取決於解碼器最終的狀態單元, 還取決於所有輸入狀態的加權組合。
圖2:引入注意力機制的序列轉換模型
注意力機制的引入增加了網路結構的複雜性,
下圖的例子, 是將英語翻譯成法語。 在輸出翻譯的過程中, 你可以看到該網路“注意”到輸入序列的不同部分。
圖3:翻譯網路示意圖
由於英語和法語語序比較一致, 從網路示意圖可以看出, 除了在把短語“European Economic Zone(歐洲經濟區)”翻譯成法語“zone économique européenne”時, 網路線有部分交叉, 在大多數時, 解碼器都是按照順序來“注意”單詞的。
文中配圖來自Distill
推薦閱讀:
Attention and Augmented Recurrent Neural Networks
http://distill.pub/2016/augmented-rnns/
Attention and Memory in Deep Learning and NLP
http://www.wildml.com/2016/01/attention-and-memory-in-deep-learning-and-nlp/
Peeking into the neural network architecture used for Google’s Neural Machine Translation
https://smerity.com/articles/2016/google_nmt_arch.html
【完】
招聘
One More Thing…