版權聲明:本文為部落客原創文章,遵循 CC 4.0 BY-SA 版權協定,轉載請附上原文出處連結和本聲明。
本文連結:https://blog.csdn.net/Solo95/article/details/102470053
注意力機制起源于應用于NLP的RNN模型,但也在其他的領域有所應用。對注意力機制的了解也是算法面試經常提及的一道基礎面試題,在這篇博文裡我們彙總吳恩達深度學習視訊序列模型3.7和3.8以及台大李宏毅教授對Attenion Mechanism以及相關參考文獻對注意力機制給出詳細的介紹的解釋。
注意力機制(Attention Mechanism)
注意力機制是深度學習中一個非常重要的思想,在NLP領域尤為重要。
為什麼要引入Attention Mechanism?
在一個Encoder和Decoder的翻譯模型中,翻譯一段法語到英文大緻是整個序列輸進Encoder然後Decoder再輸出整個結果。也就是說模型是觀測了整個要翻譯的序列,然後再按序做的翻譯(時間步模型)。

随着輸入序列邊長,對模型輸出結果的Bleu score評估會呈現這樣的變化:
綠線代表人類翻譯的水準,藍線代表機器翻譯的水準,之間的Gap能衡量模型記憶長序列的能力。
而人工翻譯則是看一部分,翻譯一部分,再看下一部分,再翻譯一部分,如此往複。因為對人來說,要記憶整個序列是非常困難的。
總結下來:
- 輸入序列非常長時,原始的Encoder-Decoder翻譯的品質會出現明顯下降,因為整個模型要處理的feature過多,并且這些feature不一定對翻譯特定的單詞有所助益。一說模型難以學到足夠合理的向量表示。
- 原始的時間步方式翻譯的模型在設計上有缺陷。具體來講,整個序列無論長短都被Encoder編碼到固定長度,這使得Decoder的能力受限。因為翻譯前後,源語言和目智語言不一定長度一緻。
- 時間步編解碼器的結構缺乏有效的理論支撐和經驗指導,導緻設計困難,模型效果不好。
注意力機制直覺了解
如同前面講過的人工翻譯是一部分一部分看,一部分一部分翻譯一樣,注意力機制旨在實作在計算某個時間步的輸出時,将注意力集中在一段序列上,段的大小可以由一個視窗來決定,并且為該段序列每一個時間步都賦以權值,以決定它們對最終輸出的影響權重。這樣使得前面所述問題得到一定程度的解決。
注意力機制
執行個體說明:
如圖所示,在計算Encoder的輸出上下文c0c^0c0時,維持視窗大小為4,即一個時間步輸出由四個時間步輸入決定。
c0=∑i=14α0^ihi c^0=\sum_{i=1}^4\hat{\alpha_0}^ih^i c0=i=1∑4α0^ihi
那麼每個時間步的權重α0i\alpha_0^iα0i如何計算,通過一個match機制來實作,具體而言,可以使用一個小型的網絡協同訓練來得到一個具體match函數。
圖中z是上一個時間步的輸出,吳恩達notation裡寫作s<t−1>s^{<t-1>}s<t−1>。
可以使用softmax來實作:
使用softmax是為了視窗内部所有時間步權重相加等于1。
除此之外還有一些其他的實作方式:
- 餘弦相似度
- 小型網絡(前述)
- 使用隻有一個權重的計算公式,權重可以交由原網絡來訓練
如上所述,重複以上過程指導所有時間步的輸出都計算完成,這樣就得到了最終結果的序列。
雖然使用attention機制會明顯增加計算量,但是整個模型的輸出結果品質得到有效提升。因為與單純的Encoder-Decoder模型不同。面對大量的features我們隻關注視窗内部那部分features,而且視窗内部每一個時間步如何影響最後的序列生成都由權重控制,這使得整個過程更加的科學合理。
注意力機制的應用
雖然我們以NLP為例,但注意力機制在其他領域也有一些應用。
-
文本翻譯(Text Translation)
吳恩達課程為例,Attention機制被應用在翻譯一個單詞時應該重點關注哪些原詞。
-
語義蘊含(Entailment)
Attention機制被用來關聯假設和前提兩者中詞與詞之間的對應關系。
-
語音識别(Audio Recognition)
Attention機制被用來關聯每個輸入語音序列的某些部分和相應音素的對應關系。
-
文本摘要(Text Summary)
Attention機制被用來關聯輸入文本中的一些重要詞彙和生成的摘要裡的詞彙之間的對應關系。
-
圖像描述(Image Caption)
在計算機視覺領域,Attention機制可以幫助卷積神經網絡決定在生成文本描述時應該重點關注圖像的哪一部分。
參考文獻
吳恩達深度學習系列-注意力機制
台大李宏毅機器學習課程-Attention-based model
Neural Machine Translation by Jointly Learning to Align and Translate. Dzmitry Bahdanau, Kyunghyun Cho, Yoshua Bengio. 2014.
深度學習中 的 Attention機制