日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

论文解读:Attention is All you need

發(fā)布時間:2024/7/5 编程问答 59 豆豆
生活随笔 收集整理的這篇文章主要介紹了 论文解读:Attention is All you need 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

論文解讀:Attention is All you need

習(xí)翔宇?北京大學(xué) 軟件工程博士在讀?關(guān)注他192 人贊同了該文章

Attention機制最早在視覺領(lǐng)域提出,2014年Google Mind發(fā)表了《Recurrent Models of Visual Attention》,使Attention機制流行起來,這篇論文采用了RNN模型,并加入了Attention機制來進(jìn)行圖像的分類。

205年,Bahdanau等人在論文《Neural Machine Translation by Jointly Learning to Align and Translate》中,將attention機制首次應(yīng)用在nlp領(lǐng)域,其采用Seq2Seq+Attention模型來進(jìn)行機器翻譯,并且得到了效果的提升,Seq2Seq With Attention中進(jìn)行了介紹。

2017 年,Google 機器翻譯團隊發(fā)表的《Attention is All You Need》中,完全拋棄了RNN和CNN等網(wǎng)絡(luò)結(jié)構(gòu),而僅僅采用Attention機制來進(jìn)行機器翻譯任務(wù),并且取得了很好的效果,注意力機制也成為了大家近期的研究熱點。
本文首先介紹常見的Attention機制,然后對論文《Attention is All You Need》進(jìn)行介紹,該論文發(fā)表在NIPS 2017上。


1. Attention機制

Attention用于計算"相關(guān)程度", 例如在翻譯過程中,不同的英文對中文的依賴程度不同,Attention通常可以進(jìn)行如下描述,表示為將query(Q)和key-value pairs 映射到輸出上,其中query、每個key、每個value都是向量,輸出是V中所有values的加權(quán),其中權(quán)重是由Query和每個key計算出來的,計算方法分為三步:

第一步:計算比較Q和K的相似度,用f來表示

第二步:將得到的相似度進(jìn)行Softmax操作,進(jìn)行歸一化

第三步:針對計算出來的權(quán)重 ,對V中所有的values進(jìn)行加權(quán)求和計算,得到Attention向量

通常第一步中計算方法包括以下四種:

  • 點乘 dot product

  • 權(quán)重 General

  • 拼接權(quán)重 Concat

  • 感知器 Perceptron





2. Transformer Architecture

絕大部分的序列處理模型都采用encoder-decoder結(jié)構(gòu),其中encoder將輸入序列 映射到連續(xù)表示 ,然后decoder生成一個輸出序列 ,每個時刻輸出一個結(jié)果。Transformer模型延續(xù)了這個模型,整體架構(gòu)如下圖1所示。

圖1 基于Transformer模型的Encoder-Decoder模型示意圖

2.1 Encoder

Encoder有N=6層,每層包括兩個sub-layers:

  • 第一個sub-layer是multi-head self-attention mechanism,用來計算輸入的self-attention
  • 第二個sub-layer是簡單的全連接網(wǎng)絡(luò)。
  • 在每個sub-layer我們都模擬了殘差網(wǎng)絡(luò),每個sub-layer的輸出都是

    其中Sublayer(x) 表示Sub-layer對輸入 做的映射,為了確保連接,所有的sub-layers和embedding layer輸出的維數(shù)都相同 .

    2.2 Decoder

    Decoder也是N=6層,每層包括3個sub-layers:

  • 第一個是Masked multi-head self-attention,也是計算輸入的self-attention,但是因為是生成過程,因此在時刻 的時候,大于 的時刻都沒有結(jié)果,只有小于 的時刻有結(jié)果,因此需要做Mask
  • 第二個sub-layer是全連接網(wǎng)絡(luò),與Encoder相同
  • 第三個sub-layer是對encoder的輸入進(jìn)行attention計算。
  • 同時Decoder中的self-attention層需要進(jìn)行修改,因為只能獲取到當(dāng)前時刻之前的輸入,因此只對時刻 之前的時刻輸入進(jìn)行attention計算,這也稱為Mask操作。

    2.3 Attention機制

    在Transformer中使用的Attention是Scaled Dot-Product Attention, 是歸一化的點乘Attention,假設(shè)輸入的query 、key維度為 ,value維度為 , 那么就計算query和每個key的點乘操作,并除以 ,然后應(yīng)用Softmax函數(shù)計算權(quán)重。

    在實踐中,將query和keys、values分別處理為矩陣 , 那么計算輸出矩陣為:

    其中 , , ,輸出矩陣維度為 ,如下所示

    那么Scaled Dot-Product Attention的示意圖如下所示,Mask是可選的(opt.),如果是能夠獲取到所有時刻的輸入(K, V), 那么就不使用Mask;如果是不能獲取到,那么就需要使用Mask。使用了Mask的Transformer模型也被稱為Transformer Decoder,不使用Mask的Transformer模型也被稱為Transformer Encoder。

    圖2 Scaled Dot-Product Attention示意圖

    如果只對Q、K、V做一次這樣的權(quán)重操作是不夠的,這里提出了Multi-Head Attention,操作包括:

  • 首先對Q、K、V做一次線性映射,將輸入維度均為 的 矩陣映射到 , ,
  • 然后在采用Scaled Dot-Product Attention計算出結(jié)果
  • 多次進(jìn)行上述兩步操作,然后將得到的結(jié)果進(jìn)行合并
  • 將合并的結(jié)果進(jìn)行線性變換
  • 總結(jié)來說公示如下所示

    其中第1步的線性變換參數(shù)為 , , , 第4步的線性變化參數(shù)為 . 而第三步計算的次數(shù)是 。

    在論文中取 表示每個時刻的輸入維度和輸出維度, 表示8次Attention操作, 表示經(jīng)過線性變換之后、進(jìn)行Attention操作之前的維度。那么進(jìn)行一次Attention之后輸出的矩陣維度是 , 然后進(jìn)行h = 8次操作合并之后輸出的結(jié)果是 ,因此輸入和輸出的矩陣維度相同。

    這樣輸出的矩陣 ,每行的向量都是對 向量中每一行 的加權(quán),示意圖如下所示

    圖3 Multi-Head Attention機制示意圖


    在圖1的Encoder-Decoder架構(gòu)中,有三處Multi-head Attention模塊,分別是:

  • Encoder模塊的Self-Attention,在Encoder中,每層的Self-Attention的輸入 , 都是上一層的輸出。Encoder中的每個position都能夠獲取到前一層的所有位置的輸出。
  • Decoder模塊的Mask Self-Attention,在Decoder中,每個position只能獲取到之前position的信息,因此需要做mask,將其設(shè)置為
  • Encoder-Decoder之間的Attention,其中 來自于之前的Decoder層輸出, 來自于encoder的輸出,這樣decoder的每個位置都能夠獲取到輸入序列的所有位置信息。
  • 2.4 Position-wise Feed-forward Networks

    在進(jìn)行了Attention操作之后,encoder和decoder中的每一層都包含了一個全連接前向網(wǎng)絡(luò),對每個position的向量分別進(jìn)行相同的操作,包括兩個線性變換和一個ReLU激活輸出

    其中每一層的參數(shù)都不同。

    2.5 Position Embedding

    因為模型不包括recurrence/convolution,因此是無法捕捉到序列順序信息的,例如將K、V按行進(jìn)行打亂,那么Attention之后的結(jié)果是一樣的。但是序列信息非常重要,代表著全局的結(jié)構(gòu),因此必須將序列的token相對或者絕對position信息利用起來。

    這里每個token的position embedding 向量維度也是 然后將原本的input embedding和position embedding加起來組成最終的embedding作為encoder/decoder的輸入。其中position embedding計算公式如下

    其中 表示位置index, 表示dimension index。

    Position Embedding本身是一個絕對位置的信息,但在語言中,相對位置也很重要,Google選擇前述的位置向量公式的一個重要原因是:由于我們有

    這表明位置p+k的向量可以表示成位置p的向量的線性變換,這提供了表達(dá)相對位置信息的可能性。

    在其他NLP論文中,大家也都看過position embedding,通常是一個訓(xùn)練的向量,但是position embedding只是extra features,有該信息會更好,但是沒有性能也不會產(chǎn)生極大下降,因為RNN、CNN本身就能夠捕捉到位置信息,但是在Transformer模型中,Position Embedding是位置信息的唯一來源,因此是該模型的核心成分,并非是輔助性質(zhì)的特征。

    也可以采用訓(xùn)練的position embedding,但是試驗結(jié)果表明相差不大,因此論文選擇了sin position embedding,因為

  • 這樣可以直接計算embedding而不需要訓(xùn)練,減少了訓(xùn)練參數(shù)
  • 這樣允許模型將position embedding擴展到超過了training set中最長position的position,例如測試集中出現(xiàn)了更大的position,sin position embedding依然可以給出結(jié)果,但不存在訓(xùn)練到的embedding。

  • 3. Why Self-Attention

    這里將Self-Attention layers和recurrent/convolutional layers來進(jìn)行比較,來說明Self-Attention的好處。假設(shè)將一個輸入序列 分別用

  • Self-Attention Layer
  • Recurrent Layer
  • Convolutional Layer
  • 來映射到一個相同長度的序列 ,其中 .

    我們分析下面三個指標(biāo):

  • 每一層的計算復(fù)雜度
  • 能夠被并行的計算,用需要的最少的順序操作的數(shù)量來衡量
  • 網(wǎng)絡(luò)中l(wèi)ong-range dependencies的path length,在處理序列信息的任務(wù)中很重要的在于學(xué)習(xí)long-range dependencies。影響學(xué)習(xí)長距離依賴的關(guān)鍵點在于前向/后向信息需要傳播的步長,輸入和輸出序列中路徑越短,那么就越容易學(xué)習(xí)long-range dependencies。因此我們比較三種網(wǎng)絡(luò)中任何輸入和輸出之間的最長path length
  • 結(jié)果如下所示

    3.1 并行計算

    Self-Attention layer用一個常量級別的順序操作,將所有的positions連接起來

    Recurrent Layer需要 個順序操作

    3.2 計算復(fù)雜度分析

    如果序列長度 表示維度 ,Self-Attention Layer比recurrent layers快,這對絕大部分現(xiàn)有模型和任務(wù)都是成立的。

    為了提高在序列長度很長的任務(wù)上的性能,我們對Self-Attention進(jìn)行限制,只考慮輸入序列中窗口為 的位置上的信息,這稱為Self-Attention(restricted), 這回增加maximum path length到 .

    3.3 length path

    如果卷積層kernel width ,并不會將所有位置的輸入和輸出都連接起來。這樣需要 個卷積層或者 個dilated convolution,增加了輸入輸出之間的最大path length。

    卷積層比循環(huán)層計算復(fù)雜度更高,是k倍。但是Separable Convolutions將見效復(fù)雜度。

    同時self-attention的模型可解釋性更好(interpretable).

    Reference

    [1]github.com/Kyubyong/tra

    [2]Vaswani, Ashish, et al. "Attention is all you need."Advances in Neural Information Processing Systems. 2017.

    編輯于 2018-10-18「真誠贊賞,手留余香」贊賞還沒有人贊賞,快來當(dāng)?shù)谝粋€贊賞的人吧!機器學(xué)習(xí)深度學(xué)習(xí)(Deep Learning)神經(jīng)網(wǎng)絡(luò)?贊同 192??18 條評論?分享?收藏?

    總結(jié)

    以上是生活随笔為你收集整理的论文解读:Attention is All you need的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。