首先我們可以先回顧一下seq2seq的問題,sequence-to-sequence指的就是當我們輸入sequence之後,輸出也應該是sequence。但輸出的sequence有幾種size:
Q: 那有哪些可以使用seq2seq的模型呢?
語音辨識、翻譯、聊天機器人、NLP問題(sentiment analysis, context, QA)。
*NLP: Natural Language Processing,很多也可以想成是QA的問題。也就是讓機器讀一段文字,然後我們詢問機器問題,他給我們答案。
*sentiment analysis: 透過一個句子判斷正面還是負面的問題。
但要注意的是,雖然seq2seq可以解決很多問題,但很多時候客製化模型會更好解決問題。EX: 像是pixel 4的語音轉文字就是使用RNN,而不是seq2seq。
那seq2seq要怎麼做呢?
通常會分成兩塊,一個Encoder搭配一個Decoder。那在transformer中使用的Encoder,就是上一篇講到的self-attention。
*比較layer normalization與batch normalization:
Layer normalization是針對同一組計算其平均與標準差
batch normalization則是對不同feature中同一個dimension的值計算平均與標準差。
假設有三組output: [a1 a2 a3] [b1 b2 b3] [c1 c2 c3]。
Batch normalization的means: a1 + b1 + c1 。
Layer normalization的means: a1 + a2 + a3.
在Encoder的最後,會輸出一段vector sequence,此時我們把vector sequence當作decoder的輸入。
Decoder的運作方式:
假設我們有個語音訊息"機器學習"要輸出成文字,此時我們必須先有一個BOS(beginning of sentence)作為初始的輸入,經過Decoder之後會產生一組機率分布,機率最高的就是我們的輸出。之後,再將Decoder的輸出作為下一個輸入,以此類推,就會產生一連串的輸出。
Masked Multi-Head Attention
上圖比較encoder與decoder之後,我們會發現兩者有個明顯的差別,那就是decoder的multi-Head Attention多了一個Masked,這個Masked的意思就是當我們在計算self-attention時,只在意自己與前面已經考慮過的input,只考慮到目前為止input的關聯性。
Ex:
輸出的b1只能由輸入a1決定; 輸出的b2只能由a1, a2決定。
會這麼做的原因很簡單,因為我們在考慮輸入的時候,是必須依靠前一個輸出來決定。
那我們該如何決定一個輸出sequence的長度呢?
額外準備一個中斷的token "END",當我們接收到輸入“習”時,讓"END"的機率成為最大,就能夠中斷decoder。
autoRegressive Decoder是從輸入Begin開始,依序輸入得到輸出,在拿輸出當輸入以此類推得到答案。
Non-AutoRegressive Decoder則是同時平行輸入多個Begin,這樣就會平行生成多個輸出。
那這種方式就沒辦法簡單決定其輸出的長度,所以我們可以採用兩種方式決定:
特點:
Cross Attention是連接Encoder與Decoder之間的橋樑。
運作方式:
那如果我們要訓練Transformer,我們的目標會是希望在BEGIN輸入Decoder之後,產生出的向量與我們希望的值的值越接近越好。而通常我們會將每個字設定為one-hot vector。假設“機” = [1 0 0 0]T,那就希望Decoder產生的機率分佈會是接近one-hot vector的。(我們可以想像成分類問題)
Teacher Forcing
在輸入decoder時,額外多輸入正確答案(Ground Truth),能夠幫助transformer更好訓練。假設是“機器學習”四個字,我們可以輸入“機”,然後要求機器輸出“器”,以此訓練。
但這也可以注意一下,有時會有一種訓練的結果與實際測試的結果不一致的狀況,這被稱為exposure bias。
那解決的方法就是在Teacher Forcing時,加入一點雜訊,讓他沒那麼好訓練,這被稱為schedule sampling。
Copy Mechanism
那有些任務,Decoder不需要從input生成文字出來,而是要從input複製出來。
Ex: 在聊天機器人中,就會需要複製的能力。
假設我們說:我是“庫洛洛” → 機器需要回答“你好!庫洛洛”。
那以上是關於今天Transformer中的Encoder Decoder與Cross Attention的介紹。