1. 程式人生 > >基於深度self-attention的字符集語言模型(transformer)論文筆記

基於深度self-attention的字符集語言模型(transformer)論文筆記

論文題目:Character-Level Language Modeling with Deeper Self-Attention

論文地址:https://arxiv.org/abs/1808.04444v1

摘要

      LSTM和其他RNN的變體在字元級別的語言建模方面取得了很好的成功。這些模型一般情況下都會使用反向傳播來進行訓練,並通常把這些模型的成功歸結與RNN結構的長時記憶能力。在本文中,我們將為大家介紹一個深層(64層)的transformer模型。在2個常用的測試基準資料集上這個模型結構取得大大優於RNN變種的成績(1.13 bits per character on text8 and 1.06 on enwik8),成為目前最為領先的技術。在得到這個良好的結果過程中,我們證明了在中間網路層和中間序列位置附加損失是非常重要的。

簡介

       自然語言文字的字符集建模存在很多挑戰。首先,模型必須“從頭開始”學習大量的詞彙。其次,自然文字很難處理數百或者數千長距離步長的序列問題(長時依賴)。第三,字符集序列要比單詞級序列長很多,因此需要更多的計算步驟。

        近年來的,高階的語言模型普遍遵循一個套路,使用相對較短的序列長度(例如限制為200個字元)對小批量的文字序列訓練RNN模型。那麼怎麼捕獲上下文資訊呢?我們按順序訓練資料批次,並將前以批次的隱藏狀態傳遞給當前批次。這個過程稱為“truncated backpropagation through time” 按時間的反向傳播(TBTT),很顯然RNN的梯度計算不會每個批次更新一步。到目前已經出現了很多優化TBTT的演算法。

        雖然這樣的結構取到了很好的成效,但是它增加了訓練的複雜性。但最近一些研究表明,用這樣的方式訓練模型實際上並沒有真的得到‘很強’的長期記憶能力。例如Khandelwal等人,發現基於單詞的LSTM語言模型只能有效地使用約200個上下文(即使提供了更多),並且該單詞順序僅在最後的~50個標記內有效。

        本文中,我們使用了一個非迴圈的神經網路結構並在基於字元級的語言模型上取得了強有力的結果。具體來說,我們使用了一個基於transformer self attention層的深度網路。這個模型從訓練語料的隨機位置訓練每個小批次的序列,取消了RNN的按時傳遞資訊的方式,使用causal (backward-looking) attention的方式反向傳播。

        我們有個很重要的發現就是transformer很適合語言模型的建模,並且是達到了可以取代RNN的位置。我們推transformer的成功源於它能夠‘快速的’在任意距離上傳播資訊。相比之下,RNN需要逐步學習來傳遞相關資訊。我們還發現,對基礎transformer架構進行一定的修改可能會帶來一定的益處。但最重要的,我們添加了3個auxiliary losses,要求模型預測即將到來的字元

  1. 在序列中的位置。
  2. 隱藏層中的表示。
  3. 在目標位置預測未來的的多少個步驟。

這些損失加速了收斂,使得我們可以訓練更深層的網路。

字符集transformer模型

    語言模型通過有限長度的公式分解聯合概率,並分配到標記序列上。

                                                      Pr(t_{0:L})=P(t_{0})\prod _{i=1}^{L}Pr(t_{i}|t_{0:i-1})

    為了用模組化的方式計算條件概率Pr(t_{i}|t_{0:i-1}),我們選了一個transformer的網路來處理字符集的序列t_{0:i-1}。transformer網路最近在處理序列問題上表現突出,相較於傳統網路結構,transformer網路往往能夠取得更好的效果。

    我們的字元級的transformer結構由64個transformer層組成。如Vaswani所介紹,transformer層 是由有多個self-attention層後跟著2個全連線層組成的前饋神經網路組成。更多有關transformer的細節可以前往這個地址-tensor2tensor。為了確保這個模型在預測的時候只以考慮當前詞之前的詞,我們將我們的attention層轉化為causal attention,(attention layer只向(右)後傳播),這個原理與seq2seq問題的原始transformer架構的decoder 元件中的“masked attention”相同。

      下圖展示了causal attention的原理框圖,causal attention只允許資訊從序列的左邊流轉到右邊,對單詞的預測只考慮到在這個單詞前面出現的單詞。

Auxiliary Losses

       在我們的瞭解中,我們的網路結構是目前為止最深的transformer網路。在最初的實驗中我們發現,訓練網路的深度超過10層就會出現收斂慢準確性差的挑戰。在這裡我們提出了auxiliary losses的概念,它能使得深層的網路更好的發揮作用,從而大大的加快了收斂的速度。

      我們在中間位置,中間層和非相鄰目標中添加了幾種型別的auxiliary losses。在實驗中我們猜測這些損失不僅可以加速收斂,還可以作為額外的正則化器,訓練的時候我們將auxiliary losses新增到更新權值網路的最終loss中。每種型別的auxiliary loss 都有自己schedule of decay。在評估和預測的時候,僅僅需要用到最終層的最終位置。

     具體來說就是,這種方法的意義在於許多的訓練引數僅僅在訓練的期間使用,分類層(輸出層)的引數與中間層和非相鄰目標的預測預測值有關。所以在我們模型的介紹中,需要注意我們討論的是“訓練引數”還是預測“預測引數”。

Multiple Positions