《Attention is All You Need》細(xì)節(jié)討論

Transformer架構(gòu) (出自原文)

《Attention is All You need》是NLP的經(jīng)典論文之一。網(wǎng)上對(duì)其科普的文章很多了(參考本文reference),本文對(duì)其中對(duì)一些細(xì)節(jié)及其Tensorflow代碼實(shí)現(xiàn)進(jìn)行了討論。

問(wèn)題

Masked self-attention 什么意思?

Masked的意思就是只能在做self-attention的時(shí)候看不到這個(gè)詞以后的單詞。因?yàn)橐卯?dāng)前的輸出來(lái)預(yù)測(cè)未來(lái)的詞,如果能看到未來(lái)的詞相當(dāng)于系統(tǒng)作弊。

為什么使用Multi-Head?

不同的head可以學(xué)到不同的特征,

為什么使用殘差?

使用殘差以后,公式變成了:
F(x) + x
這樣在反向傳播中,對(duì)x求偏導(dǎo)數(shù)對(duì)時(shí)候,就多了一個(gè)常數(shù)。解決了梯度消失的問(wèn)題。

Layer normalization?

Positional Encoding有什么作用?

在單獨(dú)做self-attention的時(shí)候,由于attention的計(jì)算公式?jīng)]有考慮句子中的單詞順序,所以需要在單詞的向量中加入位置信息的編碼。本文采用位置編碼和embedding相加的方式進(jìn)行運(yùn)算。
具體的思路就是使用以下公式:

\text{PE}(pos,2i)=sin\left(\frac{pos}{10000^{2i/d_{model}}}\right),

\text{PE}(pos,2i+1)=cos\left(\frac{pos}{10000^{2i/d_{model}}}\right).

其中pos表示在句子中的位置,i表示在詞向量中的位置,d_{model}是詞向量的維度。

舉個(gè)例子(出自Link):
假設(shè)我們的embedding是e_w,d_{model}=4那么我們獲得的結(jié)果就是:

\begin{align*}e_{w}'= e_{w} + \left[sin\left(\frac{pos}{10000^{0}}\right), cos\left(\frac{pos}{10000^{0}}\right),sin\left(\frac{pos}{10000^{2/4}}\right),cos\left(\frac{pos}{10000^{2/4}}\right)\right]\\ =e_{w} + \left[sin\left(pos\right), cos\left(pos\right),sin\left(\frac{pos}{100}\right),cos\left(\frac{pos}{100}\right)\right]\\ \end{align*}

Self-attention計(jì)算為什么要除以\sqrt{d_k}?

self-attention計(jì)算公式如下:
(Q,K,V) = softmax(\frac{QK^T}{\sqrt{d_k}} )V
除以\sqrt{d_k}的原因是防止在QK計(jì)算乘積的時(shí)候數(shù)值過(guò)大造成上溢出。我們都知道softmax函數(shù)在x越大的時(shí)候越接近與1。不同數(shù)之間計(jì)算的結(jié)果差異就會(huì)變小。除以\sqrt{d_k}可以幫助解決這個(gè)問(wèn)題。

Self-attention和Context-attention的區(qū)別?

Attention和Self-attention 的區(qū)別?

  • Attention計(jì)算的是輸出序列隱藏狀態(tài)和每個(gè)輸入隱藏狀態(tài)之間的關(guān)系
  • Self-attention計(jì)算的是每個(gè)輸入和輸入序列之間的關(guān)系

Transormer 并行計(jì)算, 哪些步驟是可以并行的?

Encoder和Decoder的連接方式

Transormer優(yōu)勢(shì)?

  • 傳統(tǒng)的RNN每一步的輸出都依賴前面的輸出,難以并行;并且預(yù)處理的時(shí)候需要處理成相同長(zhǎng)度的句子。雖然LSTM中引入了forget gate的概念,但是只能記住最近的幾個(gè)輸入,對(duì)于長(zhǎng)句子效果不好。解決了LSTM和RNN的長(zhǎng)距離依賴的問(wèn)題。
  • CNN可以并行計(jì)算,但是不能處理變長(zhǎng)的句子問(wèn)題。
  • Transformer在計(jì)算self-attention的時(shí)候就是矩陣的相乘,可以進(jìn)行并行。并且計(jì)算了單詞之間的關(guān)系,更容易學(xué)習(xí)到句子中的依賴關(guān)系。

Transformer 缺點(diǎn):

Transformer非常強(qiáng)大,但是還是有很多的缺點(diǎn)。

作者:l1n3x
鏈接:http://www.itdecent.cn/p/bccb409a146f
來(lái)源:簡(jiǎn)書(shū)
簡(jiǎn)書(shū)著作權(quán)歸作者所有,任何形式的轉(zhuǎn)載都請(qǐng)聯(lián)系作者獲得授權(quán)并注明出處。

Reference:

-[GIF 動(dòng)畫(huà)展示]
(http://jalammar.github.io/illustrated-transformer/)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容