0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

簡述深度學習中的Attention機制

jf_78858299 ? 來源:天宏NLP ? 作者: tianhongzxy ? 2023-02-22 14:21 ? 次閱讀

Attention機制在深度學習中得到了廣泛的應用,本文通過公式及圖片詳細講解attention機制的計算過程及意義,首先從最早引入attention到機器翻譯任務(Bahdanau et al. ICLR2014)的方法講起。

Encoder-Decoder

大多數(shù)注意力模型都是在Encoder-Decoder框架下發(fā)揮作用,Encoder-Decoder模型一般可以用來做機器翻譯、文本摘要生成、問答系統(tǒng)、聊天機器人等。Encoder的輸入是Source,Decoder要輸出的是Target,一般通過RNN來編碼輸入的句子,得到一個包含的句子語義信息的Vector。假設句子由個單詞組成,即。那么RNN或Transformer等模型就作為編碼句子的Encoder,首先句子經過Embedding層,從one-hot形式變?yōu)樵~向量,假設它提取句子的語義信息的函數(shù)為,則:

對于Decoder來說,它的目標是根據(jù)Encoder編碼好的句子信息解碼出我們想要的結果,這結果可以是對原輸入句子的回答,翻譯,或摘要等。假設Decoder的輸出為,和的大小關系并不確定,一般來說Decoder輸出句子才算結束。

假設t=i時,我們要輸出,其實我們輸出的是一個概率分布,然后再選取概率最大的那個單詞當作輸出( 貪心 search ),還有另一種方式叫 beam search ,這個不是本文重點就在此不多說了。根據(jù)Bahdanau et al. ICLR2014第一次提出的將Attention運用于機器翻譯任務的論文中,的計算公式如下:

其中是RNN在timestep的hidden state,由如下公式計算:

由于直接輸出的實際是一個長度為vocabulary size 的vector,因此最終根據(jù)生成的單詞其實應該變成一個one-hot vector:

在這里簡單地將Decoder整個生成yi的函數(shù)用表示:

這樣就是一個Encoder-Decoder框架運作的基本方式,更直觀的可以參見下圖。

Soft Attention

最常見也應用最廣泛的Attention就是Soft Attention,上面的Encoder-Decoder框架,在Decoder生成每一個yi時,對原輸入整個句子語義信息C都給予了同等的注意力,即原句中不同的單詞對于生成每一個yi的貢獻是相同的。這明顯是有問題的,比如在中英翻譯:“我今天吃了一個蘋果”,“I ate an apple today”,在翻譯apple這個詞時,原句中的“蘋果”對其生成apple要比其他詞都重要,因此,需要一個給單純的Encoder-Decoder模型融入更多的知識,那就是Attention。

Attention的有效性和作用是很intuitive的,比如人在讀文章、觀察物體時也是會有注意力的參與的,不可能讀一頁書讀到第一行,還能同時注意第二十行的句子,注意力肯定是分配在某個局部的句子上的。因此,給Encoder-Decoder添加Attention,就是要讓Decoder在生成時,給輸入句子的單詞分配不同的注意力權重,權重代表著單詞對生成的重要性。

假設Encoder是RNN,輸入每個單詞后都會輸出一個隱狀態(tài),那么對生成時,原先對生成每個yi都是相同的句子語義表示會被替換成根據(jù)當前要生成的單詞yi而不斷變化的。理解Attention模型的關鍵就是這里,即把固定的句子語義表示變成了根據(jù)當前要輸出的單詞yi來進行調整的、融入注意力知識的、不斷變化的。

因此上面生成yi的式子變化成如下形式:

其中,t代表輸入句子Source的長度,代表在Decoder輸出第i個單詞時給Source中第j個單詞的注意力分配系數(shù),而hj則是Encoder輸入第j個單詞時輸出的隱狀態(tài)(語義編碼)。根據(jù)NMT論文原文, is an alignment model which scores how well the inputs around position j and the output at position i match. The score is based on the RNN hidden state (just before emitting yi) and the j-th annotation hj of the input sentence. 至于函數(shù)的選取下面會說明。下圖是一個可視化的效果,幫助理解。

圖片

計算Attention

我們已經知道了attention是什么,有什么作用,下面具體說明到底怎么計算attention。

假設Encoder輸入后輸出的隱狀態(tài)為,Decoder在輸出前隱層節(jié)點狀態(tài)為,那么可以用這個時刻的隱層節(jié)點狀態(tài)去一一和輸入句子中每個單詞對應的RNN隱狀態(tài)進行對比,即通過函數(shù)來獲得目標單詞yi和每個輸入單詞對齊的可能性。函數(shù)在不同論文里可能會采取不同的方法,然后的所有輸出經過Softmax進行歸一化就得到了注意力分配到每個輸入單詞上的權重。下圖展示了這個計算過程:

圖片

上面說到不同的論文函數(shù)會采取不同的方法,其中較為普遍的類型有兩種,一個是加法Attention,另一個是乘法Attention。

加法Attention

和為可訓練的參數(shù),將計算結果變成一個scalar,h與s之間的分號表示將二者concatenate到一起,產生一個更長的vector,然后和做矩陣乘法。最后再把得到的value一起送往softmax層,進而產生一個符合概率分布的attention。

乘法Attention

將加法和乘法排列組合變換,就能得到另一種方式——多重感知機(multi-layer perceptron)

在代碼實現(xiàn)中,運用矩陣運算,可以大大加速計算,這里的不再是單個vector,而是組成的一個矩陣,與一同計算后,得到了一個長度為的vector ,它代表著在生成時,對分配的注意力權重。

下圖展示了在文本生成式摘要時,注意力的分配

圖片

Attention機制的本質思想

圖片

我們可以這樣來看待Attention機制:將Source中的構成元素想象成是由一系列的數(shù)據(jù)對構成,此時給定Target中的某個元素Query,通過計算Query和各個Key的相似性或者相關性,可以得到每個Key針對該Query,Value的分配到的權重系數(shù),然后對所有Key的Value進行加權求和,便得到了最終的Attention值。所以本質上Attention機制是對Source中元素的Value值進行加權求和,而Query和Key用來計算對應Value的權重系數(shù)。即可以將其本質思想改寫為如下公式:

上式,代表Source的長度。上文所舉的機器翻譯的例子里,因為在計算Attention的過程中,Source中的Key和Value其實是同一個東西,即輸入句子中每個單詞對應的語義編碼,所以可能不容易看出這種能夠體現(xiàn)本質思想的結構。

當然,從概念上理解,把Attention仍然理解為從大量信息中有選擇地篩選出少量重要信息并聚焦到這些重要信息上,忽略大多不重要的信息,這種思路仍然成立。聚焦的過程體現(xiàn)在權重系數(shù)的計算上,權重越大越聚焦于其對應的Value值上,即權重代表了信息的重要性,而Value是其對應的信息。

也可以將Attention機制看作一種軟尋址(Soft Addressing):Source可以看作存儲器內存儲的內容,元素由地址Key和值Value組成,當前有個Key=Query的查詢,目的是取出存儲器中對應的Value值,即Attention值。通過Query和存儲器內元素Key的地址進行相似性比較來尋址。之所以說是軟尋址,是因為不像一般尋址只從存儲內容里面找出一條內容,而是從每個Key地址都可能會取出內容,取出內容的重要性根據(jù)Query和Key的相似性來決定,之后對Value進行加權求和,這樣就可以得到最終的Value值,也即Attention值。

Attention機制的具體計算過程,如果對目前大多數(shù)方法進行抽象的話,可以將其歸納為兩個過程:第一個過程是根據(jù)Query和Key計算權重系數(shù),第二個過程根據(jù)權重系數(shù)對Value進行加權求和。而第一個過程又可以細分為兩個階段:第一個階段根據(jù)Query和Key計算兩者的相似性或者相關性;第二個階段對第一階段的原始分值進行歸一化處理;這樣,可以將Attention的計算過程抽象為下圖展示的三個階段。

圖片

在第一個階段,可以引入不同的函數(shù)和計算機制,根據(jù)Query和某個Keyi,計算兩者的相似性或者相關性,最常見的方法包括:求兩者的向量點積、求兩者的向量Cosine相似性或者通過再引入額外的神經網絡來求值,計算公式分別如下:

接著將得到的數(shù)值進行數(shù)值轉換,一方面可以進行歸一化,將原始計算分值整理成所有元素權重之和為1的概率分布;另一方面也可以通過SoftMax的內在機制更加突出重要元素的權重。一般采用如下公式計算:

最后得到Query關于Source的加權后的Value值:

延伸閱讀

Attention的變體有非常非常多,針對不同任務,不同的Attention機制也有不同的效果,下面最近較火的兩種Attention,相信讀完上面的內容,理解下面的Attention不再是難題,后續(xù)我也會再寫一篇詳細講解self-attention計算過程的文章。

  • Self-Attention
  • Hierarchical-Attention

參考鏈接及圖片來源:

  1. https://zhuanlan.zhihu.com/p/37601161
  2. https://www.jianshu.com/p/c94909b835d6
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 機器翻譯
    +關注

    關注

    0

    文章

    139

    瀏覽量

    14886
  • 深度學習
    +關注

    關注

    73

    文章

    5503

    瀏覽量

    121206
  • rnn
    rnn
    +關注

    關注

    0

    文章

    89

    瀏覽量

    6895
收藏 人收藏

    評論

    相關推薦

    簡述半導體原理——晶體管家族的核心工作機制

    簡述半導體原理——晶體管家族的核心工作機制
    的頭像 發(fā)表于 07-20 08:14 ?976次閱讀
    <b class='flag-5'>簡述</b>半導體原理——晶體管家族的核心工作<b class='flag-5'>機制</b>

    深度學習與數(shù)據(jù)挖掘的關系

    理解,但是在其高冷的背后,卻有深遠的應用場景和未來。深度學習是實現(xiàn)機器學習的一種方式或一條路徑。其動機在于建立、模擬人腦進行分析學習的神經網絡,它模仿人腦的
    發(fā)表于 07-04 16:07

    深度學習的圖片如何增強

    深度學習的圖片增強
    發(fā)表于 05-28 07:03

    深度學習的IoU概念

    深度學習的IoU概念理解
    發(fā)表于 05-29 09:24

    深度學習在預測和健康管理的應用

    深度學習在預測和健康管理的應用綜述摘要深度學習對預測和健康管理(PHM)引起了濃厚的興趣,因為它具有強大的表示能力,自動化的功能
    發(fā)表于 07-12 06:46

    什么是深度學習?使用FPGA進行深度學習的好處?

    什么是深度學習為了解釋深度學習,有必要了解神經網絡。神經網絡是一種模擬人腦的神經元和神經網絡的計算模型。作為具體示例,讓我們考慮一個輸入圖像并識別圖像
    發(fā)表于 02-17 16:56

    Attention的具體原理詳解

    注意力機制Attention mechanism在序列學習任務上具有巨大的提升作用,在編解碼器框架內,通過在編碼段加入A模型,對源數(shù)據(jù)序列進行數(shù)據(jù)加權變換,或者在解碼端引入A模型,對目標數(shù)據(jù)進行加權變化,可以有效提高序列對序列
    發(fā)表于 11-23 10:44 ?7985次閱讀

    深度學習模型介紹,Attention機制和其它改進

    al. 于2016年提出了PCNNs+Attention(APCNNs)算法。相比之前的PCNNs模型,該算法在池化層之后,softmax層之前加入了一種基于句子級別的attention機制,算法的示意圖如下:
    的頭像 發(fā)表于 03-22 15:41 ?1.9w次閱讀
    <b class='flag-5'>深度</b><b class='flag-5'>學習</b>模型介紹,<b class='flag-5'>Attention</b><b class='flag-5'>機制</b>和其它改進

    為什么要有attention機制,Attention原理

    沒有attention機制的encoder-decoder結構通常把encoder的最后一個狀態(tài)作為decoder的輸入(可能作為初始化,也可能作為每一時刻的輸入),但是encoder的state
    的頭像 發(fā)表于 03-06 14:11 ?1.7w次閱讀
    為什么要有<b class='flag-5'>attention</b><b class='flag-5'>機制</b>,<b class='flag-5'>Attention</b>原理

    首個基于深度學習的端到端在線手寫數(shù)學公式識別模型

    TAP 延續(xù)了會議文章 [1] 的 Encoder 框架,在 Attention 機制上針對在線手寫公式識別提出了 Spatial Attention, Temporal
    的頭像 發(fā)表于 09-20 15:35 ?8986次閱讀
    首個基于<b class='flag-5'>深度</b><b class='flag-5'>學習</b>的端到端在線手寫數(shù)學公式識別模型

    簡述位置編碼在注意機制的作用

    眾所周知的LSTM/RNN體系結構在深度學習空間中的局限性的突破之一。本文介紹了transformers 在seq2seq任務的應用。該論文巧妙地利用了 D.Bahdanau 等人通過聯(lián)合
    的頭像 發(fā)表于 06-16 17:19 ?2802次閱讀
    <b class='flag-5'>簡述</b>位置編碼在注意<b class='flag-5'>機制</b><b class='flag-5'>中</b>的作用

    深度解析Asp.Net2.0的Callback機制

    深度解析Asp.Net2.0的Callback機制(ups電源技術維修)-該文檔為深度解析Asp.Net2.0的Callback
    發(fā)表于 09-27 16:28 ?1次下載
    <b class='flag-5'>深度</b>解析Asp.Net2.0<b class='flag-5'>中</b>的Callback<b class='flag-5'>機制</b>

    計算機視覺的注意力機制

    計算機視覺的注意力機制 卷積神經網絡中常用的Attention 參考 注意力機制簡介與分類 注意力機制
    發(fā)表于 05-22 09:46 ?0次下載
    計算機視覺<b class='flag-5'>中</b>的注意力<b class='flag-5'>機制</b>

    深度學習在語音識別的應用及挑戰(zhàn)

    一、引言 隨著深度學習技術的快速發(fā)展,其在語音識別領域的應用也日益廣泛。深度學習技術可以有效地提高語音識別的精度和效率,并且被廣泛應用于各種應用場景。本文將探討
    的頭像 發(fā)表于 10-10 18:14 ?910次閱讀

    NPU在深度學習的應用

    設計的硬件加速器,它在深度學習的應用日益廣泛。 1. NPU的基本概念 NPU是一種專門針對深度學習算法優(yōu)化的處理器,它與傳統(tǒng)的CPU和G
    的頭像 發(fā)表于 11-14 15:17 ?607次閱讀