attention、self-attention、transformer和bert模型基本原理簡述筆記

attention

以google神經機器翻譯(NMT)爲例網絡

  • 無attention:函數

    encoder-decoder在無attention機制時,由encoder將輸入序列轉化爲最後一層輸出state向量,再由state向量來循環輸出序列每一個字符。優化

  • attention機制:google

    將整個序列的信息壓縮在一維向量裏形成信息丟失,而且考慮到輸出的某個字符只與輸入序列的某個或某幾個相關,與其餘輸入字符不相關或相關性較弱,由此提出了attention機制。在encoder層將輸入序列的每一個字符output向量以不一樣權重進行組合再decode輸出字符,每須要輸出一個字符,encoder層權重序列都會變,這就能夠理解爲須要輸出的字符是由哪些或那個字符影響最大,這就是注意力機制。 .net

    attention權重的得到須要經過一個函數層得到,而該函數參數須要經過training來優化,詳細理解能夠參考我這篇blog翻譯

    從加強字/詞的語義表示這一角度來理解一下Attention機制:code

    Attention機制主要涉及到三個概念:Query、Key和Value。在上面加強字的語義表示這個應用場景中,目標字及其上下文的字都有各自的原始Value,Attention機制將目標字做爲Query、其上下文的各個字做爲Key,並將Query與各個Key的類似性做爲權重,把上下文各個字的Value融入目標字的原始Value中。以下圖所示,Attention機制將目標字和上下文各個字的語義向量表示做爲輸入,首先經過線性變換得到目標字的Query向量表示、上下文各個字的Key向量表示以及目標字與上下文各個字的原始Value表示,而後計算Query向量與各個Key向量的類似度做爲權重,加權融合目標字的Value向量和各個上下文字的Value向量,做爲Attention的輸出,即:目標字的加強語義向量表示。orm

self-attention

self-attention來自於google文章《attention is all you need》。 一個序列每一個字符對其上下文字符的影響做用都不一樣,每一個字對序列的語義信息貢獻也不一樣,能夠經過一種機制將原輸入序列中字符向量經過加權融合序列中全部字符的語義向量信息來產生新的向量,即加強了原語義信息。blog

Self-Attention:對於輸入文本,咱們須要對其中的每一個字分別加強語義向量表示,所以,咱們分別將每一個字做爲Query,加權融合文本中全部字的語義信息,獲得各個字的加強語義向量,以下圖所示。在這種狀況下,Query、Key和Value的向量表示均來自於同一輸入文本,所以,該Attention機制也叫Self-Attention。get

Multi-head Self-Attention

爲了加強Attention的多樣性,文章做者進一步利用不一樣的Self-Attention模塊得到文本中每一個字在不一樣語義空間下的加強語義向量,並將每一個字的多個加強語義向量進行線性組合,從而得到一個最終的與原始字向量長度相同的加強語義向量,以下圖所示。

Transformer

在Multi-headSelf-Attention的基礎上再添加一些「佐料」,就構成了大名鼎鼎的Transformer Encoder。實際上,Transformer模型還包含一個Decoder模塊用於生成文本,但因爲BERT模型中並未使用到Decoder模塊,所以這裏對其不做詳述。下圖展現了Transformer Encoder的內部結構,能夠看到,Transformer Encoder在Multi-head Self-Attention之上又添加了三種關鍵操做:

  • 殘差鏈接(ResidualConnection):將模塊的輸入與輸出直接相加,做爲最後的輸出。這種操做背後的一個基本考慮是:修改輸入比重構整個輸出更容易(「錦上添花」比「雪中送炭」容易多了!)。這樣一來,能夠使網絡更容易訓練。

  • Layer Normalization:對某一層神經網絡節點做0均值1方差的標準化。

  • 線性轉換:對每一個字的加強語義向量再作兩次線性變換,以加強整個模型的表達能力。這裏,變換後的向量與原向量保持長度相同。

    能夠看到,Transformer Encoder的輸入和輸出在形式上仍是徹底相同,所以,Transformer Encoder一樣能夠表示爲將輸入文本中各個字的語義向量轉換爲相同長度的加強語義向量的一個黑盒。

bert

把Transformer Encoder模塊一層一層的堆疊起來就是大名鼎鼎的bert了

參考1:https://mp.weixin.qq.com/s/HOt11jG0DhhVuFWYhKNXtg 參考2:https://mp.weixin.qq.com/s/RLxWevVWHXgX-UcoxDS70w

相關文章
相關標籤/搜索