閱讀大概需要12分鐘
跟隨小博主,每天進(jìn)步一丟丟
作者:CHEONG
來自:機(jī)器學(xué)習(xí)與自然語言處理
Attention機(jī)制通俗的說,對于某個(gè)時(shí)刻的輸出y,它在輸入x上各個(gè)部分上的注意力,這里的注意力也就是權(quán)重,即輸入x的各個(gè)部分對某時(shí)刻輸入y貢獻(xiàn)的權(quán)重,在此基礎(chǔ)上我們先來簡單理解一下Transformer模型中提到的self-attention和context-attention(1) Self-attention:輸入序列即是輸出序列,即計(jì)算自身的attention,計(jì)算序列對其本身的attention權(quán)重(2) Context-attention:即是encoder-decoderattention,如在機(jī)器翻譯模型中即計(jì)算encoder序列中的每個(gè)詞對decoder序列各個(gè)詞的attention權(quán)重論文:Neural Turing Machines論文鏈接:https://arxiv.org/pdf/1410.5401.pdfattention相似度的度量使用的是余弦相似度:論文:Neural Machine Translation By JointlyLearning to Align and Translate論文鏈接:https://arxiv.org/pdf/1409.0473.pdf下面有對這篇論文中的attention實(shí)現(xiàn)過程詳細(xì)介紹,這里不做介紹3、Location-Baseattention、General attention、Dot-Productattention論文:Effective Approaches toAttention-based Neural Machine Translation論文鏈接:https://arxiv.org/pdf/1508.04025.pdf下面有對這篇論文中的attention實(shí)現(xiàn)過程詳細(xì)介紹,這里不做介紹4、ScaledDot-Product attention論文:Attention is all you need論文鏈接:https://arxiv.org/pdf/1706.03762.pdf大家熟悉的Transformer中提到的Attention機(jī)制,下面有介紹1、seq2seq中引入attention機(jī)制首先attention機(jī)制常用在seq2seq模型中,下圖一是傳統(tǒng)的seq2seq,輸出y對輸入序列x1,x2,x3...沒有區(qū)分,沒有辨識度,下圖二中我們引入了attention機(jī)制,每個(gè)輸出的詞y受輸入X1,X2,X3...影響的權(quán)重不同,這個(gè)權(quán)重便是由Attention計(jì)算,因此可以把Attention機(jī)制看成注意力分配系數(shù),計(jì)算輸入每一項(xiàng)對輸出權(quán)重影響大小(Learning Phrase Representations using RNN Encoder–Decoderfor Statistical Machine Translation論文截圖)(NEURAL MACHINE TRANSLATION BY JOINTLY LEARNING TO ALIGN ANDTRANSLATE論文截圖)介紹一下上圖中attention實(shí)現(xiàn)過程(1) 首先利用雙向RNN結(jié)構(gòu)得到隱層狀態(tài)(h1, h2, …, hn)(2) 如當(dāng)前已經(jīng)decoder到隱層St-1,接下來計(jì)算每一個(gè)輸入位置hj對當(dāng)前位置i的影響這里attention的計(jì)算方式可以有很多種,點(diǎn)乘形式、加權(quán)點(diǎn)乘形式或求和形式(3) 對eij進(jìn)行softmax將其normalization得到attention權(quán)重分布,如下所示(4) 利用aij進(jìn)行加權(quán)求和得到相應(yīng)的context vector2、SoftAttention和Hard Attention(Show, Attend and Tell: Neural Image Caption Generation withVisual Attention論文提出)Softatttention是參數(shù)化的,是可導(dǎo)的可嵌入到模型中直接訓(xùn)練,上述seq2seq中的即是soft attention;Hard attention是一個(gè)隨機(jī)的過程,為了實(shí)現(xiàn)梯度的反向傳播,需要采用蒙特卡洛采樣的方法來估計(jì)模塊的梯度,目前更多的研究和應(yīng)用還是更傾向于使用Soft Attention,因?yàn)槠淇梢灾苯忧髮?dǎo),進(jìn)行梯度反向傳播,大致了解一下即可3、GlobalAttention和Local Attention(EffectiveApproaches to Attention-based Neural Machine Translation截圖)上左圖是Global Attention,右圖是Local Attention全局Attention和局部attention存在共同之處,例如在翻譯模型的解碼階段都是將LSTM的頂層隱藏狀態(tài)ht作為輸入,目標(biāo)是活得一個(gè)上下文向量ct來捕獲源信息幫助預(yù)測當(dāng)前單詞,兩種方式不同便在于對上下文向量ct的獲取方式不同,但其后步驟是共享的,即首先由上下文信息和隱藏層信息獲得注意力隱層狀態(tài):然后再通過注意力隱層狀態(tài)通過softmax獲得預(yù)測分布下面介紹一下全局Attention和局部Attention對上下文向量ct的獲取全局Attention在計(jì)算上下文向量ct時(shí)考慮編碼器所有的隱層狀態(tài),attention向量是通過比較當(dāng)前目標(biāo)隱藏狀態(tài)ht和每個(gè)源隱藏狀態(tài)hs得到:ht和hs之間的計(jì)算方式可以采用如下幾種:當(dāng)前也可以通過基于location的方式計(jì)算attention得分:全局Attention的缺點(diǎn)在于對每個(gè)目標(biāo)單詞必須關(guān)注源序列中的所有單詞,消耗資源因此局部Attention的思想是對每個(gè)目標(biāo)單詞只選擇一部分源單詞進(jìn)行預(yù)測上下文向量ct,具體來說,在時(shí)刻t 模型首先為每個(gè)目標(biāo)單詞生成一個(gè)對齊位置pt。上下文向量ct 通過窗口[pt -D,pt +D] 內(nèi)的源隱藏狀態(tài)集合加權(quán)平均計(jì)算得到;D 根據(jù)經(jīng)驗(yàn)選擇。8 與全局方法不同,局部對齊向量at 是固定維度的,即∈?2D+1(Attention is all your need論文截圖)ScaledDot-Product Attention:通過Q,K矩陣計(jì)算矩陣V的權(quán)重系數(shù)Multi-HeadAttention:多頭注意力是將Q,K,V通過一個(gè)線性映射成h個(gè)Q,K,V,然后每個(gè)都計(jì)算Scaled Dot-Product Attention,最后再合起來,Multi-HeadAttention目的還是對特征進(jìn)行更全面的抽取5、Attention組合使用相關(guān)論文(1) Hierarchical Attention Networks for Document Classification(2) Attention-over-Attention Neural Networks for ReadingComprehension(3) Multi-step Attention: Convolutional Sequence to SequenceLearning(4) Multi-dimensional Attention: Coupled Multi-Layer Attentionsfor Co-Extraction of Aspect and Opinion Terms6、Attention應(yīng)用領(lǐng)域首先看在Encoder-Decoder中引入Attention機(jī)制,如機(jī)器翻譯每個(gè)輸出的詞Y受輸入X1,X2,X3,X4影響的權(quán)重不同,這個(gè)權(quán)重便是由Attention計(jì)算因此可以把Attention機(jī)制看成注意力分配系數(shù),計(jì)算輸入每一項(xiàng)對輸出權(quán)重影響大小下面一張圖給出了Attention機(jī)制在機(jī)器翻譯中實(shí)際權(quán)重計(jì)算過程首先由原始數(shù)據(jù)經(jīng)過矩陣變化得到Q、K、V向量,如下圖以單詞Thinking為例,先用Thinking的q向量和所有詞的k向量相乘,使用下面公式:這種得到每個(gè)單詞對單詞Thinking的貢獻(xiàn)權(quán)重,然后再用得到的權(quán)重和每個(gè)單詞的向量v相乘,得到最終Thinking向量的輸出Attention中縮放的目的是為了加速神經(jīng)網(wǎng)絡(luò)的計(jì)算五、Attention機(jī)制實(shí)現(xiàn)分析1、HierarchicalAttention Network中的注意力機(jī)制實(shí)現(xiàn)HAN結(jié)構(gòu)包含了Word encoder、Word attention、Sentence encoder、Sentence attention,其中有word attention和sentence attention解釋:h是隱層GRU的輸出,設(shè)置w,b,us三個(gè)隨機(jī)變量,先一個(gè)全連接變換經(jīng)過激活函數(shù)tanh得到ui,然后在計(jì)算us和ui相乘,計(jì)算softmax輸出a,最后得到權(quán)重a之后再和h相乘,得到最終經(jīng)過注意力機(jī)制的輸出v,下左圖是word attention計(jì)算公式,下右圖是sentece attention計(jì)算公式HAN中Attention實(shí)現(xiàn)核心代碼如下:attention中mask的作用,下面看一下mask一種實(shí)現(xiàn)通過將超過seq_length的部分mask稱False,然后將mask為False的部分弄成無窮小,這樣在反向傳播時(shí)無窮小倒數(shù)為0,防止消息逆向傳播下面也是mask的一種實(shí)現(xiàn)方式,下面通過add和mul兩種方式實(shí)現(xiàn)上面所說的mask2、Transformer中Multi-Head Attention實(shí)現(xiàn)
本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請
點(diǎn)擊舉報(bào)。