讀Transformer

    transformer 是在文章 attention is all you need 中提出的,在機器翻譯中,transformer的輸入是一種語言,輸出是另外一種語言。

  transformer包含兩部分:encoders 和 decoders , 這種結構就是常見的seq2seq模式,不同在於encoder 和 decoder 的結果。

其中encoders 和 decoders 各自採用了6個encoder單元和6個decoder單元

  • encoders 部分
    • 6個encoder單元是獨立的,即他們之間的權重不是共享的
    • 每個encoder包含self-attention 和 feedforward neural network 兩部分
    • self-attention模塊,輸入是長度爲n的序列,embedding維度爲E,輸出是長度爲n的序列,
      • 作者在讀attention is all you need 的文章才瞭解到self-attention的概念
      • 舉了一個例子 ”The animal didn't cross the street because it was too tired” 語句中的it單詞指的是誰?或者說跟誰更相關,經過layer=5的self-attention之後,可以從下圖中發現,it 單詞 和 the animal 最相關,顏色最深
      • 計算的細節,重點 !!!,見下面
      • 第一步構造三個矩陣,對於某一個詞來說,通過輸入矩陣這三個矩陣相乘,那麼就得到了對應的三個vector,叫做 query vector,key vector,value vector,這三個vector的維度(64)通常小於embedding(512)的維度,這三個矩陣是訓練出來的。
      • 第二步,計算一個得分,針對輸入的每個單詞的得分,這個得分決定了我們有聚焦輸入序列中其他部分的程度。比如針對輸入序列中的第一個單詞thinking 來說,拿thinking得到的q1 與 輸入序列中的單詞得到的k求點積,那麼就得到 q1*k1,q1*k2,q1*k3,q1*k4,....
      • 第三步,在第二步基礎上,除以k的平方根
      • 第四步,  在第三部基礎上,對分數做softmax,分數的大小表明重要程度,通常,當前詞的softmax是最高的,如上圖顯示 q1 * k1 = 0.88 , q1 * k2=0.12 ,除了這個詞之外,可以關注其他詞對當前詞的相關程度
      • 第五步,在第四步的基礎上 乘以 value vector 
      • 第六步,在第五步的基礎上,加上權重向量,得到的維度與第五步是一樣的。
      • 什麼是multi-head attention 呢 ?說白了,有多個Q,K,V矩陣,transformer用了8個attention heads,所以對於一個單詞來說,會得到8個z向量,我們把8個z給拼接起來,得到一個單獨的矩陣,乘以W0,就可以得到最終的z了
      • 得到
      • 注意一點,實際上在transformer中,輸入不是embedding後的序列,還需要加上一個叫做位置編碼序列,這個也是學出來的,直覺上這個向量是衡量embedding內部的距離。
    • Add * Normalize 解釋
      • Add 體現在 self-attention得到z之後,與輸入矩陣進行相加
      • normalize 表示 layernorm

 

  • decoders部分
    • 每個decoder包含 self-attention, encoder-decoder attention,feedforward nueral network 
    • 相比encoder部分多了encoder-decoder,可以幫助decoder去關注輸入序列中相關的部分,跟seq2seq模型比較類似。
    • decoder部分的self-attention 跟 encoder部分中的self-attention 有點略微不同,因爲encoder部分的輸入是固定的,而輸出部分的序列是逐個逐個預測出來的,所以有mask這個概念
    • encoder-decoder attention部分,跟mutliheaded self-attention比較類似,但沒有Query矩陣,只有Key 和 Value矩陣,關於encoder的輸出,就在這部分進行使用。

  • 最後Linear 和 Softmax 部分,下面的圖很形象了

 

refer:http://jalammar.github.io/illustrated-transformer/ 

https://arxiv.org/abs/1706.03762  Attention is All You Need.

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章