Attention Is All You Need/paper/zh

    From Marovi AI
    This page is a translated version of the page Attention Is All You Need/paper and the translation is 58% complete.
    Outdated translations are marked like this.
    Other languages:
    SummarySource
    Research Paper
    Authors Ashish Vaswani; Noam Shazeer; Niki Parmar; Jakob Uszkoreit; Llion Jones; Aidan N. Gomez; Lukasz Kaiser; Illia Polosukhin
    Year 2017
    Topic area NLP
    Difficulty Research
    arXiv 1706.03762
    PDF Download PDF

    在提供適當署名的前提下,Google 特此授予複製本文中表格與圖表的許可,僅限用於新聞或學術作品。

    <span id="Lua error: Internal error: The interpreter exited with status 1.-is-all-you-need">

    Lua error: Internal error: The interpreter exited with status 1. 即一切所需

    \ANDAshish Vaswani
    Google Brain
    avaswani@google.com &Noam Shazeer11footnotemark: 1
    Google Brain
    noam@google.com &Niki Parmar11footnotemark: 1
    Google Research
    nikip@google.com &Jakob Uszkoreit11footnotemark: 1
    Google Research
    usz@google.com &Llion Jones11footnotemark: 1
    Google Research
    llion@google.com &Aidan N. Gomez11footnotemark: 1
    University of Toronto
    aidan@cs.toronto.edu &Łukasz Kaiser11footnotemark: 1
    Google Brain
    lukaszkaiser@google.com &Illia Polosukhin11footnotemark: 1
    illia.polosukhin@gmail.com 同等貢獻。作者順序隨機。Jakob 提出用自Lua error: Internal error: The interpreter exited with status 1.替換 RNN,並發起評估這一想法的工作。Ashish 與 Illia 一起設計並實現了第一批 Lua error: Internal error: The interpreter exited with status 1. 模型,並在本工作的各個方面起到了關鍵作用。Noam 提出了縮放點積 Lua error: Internal error: The interpreter exited with status 1.、多頭 Lua error: Internal error: The interpreter exited with status 1. 以及無參數位置表示,成為另一位幾乎參與每個細節的人員。Niki 在我們的原始代碼庫及 tensor2tensor 中設計、實現、調優並評估了大量模型變體。Llion 也嘗試了新的模型變體,負責我們最初的代碼庫以及高效推理與可視化工作。Lukasz 和 Aidan 投入了無數漫長的日子設計並實現 tensor2tensor 的各個部分,替換了我們更早的代碼庫,極大改進了結果並大幅加速了我們的研究。在 Google Brain 工作期間完成的工作。在 Google Research 工作期間完成的工作。

    摘要

    主流的序列轉導模型基於複雜的循環或卷積神經網絡,包含一個編碼器和一個解碼器。表現最好的模型還通過 Lua error: Internal error: The interpreter exited with status 1. 機制連接編碼器與解碼器。我們提出了一種新的簡單網絡架構——Lua error: Internal error: The interpreter exited with status 1.,它完全基於 Lua error: Internal error: The interpreter exited with status 1. 機制,徹底摒棄了循環和Lua error: Internal error: The interpreter exited with status 1.。在兩個機器翻譯任務上的實驗表明,這些模型在質量上更勝一籌,同時具有更好的並行性,所需的訓練時間也顯著減少。我們的模型在 WMT 2014 英德翻譯任務上取得了 28.4 BLEU,比包括 ensemble 在內的現有最佳結果提高了 2 BLEU 以上。在 WMT 2014 英法翻譯任務上,我們的模型在八塊 GPU 上訓練 3.5 天后,建立了 41.8 的新單模型最先進 BLEU 分數,僅為文獻中最佳模型訓練成本的一小部分。我們將 Lua error: Internal error: The interpreter exited with status 1. 成功應用於英文成分句法分析,無論是大規模還是有限訓練數據,均表明 Lua error: Internal error: The interpreter exited with status 1. 能很好地泛化到其他任務。

    1 引言

    循環神經網絡,尤其是 Lua error: Internal error: The interpreter exited with status 1. [13] 和門控循環神經網絡 [7],已牢固確立為序列建模與轉導問題(如語言建模和機器翻譯)中的最先進方法 [35, 2, 5]。此後,眾多研究持續推進循環語言模型和編碼器-解碼器架構的邊界 [38, 24, 15]。

    循環模型通常沿輸入和輸出序列的符號位置進行計算分解。將位置與計算時間步對齊後,它們生成一個隱藏狀態序列 $ {\textstyle h_{t}} $,作為前一隱藏狀態 $ {\textstyle h_{t - 1}} $ 和位置 $ {\textstyle t} $ 輸入的函數。這種內在的序列性使得訓練樣本內部無法並行化,在序列較長時尤為關鍵,因為內存約束限制了樣本之間的批處理。最近的工作通過因式分解技巧 [21] 和條件計算 [32] 在計算效率方面取得了顯著改進,後者還提升了模型性能。然而,序列計算的根本約束依然存在。

    Lua error: Internal error: The interpreter exited with status 1. 機制已成為各類任務中最具競爭力的序列建模與轉導模型不可或缺的部分,使得在輸入或輸出序列中建模任意距離的依賴關係成為可能 [2, 19]。然而,除少數情況外 [27],此類 Lua error: Internal error: The interpreter exited with status 1. 機制通常與循環網絡結合使用。

    在本工作中,我們提出了 Lua error: Internal error: The interpreter exited with status 1.,這是一種摒棄循環、完全依賴 Lua error: Internal error: The interpreter exited with status 1. 機制來刻畫輸入與輸出之間全局依賴的模型架構。Lua error: Internal error: The interpreter exited with status 1. 實現了顯著更高的並行化,僅在八塊 P100 GPU 上訓練十二小時即可達到新的翻譯質量最先進水平。

    2 背景

    降低序列計算量的目標也是 Extended Neural GPU [16]、ByteNet [18] 和 ConvS2S [9] 的設計基礎,它們都將卷積神經網絡作為基本構件,並行計算所有輸入和輸出位置的隱藏表示。在這些模型中,將任意兩個輸入或輸出位置的信號聯繫起來所需的操作數隨位置間距離增長,ConvS2S 中為線性,ByteNet 中為對數。這使得學習遠距離位置之間的依賴更加困難 [12]。在 Lua error: Internal error: The interpreter exited with status 1. 中,該操作數降至常數,但代價是由於對 Lua error: Internal error: The interpreter exited with status 1. 加權位置進行平均而導致的有效分辨率下降;我們通過第 3.2 節所述的多頭 Lua error: Internal error: The interpreter exited with status 1. 來抵消這一影響。

    Lua error: Internal error: The interpreter exited with status 1.(有時稱為內部Lua error: Internal error: The interpreter exited with status 1.)是一種將單個序列中不同位置關聯起來以計算該序列表示的 Lua error: Internal error: The interpreter exited with status 1. 機制。自Lua error: Internal error: The interpreter exited with status 1.已成功用於多種任務,包括閱讀理解、抽象摘要、文本蘊含以及與任務無關的句子表示學習 [4, 27, 28, 22]。

    端到端記憶網絡基於循環 Lua error: Internal error: The interpreter exited with status 1. 機制而非序列對齊的循環,已被證明在簡單語言問答和語言建模任務上表現良好 [34]。

    然而據我們所知,Lua error: Internal error: The interpreter exited with status 1. 是第一個完全依賴自Lua error: Internal error: The interpreter exited with status 1.來計算其輸入和輸出表示,而不使用序列對齊的 RNN 或 Lua error: Internal error: The interpreter exited with status 1. 的轉導模型。在接下來的章節中,我們將描述 Lua error: Internal error: The interpreter exited with status 1.,闡述使用自Lua error: Internal error: The interpreter exited with status 1.的動機,並討論其相對於 [17, 18] 和 [9] 等模型的優勢。

    3 模型架構

    見圖注

    大多數具有競爭力的神經序列轉導模型採用編碼器-解碼器結構 [5, 2, 35]。其中,編碼器將符號表示的輸入序列 $ {\textstyle (x_{1},\ldots,x_{n})} $ 映射為連續表示序列 $ {\textstyle \mathbf{z} = {(z_{1},\ldots,z_{n})}} $。給定 $ {\textstyle \mathbf{z}} $,解碼器隨後逐元素生成輸出序列 $ {\textstyle (y_{1},\ldots,y_{m})} $。在每一步,模型都是自回歸的 [10],在生成下一個符號時將之前生成的符號作為額外輸入。

    Lua error: Internal error: The interpreter exited with status 1. 遵循這一總體架構,編碼器和解碼器均使用堆疊的自Lua error: Internal error: The interpreter exited with status 1.及逐位置全連接層,分別如圖 1 的左右兩半所示。

    3.1 編碼器與解碼器堆棧

    編碼器:

    編碼器由 $ {\textstyle N = 6} $ 層相同結構堆疊而成。每一層包含兩個子層。第一個子層是多頭自Lua error: Internal error: The interpreter exited with status 1.機制,第二個子層是簡單的逐位置全連接前饋網絡。我們在每個子層周圍採用殘差連接 [11],然後進行 Lua error: Internal error: The interpreter exited with status 1. [1]。也就是說,每個子層的輸出為 $ {\textstyle {LayerNorm}\hspace{0pt}{({x + {{Sublayer}\hspace{0pt}{(x)}}})}} $,其中 $ {\textstyle {Sublayer}\hspace{0pt}{(x)}} $ 是該子層自身實現的函數。為便於這些殘差連接,模型中的所有子層以及 Lua error: Internal error: The interpreter exited with status 1. 層均產生維度為 $ {\textstyle d_{\text{model}} = 512} $ 的輸出。

    解碼器:

    解碼器同樣由 $ {\textstyle N = 6} $ 層相同結構堆疊而成。除了每個編碼器層中的兩個子層外,解碼器插入了第三個子層,對編碼器堆棧的輸出執行多頭 Lua error: Internal error: The interpreter exited with status 1.。與編碼器類似,我們在每個子層周圍採用殘差連接,隨後進行 Lua error: Internal error: The interpreter exited with status 1.。我們還修改了解碼器堆棧中的自Lua error: Internal error: The interpreter exited with status 1.子層,以防止某個位置關注後續位置。這種掩碼,加上輸出 Lua error: Internal error: The interpreter exited with status 1. 偏移一個位置的事實,確保位置 $ {\textstyle i} $ 的預測只能依賴小於 $ {\textstyle i} $ 位置上的已知輸出。

    <span id="Lua error: Internal error: The interpreter exited with status 1.">

    3.2 Lua error: Internal error: The interpreter exited with status 1.

    Lua error: Internal error: The interpreter exited with status 1. 函數可以描述為將一個查詢及一組鍵-值對映射到一個輸出,其中查詢、鍵、值和輸出均為向量。輸出以值的加權和計算,每個值所分配的權重由查詢與對應鍵的相容性函數計算得到。

    <span id="scaled-dot-product-Lua error: Internal error: The interpreter exited with status 1.">

    3.2.1 縮放點積 Lua error: Internal error: The interpreter exited with status 1.

    我們將這種特定的 Lua error: Internal error: The interpreter exited with status 1. 稱為"縮放點積 Lua error: Internal error: The interpreter exited with status 1."(圖 2)。輸入由維度為 $ {\textstyle d_{k}} $ 的查詢和鍵以及維度為 $ {\textstyle d_{v}} $ 的值組成。我們計算查詢與所有鍵的點積,並將每個點積除以 $ {\textstyle \sqrt{d_{k}}} $,然後應用 Lua error: Internal error: The interpreter exited with status 1. 函數得到值的權重。

    在實踐中,我們對一組查詢同時計算 Lua error: Internal error: The interpreter exited with status 1. 函數,將它們打包成矩陣 $ {\textstyle Q} $。鍵和值同樣被打包成矩陣 $ {\textstyle K} $$ {\textstyle V} $。我們按以下方式計算輸出矩陣:

    $ {\displaystyle {{Attention}\hspace{0pt}{(Q,K,V)}} = {{softmax}\hspace{0pt}{(\frac{Q\hspace{0pt}K^{T}}{\sqrt{d_{k}}})}\hspace{0pt}V}} $ (1)

    最常用的兩種 Lua error: Internal error: The interpreter exited with status 1. 函數是加性 Lua error: Internal error: The interpreter exited with status 1. [2] 和點積(乘性)Lua error: Internal error: The interpreter exited with status 1.。點積 Lua error: Internal error: The interpreter exited with status 1. 與我們的算法相同,只是多了一個 $ {\textstyle \frac{1}{\sqrt{d_{k}}}} $ 的縮放因子。加性 Lua error: Internal error: The interpreter exited with status 1. 使用具有單個隱藏層的前饋網絡計算相容性函數。雖然兩者在理論複雜度上相似,但在實踐中點積 Lua error: Internal error: The interpreter exited with status 1. 更快且更節省空間,因為它可以通過高度優化的矩陣乘法代碼實現。

    雖然對於 $ {\textstyle d_{k}} $ 較小的情況,這兩種機制表現相近,但當 $ {\textstyle d_{k}} $ 較大時,加性 Lua error: Internal error: The interpreter exited with status 1. 優於不進行縮放的點積 Lua error: Internal error: The interpreter exited with status 1. [3]。我們懷疑當 $ {\textstyle d_{k}} $ 很大時,點積的量級會變大,將 Lua error: Internal error: The interpreter exited with status 1. 函數推入梯度極小的區域 111為說明點積為何變大,假設 $ {\textstyle q} $$ {\textstyle k} $ 的分量是均值為 $ {\textstyle 0} $、方差為 $ {\textstyle 1} $ 的獨立隨機變量。那麼它們的點積 $ {\textstyle {q \cdot k} = {\sum_{i = 1}^{d_{k}}{q_{i}\hspace{0pt}k_{i}}}} $ 均值為 $ {\textstyle 0} $,方差為 $ {\textstyle d_{k}} $。。為抵消這一效應,我們將點積按 $ {\textstyle \frac{1}{\sqrt{d_{k}}}} $ 進行縮放。

    <span id="multi-head-Lua error: Internal error: The interpreter exited with status 1.">

    3.2.2 多頭 Lua error: Internal error: The interpreter exited with status 1.

    縮放點積 Lua error: Internal error: The interpreter exited with status 1.

    見圖注 多頭 Lua error: Internal error: The interpreter exited with status 1.

    見圖注

    我們發現,與其使用維度為 $ {\textstyle d_{\text{model}}} $ 的鍵、值和查詢執行單一的 Lua error: Internal error: The interpreter exited with status 1. 函數,不如將查詢、鍵和值分別用不同的、學習到的線性投影線性地投影 $ {\textstyle h} $ 次到 $ {\textstyle d_{k}} $$ {\textstyle d_{k}} $$ {\textstyle d_{v}} $ 維度,效果更好。然後在每個投影后的查詢、鍵和值上並行執行 Lua error: Internal error: The interpreter exited with status 1. 函數,產生 $ {\textstyle d_{v}} $ 維的輸出值。這些輸出被拼接並再次投影,得到最終值,如圖 2 所示。

    多頭 Lua error: Internal error: The interpreter exited with status 1. 允許模型在不同位置共同關注來自不同表示子空間的信息。若只有單個 Lua error: Internal error: The interpreter exited with status 1. 頭,則平均化會抑制這一能力。

    $ {\textstyle {MultiHead}\hspace{0pt}{(Q,K,V)}} $ $ {\textstyle = {{Concat}\hspace{0pt}{({head}_{1},\ldots,{head}_{h})}\hspace{0pt}W^{O}}} $
    $ {\textstyle \text{where}\hspace{0pt}{head}_{i}} $ $ {\textstyle = {{Attention}\hspace{0pt}{({Q\hspace{0pt}W_{i}^{Q}},{K\hspace{0pt}W_{i}^{K}},{V\hspace{0pt}W_{i}^{V}})}}} $

    其中投影為參數矩陣 $ {\textstyle W_{i}^{Q} \in {\mathbb{R}}^{d_{\text{model}} \times d_{k}}} $$ {\textstyle W_{i}^{K} \in {\mathbb{R}}^{d_{\text{model}} \times d_{k}}} $$ {\textstyle W_{i}^{V} \in {\mathbb{R}}^{d_{\text{model}} \times d_{v}}} $$ {\textstyle W^{O} \in {\mathbb{R}}^{{h\hspace{0pt}d_{v}} \times d_{\text{model}}}} $

    在本工作中,我們採用 $ {\textstyle h = 8} $ 個並行的 Lua error: Internal error: The interpreter exited with status 1. 層(即頭)。對每個頭使用 $ {\textstyle d_{k} = d_{v} = {d_{\text{model}}/h} = 64} $。由於每個頭的維度減小,總計算開銷與具有完整維度的單頭 Lua error: Internal error: The interpreter exited with status 1. 相近。

    <span id="applications-of-Lua error: Internal error: The interpreter exited with status 1.-in-our-model">

    3.2.3 Lua error: Internal error: The interpreter exited with status 1. 在我們模型中的應用

    Lua error: Internal error: The interpreter exited with status 1. 以三種不同的方式使用多頭 Lua error: Internal error: The interpreter exited with status 1.

    • 在"編碼器-解碼器 Lua error: Internal error: The interpreter exited with status 1."層中,查詢來自前一解碼器層,而記憶鍵和值來自編碼器的輸出。這使得解碼器中的每個位置都能關注輸入序列的所有位置。這模仿了 Lua error: Internal error: The interpreter exited with status 1. 模型中典型的編碼器-解碼器 Lua error: Internal error: The interpreter exited with status 1. 機制,如 [38, 2, 9]。

    • 編碼器包含自Lua error: Internal error: The interpreter exited with status 1.層。在自Lua error: Internal error: The interpreter exited with status 1.層中,所有的鍵、值和查詢都來自同一位置,本例中即編碼器中前一層的輸出。編碼器中的每個位置都可以關注編碼器前一層的所有位置。

    • 類似地,解碼器中的自Lua error: Internal error: The interpreter exited with status 1.層允許解碼器中的每個位置關註解碼器中直到該位置(含)的所有位置。我們需要在解碼器中阻止向左的信息流以保持自回歸性質。我們在縮放點積 Lua error: Internal error: The interpreter exited with status 1. 內部實現該屏蔽,將 Lua error: Internal error: The interpreter exited with status 1. 輸入中所有對應非法連接的值設為 $ {\textstyle - \infty} $。參見圖 2

    3.3 按位置的前饋網絡

    除了 Lua error: Internal error: The interpreter exited with status 1. 子層外,編碼器和解碼器中的每一層都包含一個全連接前饋網絡,獨立且相同地作用於每個位置。它由兩個線性變換組成,中間是 ReLU Lua error: Internal error: The interpreter exited with status 1.

    $ {\displaystyle {{FFN}\hspace{0pt}{(x)}} = {{{\max{(0,{{x\hspace{0pt}W_{1}} + b_{1}})}}\hspace{0pt}W_{2}} + b_{2}}} $ (2)

    雖然線性變換在不同位置上是相同的,但它們在不同層之間使用不同的參數。另一種描述方式是兩個核大小為 1 的Lua error: Internal error: The interpreter exited with status 1.。輸入和輸出的維度為 $ {\textstyle d_{\text{model}} = 512} $,內層維度為 $ {\textstyle d_{f\hspace{0pt}f} = 2048} $

    <span id="Lua error: Internal error: The interpreter exited with status 1.-and-Lua error: Internal error: The interpreter exited with status 1.">

    3.4 Lua error: Internal error: The interpreter exited with status 1.Lua error: Internal error: The interpreter exited with status 1.

    與其他序列轉導模型類似,我們使用學習到的 Lua error: Internal error: The interpreter exited with status 1. 將輸入和輸出 token 轉換為維度為 $ {\textstyle d_{\text{model}}} $ 的向量。我們還使用常規的學習線性變換和 Lua error: Internal error: The interpreter exited with status 1. 函數將解碼器輸出轉換為預測的下一 token 概率。在我們的模型中,我們在兩個 Lua error: Internal error: The interpreter exited with status 1. 層和 Lua error: Internal error: The interpreter exited with status 1. 前的線性變換之間共享同一權重矩陣,類似於 [30]。在 Lua error: Internal error: The interpreter exited with status 1. 層中,我們將這些權重乘以 $ {\textstyle \sqrt{d_{\text{model}}}} $

    3.5 位置編碼

    由於我們的模型不包含循環也不包含 Lua error: Internal error: The interpreter exited with status 1.,為了讓模型利用序列的順序,我們必須注入一些關於序列中 token 相對或絕對位置的信息。為此,我們在編碼器和解碼器堆棧底部的輸入 Lua error: Internal error: The interpreter exited with status 1. 上加入"位置編碼"。位置編碼與 Lua error: Internal error: The interpreter exited with status 1. 具有相同的維度 $ {\textstyle d_{\text{model}}} $,因而兩者可以相加。位置編碼有許多選擇,包括可學習的和固定的 [9]。

    在本工作中,我們使用不同頻率的正弦和餘弦函數:

    $ {\textstyle {P\hspace{0pt}E_{({p\hspace{0pt}o\hspace{0pt}s},{2\hspace{0pt}i})}} = {s\hspace{0pt}i\hspace{0pt}n\hspace{0pt}{({{p\hspace{0pt}o\hspace{0pt}s}/10000^{{2\hspace{0pt}i}/d_{\text{model}}}})}}} $
    $ {\textstyle {P\hspace{0pt}E_{({p\hspace{0pt}o\hspace{0pt}s},{{2\hspace{0pt}i} + 1})}} = {c\hspace{0pt}o\hspace{0pt}s\hspace{0pt}{({{p\hspace{0pt}o\hspace{0pt}s}/10000^{{2\hspace{0pt}i}/d_{\text{model}}}})}}} $

    其中 $ {\textstyle p\hspace{0pt}o\hspace{0pt}s} $ 是位置,$ {\textstyle i} $ 是維度。也就是說,位置編碼的每個維度對應一個正弦曲線。波長構成從 $ {\textstyle 2\hspace{0pt}\pi} $$ {\textstyle {10000 \cdot 2}\hspace{0pt}\pi} $ 的幾何級數。我們選擇此函數是因為我們假設它將讓模型容易學到通過相對位置進行關注,因為對於任何固定偏移量 $ {\textstyle k} $$ {\textstyle P\hspace{0pt}E_{{p\hspace{0pt}o\hspace{0pt}s} + k}} $ 都可以表示為 $ {\textstyle P\hspace{0pt}E_{p\hspace{0pt}o\hspace{0pt}s}} $ 的線性函數。

    我們還嘗試改用學習的位置 Lua error: Internal error: The interpreter exited with status 1. [9],發現兩種方案產生幾乎相同的結果(見表 3 第 (E) 行)。我們選擇正弦版本是因為它可能允許模型外推到比訓練中遇到的更長的序列長度。

    <span id="why-self-Lua error: Internal error: The interpreter exited with status 1.">

    4 為什麼使用自Lua error: Internal error: The interpreter exited with status 1.

    在本節中,我們將自Lua error: Internal error: The interpreter exited with status 1.層的若干方面與常用於將一個變長符號表示序列 $ {\textstyle (x_{1},\ldots,x_{n})} $ 映射到等長序列 $ {\textstyle (z_{1},\ldots,z_{n})} $(其中 $ {\textstyle {x_{i},z_{i}} \in {\mathbb{R}}^{d}} $,如典型的序列轉導編碼器或解碼器中的隱藏層)的循環和Lua error: Internal error: The interpreter exited with status 1.進行比較。為說明使用自Lua error: Internal error: The interpreter exited with status 1.的動機,我們考慮三個期望條件。

    一是每層的總計算複雜度;二是可以並行化的計算量,以所需的最少順序操作數衡量。

    三是網絡中長程依賴之間的路徑長度。學習長程依賴是許多序列轉導任務中的關鍵挑戰。影響學習此類依賴能力的一個關鍵因素是前向與後向信號在網絡中必須穿越的路徑長度。輸入和輸出序列中任意位置組合之間的路徑越短,就越容易學習長程依賴 [12]。因此,我們還比較了由不同類型層組成的網絡中任意兩個輸入和輸出位置之間的最大路徑長度。

    層類型 每層複雜度 順序操作 最大路徑長度
    Lua error: Internal error: The interpreter exited with status 1. $ {\textstyle O\hspace{0pt}{({n^{2} \cdot d})}} $ $ {\textstyle O\hspace{0pt}{(1)}} $ $ {\textstyle O\hspace{0pt}{(1)}} $
    循環 $ {\textstyle O\hspace{0pt}{({n \cdot d^{2}})}} $ $ {\textstyle O\hspace{0pt}{(n)}} $ $ {\textstyle O\hspace{0pt}{(n)}} $
    卷積 $ {\textstyle O\hspace{0pt}{({k \cdot n \cdot d^{2}})}} $ $ {\textstyle O\hspace{0pt}{(1)}} $ $ {\textstyle O\hspace{0pt}{({l\hspace{0pt}o\hspace{0pt}g_{k}\hspace{0pt}{(n)}})}} $
    Lua error: Internal error: The interpreter exited with status 1.(受限) $ {\textstyle O\hspace{0pt}{({r \cdot n \cdot d})}} $ $ {\textstyle O\hspace{0pt}{(1)}} $ $ {\textstyle O\hspace{0pt}{({n/r})}} $

    如表 1 所示,自Lua error: Internal error: The interpreter exited with status 1.層用恆定數量的順序操作連接所有位置,而循環層需要 $ {\textstyle O\hspace{0pt}{(n)}} $ 次順序操作。就計算複雜度而言,當序列長度 $ {\textstyle n} $ 小於表示維度 $ {\textstyle d} $ 時,自Lua error: Internal error: The interpreter exited with status 1.層比循環層更快——這在最先進的機器翻譯模型所使用的句子表示(如 word-piece [38] 和 byte-pair [31])中最為常見。為提升涉及非常長序列任務的計算性能,可將自Lua error: Internal error: The interpreter exited with status 1.限制在以對應輸出位置為中心、大小為 $ {\textstyle r} $ 的輸入序列鄰域內。這將使最大路徑長度增加到 $ {\textstyle O\hspace{0pt}{({n/r})}} $。我們計劃在未來工作中進一步研究這種方法。

    核寬度為 $ {\textstyle k < n} $ 的單個Lua error: Internal error: The interpreter exited with status 1.並不連接所有輸入和輸出位置對。要做到這一點,連續核情況下需要 $ {\textstyle O\hspace{0pt}{({n/k})}} $Lua error: Internal error: The interpreter exited with status 1.的堆疊,膨脹Lua error: Internal error: The interpreter exited with status 1.情況下則需要 $ {\textstyle O\hspace{0pt}{({l\hspace{0pt}o\hspace{0pt}g_{k}\hspace{0pt}{(n)}})}} $ [18],從而增加網絡中任意兩個位置之間最長路徑的長度。Lua error: Internal error: The interpreter exited with status 1.通常比循環層昂貴 $ {\textstyle k} $ 倍。然而,可分離Lua error: Internal error: The interpreter exited with status 1. [6] 將複雜度大幅降低到 $ {\textstyle O\hspace{0pt}{({{k \cdot n \cdot d} + {n \cdot d^{2}}})}} $。即便 $ {\textstyle k = n} $ 時,可分離 Lua error: Internal error: The interpreter exited with status 1. 的複雜度也等於自Lua error: Internal error: The interpreter exited with status 1.層與逐位置前饋層的組合,這正是我們在模型中採用的方法。

    作為附帶好處,自Lua error: Internal error: The interpreter exited with status 1.可能產生更具可解釋性的模型。我們在附錄中考察了模型的 Lua error: Internal error: The interpreter exited with status 1. 分布,並提供與討論了示例。不僅各個 Lua error: Internal error: The interpreter exited with status 1. 頭明顯地學到了執行不同的任務,許多頭似乎還表現出與句子句法和語義結構相關的行為。

    5 訓練

    本節描述我們模型的訓練規程。

    5.1 訓練數據與批處理

    我們在標準的 WMT 2014 英德數據集上訓練,該數據集包含約 450 萬對句子。句子使用 byte-pair 編碼 [3] 進行編碼,源-目標共享詞表約為 37000 個 token。對於英法翻譯,我們使用更大的 WMT 2014 英法數據集,包含 3600 萬句子,並將 token 劃分為 32000 word-piece 詞表 [38]。句子對按近似序列長度成批處理。每個訓練批次包含約 25000 個源 token 和 25000 個目標 token 的句子對。

    5.2 硬件與計劃

    我們在一台配備 8 塊 NVIDIA P100 GPU 的機器上訓練模型。對於使用本文所述 Lua error: Internal error: The interpreter exited with status 1. 的基礎模型,每個訓練步驟約耗時 0.4 秒。基礎模型總共訓練了 100,000 步或 12 小時。對於大型模型(描述見表 3 的最後一行),每步耗時 1.0 秒。大型模型訓練了 300,000 步(3.5 天)。

    5.3 優化器

    我們使用 Lua error: Internal error: The interpreter exited with status 1. 優化器 [20],參數為 $ {\textstyle \beta_{1} = 0.9} $$ {\textstyle \beta_{2} = 0.98} $$ {\textstyle \epsilon = 10^{- 9}} $。我們在整個訓練過程中按以下公式調整 Lua error: Internal error: The interpreter exited with status 1.

    $ {\displaystyle {l\hspace{0pt}r\hspace{0pt}a\hspace{0pt}t\hspace{0pt}e} = {d_{\text{model}}^{- 0.5} \cdot {\min{({s\hspace{0pt}t\hspace{0pt}e\hspace{0pt}p\hspace{0pt}\_\hspace{0pt}n\hspace{0pt}u\hspace{0pt}m^{- 0.5}},{{{s\hspace{0pt}t\hspace{0pt}e\hspace{0pt}p\hspace{0pt}\_\hspace{0pt}n\hspace{0pt}u\hspace{0pt}m} \cdot w}\hspace{0pt}a\hspace{0pt}r\hspace{0pt}m\hspace{0pt}u\hspace{0pt}p\hspace{0pt}\_\hspace{0pt}s\hspace{0pt}t\hspace{0pt}e\hspace{0pt}p\hspace{0pt}s^{- 1.5}})}}}} $ (3)

    這對應於在前 $ {\textstyle w\hspace{0pt}a\hspace{0pt}r\hspace{0pt}m\hspace{0pt}u\hspace{0pt}p\hspace{0pt}\_\hspace{0pt}s\hspace{0pt}t\hspace{0pt}e\hspace{0pt}p\hspace{0pt}s} $ 個訓練步內將 Lua error: Internal error: The interpreter exited with status 1. 線性增加,之後按步數的平方根倒數成比例減小。我們使用 $ {\textstyle {w\hspace{0pt}a\hspace{0pt}r\hspace{0pt}m\hspace{0pt}u\hspace{0pt}p\hspace{0pt}\_\hspace{0pt}s\hspace{0pt}t\hspace{0pt}e\hspace{0pt}p\hspace{0pt}s} = 4000} $

    <span id="Lua error: Internal error: The interpreter exited with status 1.">

    5.4 Lua error: Internal error: The interpreter exited with status 1.

    我們在訓練期間採用三種類型的 Lua error: Internal error: The interpreter exited with status 1.

    <span id="residual-Lua error: Internal error: The interpreter exited with status 1.">

    殘差 Lua error: Internal error: The interpreter exited with status 1.

    我們對每個子層的輸出應用 Lua error: Internal error: The interpreter exited with status 1. [33],然後再將其加到子層輸入並進行歸一化。此外,我們還在編碼器和解碼器堆棧中對 Lua error: Internal error: The interpreter exited with status 1. 與位置編碼之和應用 Lua error: Internal error: The interpreter exited with status 1.。對於基礎模型,我們使用 $ {\textstyle P_{d\hspace{0pt}r\hspace{0pt}o\hspace{0pt}p} = 0.1} $ 的丟棄率。

    標籤平滑

    在訓練期間,我們使用值為 $ {\textstyle \epsilon_{l\hspace{0pt}s} = 0.1} $ 的標籤平滑 [36]。這會損害困惑度,因為模型學到了更加不確定,但提升了準確率和 BLEU 分數。

    6 結果

    6.1 機器翻譯

    模型 BLEU 訓練成本(FLOPs)
    EN-DE EN-FR EN-DE EN-FR
    ByteNet [18] 23.75
    Deep-Att + PosUnk [39] 39.2 $ {\textstyle 1.0 \cdot 10^{20}} $
    GNMT + RL [38] 24.6 39.92 $ {\textstyle 2.3 \cdot 10^{19}} $ $ {\textstyle 1.4 \cdot 10^{20}} $
    ConvS2S [9] 25.16 40.46 $ {\textstyle 9.6 \cdot 10^{18}} $ $ {\textstyle 1.5 \cdot 10^{20}} $
    Lua error: Internal error: The interpreter exited with status 1. [32] 26.03 40.56 $ {\textstyle 2.0 \cdot 10^{19}} $ $ {\textstyle 1.2 \cdot 10^{20}} $
    Deep-Att + PosUnk Ensemble [39] 40.4 $ {\textstyle 8.0 \cdot 10^{20}} $
    GNMT + RL Ensemble [38] 26.30 41.16 $ {\textstyle 1.8 \cdot 10^{20}} $ $ {\textstyle 1.1 \cdot 10^{21}} $
    ConvS2S Ensemble [9] 26.36 41.29 $ {\textstyle 7.7 \cdot 10^{19}} $ $ {\textstyle 1.2 \cdot 10^{21}} $
    Lua error: Internal error: The interpreter exited with status 1.(基礎模型) 27.3 38.1 $ {\textstyle 3.3 \cdot \mathbf{1}\mathbf{0}^{\mathbf{1}\mathbf{8}}} $
    Lua error: Internal error: The interpreter exited with status 1.(大型) 28.4 41.8 $ {\textstyle 2.3 \cdot 10^{19}} $

    在 WMT 2014 英德翻譯任務上,大型 Lua error: Internal error: The interpreter exited with status 1. 模型(表 2 中的 Lua error: Internal error: The interpreter exited with status 1.(大型))比此前報告的最佳模型(含 ensemble)高出 $ {\textstyle 2.0} $ BLEU 以上,建立了 $ {\textstyle 28.4} $ 的新最先進 BLEU 分數。該模型的配置見表 3 的最後一行。訓練在 $ {\textstyle 8} $ 塊 P100 GPU 上耗時 $ {\textstyle 3.5} $ 天。即便我們的基礎模型也超過了所有此前發表的模型與 ensemble,且訓練成本僅為任一競爭模型的一小部分。

    在 WMT 2014 英法翻譯任務上,我們的大型模型獲得了 $ {\textstyle 41.0} $ 的 BLEU 分數,超過此前發表的所有單模型,訓練成本不到先前最先進模型的 $ {\textstyle 1/4} $。為英法翻譯訓練的 Lua error: Internal error: The interpreter exited with status 1.(大型)模型使用 $ {\textstyle P_{d\hspace{0pt}r\hspace{0pt}o\hspace{0pt}p} = 0.1} $Lua error: Internal error: The interpreter exited with status 1. 率,而非 $ {\textstyle 0.3} $

    對於基礎模型,我們使用通過平均最後 5 個 checkpoint(每 10 分鐘寫出一次)得到的單一模型。對於大型模型,我們平均了最後 20 個 checkpoint。我們使用 beam size 為 $ {\textstyle 4} $、長度懲罰 $ {\textstyle \alpha = 0.6} $ [38] 的 beam search。這些 Lua error: Internal error: The interpreter exited with status 1. 是在開發集上經過實驗後選定的。我們將推理時最大輸出長度設置為輸入長度 + $ {\textstyle 50} $,但在可行時提前終止 [38]。

    2 總結了我們的結果,並將我們的翻譯質量和訓練成本與文獻中其他模型架構進行了比較。我們通過將訓練時間、所用 GPU 數量以及每塊 GPU 的持續單精度浮點運算能力估計值相乘,估算訓練模型所用的浮點運算次數 222我們對 K80、K40、M40 和 P100 分別使用 2.8、3.7、6.0 和 9.5 TFLOPS。。

    6.2 模型變體

    $ {\textstyle N} $ $ {\textstyle d_{\text{model}}} $ $ {\textstyle d_{\text{ff}}} $ $ {\textstyle h} $ $ {\textstyle d_{k}} $ $ {\textstyle d_{v}} $ $ {\textstyle P_{d\hspace{0pt}r\hspace{0pt}o\hspace{0pt}p}} $ $ {\textstyle \epsilon_{l\hspace{0pt}s}} $ 訓練 PPL BLEU 參數量
    步數 (dev) (dev) $ {\textstyle \times 10^{6}} $
    基礎 6 512 2048 8 64 64 0.1 0.1 100K 4.92 25.8 65
    (A) 1 512 512 5.29 24.9
    4 128 128 5.00 25.5
    16 32 32 4.91 25.8
    32 16 16 5.01 25.4
    (B) 16 5.16 25.1 58
    32 5.01 25.4 60
    (C) 2 6.11 23.7 36
    4 5.19 25.3 50
    8 4.88 25.5 80
    256 32 32 5.75 24.5 28
    1024 128 128 4.66 26.0 168
    1024 5.12 25.4 53
    4096 4.75 26.2 90
    (D) 0.0 5.77 24.6
    0.2 4.95 25.5
    0.0 4.67 25.3
    0.2 5.47 25.7
    (E) 用位置 Lua error: Internal error: The interpreter exited with status 1. 替代正弦 4.92 25.7
    大型 6 1024 4096 16 0.3 300K 4.33 26.4 213

    為評估 Lua error: Internal error: The interpreter exited with status 1. 不同組件的重要性,我們以不同方式改變基礎模型,並在開發集 newstest2013 上測量英德翻譯性能的變化。我們使用上一節所述的 beam search,但不進行 checkpoint 平均。我們將這些結果列於表 3

    在表 3 的第 (A) 行中,我們如第 3.2.2 節所述,在保持計算量不變的情況下改變 Lua error: Internal error: The interpreter exited with status 1. 頭數及 Lua error: Internal error: The interpreter exited with status 1. 鍵值維度。單頭 Lua error: Internal error: The interpreter exited with status 1. 比最佳設置低 0.9 BLEU,而頭數過多時質量也會下降。

    在表 3 的第 (B) 行中,我們觀察到減少 Lua error: Internal error: The interpreter exited with status 1. 鍵大小 $ {\textstyle d_{k}} $ 會損害模型質量。這表明判定相容性並非易事,比點積更複雜的相容性函數可能有益。我們還在第 (C) 和 (D) 行中觀察到,正如預期,更大的模型表現更好,而 Lua error: Internal error: The interpreter exited with status 1. 在避免過擬合方面非常有幫助。在第 (E) 行中,我們將正弦位置編碼替換為學習的位置 Lua error: Internal error: The interpreter exited with status 1. [9],並觀察到與基礎模型幾乎相同的結果。

    6.3 英文成分句法分析

    解析器 訓練 WSJ 23 F1
    Vinyals & Kaiser el al. (2014) [37] 僅 WSJ,判別式 88.3
    Petrov et al. (2006) [29] 僅 WSJ,判別式 90.4
    Zhu et al. (2013) [40] 僅 WSJ,判別式 90.4
    Dyer et al. (2016) [8] 僅 WSJ,判別式 91.7
    Lua error: Internal error: The interpreter exited with status 1.(4 層) 僅 WSJ,判別式 91.3
    Zhu et al. (2013) [40] 半監督 91.3
    Huang & Harper (2009) [14] 半監督 91.3
    McClosky et al. (2006) [26] 半監督 92.1
    Vinyals & Kaiser el al. (2014) [37] 半監督 92.1
    Lua error: Internal error: The interpreter exited with status 1.(4 層) 半監督 92.7
    Luong et al. (2015) [23] 多任務 93.0
    Dyer et al. (2016) [8] 生成式 93.3

    為評估 Lua error: Internal error: The interpreter exited with status 1. 能否泛化到其他任務,我們在英文成分句法分析上進行了實驗。這一任務帶來特定挑戰:輸出受到強烈的結構約束,且明顯長於輸入。此外,基於 RNN 的 Lua error: Internal error: The interpreter exited with status 1. 模型在小數據規模下未能達到最先進結果 [37]。

    我們在 Penn Treebank [25] 的 Wall Street Journal (WSJ) 部分(約 40K 訓練句子)上訓練了一個 $ {\textstyle d_{m\hspace{0pt}o\hspace{0pt}d\hspace{0pt}e\hspace{0pt}l} = 1024} $ 的 4 層 Lua error: Internal error: The interpreter exited with status 1.。我們還在半監督設定下訓練了它,使用了來自高置信度語料和 BerkeleyParser 的更大語料,共約 17M 句 [37]。在僅 WSJ 設定下使用 16K token 詞表,在半監督設定下使用 32K token 詞表。

    我們只進行了少量實驗,在 Section 22 開發集上選擇 Lua error: Internal error: The interpreter exited with status 1.(包括 Lua error: Internal error: The interpreter exited with status 1. 和殘差,見第 5.4 節)、Lua error: Internal error: The interpreter exited with status 1.和 beam 大小,其他所有參數與英德基礎翻譯模型保持不變。推理時,我們將最大輸出長度增加到輸入長度 + $ {\textstyle 300} $。僅 WSJ 設定與半監督設定均使用 $ {\textstyle 21} $ 的 beam 大小和 $ {\textstyle \alpha = 0.3} $

    我們在表 4 中的結果表明,儘管未做任務特定的調優,我們的模型表現出乎意料地好,結果優於此前報告的所有模型,只有 Recurrent Neural Network Grammar [8] 例外。

    與基於 RNN 的 Lua error: Internal error: The interpreter exited with status 1. 模型 [37] 相比,Lua error: Internal error: The interpreter exited with status 1. 即便只在 40K 句的 WSJ 訓練集上訓練,也優於 BerkeleyParser [29]。

    7 結論

    在本工作中,我們提出了 Lua error: Internal error: The interpreter exited with status 1.,這是第一個完全基於 Lua error: Internal error: The interpreter exited with status 1. 的序列轉導模型,用多頭自Lua error: Internal error: The interpreter exited with status 1.替換了編碼器-解碼器架構中最常用的循環層。

    對於翻譯任務,Lua error: Internal error: The interpreter exited with status 1. 的訓練速度可以顯著快於基於循環或Lua error: Internal error: The interpreter exited with status 1.的架構。在 WMT 2014 英德及 WMT 2014 英法翻譯任務上,我們均取得了新的最先進水平。在前者上,我們最好的模型甚至超過了此前報告的所有 ensemble。

    我們對基於 Lua error: Internal error: The interpreter exited with status 1. 的模型的未來充滿期待,並計劃將其應用於其他任務。我們計劃將 Lua error: Internal error: The interpreter exited with status 1. 擴展到涉及文本以外輸入輸出模態的問題,並研究局部、受限的 Lua error: Internal error: The interpreter exited with status 1. 機制,以高效處理圖像、音頻和視頻等大型輸入與輸出。使生成過程不再嚴格順序化也是我們的另一個研究目標。

    我們用於訓練和評估模型的代碼可在 https://github.com/tensorflow/tensor2tensor 獲取。

    致謝

    我們感謝 Nal Kalchbrenner 和 Stephan Gouws 的寶貴評論、更正與啟發。

    參考文獻

    • [1] Jimmy Lei Ba, Jamie Ryan Kiros, and Geoffrey E Hinton. Lua error: Internal error: The interpreter exited with status 1.. 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. Lua error: Internal error: The interpreter exited with status 1.-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: Lua error: Internal error: The interpreter exited with status 1. with depthwise separable Lua error: Internal error: The interpreter exited with status 1.. 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. Convolutional Lua error: Internal error: The interpreter exited with status 1. 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 image 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. Lua error: Internal error: The interpreter exited with status 1.. 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 Lua error: Internal error: The interpreter exited with status 1.? 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 Koray 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 Lua error: Internal error: The interpreter exited with status 1. networks. In International Conference on Learning Representations, 2017.
    • [20] Diederik Kingma and Jimmy Ba. Lua error: Internal error: The interpreter exited with status 1.: A method for stochastic optimization. In ICLR, 2015.
    • [21] Oleksii Kuchaiev and Boris Ginsburg. Factorization tricks for Lua error: Internal error: The interpreter exited with status 1. 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 Lua error: Internal error: The interpreter exited with status 1.. arXiv preprint arXiv:1703.03130, 2017.
    • [23] Minh-Thang Luong, Quoc V. Le, Ilya Sutskever, Oriol Vinyals, and Lukasz Kaiser. Multi-task Lua error: Internal error: The interpreter exited with status 1. learning. arXiv preprint arXiv:1511.06114, 2015.
    • [24] Minh-Thang Luong, Hieu Pham, and Christopher D Manning. Effective approaches to Lua error: Internal error: The interpreter exited with status 1.-based neural machine translation. arXiv preprint arXiv:1508.04025, 2015.
    • [25] Mitchell P Marcus, Mary Ann Marcinkiewicz, and Beatrice Santorini. Building a large annotated 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 Lua error: Internal error: The interpreter exited with status 1. 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 Lua error: Internal error: The interpreter exited with status 1. 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 Lua error: Internal error: The interpreter exited with status 1. layer. arXiv preprint arXiv:1701.06538, 2017.
    • [33] Nitish Srivastava, Geoffrey E Hinton, Alex Krizhevsky, Ilya Sutskever, and Ruslan Salakhutdinov. Lua error: Internal error: The interpreter exited with status 1.: a simple way to prevent neural networks from Lua error: Internal error: The interpreter exited with status 1.. 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. Lua error: Internal error: The interpreter exited with status 1. 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.

    <span id="Lua error: Internal error: The interpreter exited with status 1.-visualizations">

    Lua error: Internal error: The interpreter exited with status 1. 可視化

    見圖注

    見圖注 見圖注

    見圖注 見圖注