經典譯文:Transformer--Attention Is All You Need
來源 https://zhuanlan.zhihu.com/p/689083488
本文為Transformer經典論文《Attention Is All You Need》的中文翻譯:
https://arxiv.org/pdf/1706.03762.pdf
注意力滿足一切
Ashish Vaswani Google Brain avaswani@google.com
Noam Shazeer Google Brain noam@google.com
Niki Parmar Google Research nikip@google.com
Jakob Uszkoreit Google Research usz@google.com
Llion Jones Google Research llion@google.com
Aidan N. Gomez University of Toronto aidan@cs.toronto.edu
Łukasz Kaiser Google Brain lukaszkaiser@google.com
Illia Polosukhin illia.polosukhin@gmail.com
摘要
主流序列轉換模型都是基於複雜的包含一個編碼器和一個解碼器的迴圈或卷積神經網路。最佳的效能模型也是藉助注意力機制將編碼器和解碼器連線一起做到的。本文提出一種新型簡單網路架構Transformer,只依賴注意力機制,完全摒棄了遞迴和卷積。對雙機翻譯任務的實驗表明,這種模型有更加優良的品質,還支援並行化,需要的訓練時間顯著減少。在WMT2014英德翻譯任務上達到了28.4 BLEU,比現有最佳結果提升了2BLEU以上。在WMT2014英法翻譯任務上,我們成功建立了一個新的單模型,在8GPU上訓練3.5天就達到了41.8 BLEU的SOTA得分,這是目前最好模型訓練成本的很小比例。本文還表明,Transformer同樣可以很好的泛化到其他任務。
一、介紹
RNN(迴圈神經網路),LSTM[13],尤其是GRU(門控迴圈神經網路)[7]已經穩定地成為序列建模和轉換問題領域(如語言建模、機器翻譯[35, 2, 5])的最佳方法。大量的工作在不斷努力擴充迴圈語言模型和編碼器-解碼器架構[38, 24, 14]的能力邊界。
迴圈模型通常沿輸入和輸出序列的符號位置進行計算,將位置與計算時間的步驟對齊後,將先前隱狀態 ht−1和位置 t作為輸入,生成一系列新的隱狀態ht。這種固有的序列性本質限制了訓練樣本的並行化,對更長的序列這個問題尤其嚴重,因為多個樣本之間記憶體限制了批處理。近來一些工作透過分解技巧[21]和條件計算[32]顯著提高了計算效率,而且條件計算還提高了模型效能。但序列計算的根本性約束依然存在。
注意力機制已成為各種序列建模和轉導模型任務最引人注目的元件,它支援對依賴項進行建模,而無需考慮它們在輸入或輸出序列中的距離[2, 19]。然而,在全部但很少的情況下[27],這種注意力機制被用來與迴圈網路結合使用。
本作中,我們提出的Transfomer是一種規避迴圈的模型架構,完全依賴注意力機制來繪製輸入和輸出之間的全域性依賴關係。在8個P100 GPU上經過短短12小時的訓練後,Transformer就實現了更多的並行化,並在翻譯質量方面達到了新水平。
ht。這種固有的序列性本質限制了訓練樣本的並行化,對更長的序列這個問題尤其嚴重,因為多個樣本之間記憶體限制了批處理。近來一些工作透過分解技巧[21]和條件計算[32]顯著提高了計算效率,而且條件計算還提高了模型效能。但序列計算的根本性約束依然存在。
注意力機制已成為各種序列建模和轉導模型任務最引人注目的元件,它支援對依賴項進行建模,而無需考慮它們在輸入或輸出序列中的距離[2, 19]。然而,在全部但很少的情況下[27],這種注意力機制被用來與迴圈網路結合使用。
本作中,我們提出的Transfomer是一種規避迴圈的模型架構,完全依賴注意力機制來繪製輸入和輸出之間的全域性依賴關係。在8個P100 GPU上經過短短12小時的訓練後,Transformer就實現了更多的並行化,並在翻譯質量方面達到了新水平。
t作為輸入,生成一系列新的隱狀態ht。這種固有的序列性本質限制了訓練樣本的並行化,對更長的序列這個問題尤其嚴重,因為多個樣本之間記憶體限制了批處理。近來一些工作透過分解技巧[21]和條件計算[32]顯著提高了計算效率,而且條件計算還提高了模型效能。但序列計算的根本性約束依然存在。
注意力機制已成為各種序列建模和轉導模型任務最引人注目的元件,它支援對依賴項進行建模,而無需考慮它們在輸入或輸出序列中的距離[2, 19]。然而,在全部但很少的情況下[27],這種注意力機制被用來與迴圈網路結合使用。
本作中,我們提出的Transfomer是一種規避迴圈的模型架構,完全依賴注意力機制來繪製輸入和輸出之間的全域性依賴關係。在8個P100 GPU上經過短短12小時的訓練後,Transformer就實現了更多的並行化,並在翻譯質量方面達到了新水平。
ht−1和位置 t作為輸入,生成一系列新的隱狀態ht。這種固有的序列性本質限制了訓練樣本的並行化,對更長的序列這個問題尤其嚴重,因為多個樣本之間記憶體限制了批處理。近來一些工作透過分解技巧[21]和條件計算[32]顯著提高了計算效率,而且條件計算還提高了模型效能。但序列計算的根本性約束依然存在。
注意力機制已成為各種序列建模和轉導模型任務最引人注目的元件,它支援對依賴項進行建模,而無需考慮它們在輸入或輸出序列中的距離[2, 19]。然而,在全部但很少的情況下[27],這種注意力機制被用來與迴圈網路結合使用。
本作中,我們提出的Transfomer是一種規避迴圈的模型架構,完全依賴注意力機制來繪製輸入和輸出之間的全域性依賴關係。在8個P100 GPU上經過短短12小時的訓練後,Transformer就實現了更多的並行化,並在翻譯質量方面達到了新水平。
二、背景
減少序列型計算的目標也造就了擴充套件神經GPU[16]、ByteNet[18]和ConvS2S[9]的基石,他們使用卷及神經網路作為基礎構建模組,對對所有輸入和輸出位置平行計算隱式表徵。這些模型中,關聯來自兩個任意輸入或輸出位置的訊號所需的運算元量隨著位置之間的距離而增長,對於 ConvS2S 呈線性增長,而對於 ByteNet 則呈對數增長。這給學習長距離位置關係間的依賴造成了更多的困難[12]。在Transformer中,這個數量被消減到常數值,儘管由於平均注意力加權位置而降低了有效解析度,我們使用了多頭注意力來抵消這種影響,見3.2節。自注意力,有時也叫內部注意力,是一種將單個序列中不同位置關聯起來以計算序列表徵的一種注意力機制。自注意力已成功應用在各種任務中,包括閱讀理解、抽象摘要、文字蘊含和學習任務無關的句子表徵[4, 27, 28, 22]。端到端記憶網路在基於迴圈注意機制而不是序列對齊迴圈時,被證明在簡單語言問答和語言建模任務中表現較好[34]。據我們所知,Transformer還是第一個完全依賴自注意力來計算其輸入和輸出表示而不使用序列對齊RNN或卷積的轉換模型。接下來,我們將詳細介紹Transformer,使用自注意力的動機,並討論其相對於 [17、18] 和 [9] 等模型的優勢。
三、模型架構
大部分有競爭力的神經序列轉換模型都具有編碼器-解碼器結構[5, 2, 35]。這裡,編碼器將一組基於符號表示的輸入序列(x1,…,xn)對映到連續表示的序列z=(z1,…,zn)。給定z ,解碼器再產生一個輸出序列(y1,…,ym)。每個步驟中,模型都是自迴歸的[10],即將之前生成的序列作為輸入來生成下一個符號。Transformer也遵循這個整體架構,對編碼器和解碼器使用堆疊自注意力和逐點全連線層,分別如圖1的左半部分和右半部分所示。
(y1,…,ym)。每個步驟中,模型都是自迴歸的[10],即將之前生成的序列作為輸入來生成下一個符號。Transformer也遵循這個整體架構,對編碼器和解碼器使用堆疊自注意力和逐點全連線層,分別如圖1的左半部分和右半部分所示。
z ,解碼器再產生一個輸出序列(y1,…,ym)。每個步驟中,模型都是自迴歸的[10],即將之前生成的序列作為輸入來生成下一個符號。Transformer也遵循這個整體架構,對編碼器和解碼器使用堆疊自注意力和逐點全連線層,分別如圖1的左半部分和右半部分所示。
z=(z1,…,zn)。給定z ,解碼器再產生一個輸出序列(y1,…,ym)。每個步驟中,模型都是自迴歸的[10],即將之前生成的序列作為輸入來生成下一個符號。Transformer也遵循這個整體架構,對編碼器和解碼器使用堆疊自注意力和逐點全連線層,分別如圖1的左半部分和右半部分所示。
(x1,…,xn)對映到連續表示的序列z=(z1,…,zn)。給定z ,解碼器再產生一個輸出序列(y1,…,ym)。每個步驟中,模型都是自迴歸的[10],即將之前生成的序列作為輸入來生成下一個符號。Transformer也遵循這個整體架構,對編碼器和解碼器使用堆疊自注意力和逐點全連線層,分別如圖1的左半部分和右半部分所示。
3.1 編碼器和解碼器棧
編碼器:編碼器由N=6個相同層的棧構成。每層有兩個子層。第一個子層為多頭自注意力機制,第二個是簡單的逐點全連線前饋網路。在兩個子層之間使用殘差連線[11],接著進行層歸一化(Layer Normalization)[1],即每個子層的輸出為LayerNorm(x+Sublayer(x)),其中Sublayer(x)是子層本身所實現的函式。為了利用上這些殘差連線,所有模型中的子層包括嵌入層都產出維度dmodel=512的輸出。解碼器:解碼器也由N=6個相同層的棧構成。在編碼層的兩個子層之外,解碼層又插入了第三個子層,用作在編碼器棧的輸出應用多頭注意力。類似於編碼器,每個子層使用了殘差連線,再做層歸一化。我們還修改了解碼棧中的自注意力子層以防止位置可以注意到後續的位置,即結合“輸出嵌入偏移一個位置”這樣一個事實, 使用掩碼來確保對位置i的預測只能依賴於位置小於i的已知輸出。
i的已知輸出。
i的預測只能依賴於位置小於i的已知輸出。
N=6個相同層的棧構成。在編碼層的兩個子層之外,解碼層又插入了第三個子層,用作在編碼器棧的輸出應用多頭注意力。類似於編碼器,每個子層使用了殘差連線,再做層歸一化。我們還修改了解碼棧中的自注意力子層以防止位置可以注意到後續的位置,即結合“輸出嵌入偏移一個位置”這樣一個事實, 使用掩碼來確保對位置i的預測只能依賴於位置小於i的已知輸出。
dmodel=512的輸出。解碼器:解碼器也由N=6個相同層的棧構成。在編碼層的兩個子層之外,解碼層又插入了第三個子層,用作在編碼器棧的輸出應用多頭注意力。類似於編碼器,每個子層使用了殘差連線,再做層歸一化。我們還修改了解碼棧中的自注意力子層以防止位置可以注意到後續的位置,即結合“輸出嵌入偏移一個位置”這樣一個事實, 使用掩碼來確保對位置i的預測只能依賴於位置小於i的已知輸出。
Sublayer(x)是子層本身所實現的函式。為了利用上這些殘差連線,所有模型中的子層包括嵌入層都產出維度dmodel=512的輸出。解碼器:解碼器也由N=6個相同層的棧構成。在編碼層的兩個子層之外,解碼層又插入了第三個子層,用作在編碼器棧的輸出應用多頭注意力。類似於編碼器,每個子層使用了殘差連線,再做層歸一化。我們還修改了解碼棧中的自注意力子層以防止位置可以注意到後續的位置,即結合“輸出嵌入偏移一個位置”這樣一個事實, 使用掩碼來確保對位置i的預測只能依賴於位置小於i的已知輸出。
LayerNorm(x+Sublayer(x)),其中Sublayer(x)是子層本身所實現的函式。為了利用上這些殘差連線,所有模型中的子層包括嵌入層都產出維度dmodel=512的輸出。解碼器:解碼器也由N=6個相同層的棧構成。在編碼層的兩個子層之外,解碼層又插入了第三個子層,用作在編碼器棧的輸出應用多頭注意力。類似於編碼器,每個子層使用了殘差連線,再做層歸一化。我們還修改了解碼棧中的自注意力子層以防止位置可以注意到後續的位置,即結合“輸出嵌入偏移一個位置”這樣一個事實, 使用掩碼來確保對位置i的預測只能依賴於位置小於i的已知輸出。
N=6個相同層的棧構成。每層有兩個子層。第一個子層為多頭自注意力機制,第二個是簡單的逐點全連線前饋網路。在兩個子層之間使用殘差連線[11],接著進行層歸一化(Layer Normalization)[1],即每個子層的輸出為LayerNorm(x+Sublayer(x)),其中Sublayer(x)是子層本身所實現的函式。為了利用上這些殘差連線,所有模型中的子層包括嵌入層都產出維度dmodel=512的輸出。解碼器:解碼器也由N=6個相同層的棧構成。在編碼層的兩個子層之外,解碼層又插入了第三個子層,用作在編碼器棧的輸出應用多頭注意力。類似於編碼器,每個子層使用了殘差連線,再做層歸一化。我們還修改了解碼棧中的自注意力子層以防止位置可以注意到後續的位置,即結合“輸出嵌入偏移一個位置”這樣一個事實, 使用掩碼來確保對位置i的預測只能依賴於位置小於i的已知輸出。
解碼器:解碼器也由N=6個相同層的棧構成。在編碼層的兩個子層之外,解碼層又插入了第三個子層,用作在編碼器棧的輸出應用多頭注意力。類似於編碼器,每個子層使用了殘差連線,再做層歸一化。我們還修改了解碼棧中的自注意力子層以防止位置可以注意到後續的位置,即結合“輸出嵌入偏移一個位置”這樣一個事實, 使用掩碼來確保對位置i的預測只能依賴於位置小於i的已知輸出。
i的已知輸出。
i的預測只能依賴於位置小於i的已知輸出。
N=6個相同層的棧構成。在編碼層的兩個子層之外,解碼層又插入了第三個子層,用作在編碼器棧的輸出應用多頭注意力。類似於編碼器,每個子層使用了殘差連線,再做層歸一化。我們還修改了解碼棧中的自注意力子層以防止位置可以注意到後續的位置,即結合“輸出嵌入偏移一個位置”這樣一個事實, 使用掩碼來確保對位置i的預測只能依賴於位置小於i的已知輸出。
3.2 注意力
注意力函式可以描述成將查詢query和一組Key-value對兒對映到一個輸出output上,其中query、keys、values和ouput都是向量。output被計算成值的加權求和,而值對應的加權值由query和其對應key的相容性函式計算得出。
3.2.1 縮放點積注意力
我們的特殊注意力命名為“縮放點積注意力”(見圖2)。輸入由queries、dk個維度的keys和dv個維度的values構成,然後用所有的keys來算每個query的點積,再分別除以dk‾‾√,再應用softmax函式以獲得值values的權重。實踐中,我們是在一組queries上平行計算注意力函式的,然後再打包在一起放入矩陣Q中,同理,keys和values也打包在分別裝入矩陣K和V中。這樣計算的輸出矩陣就是:
V中。這樣計算的輸出矩陣就是:
K和V中。這樣計算的輸出矩陣就是:
Q中,同理,keys和values也打包在分別裝入矩陣K和V中。這樣計算的輸出矩陣就是:
dk‾‾√,再應用softmax函式以獲得值values的權重。實踐中,我們是在一組queries上平行計算注意力函式的,然後再打包在一起放入矩陣Q中,同理,keys和values也打包在分別裝入矩陣K和V中。這樣計算的輸出矩陣就是:
dv個維度的values構成,然後用所有的keys來算每個query的點積,再分別除以dk‾‾√,再應用softmax函式以獲得值values的權重。實踐中,我們是在一組queries上平行計算注意力函式的,然後再打包在一起放入矩陣Q中,同理,keys和values也打包在分別裝入矩陣K和V中。這樣計算的輸出矩陣就是:
dk個維度的keys和dv個維度的values構成,然後用所有的keys來算每個query的點積,再分別除以dk‾‾√,再應用softmax函式以獲得值values的權重。實踐中,我們是在一組queries上平行計算注意力函式的,然後再打包在一起放入矩陣Q中,同理,keys和values也打包在分別裝入矩陣K和V中。這樣計算的輸出矩陣就是:
Attention(Q,K,V)=softmax(QKTdk√)V
Attention(Q,K,V)=softmax(QKTdk√)V
兩個使用最多的注意力函式是加法注意力[2]和點積注意力。點積注意力的演算法與我們的相同,唯一區別是縮放係數dk‾‾√;加法注意力則使用帶一個隱藏層的前饋網路計算相容函式(compatibility function)。雖然兩者在在理論複雜度上比較接近,點積注意力卻因為可以利用高度最佳化的矩陣乘法程式碼而速度更快、更省空間。當dk較小時,兩種機制表現相當,而在沒有使用較大的dk時,加法注意力反而要優於點積注意力[3]。我們懷疑對於較大的dk,點積結果會變得很大,將 softmax 函式推入到具有極小梯度的區域(為了說明點積變大的原因,假設q和k的分別是均值為0,方差為1的獨立隨機變數,那麼他們的點積q·k=∑dki=1qiki也是均值為0,方差為dk)。為了抵消這種影響,我們將點積使用dk‾‾√縮放一下。
dk‾‾√縮放一下。
dk)。為了抵消這種影響,我們將點積使用dk‾‾√縮放一下。
q·k=∑dki=1qiki也是均值為0,方差為dk)。為了抵消這種影響,我們將點積使用dk‾‾√縮放一下。
k的分別是均值為0,方差為1的獨立隨機變數,那麼他們的點積q·k=∑dki=1qiki也是均值為0,方差為dk)。為了抵消這種影響,我們將點積使用dk‾‾√縮放一下。
q和k的分別是均值為0,方差為1的獨立隨機變數,那麼他們的點積q·k=∑dki=1qiki也是均值為0,方差為dk)。為了抵消這種影響,我們將點積使用dk‾‾√縮放一下。
dk,點積結果會變得很大,將 softmax 函式推入到具有極小梯度的區域(為了說明點積變大的原因,假設q和k的分別是均值為0,方差為1的獨立隨機變數,那麼他們的點積q·k=∑dki=1qiki也是均值為0,方差為dk)。為了抵消這種影響,我們將點積使用dk‾‾√縮放一下。
dk時,加法注意力反而要優於點積注意力[3]。我們懷疑對於較大的dk,點積結果會變得很大,將 softmax 函式推入到具有極小梯度的區域(為了說明點積變大的原因,假設q和k的分別是均值為0,方差為1的獨立隨機變數,那麼他們的點積q·k=∑dki=1qiki也是均值為0,方差為dk)。為了抵消這種影響,我們將點積使用dk‾‾√縮放一下。
dk較小時,兩種機制表現相當,而在沒有使用較大的dk時,加法注意力反而要優於點積注意力[3]。我們懷疑對於較大的dk,點積結果會變得很大,將 softmax 函式推入到具有極小梯度的區域(為了說明點積變大的原因,假設q和k的分別是均值為0,方差為1的獨立隨機變數,那麼他們的點積q·k=∑dki=1qiki也是均值為0,方差為dk)。為了抵消這種影響,我們將點積使用dk‾‾√縮放一下。
dk‾‾√;加法注意力則使用帶一個隱藏層的前饋網路計算相容函式(compatibility function)。雖然兩者在在理論複雜度上比較接近,點積注意力卻因為可以利用高度最佳化的矩陣乘法程式碼而速度更快、更省空間。當dk較小時,兩種機制表現相當,而在沒有使用較大的dk時,加法注意力反而要優於點積注意力[3]。我們懷疑對於較大的dk,點積結果會變得很大,將 softmax 函式推入到具有極小梯度的區域(為了說明點積變大的原因,假設q和k的分別是均值為0,方差為1的獨立隨機變數,那麼他們的點積q·k=∑dki=1qiki也是均值為0,方差為dk)。為了抵消這種影響,我們將點積使用dk‾‾√縮放一下。
3.2.2 多頭注意力
相比對dmodel維的keys、values和queries執行單注意力函式,我們發現使用不同、習得的線性對映分別對映到dk、dk和dv維h遍,會更加有用。對queries、keys和values的對映後的版本再並行執行注意力函式產生dv維的輸出值,再將這些值拼接(concatenate)起來,再做一次線性對映產出最終的結果值,參見圖2。
多頭注意力讓模型可以聯合關注到來自不同位置不同表徵空間的資訊。如果只有一個注意力頭,值平均會抑制這些資訊。
MultiHead(Q,K,V)=Concat(head1,…,headh)WO
其中,
headi=Attention(QWQi,KWKi,VWiV)
其中,對映就是引數矩陣WQi∈ℝdmodel×dk,WKi∈ℝdmodel×dk,WVi∈ℝdmodel×dv和WOi∈ℝhdv×dmodel。
本次工作中,我們使用了h=8 的並行注意力層(也就是頭head)。每個dk=dv=dmodel/h=64由於每個頭都消減了維度,最後的總計算成本和帶全維度的單注意力頭差不多。
dk=dv=dmodel/h=64由於每個頭都消減了維度,最後的總計算成本和帶全維度的單注意力頭差不多。
h=8 的並行注意力層(也就是頭head)。每個dk=dv=dmodel/h=64由於每個頭都消減了維度,最後的總計算成本和帶全維度的單注意力頭差不多。
WOi∈ℝhdv×dmodel。
本次工作中,我們使用了h=8 的並行注意力層(也就是頭head)。每個dk=dv=dmodel/h=64由於每個頭都消減了維度,最後的總計算成本和帶全維度的單注意力頭差不多。
WVi∈ℝdmodel×dv和WOi∈ℝhdv×dmodel。
本次工作中,我們使用了h=8 的並行注意力層(也就是頭head)。每個dk=dv=dmodel/h=64由於每個頭都消減了維度,最後的總計算成本和帶全維度的單注意力頭差不多。
WKi∈ℝdmodel×dk,WVi∈ℝdmodel×dv和WOi∈ℝhdv×dmodel。
本次工作中,我們使用了h=8 的並行注意力層(也就是頭head)。每個dk=dv=dmodel/h=64由於每個頭都消減了維度,最後的總計算成本和帶全維度的單注意力頭差不多。
WQi∈ℝdmodel×dk,WKi∈ℝdmodel×dk,WVi∈ℝdmodel×dv和WOi∈ℝhdv×dmodel。
本次工作中,我們使用了h=8 的並行注意力層(也就是頭head)。每個dk=dv=dmodel/h=64由於每個頭都消減了維度,最後的總計算成本和帶全維度的單注意力頭差不多。
headi=Attention(QWQi,KWKi,VWiV)
其中,對映就是引數矩陣WQi∈ℝdmodel×dk,WKi∈ℝdmodel×dk,WVi∈ℝdmodel×dv和WOi∈ℝhdv×dmodel。
本次工作中,我們使用了h=8 的並行注意力層(也就是頭head)。每個dk=dv=dmodel/h=64由於每個頭都消減了維度,最後的總計算成本和帶全維度的單注意力頭差不多。
MultiHead(Q,K,V)=Concat(head1,…,headh)WO
其中,
headi=Attention(QWQi,KWKi,VWiV)
其中,對映就是引數矩陣WQi∈ℝdmodel×dk,WKi∈ℝdmodel×dk,WVi∈ℝdmodel×dv和WOi∈ℝhdv×dmodel。
本次工作中,我們使用了h=8 的並行注意力層(也就是頭head)。每個dk=dv=dmodel/h=64由於每個頭都消減了維度,最後的總計算成本和帶全維度的單注意力頭差不多。
dv維的輸出值,再將這些值拼接(concatenate)起來,再做一次線性對映產出最終的結果值,參見圖2。
多頭注意力讓模型可以聯合關注到來自不同位置不同表徵空間的資訊。如果只有一個注意力頭,值平均會抑制這些資訊。
MultiHead(Q,K,V)=Concat(head1,…,headh)WO
其中,
headi=Attention(QWQi,KWKi,VWiV)
其中,對映就是引數矩陣WQi∈ℝdmodel×dk,WKi∈ℝdmodel×dk,WVi∈ℝdmodel×dv和WOi∈ℝhdv×dmodel。
本次工作中,我們使用了h=8 的並行注意力層(也就是頭head)。每個dk=dv=dmodel/h=64由於每個頭都消減了維度,最後的總計算成本和帶全維度的單注意力頭差不多。
h遍,會更加有用。對queries、keys和values的對映後的版本再並行執行注意力函式產生dv維的輸出值,再將這些值拼接(concatenate)起來,再做一次線性對映產出最終的結果值,參見圖2。
多頭注意力讓模型可以聯合關注到來自不同位置不同表徵空間的資訊。如果只有一個注意力頭,值平均會抑制這些資訊。
MultiHead(Q,K,V)=Concat(head1,…,headh)WO
其中,
headi=Attention(QWQi,KWKi,VWiV)
其中,對映就是引數矩陣WQi∈ℝdmodel×dk,WKi∈ℝdmodel×dk,WVi∈ℝdmodel×dv和WOi∈ℝhdv×dmodel。
本次工作中,我們使用了h=8 的並行注意力層(也就是頭head)。每個dk=dv=dmodel/h=64由於每個頭都消減了維度,最後的總計算成本和帶全維度的單注意力頭差不多。
dv維h遍,會更加有用。對queries、keys和values的對映後的版本再並行執行注意力函式產生dv維的輸出值,再將這些值拼接(concatenate)起來,再做一次線性對映產出最終的結果值,參見圖2。
多頭注意力讓模型可以聯合關注到來自不同位置不同表徵空間的資訊。如果只有一個注意力頭,值平均會抑制這些資訊。
MultiHead(Q,K,V)=Concat(head1,…,headh)WO
其中,
headi=Attention(QWQi,KWKi,VWiV)
其中,對映就是引數矩陣WQi∈ℝdmodel×dk,WKi∈ℝdmodel×dk,WVi∈ℝdmodel×dv和WOi∈ℝhdv×dmodel。
本次工作中,我們使用了h=8 的並行注意力層(也就是頭head)。每個dk=dv=dmodel/h=64由於每個頭都消減了維度,最後的總計算成本和帶全維度的單注意力頭差不多。
dk和dv維h遍,會更加有用。對queries、keys和values的對映後的版本再並行執行注意力函式產生dv維的輸出值,再將這些值拼接(concatenate)起來,再做一次線性對映產出最終的結果值,參見圖2。
多頭注意力讓模型可以聯合關注到來自不同位置不同表徵空間的資訊。如果只有一個注意力頭,值平均會抑制這些資訊。
MultiHead(Q,K,V)=Concat(head1,…,headh)WO
其中,
headi=Attention(QWQi,KWKi,VWiV)
其中,對映就是引數矩陣WQi∈ℝdmodel×dk,WKi∈ℝdmodel×dk,WVi∈ℝdmodel×dv和WOi∈ℝhdv×dmodel。
本次工作中,我們使用了h=8 的並行注意力層(也就是頭head)。每個dk=dv=dmodel/h=64由於每個頭都消減了維度,最後的總計算成本和帶全維度的單注意力頭差不多。
dk、dk和dv維h遍,會更加有用。對queries、keys和values的對映後的版本再並行執行注意力函式產生dv維的輸出值,再將這些值拼接(concatenate)起來,再做一次線性對映產出最終的結果值,參見圖2。
多頭注意力讓模型可以聯合關注到來自不同位置不同表徵空間的資訊。如果只有一個注意力頭,值平均會抑制這些資訊。
MultiHead(Q,K,V)=Concat(head1,…,headh)WO
其中,
headi=Attention(QWQi,KWKi,VWiV)
其中,對映就是引數矩陣WQi∈ℝdmodel×dk,WKi∈ℝdmodel×dk,WVi∈ℝdmodel×dv和WOi∈ℝhdv×dmodel。
本次工作中,我們使用了h=8 的並行注意力層(也就是頭head)。每個dk=dv=dmodel/h=64由於每個頭都消減了維度,最後的總計算成本和帶全維度的單注意力頭差不多。
dmodel維的keys、values和queries執行單注意力函式,我們發現使用不同、習得的線性對映分別對映到dk、dk和dv維h遍,會更加有用。對queries、keys和values的對映後的版本再並行執行注意力函式產生dv維的輸出值,再將這些值拼接(concatenate)起來,再做一次線性對映產出最終的結果值,參見圖2。
多頭注意力讓模型可以聯合關注到來自不同位置不同表徵空間的資訊。如果只有一個注意力頭,值平均會抑制這些資訊。
MultiHead(Q,K,V)=Concat(head1,…,headh)WO
其中,
headi=Attention(QWQi,KWKi,VWiV)
其中,對映就是引數矩陣WQi∈ℝdmodel×dk,WKi∈ℝdmodel×dk,WVi∈ℝdmodel×dv和WOi∈ℝhdv×dmodel。
本次工作中,我們使用了h=8 的並行注意力層(也就是頭head)。每個dk=dv=dmodel/h=64由於每個頭都消減了維度,最後的總計算成本和帶全維度的單注意力頭差不多。
3.2.3 模型中注意力的應用
Transformer以三種方式使用了多頭注意力:
- 在“編碼器-解碼器”層中,queries來自與之前的解碼層,記憶keys和values來自於編碼器的輸出。這使得解碼器的每個位置都能關注到輸入序列的所有位置。這模仿了sequence-to-sequence模型[38, 2, 9]中的典型的編碼器-解碼器機制。
- 編碼器包含自注意力層。自注意力層的keys、values和queries全部都來自同一個地方,即編碼器中前一層的輸出。編碼器中的每個位置都能關注到編碼器前一層的所有位置。
- 類似地,解碼器的自注意力層允許解碼器的每個位置都能關注到解碼器中的所有位置。我們需要防止解碼器中的資訊向左流動以保持自迴歸特性。我們透過在縮放點積注意力的內部遮蓋掉(設定為 -∞)與非法連線相對應的softmax的 輸入中的所有值來實現這一點。參見圖2。
3.3 逐位前饋網路
除了注意力子層,編碼器和解碼器的每一層還包含一個全連線前饋網路,它會對每個位置都會相同地、獨立地應用一遍,它包括兩個線性變換,中間有一個ReLU啟用函式。
FFN(x)=max(0,xW1+b1)W2+b2
FFN(x)=max(0,xW1+b1)W2+b2
線性轉換在所有的位置上都是一樣的,但他們在層與層之間使用不同的引數。另一種描述的方式是kernel size為1的兩個卷積。輸入和輸出的維度是dmodel=512,內層的維度為dff=2048。
dff=2048。
dmodel=512,內層的維度為dff=2048。
3.4 embedding和softmax
跟其他序列轉換模型類似,我們使用學習到的embeddings將輸入tokens和輸出tokens轉換成dmodel維的向量。我們也使用通常學習到的線性變換和softmax函式將解碼器的輸出轉換為預測的下一個token的機率。模型的兩個embedding層和前置softmax線性轉換採用權重共享矩陣,類似於[30]。在embedding層,使用dmodel‾‾‾‾‾‾√乘以這些權重。
dmodel‾‾‾‾‾‾√乘以這些權重。
dmodel維的向量。我們也使用通常學習到的線性變換和softmax函式將解碼器的輸出轉換為預測的下一個token的機率。模型的兩個embedding層和前置softmax線性轉換採用權重共享矩陣,類似於[30]。在embedding層,使用dmodel‾‾‾‾‾‾√乘以這些權重。
3.5 位置編碼
既然我們的模型不再使用迴圈和卷積,為了讓模型能利用上序列的順序,我們必須要注入一些與token在序列中的相對和絕對位置相關的資訊。為此,我們在編碼和解碼棧底部的輸入embedding中增加了“位置編碼”,位置編碼與嵌入具有相同的維度dmodel,因此可以將兩者相加。位置編碼有很多方案選擇,學習的和固定的[9]。
本工作中,我們使用不同頻率的正弦和餘弦函式:
PE(pos,2i)=sin(pos/10002i/dmodel)
PE(pos,2i+1)=cos(pos/10002i/dmodel)
其中pos是位置,i是維度。也就是,位置編碼的每個維度都對應一個正弦曲線。波長形成從2π到10000·2π的幾何級數。我們選擇這個函式是因為我們假定模型可以很容易依賴相對位置來學會注意力,因為對於任何固定的偏移量k,PEpos+k可以用PEpos的線性函式來表徵。我們還嘗試了使用學習的位置嵌入[0],發現這兩個版本效果基本相同(見表3行(E))。我們最終選擇正弦版本,是因為他可以讓模型推斷出比訓練期間遇到的序列更長的序列。我們還嘗試使用學習的位置嵌入 [9],發現這兩個版本產生了幾乎相同的結果。 我們選擇了正弦版本,因為它可以讓模型推斷出比訓練期間遇到的序列長度更長的序列長度。
PEpos的線性函式來表徵。我們還嘗試了使用學習的位置嵌入[0],發現這兩個版本效果基本相同(見表3行(E))。我們最終選擇正弦版本,是因為他可以讓模型推斷出比訓練期間遇到的序列更長的序列。我們還嘗試使用學習的位置嵌入 [9],發現這兩個版本產生了幾乎相同的結果。 我們選擇了正弦版本,因為它可以讓模型推斷出比訓練期間遇到的序列長度更長的序列長度。
PEpos+k可以用PEpos的線性函式來表徵。我們還嘗試了使用學習的位置嵌入[0],發現這兩個版本效果基本相同(見表3行(E))。我們最終選擇正弦版本,是因為他可以讓模型推斷出比訓練期間遇到的序列更長的序列。我們還嘗試使用學習的位置嵌入 [9],發現這兩個版本產生了幾乎相同的結果。 我們選擇了正弦版本,因為它可以讓模型推斷出比訓練期間遇到的序列長度更長的序列長度。
k,PEpos+k可以用PEpos的線性函式來表徵。我們還嘗試了使用學習的位置嵌入[0],發現這兩個版本效果基本相同(見表3行(E))。我們最終選擇正弦版本,是因為他可以讓模型推斷出比訓練期間遇到的序列更長的序列。我們還嘗試使用學習的位置嵌入 [9],發現這兩個版本產生了幾乎相同的結果。 我們選擇了正弦版本,因為它可以讓模型推斷出比訓練期間遇到的序列長度更長的序列長度。
10000·2π的幾何級數。我們選擇這個函式是因為我們假定模型可以很容易依賴相對位置來學會注意力,因為對於任何固定的偏移量k,PEpos+k可以用PEpos的線性函式來表徵。我們還嘗試了使用學習的位置嵌入[0],發現這兩個版本效果基本相同(見表3行(E))。我們最終選擇正弦版本,是因為他可以讓模型推斷出比訓練期間遇到的序列更長的序列。我們還嘗試使用學習的位置嵌入 [9],發現這兩個版本產生了幾乎相同的結果。 我們選擇了正弦版本,因為它可以讓模型推斷出比訓練期間遇到的序列長度更長的序列長度。
2π到10000·2π的幾何級數。我們選擇這個函式是因為我們假定模型可以很容易依賴相對位置來學會注意力,因為對於任何固定的偏移量k,PEpos+k可以用PEpos的線性函式來表徵。我們還嘗試了使用學習的位置嵌入[0],發現這兩個版本效果基本相同(見表3行(E))。我們最終選擇正弦版本,是因為他可以讓模型推斷出比訓練期間遇到的序列更長的序列。我們還嘗試使用學習的位置嵌入 [9],發現這兩個版本產生了幾乎相同的結果。 我們選擇了正弦版本,因為它可以讓模型推斷出比訓練期間遇到的序列長度更長的序列長度。
i是維度。也就是,位置編碼的每個維度都對應一個正弦曲線。波長形成從2π到10000·2π的幾何級數。我們選擇這個函式是因為我們假定模型可以很容易依賴相對位置來學會注意力,因為對於任何固定的偏移量k,PEpos+k可以用PEpos的線性函式來表徵。我們還嘗試了使用學習的位置嵌入[0],發現這兩個版本效果基本相同(見表3行(E))。我們最終選擇正弦版本,是因為他可以讓模型推斷出比訓練期間遇到的序列更長的序列。我們還嘗試使用學習的位置嵌入 [9],發現這兩個版本產生了幾乎相同的結果。 我們選擇了正弦版本,因為它可以讓模型推斷出比訓練期間遇到的序列長度更長的序列長度。
pos是位置,i是維度。也就是,位置編碼的每個維度都對應一個正弦曲線。波長形成從2π到10000·2π的幾何級數。我們選擇這個函式是因為我們假定模型可以很容易依賴相對位置來學會注意力,因為對於任何固定的偏移量k,PEpos+k可以用PEpos的線性函式來表徵。我們還嘗試了使用學習的位置嵌入[0],發現這兩個版本效果基本相同(見表3行(E))。我們最終選擇正弦版本,是因為他可以讓模型推斷出比訓練期間遇到的序列更長的序列。我們還嘗試使用學習的位置嵌入 [9],發現這兩個版本產生了幾乎相同的結果。 我們選擇了正弦版本,因為它可以讓模型推斷出比訓練期間遇到的序列長度更長的序列長度。
PE(pos,2i+1)=cos(pos/10002i/dmodel)
其中pos是位置,i是維度。也就是,位置編碼的每個維度都對應一個正弦曲線。波長形成從2π到10000·2π的幾何級數。我們選擇這個函式是因為我們假定模型可以很容易依賴相對位置來學會注意力,因為對於任何固定的偏移量k,PEpos+k可以用PEpos的線性函式來表徵。我們還嘗試了使用學習的位置嵌入[0],發現這兩個版本效果基本相同(見表3行(E))。我們最終選擇正弦版本,是因為他可以讓模型推斷出比訓練期間遇到的序列更長的序列。我們還嘗試使用學習的位置嵌入 [9],發現這兩個版本產生了幾乎相同的結果。 我們選擇了正弦版本,因為它可以讓模型推斷出比訓練期間遇到的序列長度更長的序列長度。
PE(pos,2i)=sin(pos/10002i/dmodel)
PE(pos,2i+1)=cos(pos/10002i/dmodel)
其中pos是位置,i是維度。也就是,位置編碼的每個維度都對應一個正弦曲線。波長形成從2π到10000·2π的幾何級數。我們選擇這個函式是因為我們假定模型可以很容易依賴相對位置來學會注意力,因為對於任何固定的偏移量k,PEpos+k可以用PEpos的線性函式來表徵。我們還嘗試了使用學習的位置嵌入[0],發現這兩個版本效果基本相同(見表3行(E))。我們最終選擇正弦版本,是因為他可以讓模型推斷出比訓練期間遇到的序列更長的序列。我們還嘗試使用學習的位置嵌入 [9],發現這兩個版本產生了幾乎相同的結果。 我們選擇了正弦版本,因為它可以讓模型推斷出比訓練期間遇到的序列長度更長的序列長度。
dmodel,因此可以將兩者相加。位置編碼有很多方案選擇,學習的和固定的[9]。
本工作中,我們使用不同頻率的正弦和餘弦函式:
PE(pos,2i)=sin(pos/10002i/dmodel)
PE(pos,2i+1)=cos(pos/10002i/dmodel)
其中pos是位置,i是維度。也就是,位置編碼的每個維度都對應一個正弦曲線。波長形成從2π到10000·2π的幾何級數。我們選擇這個函式是因為我們假定模型可以很容易依賴相對位置來學會注意力,因為對於任何固定的偏移量k,PEpos+k可以用PEpos的線性函式來表徵。我們還嘗試了使用學習的位置嵌入[0],發現這兩個版本效果基本相同(見表3行(E))。我們最終選擇正弦版本,是因為他可以讓模型推斷出比訓練期間遇到的序列更長的序列。我們還嘗試使用學習的位置嵌入 [9],發現這兩個版本產生了幾乎相同的結果。 我們選擇了正弦版本,因為它可以讓模型推斷出比訓練期間遇到的序列長度更長的序列長度。
四、為什麼選擇自注意力
本節我們將從各個方面將自注意力層與迴圈和卷積層進行比較,這些迴圈和卷積層通常用於將一個可變長的符號表示序列(x1,…,xn)對映到另一個等長序列(z1,…,zn),其中xi,zi∈ℝd,例如典型的序列轉換編碼器或解碼器的隱藏層。我們使用自注意力的動機主要來自於三個方面的考慮。
一個是每層的總計算複雜度。另一個是計算量可以並行化,一是每層的總計算複雜度。 另一個是可以並行化的計算量可用所需的最小順序運算元來衡量。
第三個是網路中遠端依賴關係之間的路徑長度。 學習長程依賴是許多序列轉換任務中的關鍵挑戰。 影響學習這種依賴性的能力的一個關鍵因素是前向和後向訊號必須在網路中遍歷的路徑長度。
輸入和輸出序列中任意位置組合之間的這些路徑越短,就越容易學習遠端依賴[12]。 因此,我們還比較了由不同層型別組成的網路中任意兩個輸入和輸出位置之間的最大路徑長度。如表 1 所示,恆定數量的順序執行操作自注意力層就可以將所有位置相互連線起來,而迴圈層則需要 O(n)的順序操作。在計算複雜度方面,當序列長度n小於表徵維度d時,自注意力層比迴圈層更快,這通常是機器翻譯中最先進模型使用的句子表示的情況,例如word-piece [38]和byte-pair [31] 表徵法。為了提高涉及非常長序列的任務的計算效能,自注意力可以限制為僅考慮大小為r的鄰域。輸入序列以各自的輸出位置為中心。這會將最大路徑長度增加到O(n/r)。我們計劃在未來的工作中進一步研究這種方法。
核心寬度k的單個卷積層不會連線所有輸入和輸出位置對。這樣做需要在連續相同核心(contiguous kernels)的情況下堆疊O(n/k)個卷積層,或者在擴張卷積(dilated convolutions[18])的情況下需要O(logk(n)),從而在網路中增加了任意兩個位置之間的最長路徑。卷積層通常比迴圈層昂貴k倍。然而,可分離卷積(Separable convolutions) [6] 將複雜度大大降低到O(k·n·d+n·d2)。然而,即使k=n,可分離卷積的複雜度也等於自注意力層和逐點前饋層的組合(我們在模型中採用的方法)。
作為附帶的好處,自注意力可以產生更多可解釋的模型。我們對模型檢查了其注意力分佈,並在附錄中展示和討論了相關示例。不僅單個注意力頭清楚地學習執行不同的任務,而且許多似乎表現出與句子的句法和語義結構相關的行為。
k=n,可分離卷積的複雜度也等於自注意力層和逐點前饋層的組合(我們在模型中採用的方法)。
作為附帶的好處,自注意力可以產生更多可解釋的模型。我們對模型檢查了其注意力分佈,並在附錄中展示和討論了相關示例。不僅單個注意力頭清楚地學習執行不同的任務,而且許多似乎表現出與句子的句法和語義結構相關的行為。
O(k·n·d+n·d2)。然而,即使k=n,可分離卷積的複雜度也等於自注意力層和逐點前饋層的組合(我們在模型中採用的方法)。
作為附帶的好處,自注意力可以產生更多可解釋的模型。我們對模型檢查了其注意力分佈,並在附錄中展示和討論了相關示例。不僅單個注意力頭清楚地學習執行不同的任務,而且許多似乎表現出與句子的句法和語義結構相關的行為。
k倍。然而,可分離卷積(Separable convolutions) [6] 將複雜度大大降低到O(k·n·d+n·d2)。然而,即使k=n,可分離卷積的複雜度也等於自注意力層和逐點前饋層的組合(我們在模型中採用的方法)。
作為附帶的好處,自注意力可以產生更多可解釋的模型。我們對模型檢查了其注意力分佈,並在附錄中展示和討論了相關示例。不僅單個注意力頭清楚地學習執行不同的任務,而且許多似乎表現出與句子的句法和語義結構相關的行為。
O(logk(n)),從而在網路中增加了任意兩個位置之間的最長路徑。卷積層通常比迴圈層昂貴k倍。然而,可分離卷積(Separable convolutions) [6] 將複雜度大大降低到O(k·n·d+n·d2)。然而,即使k=n,可分離卷積的複雜度也等於自注意力層和逐點前饋層的組合(我們在模型中採用的方法)。
作為附帶的好處,自注意力可以產生更多可解釋的模型。我們對模型檢查了其注意力分佈,並在附錄中展示和討論了相關示例。不僅單個注意力頭清楚地學習執行不同的任務,而且許多似乎表現出與句子的句法和語義結構相關的行為。
O(n/k)個卷積層,或者在擴張卷積(dilated convolutions[18])的情況下需要O(logk(n)),從而在網路中增加了任意兩個位置之間的最長路徑。卷積層通常比迴圈層昂貴k倍。然而,可分離卷積(Separable convolutions) [6] 將複雜度大大降低到O(k·n·d+n·d2)。然而,即使k=n,可分離卷積的複雜度也等於自注意力層和逐點前饋層的組合(我們在模型中採用的方法)。
作為附帶的好處,自注意力可以產生更多可解釋的模型。我們對模型檢查了其注意力分佈,並在附錄中展示和討論了相關示例。不僅單個注意力頭清楚地學習執行不同的任務,而且許多似乎表現出與句子的句法和語義結構相關的行為。
k的單個卷積層不會連線所有輸入和輸出位置對。這樣做需要在連續相同核心(contiguous kernels)的情況下堆疊O(n/k)個卷積層,或者在擴張卷積(dilated convolutions[18])的情況下需要O(logk(n)),從而在網路中增加了任意兩個位置之間的最長路徑。卷積層通常比迴圈層昂貴k倍。然而,可分離卷積(Separable convolutions) [6] 將複雜度大大降低到O(k·n·d+n·d2)。然而,即使k=n,可分離卷積的複雜度也等於自注意力層和逐點前饋層的組合(我們在模型中採用的方法)。
作為附帶的好處,自注意力可以產生更多可解釋的模型。我們對模型檢查了其注意力分佈,並在附錄中展示和討論了相關示例。不僅單個注意力頭清楚地學習執行不同的任務,而且許多似乎表現出與句子的句法和語義結構相關的行為。
O(n/r)。我們計劃在未來的工作中進一步研究這種方法。
核心寬度k的單個卷積層不會連線所有輸入和輸出位置對。這樣做需要在連續相同核心(contiguous kernels)的情況下堆疊O(n/k)個卷積層,或者在擴張卷積(dilated convolutions[18])的情況下需要O(logk(n)),從而在網路中增加了任意兩個位置之間的最長路徑。卷積層通常比迴圈層昂貴k倍。然而,可分離卷積(Separable convolutions) [6] 將複雜度大大降低到O(k·n·d+n·d2)。然而,即使k=n,可分離卷積的複雜度也等於自注意力層和逐點前饋層的組合(我們在模型中採用的方法)。
作為附帶的好處,自注意力可以產生更多可解釋的模型。我們對模型檢查了其注意力分佈,並在附錄中展示和討論了相關示例。不僅單個注意力頭清楚地學習執行不同的任務,而且許多似乎表現出與句子的句法和語義結構相關的行為。
r的鄰域。輸入序列以各自的輸出位置為中心。這會將最大路徑長度增加到O(n/r)。我們計劃在未來的工作中進一步研究這種方法。
核心寬度k的單個卷積層不會連線所有輸入和輸出位置對。這樣做需要在連續相同核心(contiguous kernels)的情況下堆疊O(n/k)個卷積層,或者在擴張卷積(dilated convolutions[18])的情況下需要O(logk(n)),從而在網路中增加了任意兩個位置之間的最長路徑。卷積層通常比迴圈層昂貴k倍。然而,可分離卷積(Separable convolutions) [6] 將複雜度大大降低到O(k·n·d+n·d2)。然而,即使k=n,可分離卷積的複雜度也等於自注意力層和逐點前饋層的組合(我們在模型中採用的方法)。
作為附帶的好處,自注意力可以產生更多可解釋的模型。我們對模型檢查了其注意力分佈,並在附錄中展示和討論了相關示例。不僅單個注意力頭清楚地學習執行不同的任務,而且許多似乎表現出與句子的句法和語義結構相關的行為。
d時,自注意力層比迴圈層更快,這通常是機器翻譯中最先進模型使用的句子表示的情況,例如word-piece [38]和byte-pair [31] 表徵法。為了提高涉及非常長序列的任務的計算效能,自注意力可以限制為僅考慮大小為r的鄰域。輸入序列以各自的輸出位置為中心。這會將最大路徑長度增加到O(n/r)。我們計劃在未來的工作中進一步研究這種方法。
核心寬度k的單個卷積層不會連線所有輸入和輸出位置對。這樣做需要在連續相同核心(contiguous kernels)的情況下堆疊O(n/k)個卷積層,或者在擴張卷積(dilated convolutions[18])的情況下需要O(logk(n)),從而在網路中增加了任意兩個位置之間的最長路徑。卷積層通常比迴圈層昂貴k倍。然而,可分離卷積(Separable convolutions) [6] 將複雜度大大降低到O(k·n·d+n·d2)。然而,即使k=n,可分離卷積的複雜度也等於自注意力層和逐點前饋層的組合(我們在模型中採用的方法)。
作為附帶的好處,自注意力可以產生更多可解釋的模型。我們對模型檢查了其注意力分佈,並在附錄中展示和討論了相關示例。不僅單個注意力頭清楚地學習執行不同的任務,而且許多似乎表現出與句子的句法和語義結構相關的行為。
n小於表徵維度d時,自注意力層比迴圈層更快,這通常是機器翻譯中最先進模型使用的句子表示的情況,例如word-piece [38]和byte-pair [31] 表徵法。為了提高涉及非常長序列的任務的計算效能,自注意力可以限制為僅考慮大小為r的鄰域。輸入序列以各自的輸出位置為中心。這會將最大路徑長度增加到O(n/r)。我們計劃在未來的工作中進一步研究這種方法。
核心寬度k的單個卷積層不會連線所有輸入和輸出位置對。這樣做需要在連續相同核心(contiguous kernels)的情況下堆疊O(n/k)個卷積層,或者在擴張卷積(dilated convolutions[18])的情況下需要O(logk(n)),從而在網路中增加了任意兩個位置之間的最長路徑。卷積層通常比迴圈層昂貴k倍。然而,可分離卷積(Separable convolutions) [6] 將複雜度大大降低到O(k·n·d+n·d2)。然而,即使k=n,可分離卷積的複雜度也等於自注意力層和逐點前饋層的組合(我們在模型中採用的方法)。
作為附帶的好處,自注意力可以產生更多可解釋的模型。我們對模型檢查了其注意力分佈,並在附錄中展示和討論了相關示例。不僅單個注意力頭清楚地學習執行不同的任務,而且許多似乎表現出與句子的句法和語義結構相關的行為。
O(n)的順序操作。在計算複雜度方面,當序列長度n小於表徵維度d時,自注意力層比迴圈層更快,這通常是機器翻譯中最先進模型使用的句子表示的情況,例如word-piece [38]和byte-pair [31] 表徵法。為了提高涉及非常長序列的任務的計算效能,自注意力可以限制為僅考慮大小為r的鄰域。輸入序列以各自的輸出位置為中心。這會將最大路徑長度增加到O(n/r)。我們計劃在未來的工作中進一步研究這種方法。
核心寬度k的單個卷積層不會連線所有輸入和輸出位置對。這樣做需要在連續相同核心(contiguous kernels)的情況下堆疊O(n/k)個卷積層,或者在擴張卷積(dilated convolutions[18])的情況下需要O(logk(n)),從而在網路中增加了任意兩個位置之間的最長路徑。卷積層通常比迴圈層昂貴k倍。然而,可分離卷積(Separable convolutions) [6] 將複雜度大大降低到O(k·n·d+n·d2)。然而,即使k=n,可分離卷積的複雜度也等於自注意力層和逐點前饋層的組合(我們在模型中採用的方法)。
作為附帶的好處,自注意力可以產生更多可解釋的模型。我們對模型檢查了其注意力分佈,並在附錄中展示和討論了相關示例。不僅單個注意力頭清楚地學習執行不同的任務,而且許多似乎表現出與句子的句法和語義結構相關的行為。
xi,zi∈ℝd,例如典型的序列轉換編碼器或解碼器的隱藏層。我們使用自注意力的動機主要來自於三個方面的考慮。
一個是每層的總計算複雜度。另一個是計算量可以並行化,一是每層的總計算複雜度。 另一個是可以並行化的計算量可用所需的最小順序運算元來衡量。
第三個是網路中遠端依賴關係之間的路徑長度。 學習長程依賴是許多序列轉換任務中的關鍵挑戰。 影響學習這種依賴性的能力的一個關鍵因素是前向和後向訊號必須在網路中遍歷的路徑長度。
輸入和輸出序列中任意位置組合之間的這些路徑越短,就越容易學習遠端依賴[12]。 因此,我們還比較了由不同層型別組成的網路中任意兩個輸入和輸出位置之間的最大路徑長度。如表 1 所示,恆定數量的順序執行操作自注意力層就可以將所有位置相互連線起來,而迴圈層則需要 O(n)的順序操作。在計算複雜度方面,當序列長度n小於表徵維度d時,自注意力層比迴圈層更快,這通常是機器翻譯中最先進模型使用的句子表示的情況,例如word-piece [38]和byte-pair [31] 表徵法。為了提高涉及非常長序列的任務的計算效能,自注意力可以限制為僅考慮大小為r的鄰域。輸入序列以各自的輸出位置為中心。這會將最大路徑長度增加到O(n/r)。我們計劃在未來的工作中進一步研究這種方法。
核心寬度k的單個卷積層不會連線所有輸入和輸出位置對。這樣做需要在連續相同核心(contiguous kernels)的情況下堆疊O(n/k)個卷積層,或者在擴張卷積(dilated convolutions[18])的情況下需要O(logk(n)),從而在網路中增加了任意兩個位置之間的最長路徑。卷積層通常比迴圈層昂貴k倍。然而,可分離卷積(Separable convolutions) [6] 將複雜度大大降低到O(k·n·d+n·d2)。然而,即使k=n,可分離卷積的複雜度也等於自注意力層和逐點前饋層的組合(我們在模型中採用的方法)。
作為附帶的好處,自注意力可以產生更多可解釋的模型。我們對模型檢查了其注意力分佈,並在附錄中展示和討論了相關示例。不僅單個注意力頭清楚地學習執行不同的任務,而且許多似乎表現出與句子的句法和語義結構相關的行為。
(z1,…,zn),其中xi,zi∈ℝd,例如典型的序列轉換編碼器或解碼器的隱藏層。我們使用自注意力的動機主要來自於三個方面的考慮。
一個是每層的總計算複雜度。另一個是計算量可以並行化,一是每層的總計算複雜度。 另一個是可以並行化的計算量可用所需的最小順序運算元來衡量。
第三個是網路中遠端依賴關係之間的路徑長度。 學習長程依賴是許多序列轉換任務中的關鍵挑戰。 影響學習這種依賴性的能力的一個關鍵因素是前向和後向訊號必須在網路中遍歷的路徑長度。
輸入和輸出序列中任意位置組合之間的這些路徑越短,就越容易學習遠端依賴[12]。 因此,我們還比較了由不同層型別組成的網路中任意兩個輸入和輸出位置之間的最大路徑長度。如表 1 所示,恆定數量的順序執行操作自注意力層就可以將所有位置相互連線起來,而迴圈層則需要 O(n)的順序操作。在計算複雜度方面,當序列長度n小於表徵維度d時,自注意力層比迴圈層更快,這通常是機器翻譯中最先進模型使用的句子表示的情況,例如word-piece [38]和byte-pair [31] 表徵法。為了提高涉及非常長序列的任務的計算效能,自注意力可以限制為僅考慮大小為r的鄰域。輸入序列以各自的輸出位置為中心。這會將最大路徑長度增加到O(n/r)。我們計劃在未來的工作中進一步研究這種方法。
核心寬度k的單個卷積層不會連線所有輸入和輸出位置對。這樣做需要在連續相同核心(contiguous kernels)的情況下堆疊O(n/k)個卷積層,或者在擴張卷積(dilated convolutions[18])的情況下需要O(logk(n)),從而在網路中增加了任意兩個位置之間的最長路徑。卷積層通常比迴圈層昂貴k倍。然而,可分離卷積(Separable convolutions) [6] 將複雜度大大降低到O(k·n·d+n·d2)。然而,即使k=n,可分離卷積的複雜度也等於自注意力層和逐點前饋層的組合(我們在模型中採用的方法)。
作為附帶的好處,自注意力可以產生更多可解釋的模型。我們對模型檢查了其注意力分佈,並在附錄中展示和討論了相關示例。不僅單個注意力頭清楚地學習執行不同的任務,而且許多似乎表現出與句子的句法和語義結構相關的行為。
(x1,…,xn)對映到另一個等長序列(z1,…,zn),其中xi,zi∈ℝd,例如典型的序列轉換編碼器或解碼器的隱藏層。我們使用自注意力的動機主要來自於三個方面的考慮。
一個是每層的總計算複雜度。另一個是計算量可以並行化,一是每層的總計算複雜度。 另一個是可以並行化的計算量可用所需的最小順序運算元來衡量。
第三個是網路中遠端依賴關係之間的路徑長度。 學習長程依賴是許多序列轉換任務中的關鍵挑戰。 影響學習這種依賴性的能力的一個關鍵因素是前向和後向訊號必須在網路中遍歷的路徑長度。
輸入和輸出序列中任意位置組合之間的這些路徑越短,就越容易學習遠端依賴[12]。 因此,我們還比較了由不同層型別組成的網路中任意兩個輸入和輸出位置之間的最大路徑長度。如表 1 所示,恆定數量的順序執行操作自注意力層就可以將所有位置相互連線起來,而迴圈層則需要 O(n)的順序操作。在計算複雜度方面,當序列長度n小於表徵維度d時,自注意力層比迴圈層更快,這通常是機器翻譯中最先進模型使用的句子表示的情況,例如word-piece [38]和byte-pair [31] 表徵法。為了提高涉及非常長序列的任務的計算效能,自注意力可以限制為僅考慮大小為r的鄰域。輸入序列以各自的輸出位置為中心。這會將最大路徑長度增加到O(n/r)。我們計劃在未來的工作中進一步研究這種方法。
核心寬度k的單個卷積層不會連線所有輸入和輸出位置對。這樣做需要在連續相同核心(contiguous kernels)的情況下堆疊O(n/k)個卷積層,或者在擴張卷積(dilated convolutions[18])的情況下需要O(logk(n)),從而在網路中增加了任意兩個位置之間的最長路徑。卷積層通常比迴圈層昂貴k倍。然而,可分離卷積(Separable convolutions) [6] 將複雜度大大降低到O(k·n·d+n·d2)。然而,即使k=n,可分離卷積的複雜度也等於自注意力層和逐點前饋層的組合(我們在模型中採用的方法)。
作為附帶的好處,自注意力可以產生更多可解釋的模型。我們對模型檢查了其注意力分佈,並在附錄中展示和討論了相關示例。不僅單個注意力頭清楚地學習執行不同的任務,而且許多似乎表現出與句子的句法和語義結構相關的行為。
五、訓練
本節介紹我們模型的訓練機制。
5.1 訓練資料和批處理
我們在由大約 450 萬個句子對組成的標準WMT2014英德雙語翻譯資料集上進行了訓練。句子使用Byte-Pair 編碼[3]進行編碼,該編碼具有大約37000個標記的共享源-目標詞彙表。對於英法翻譯,我們使用了更大的 WMT2014英法雙語翻譯資料集,該資料集由 3600 萬個句子組成,並將tokens拆分為32000個單詞詞彙表[38]。句子對按相近的序列長度進行批次分組。每個訓練批次包含一組句子對,其中包含大約25000個源tokens和25000個目標tokens。
5.2 硬體和時間
我們在8個NVIDIA P100 GPU上訓練模型。整篇論文中模型都使用這些超引數,每個訓練步驟大約耗時0.4秒。基礎模型訓練了10萬步或12小時。對於大模型(表3最後一行)每步耗時1秒。大模型訓練了30萬步(3.5天)。
5.3 最佳化器
我們使用了Adam最佳化器[20],引數為β1=0.9,β2=0.98和ϵ1=10−9。隨著訓練程序,我們使用不同的學習率,遵循以下公式:
ϵ1=10−9。隨著訓練程序,我們使用不同的學習率,遵循以下公式:
β2=0.98和ϵ1=10−9。隨著訓練程序,我們使用不同的學習率,遵循以下公式:
β1=0.9,β2=0.98和ϵ1=10−9。隨著訓練程序,我們使用不同的學習率,遵循以下公式:
相當於在第一個warmup_steps訓練步驟中線性增加學習率,然後根據步數的平方根倒數按比例減少學習率,warmup_steps = 4000。
5.4 正則化
我們在訓練過程中採用了三種正則化:
Residual Dropout 我們將dropout [33]應用於每個子層的輸出,然後將其新增到子層輸入並進行歸一化。 此外,我們將dropout應用於編碼器和解碼器堆疊中嵌入和位置編碼的總和。 對於基本模型,我們使用Pdrop=0.1的比率。
Pdrop=0.1的比率。
標籤平滑 在訓練過程中,我們採用了值為ϵls=0.1[36] 的標籤平滑。 這樣會增加困惑,因為模型會變得更加不確定,但會提高準確性和 BLEU 分數。
ϵls=0.1[36] 的標籤平滑。 這樣會增加困惑,因為模型會變得更加不確定,但會提高準確性和 BLEU 分數。
六、結果
6.1 機器翻譯
在WMT 2014英德翻譯任務中,大Transformer 模型(表 2 中的 Transformer (big))比之前報導的最佳模型(包括整合模型)高出2.0BLEU以上,達到一個全新水平的得分28.4。該模型的配置列於表3的最後一行。在 8 個P100 GPU上訓練耗時 3.5 天。甚至我們的基礎模型也超過了所有先前釋出的模型和整合模型,其訓練成本只是任何競爭模型的一小部分。
在WMT 2014英法翻譯任務中,我們的大模型達到41.0的BLEU分數,優於之前釋出的所有單一模型,其訓練成本不到之前最先進模型的1/4。為英法翻譯訓練的Transformer(大)模型使用的Dropout是Pdrop=0.1,而不是 0.3。
對於基本模型,我們使用透過平均最後5個checkpionts獲得了單個模型,這些檢查點以10分鐘的間隔寫入。對於大型模型,我們平均了最後20個checkpoints。我們使用集束搜尋(beam search),束大小為4,長度懲罰(length penalty)α=0.6 [38]。
這些超引數是在對開發集上進行實驗後選擇的,我們將推理期間的最大輸出長度設定為輸入長度 + 50,但在可能的情況下提前終止[38]。表 2 總結了我們的結果,並將我們的翻譯質量和訓練成本與文獻中的其他模型架構進行了比較。我們透過將訓練時間、使用的 GPU 數量以及每個 GPU 5 的持續單精度浮點容量的估計值相乘來估計用於訓練模型的浮點運算的數量。
α=0.6 [38]。
這些超引數是在對開發集上進行實驗後選擇的,我們將推理期間的最大輸出長度設定為輸入長度 + 50,但在可能的情況下提前終止[38]。表 2 總結了我們的結果,並將我們的翻譯質量和訓練成本與文獻中的其他模型架構進行了比較。我們透過將訓練時間、使用的 GPU 數量以及每個 GPU 5 的持續單精度浮點容量的估計值相乘來估計用於訓練模型的浮點運算的數量。
Pdrop=0.1,而不是 0.3。
對於基本模型,我們使用透過平均最後5個checkpionts獲得了單個模型,這些檢查點以10分鐘的間隔寫入。對於大型模型,我們平均了最後20個checkpoints。我們使用集束搜尋(beam search),束大小為4,長度懲罰(length penalty)α=0.6 [38]。
這些超引數是在對開發集上進行實驗後選擇的,我們將推理期間的最大輸出長度設定為輸入長度 + 50,但在可能的情況下提前終止[38]。表 2 總結了我們的結果,並將我們的翻譯質量和訓練成本與文獻中的其他模型架構進行了比較。我們透過將訓練時間、使用的 GPU 數量以及每個 GPU 5 的持續單精度浮點容量的估計值相乘來估計用於訓練模型的浮點運算的數量。
6.2 模型變化
為了評估Transformer中不同元件的重要性,我們以不同的方式改變了我們的基礎模型,測量了開發集 newstest2013上英德翻譯效能的變化。我們使用了上一節中描述的集束搜尋,但沒有做checkpoints平均。我們在表3中展示了這些結果。
在表3行(A)中,我們改變了注意力頭的數量以及注意力鍵和值維度,保持計算量不變,如第 3.2.2 節所述。 雖然單頭注意力比最佳設定差0.9BLEU,但質量也會因為有太多頭而下降。
在表3行(B)中,我們觀察到減小注意力key大小dk會損害模型質量。這表明確定相容性並不容易,比點積更復雜的相容性功能可能是有益的。我們在行(C)和(D)中進一步觀察到,正如預期的那樣,更大的模型更好,並且dropout非常有助於避免過度擬合。 在第(E)行中,我們用學習的位置嵌入[9]替換我們的正弦位置編碼,並觀察到與基礎模型幾乎相同的結果。
dk會損害模型質量。這表明確定相容性並不容易,比點積更復雜的相容性功能可能是有益的。我們在行(C)和(D)中進一步觀察到,正如預期的那樣,更大的模型更好,並且dropout非常有助於避免過度擬合。 在第(E)行中,我們用學習的位置嵌入[9]替換我們的正弦位置編碼,並觀察到與基礎模型幾乎相同的結果。
6.3 英語成分句法分析(Constituency Parsing)
為了評估Transformer是否可以泛化到其他任務,我們對英語成分句法分析進行了實驗。這項任務提出了具體的挑戰:輸出受到強烈的結構約束,並且明顯長於輸入。此外,RNN序列到序列模型無法在小資料機制中獲得最先進的結果[37]。
我們在Penn Treebank[25]的華爾街日報(WSJ)部分訓練了一個dmodel=1024 的4層轉換器,大約 40K訓練句子。我們還在半監督環境中對其進行了訓練,使用來自大約1700 萬個句子的更大的高置信度和 BerkleyParser語料庫[37]。我們將16K tokens的詞彙表作為WSJ的唯一設定,將32K tokens詞彙表用於半監督設定。
我們只進行了少量實驗來選擇第 22 節開發集上的dropout、注意力和殘差(第 5.4 節)、學習率和束大小,所有其他引數與英德基礎翻譯模型保持不變。在推理過程中,我們將最大輸出長度增加到輸入長度 + 300。我們對WSJ和半監督設定都使用了21的束大小和α=0.3。我們在表 4 中的結果表明,儘管缺乏針對特定任務的調整,但我們的模型表現得非常好,比除迴圈神經網路語法 [8] 之外的所有先前報告的模型都產生了更好的結果。
與RNN序列到序列模型 [37] 相比,即使僅在WSJ 40K句子的訓練集上進行訓練,Transformer 也優於 Berkeley-Parser [29]。
α=0.3。我們在表 4 中的結果表明,儘管缺乏針對特定任務的調整,但我們的模型表現得非常好,比除迴圈神經網路語法 [8] 之外的所有先前報告的模型都產生了更好的結果。
與RNN序列到序列模型 [37] 相比,即使僅在WSJ 40K句子的訓練集上進行訓練,Transformer 也優於 Berkeley-Parser [29]。
dmodel=1024 的4層轉換器,大約 40K訓練句子。我們還在半監督環境中對其進行了訓練,使用來自大約1700 萬個句子的更大的高置信度和 BerkleyParser語料庫[37]。我們將16K tokens的詞彙表作為WSJ的唯一設定,將32K tokens詞彙表用於半監督設定。
我們只進行了少量實驗來選擇第 22 節開發集上的dropout、注意力和殘差(第 5.4 節)、學習率和束大小,所有其他引數與英德基礎翻譯模型保持不變。在推理過程中,我們將最大輸出長度增加到輸入長度 + 300。我們對WSJ和半監督設定都使用了21的束大小和α=0.3。我們在表 4 中的結果表明,儘管缺乏針對特定任務的調整,但我們的模型表現得非常好,比除迴圈神經網路語法 [8] 之外的所有先前報告的模型都產生了更好的結果。
與RNN序列到序列模型 [37] 相比,即使僅在WSJ 40K句子的訓練集上進行訓練,Transformer 也優於 Berkeley-Parser [29]。
七、結論
在這項工作中,我們提出了 Transformer,這是第一個完全基於注意力的序列轉換模型,用多頭自注意力取代了編碼器-解碼器架構中最常用的迴圈層。對於翻譯任務,Transformer的訓練速度明顯快於基於迴圈或卷積層的架構。在 WMT2014英德和 WMT2014英法翻譯任務上,我們都達到了全新的水平。在英德任務中,我們最好的模型甚至優於所有先前報導的整合模型。我們對基於注意力的模型的未來感到興奮,並計劃將它們應用於其他任務。我們計劃將Transformer擴充套件到涉及文字以外的輸入和輸出模式的問題,並研究區域性的受限注意力機制,以有效處理影像、音訊和影片等大型輸入和輸出,讓生成模型有更少的順序性是我們的另一個研究目標。我們用於訓練和評估模型的程式碼可在https://github.com/tensorflow/tensor2tensor獲得。
參考文獻
[1] Jimmy Lei Ba, Jamie Ryan Kiros, and Geoffrey E Hinton. Layer normalization. arXiv preprint arXiv:1607.06450, 2016.
[2] Dzmitry Bahdanau, Kyunghyun Cho, and Yoshua Bengio. Neural machine translation by jointly learning to align and translate. CoRR, abs/1409.0473, 2014.
[3] Denny Britz, Anna Goldie, Minh-Thang Luong, and Quoc V. Le. Massive exploration of neural machine translation architectures. CoRR, abs/1703.03906, 2017.
[4] Jianpeng Cheng, Li Dong, and Mirella Lapata. Long short-term memory-networks for machine reading. arXiv preprint arXiv:1601.06733, 2016.
[5] Kyunghyun Cho, Bart van Merrienboer, Caglar Gulcehre, Fethi Bougares, Holger Schwenk, and Yoshua Bengio. Learning phrase representations using rnn encoder-decoder for statistical machine translation. CoRR, abs/1406.1078, 2014.
[6] Francois Chollet. Xception: Deep learning with depthwise separable convolutions. arXiv preprint arXiv:1610.02357, 2016.
[7] Junyoung Chung, Çaglar Gülçehre, Kyunghyun Cho, and Yoshua Bengio. Empirical evaluation of gated recurrent neural networks on sequence modeling. CoRR, abs/1412.3555, 2014.
[8] Chris Dyer, Adhiguna Kuncoro, Miguel Ballesteros, and Noah A. Smith. Recurrent neural network grammars. In Proc. of NAACL, 2016.
[9] Jonas Gehring, Michael Auli, David Grangier, Denis Yarats, and Yann N. Dauphin. Convolu- tional sequence to sequence learning. arXiv preprint arXiv:1705.03122v2, 2017.
[10] Alex Graves. Generating sequences with recurrent neural networks. arXiv preprint arXiv:1308.0850, 2013.
[11] Kaiming He, Xiangyu Zhang, Shaoqing Ren, and Jian Sun. Deep residual learning for im- age recognition. In Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition, pages 770–778, 2016.
[12] Sepp Hochreiter, Yoshua Bengio, Paolo Frasconi, and Jürgen Schmidhuber. Gradient flow in recurrent nets: the difficulty of learning long-term dependencies, 2001.
[13] Sepp Hochreiter and Jürgen Schmidhuber. Long short-term memory. Neural computation, 9(8):1735–1780, 1997.
[14] Zhongqiang Huang and Mary Harper. Self-training PCFG grammars with latent annotations across languages. In Proceedings of the 2009 Conference on Empirical Methods in Natural Language Processing, pages 832–841. ACL, August 2009.
[15] Rafal Jozefowicz, Oriol Vinyals, Mike Schuster, Noam Shazeer, and Yonghui Wu. Exploring the limits of language modeling. arXiv preprint arXiv:1602.02410, 2016.
[16] Łukasz Kaiser and Samy Bengio. Can active memory replace attention? In Advances in Neural Information Processing Systems, (NIPS), 2016.
[17] Łukasz Kaiser and Ilya Sutskever. Neural GPUs learn algorithms. In International Conference on Learning Representations (ICLR), 2016.
[18] Nal Kalchbrenner, Lasse Espeholt, Karen Simonyan, Aaron van den Oord, Alex Graves, and Ko- ray Kavukcuoglu. Neural machine translation in linear time. arXiv preprint arXiv:1610.10099v2, 2017.
[19] Yoon Kim, Carl Denton, Luong Hoang, and Alexander M. Rush. Structured attention networks. In International Conference on Learning Representations, 2017.
[20] Diederik Kingma and Jimmy Ba. Adam: A method for stochastic optimization. In ICLR, 2015.
[21] Oleksii Kuchaiev and Boris Ginsburg. Factorization tricks for LSTM networks. arXiv preprint arXiv:1703.10722, 2017.
[22] Zhouhan Lin, Minwei Feng, Cicero Nogueira dos Santos, Mo Yu, Bing Xiang, Bowen Zhou, and Yoshua Bengio. A structured self-attentive sentence embedding. arXiv preprint arXiv:1703.03130, 2017.
[23] Minh-Thang Luong, Quoc V. Le, Ilya Sutskever, Oriol Vinyals, and Lukasz Kaiser. Multi-task sequence to sequence learning. arXiv preprint arXiv:1511.06114, 2015.
[24] Minh-Thang Luong, Hieu Pham, and Christopher D Manning. Effective approaches to attention- based neural machine translation. arXiv preprint arXiv:1508.04025, 2015.
[25] MitchellPMarcus,MaryAnnMarcinkiewicz,andBeatriceSantorini.Buildingalargeannotated corpus of english: The penn treebank. Computational linguistics, 19(2):313–330, 1993.
[26] David McClosky, Eugene Charniak, and Mark Johnson. Effective self-training for parsing. In Proceedings of the Human Language Technology Conference of the NAACL, Main Conference, pages 152–159. ACL, June 2006.
[27] Ankur Parikh, Oscar Täckström, Dipanjan Das, and Jakob Uszkoreit. A decomposable attention model. In Empirical Methods in Natural Language Processing, 2016.
[28] Romain Paulus, Caiming Xiong, and Richard Socher. A deep reinforced model for abstractive summarization. arXiv preprint arXiv:1705.04304, 2017.
[29] Slav Petrov, Leon Barrett, Romain Thibaux, and Dan Klein. Learning accurate, compact, and interpretable tree annotation. In Proceedings of the 21st International Conference on Computational Linguistics and 44th Annual Meeting of the ACL, pages 433–440. ACL, July 2006.
[30] Ofir Press and Lior Wolf. Using the output embedding to improve language models. arXiv preprint arXiv:1608.05859, 2016.
[31] Rico Sennrich, Barry Haddow, and Alexandra Birch. Neural machine translation of rare words with subword units. arXiv preprint arXiv:1508.07909, 2015.
[32] Noam Shazeer, Azalia Mirhoseini, Krzysztof Maziarz, Andy Davis, Quoc Le, Geoffrey Hinton, and Jeff Dean. Outrageously large neural networks: The sparsely-gated mixture-of-experts layer. arXiv preprint arXiv:1701.06538, 2017.
[33] Nitish Srivastava, Geoffrey E Hinton, Alex Krizhevsky, Ilya Sutskever, and Ruslan Salakhutdi- nov. Dropout: a simple way to prevent neural networks from overfitting. Journal of Machine Learning Research, 15(1):1929–1958, 2014.
[34] Sainbayar Sukhbaatar, Arthur Szlam, Jason Weston, and Rob Fergus. End-to-end memory networks. In C. Cortes, N. D. Lawrence, D. D. Lee, M. Sugiyama, and R. Garnett, editors, Advances in Neural Information Processing Systems 28, pages 2440–2448. Curran Associates, Inc., 2015.
[35] Ilya Sutskever, Oriol Vinyals, and Quoc VV Le. Sequence to sequence learning with neural networks. In Advances in Neural Information Processing Systems, pages 3104–3112, 2014.
[36] Christian Szegedy, Vincent Vanhoucke, Sergey Ioffe, Jonathon Shlens, and Zbigniew Wojna. Rethinking the inception architecture for computer vision. CoRR, abs/1512.00567, 2015.
[37] Vinyals & Kaiser, Koo, Petrov, Sutskever, and Hinton. Grammar as a foreign language. In Advances in Neural Information Processing Systems, 2015.
[38] Yonghui Wu, Mike Schuster, Zhifeng Chen, Quoc V Le, Mohammad Norouzi, Wolfgang Macherey, Maxim Krikun, Yuan Cao, Qin Gao, Klaus Macherey, et al. Google’s neural machine translation system: Bridging the gap between human and machine translation. arXiv preprint arXiv:1609.08144, 2016.
[39] Jie Zhou, Ying Cao, Xuguang Wang, Peng Li, and Wei Xu. Deep recurrent models with fast-forward connections for neural machine translation. CoRR, abs/1606.04199, 2016.
[40] Muhua Zhu, Yue Zhang, Wenliang Chen, Min Zhang, and Jingbo Zhu. Fast and accurate shift-reduce constituent parsing. In Proceedings of the 51st Annual Meeting of the ACL (Volume 1: Long Papers), pages 434–443. ACL, August 2013.
============ End