【NLP】Universal Transformers詳解
上一篇transformer寫了整整兩週。。解讀太慢了。。主要是自己也在理解,而且沒有時間看原始碼,非常慚愧,如果哪裡說錯了希望大佬們可以提醒一下
之前細細研究了attention和transformer之後,universal transformer讀了一遍就理解了,缺乏之前基礎的童鞋們請先移步:
Universal Transformer的產生是因為Transformer在實踐上和理論上的兩個缺點(參考上篇文章),universal代表的是computationally universal,即圖靈完備(參考Transformer詳解第三節)。主要的改動就是加上了迴圈,但不是時間上的迴圈,而是depth的迴圈。注意到Transformer模型其實分別用了6個layer,是fixed depth,而universal中應用了一個機制對迴圈的次數進行控制。
1. 模型結構
模型的結構還是和傳統Transformer很相似,這裡就不重複解讀了,主要講一下universal transformer的幾點改動:
1.1 Recurrent機制
在Transformer中,input在經過multihead self-attention後會進入fully connected層,這裡則進入了Transition層,通過一個共享權重的transition function繼續迴圈計算:
這裡縱向的position指的就是一個序列中各個symbol的位置(也就是在rnn中的time step),橫向的time指的主要是計算上的先後順序,比如一個序列
這樣,每個self-attention+transition的輸出 可以表示為:
這裡Transition function可以和之前一樣是fully-connected layer,也可以是separable convolution layer。
1.2 Coordinate embeddings
Transformer的positional embedding只用考慮symbol的position就可以了,這裡又多了一個time維度,所以每一次迴圈都會重新做一次coordinate embedding,圖上沒有表示出來,需要看原始碼確認一下。Embedding公式如下:
暫時還沒想清楚為什麼這麼運算,想清楚了說一下。。
1.3 Adaptive Computation Time (ACT)
ACT可以調整計算步數,加入ACT機制的Universal transformer被稱為Adaptive universal transformer。要注意的細節是,每個position的ACT是獨立的,如果一個position a在t時刻被停止了, 會被一直複製到最後一個position停止,當然也會設定一個最大時間,避免死迴圈。
2. 總結
Universal Transformer對transformer的缺點進行了改進,在問答、語言模型、翻譯等任務上都有更好的效果,成為了新的seq2seq state-of-the-art模型。它的關鍵特性主要有兩點:
- Weight sharing:歸納偏置是關於目標函式的假設,CNN和RNN分別假設spatial translation invariace和time translation invariance,體現為CNN卷積核在空間上的權重共享和RNN單元在時間上的權重共享,所以universal transformer也增加了這種假設,使recurrent機制中的權重共享,在增加了模型表達力的同時更加接近rnn的inductive bias。
- Conditional computation:通過加入ACT控制模型的計算次數,比固定depth的universal transformer取得了更好的結果
細讀下來,還是有很多細節值得深挖,我淺挖了一下,各位感興趣的再去多看看
劃重點:computationally universal, inductive bias, coordinate embedding
以上。
【參考資料】: