強烈推薦!臺大李宏毅自注意力機制和Transformer詳解!

tips:這個視頻開始講的講文章分類,文章可能屬于多個不同類別的問題,聯(lián)想到了關(guān)鍵點識別的骨架問題,可不可以把這個交給transformer讓它去決定輸出關(guān)鍵點的數(shù)量
- encoder的架構(gòu)

transformer encoder用的就是自注意力,輸入一排向量,輸出同樣長度的向量。

這里的block做了好多l(xiāng)ayer做的事情,輸入一排向量,輸出一排向量。其中block具體組成:
做一個自注意力,輸入向量后,考慮整個sequence的資訊,輸出另外一排向量,再丟到fully connected feed forward network 里面,輸出另外一排向量作為block的輸出。

輸出的每個向量是考慮所有的輸入得到的結(jié)果,在transformer加入了一個設(shè)計:
在輸出的向量加上它的輸入得到新的輸出。
這個架構(gòu)較residual connection。

再進行norm,不是batchnormization,是layernormization,不需要考慮batch的資訊,
batch是對不同example不同的feature的同個dimension去計算mean和standard deviation,layer是對同一個example里不同的dimension去計算mean和standard deviation,輸入一個向量,輸出一個normlize的向量,分號上面的xi不要、。這個輸出才是fc的輸出。

fc里也有一個residual 的架構(gòu),再做一個layer norm輸出,這個輸出才是residual network里面的block的輸出。
回到論文中對比:

區(qū)別:在輸入前加上positional encoding,因為只用自注意力,沒有位置的資訊。這個
tips:block在之后一個bert的模型里會用到,bert其實就是transformer的encoder。
encoder的架構(gòu)的改進設(shè)計:

1.改為先做residual后做normization,性能更好。
2.為什么不做batch,提出了一個power normiztion?!猵owernorm
- decoder——AT的架構(gòu)

先給decoder 一個特殊的符號,代表begin,在decoder 產(chǎn)生的文本里產(chǎn)生一個開始的符號。token用one-hot表示。
decoder會產(chǎn)生一個向量,長度和vocabulary的長度一樣,就是希望識別的詞匯庫的總詞匯數(shù)。

在得到該向量前做一個softmax分類。把新得到的輸出”機“表示一個one-hot向量,作為decoder新的輸入,不斷進行下去。每個輸出
向量,都結(jié)合了在它之前的輸入向量的資訊,比如”學“的輸出是學習了輸入的token、“機”、“器”的資訊。
decoder結(jié)構(gòu)

與encoder比較

主要在于中間的部分。其中的masked部分:

就是從每個輸出都考慮所有輸出變?yōu)橹豢紤]前面的輸入。具體一點:

變?yōu)椋?/strong>

另外的關(guān)鍵點:decoder必須自己決定輸出的長度。
——要讓它輸出一個斷 的符號

begin和end可以用同一個符號,因為begin只在輸入,end只在輸出。不同亦可。
decoder-non-autoregressive(NAT)

如何NAT決定輸入的begin數(shù)量:
兩種解決:再加一個預測長度的predictor
輸入一個最大的長度,把預測為end的輸出后的輸出當作無。
好處:
平行化:速度快
能控制輸出長度:比如有個classifer,語音合成2倍速識別就除以2.
壞處:
表現(xiàn)一般不如at(autoregressive):muti—modality
- encoder-decoder如何傳遞資訊

cross attention部分,兩個輸入來自encoder,一個來自decoder。

把self-attention輸出的向量乘上一個矩陣作為一個transform得到query,a1,a2,a3產(chǎn)生一個key,q與k1、k2、k3計算attention的分數(shù),做一下softmax normization。再分別乘以v加起來得到v丟給fc。
decoder產(chǎn)生query到encoder里抽取資訊。

原始論文中decoder 的每一層都是encoder最后一層的輸出,圖右上角。當然還有其他結(jié)構(gòu),圖下方。
- training

計算輸出向量的one-hot與ground truth的one-hot的minimize cross entropy。

teacher force:decoder輸入groud truth,機器要使輸出與ground truch的loss越小越好,要包含end的token。
問題:測試中沒有g(shù)round truth給decoder
訓練的tips:
1、copy mechanism
就是機器并不理解資訊,而是從資訊中復制一些東西。

語音合成念四次發(fā)財沒問題,反而念一次只念出來發(fā)。
2.guided attention

紅色曲線代表attention分數(shù),越高效果越好。
guided attention要求attention有一個固定的樣貌,比如語音合成、tts的問題,要求attention由左向右。
關(guān)鍵詞匯:monotonic attention
location-aware attention 自己google
Beam Search

假設(shè)只有兩個輸出A,B,每次找輸出分數(shù)最高的路勁,叫做greedly decoding。綠色路徑第一步不好,但總體是最好的。

beam search一直輸出重復的結(jié)果,加入一些隨機性后的結(jié)果反而比較正常。
當目標非常明確時,beam search性能好,如語音辨識。當需要一點創(chuàng)造力時,結(jié)果有多種可能時,需要在decoder中加入隨機性。
反直覺:語音合成(TTS)。一般來說是訓練時加入noise,但是tts需要在測試時加入noise效果才會好。
口訣:
不知道如何去優(yōu)化,用reinforcement learning(RL),遇到無法優(yōu)化的loss function,把它當成RL的 rewo,把decoder當作agen,把它當作RL的reinfore問題硬做
測試沒有g(shù)round truch的問題,測試時decoder會看一些錯的東西,從而帶來的exposure bias:
給decoder一些錯誤的答案,可能會學的更好——scheduled sampling

會損害transformer平行化的能力和細節(jié),因此transformer對scheduled sampling進行了改進。