0 前言
大家好,歡迎來到“自由技藝”的知識小館。今天我們來探討下深度學習中的 Attention 機制,中文名為“注意力”。本文內容結構組織如下:
1 為什么需要引入 Attention 機制?
2 深度學習中的 Encoder-Decoder 框架
3 Soft Attention 模型
4 Attention 機制的本質
5 Self Attention 模型
6 總結
1 為什么要引入 Attention 機制?
當我們用深度 CNN 模型識別圖像時,一般是通過卷積核去提取圖像的局部信息,然而,每個局部信息對圖像能否被正確識別的影響力是不同的,如何讓模型知道圖像中不同局部信息的重要性呢?答案就是注意力機制。
人類視覺注意力
視覺注意力機制是人類大腦的一種天生的能力。當我們看到一幅圖片時,先是快速掃過圖片,然后鎖定需要重點關注的目標區域。比如當我們觀察上述圖片時,注意力很容易就集中在了人臉、文章標題和文章首句等位置。
試想,如果每個局部信息都不放過,那么必然耗費很多精力,不利于人類的生存進化。同樣地,在深度學習網絡中引入類似的機制,可以簡化模型,加速計算。
另外,利用循環神經網絡去處理 NLP 任務時,長距離“記憶”能力一直是個大難題,而引入“注意力機制”也能有效緩解這一問題。
2 Encoder-Decoder 框架
常見的深度學習模型有 CNN、RNN、LSTM、AE 等,其實都可以歸為一種通用框架 - Encoder-Decoder.
Encoder-Decoder 框架
在文本處理領域,有一類常見的任務就是從一個句子(Source)生成另一個句子(Target),比如翻譯,其中 xi 是輸入單詞的向量表示,yi 表示輸出單詞。
Source 經過 Encoder,生成中間的語義編碼 C,
C 經過 Decoder 之后,輸出翻譯后的句子。在循環神經網絡中,先根據 C 生成 y1,再基于(C,y1)生成 y2,依此類推。
3 Soft Attention 模型
RNN 模型
傳統的循環神經網絡中,y1、y2 和 y3 的計算都是基于同一個 C. 深入思考一下,發現這可能并不是最好的方案,因為 Source 中不同單詞對 y1、y2 和 y3 的影響是不同的,所以,很自然地就有了如下思路:
引入注意力機制的 Encoder-Decoder 框架
上述改良模型中的 C1、C2、C3 是怎么計算的呢?其實也非常簡單,就是在計算 C1、C2 和 C3 時,分別使用不同的權重向量:
上述公式中的權重向量 (a11, a12, a13)、(a21, a22, a23)、(a31, a32, a33) 又是如何計算的呢?請看下圖。
注意力分配的概率計算
上述模型中: h1 = f(Tom)、h2 = f(h1, Chase)、h3 = f(h2, Jerry).
當計算出 Hi-1 之后,通過函數 F(hj,Hi-1) 獲得輸入語句中不同單詞(Tom、Chase、Jerry)對目標單詞 yi 的影響力,F 的輸出再經過 Softmax 進行歸一化就得到了符合概率分布取值區間的注意力分配概率。其中,F 函數的實現方法有多種,比如余弦相似度、MLP 等。
google 神經網絡機器翻譯系統結構圖
4 Attention 機制的本質
現在,請你把 Source 想象成是內存里的一塊存儲空間,它里面存儲的數據按 <Key, Value> 存儲。給定 Query,然后取出對應的內容。這里與一般的 hash 查詢方式不同的是,每個地址都只取一部分內容,然后對所有的 Value 加權求和。
Attention 的實質:軟尋址(soft addressing)
公式描述如下:
Attention 的計算可以分成如下三個階段:
三階段計算 Attention 過程
注意力打分機制
歸一化的注意力概率分配
上述公式中的 Lx 表示輸入語句的長度。上一節的例子中,Key 是等于 Value 的。
5 Self Attention 模型
可視化 Self Attention 例子
在 Soft Attention 模型中,Source 和輸出 Target 的內容是不同的,比如中-英機器翻譯,Source 對應中文語句,Target 對應英文語句。
現在有另一個任務,如上圖所示:給定一個句子和句子中某個單詞 making,如何找出與 making 強相關的其他單詞呢?比如上圖中的 more difficult(因為它們和 making 可以組成一個短語).
這就用到了 Self Attention 機制,顧名思義,指的是 Source 內部元素之間或者 Target 內部元素之間發生的 Attention 機制,也可以理解為 Source = Target 這種特殊情況下的 Attention 機制,具體計算過程和 Soft Attention 是一樣的。
6 總結
下圖展示了注意力機制如何在圖片描述任務(Image-Caption)中發揮作用的。
圖片描述任務,就是給你一張圖片,請輸出一句話去描述它。一般會用 CNN 來對圖片進行特征提取,Decoder 部分使用 RNN 或者 LSTM 來輸出描述語句。此時如果加入注意力機制,能夠大大改善輸出效果。
圖片描述任務中的注意力機制
另外,在語音識別、目標物體檢測等領域,注意力機制同樣取得了很好的效果。
實際上,Attention 機制聽起來高大上,其關鍵就是學出一個權重分布,然后作用在特征上。
- 這個權重可以保留所有的分量,叫加權(Soft Attention),也可以按某種采樣策略選取部分分量(Hard Attention)。
- 這個權重可以作用在原圖上,如目標物體檢測;也可以作用在特征圖上,如 Image-Caption
- 這個權重可以作用在空間尺度上,也可以作用于 Channel 尺度上,給不同通道的特征加權
- 這個權重可以作用在不同時刻上,如機器翻譯
文中圖片及部分內容來源于 CSDN 賬號“csdn人工智能”的文章《深度學習中的注意力機制》,寫得非常好,強烈推薦大家閱讀。






