非常著名的Transformer
一句話總結:替代傳統的序列轉化模型,只用attention(不使用rnn/cnn),可以並行化訓練;Attention機制在輸入和輸出序列中都不會受距離的影響
拋棄循環recurrence模型,只用attention,抽取輸入和輸出序列之間的全局依賴關係(全局語義信息)
傳統的優化方法:1. 計算量(指數增長) 2. 遠距離依賴仍然無法捕捉
Transformer計算量減少,但是同時也減少了有效的(分辨率)resolution, Multihead attention來解決這個問題
第一個只用self-attention來算輸入和輸出序列的representation的模型
自迴歸:t-1會作用到t的輸出
stacked self-attention
encoder decoder stacks
6個一模一樣的層 維度統一成512維
殘差連接+層歸一化
decoder的self-attention做了微調,不能attend到之後的位置 右移一步, mask
attention就是把一個query和鍵值對映射到輸出
query一個key,然後算出相似度,這個相似度作爲權重,乘上value
得到value的加權和
點乘和加法都可以,但是點乘是矩陣運算更快
沒有縮放因子,softmax的區域會推到梯度非常小的地方(飽和區)
multihead attention可以attend到不同位置的不同表示子空間(不同子空間語義)
重點:
1. encoder-decoder attention: query是前一個decoder輸出,key和value是encoder輸出,每一個decoder位置可以attend到整個輸入序列
2. encoder自己有self-attention,q,k,v都是encoder前一層的輸出,每一個位置可以attend到所有其他位置
3. decoder也有self-attention,每一個位置可以attend到之前(包括自己)的位置,在softmax之前mask掉非法連接
全連接層:兩個線性層夾着ReLU層,可以看做兩個kernel size爲1的卷積
輸入和輸出token用參數可學習的embedding
position encoding可以用可學習的embedding
3個優點
計算量
並行化
長距離依賴