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