本文不是一篇全文解讀,僅談一談該模型的關鍵優勢,了解我們在構建深度學習模型時使用 transformer 模型的適用條件是什麼。
什麼是 transformer?rnn、lstm 和 gru 網路已在序列模型、語言建模、機器翻譯等應用中取得不錯的效果。迴圈結構 (recurrent) 的語言模型和編碼器 - 解碼器體系結構取得了不錯的進展。transformer 是 google 的研究者於 2017 年在《attention is all you need》一文中提出的一種用於 seq2seq 任務的模型,它沒有 rnn 的迴圈結構或 cnn 的卷積結構,在機器翻譯等任務中取得了一定提公升。
但是,rnn 固有的順序屬性阻礙了訓練樣本間的並行化,對於長序列,記憶體限制將阻礙對訓練樣本的批量處理。
注意力機制(attention) 已經成為各類任務中序列建模 (sequencem modeling) 和轉導模型 (transduction model) 中的組成部分,允許對輸入輸出序列的依賴項進行建模,而無需考慮它們在序列中的距離。但之前的注意力機制都與 rnn 結合使用。
本文提出的 transformer,是一種避免迴圈 (recurrent) 的模型結構,完全依賴於注意力機制對輸入輸出的全域性依賴關係進行建模。因為對依賴的建模完全依賴於注意力機制,transformer 使用的注意力機制被稱為自注意力(self-attention)。
**使用自注意力層構建 transformer 的原因,就是將自注意力層與迴圈層或卷積層做比較。
總結說來,個人認為 transformer 的關鍵優勢至少可以歸結為三點:
另外想提到一點,由於 self-attention 沒有迴圈結構,transformer 需要一種方式來表示序列中元素的相對或絕對位置關係。position embedding (pe) 就是該文提出的方案。但在一些研究中,模型加上 pe 和不加上 pe 並不見得有明顯的差異。
Transformer的殘差連線
在學習transformer的過程中,編碼器和解碼器都用到了殘差連線,下面我總結一下殘差連線。假如我們的輸入為x,要得到的輸出為h x 那麼我們可以通過 h f x x,轉換為學習f。等得到f的輸出後,在此基礎上加上x即可得h的輸出。在transformer中,此時的f即是下圖中的multi hea...
Transformer的幾個問題
transformer是 attention is all you need 提出來的,結構如下所示 講解transformer的文章很多,這裡不再重複,可以參考文獻1和文獻2 問題一 為什麼要除以d k sqrt dk 當d kd k dk 增大時,意味著q和k之間的點乘操作會增加,只要qik i...
Transformer的原理及框架
transformer是谷歌2017年發表的attention is all you need 中提到的seq2seq模型,我們常用的bert和gpt等都是基於transformer衍生的。本文主要參考了wmathor大佬的transformer 詳解和transformer 的 pytorch 實...