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

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

簡述深度學(xué)習(xí)中的Attention機(jī)制

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

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

Encoder-Decoder

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

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

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

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

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

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

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

Soft Attention

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

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

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

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

其中,t代表輸入句子Source的長度,代表在Decoder輸出第i個(gè)單詞時(shí)給Source中第j個(gè)單詞的注意力分配系數(shù),而hj則是Encoder輸入第j個(gè)單詞時(shí)輸出的隱狀態(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ù)的選取下面會說明。下圖是一個(gè)可視化的效果,幫助理解。

圖片

計(jì)算Attention

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

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

圖片

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

加法Attention

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

乘法Attention

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

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

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

圖片

Attention機(jī)制的本質(zhì)思想

圖片

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

上式,代表Source的長度。上文所舉的機(jī)器翻譯的例子里,因?yàn)樵谟?jì)算Attention的過程中,Source中的Key和Value其實(shí)是同一個(gè)東西,即輸入句子中每個(gè)單詞對應(yīng)的語義編碼,所以可能不容易看出這種能夠體現(xiàn)本質(zhì)思想的結(jié)構(gòu)。

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

也可以將Attention機(jī)制看作一種軟尋址(Soft Addressing):Source可以看作存儲器內(nèi)存儲的內(nèi)容,元素由地址Key和值Value組成,當(dāng)前有個(gè)Key=Query的查詢,目的是取出存儲器中對應(yīng)的Value值,即Attention值。通過Query和存儲器內(nèi)元素Key的地址進(jìn)行相似性比較來尋址。之所以說是軟尋址,是因?yàn)椴幌褚话銓ぶ分粡拇鎯?nèi)容里面找出一條內(nèi)容,而是從每個(gè)Key地址都可能會取出內(nèi)容,取出內(nèi)容的重要性根據(jù)Query和Key的相似性來決定,之后對Value進(jìn)行加權(quán)求和,這樣就可以得到最終的Value值,也即Attention值。

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

圖片

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

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

最后得到Query關(guān)于Source的加權(quán)后的Value值:

延伸閱讀

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

  • Self-Attention
  • Hierarchical-Attention

參考鏈接及圖片來源:

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

    關(guān)注

    0

    文章

    139

    瀏覽量

    14862
  • 深度學(xué)習(xí)
    +關(guān)注

    關(guān)注

    73

    文章

    5463

    瀏覽量

    120890
  • rnn
    rnn
    +關(guān)注

    關(guān)注

    0

    文章

    76

    瀏覽量

    6868
收藏 人收藏

    評論

    相關(guān)推薦

    簡述半導(dǎo)體原理——晶體管家族的核心工作機(jī)制

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

    深度學(xué)習(xí)與數(shù)據(jù)挖掘的關(guān)系

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

    深度學(xué)習(xí)的圖片如何增強(qiáng)

    深度學(xué)習(xí)的圖片增強(qiáng)
    發(fā)表于 05-28 07:03

    深度學(xué)習(xí)的IoU概念

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

    深度學(xué)習(xí)在預(yù)測和健康管理的應(yīng)用

    深度學(xué)習(xí)在預(yù)測和健康管理的應(yīng)用綜述摘要深度學(xué)習(xí)對預(yù)測和健康管理(PHM)引起了濃厚的興趣,因?yàn)樗哂袕?qiáng)大的表示能力,自動(dòng)化的功能
    發(fā)表于 07-12 06:46

    什么是深度學(xué)習(xí)?使用FPGA進(jìn)行深度學(xué)習(xí)的好處?

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

    Attention的具體原理詳解

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

    深度學(xué)習(xí)模型介紹,Attention機(jī)制和其它改進(jìn)

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

    為什么要有attention機(jī)制,Attention原理

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

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

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

    簡述位置編碼在注意機(jī)制的作用

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

    深度解析Asp.Net2.0的Callback機(jī)制

    深度解析Asp.Net2.0的Callback機(jī)制(ups電源技術(shù)維修)-該文檔為深度解析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'>機(jī)制</b>

    計(jì)算機(jī)視覺的注意力機(jī)制

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

    深度學(xué)習(xí)在語音識別的應(yīng)用及挑戰(zhàn)

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

    GPU在深度學(xué)習(xí)的應(yīng)用與優(yōu)勢

    人工智能的飛速發(fā)展,深度學(xué)習(xí)作為其重要分支,正在推動(dòng)著諸多領(lǐng)域的創(chuàng)新。在這個(gè)過程,GPU扮演著不可或缺的角色。就像超級英雄電影的主角一樣,GPU在
    的頭像 發(fā)表于 12-06 08:27 ?1188次閱讀
    GPU在<b class='flag-5'>深度</b><b class='flag-5'>學(xué)習(xí)</b><b class='flag-5'>中</b>的應(yīng)用與優(yōu)勢