transformer论文解读_【论文解读】ICLR2020 | 深度自适应Transformer
作者?| kaiyuan? ?整理 |?NewBeeNLP
一篇來自ICLR2020,facebook人工智能實(shí)驗(yàn)室的論文,關(guān)于改進(jìn)Transformer推理速度的。論文地址:https://arxiv.org/abs/1910.10073
寫在前面
大模型在困難任務(wù)上表現(xiàn)非常好,而小模型也可以在比較簡單的任務(wù)上表現(xiàn)出色。但是目前大模型在應(yīng)用簡單任務(wù)時(shí)的運(yùn)算量同復(fù)雜任務(wù)一樣,這就導(dǎo)致了不必要的資源浪費(fèi),此外還會導(dǎo)致推理速度變慢。對此,提出了一種depth-adaptive transformer,可以在推理階段針對不同的token自動選擇在合適的層進(jìn)行停止并輸出,在不損失模型效果的同時(shí)大大提高推理速度。
Anytime Prediction
傳統(tǒng)的transformer decoder,所有的token都需要經(jīng)過N個(gè)block,且最后的分類器是唯一的。但是一些簡單的任務(wù)并不需要推理如此多步,可能在第 層模型已經(jīng)得出結(jié)果了,再往上走并沒有意義,于是可以選擇在第 層就輸出,這稱為「動態(tài)計(jì)算(Dynamic Computation)」,
并且,每一層的分類器 可以選擇不同或者相同。接下去就是怎么去實(shí)現(xiàn)上面的想法,即對于每個(gè)輸入token,如何自動確定其在哪一層退出?文中提出了兩種策略:
Aligned training
對齊訓(xùn)練會同時(shí)優(yōu)化所有分類器,并假設(shè)當(dāng)前狀態(tài)之前的所有狀態(tài) 均可以被看見,然后計(jì)算 項(xiàng)loss,如下圖(a)
其中, 是第 層所有 損失和, 是 的加權(quán)平均(論文附錄A實(shí)驗(yàn)說明平均加權(quán)的效果最好)。
Mixed training
但是上述對齊訓(xùn)練是不好實(shí)現(xiàn)的,因?yàn)椴皇撬衪oken都在同一層輸出,那么當(dāng)有的token在較早的層輸出后,在后續(xù)層計(jì)算時(shí)就無法看見它。解決這個(gè)問題一個(gè)直觀的想法就是將已經(jīng)輸出的單元直接copy到上面一層即可,如下圖(b)。對輸入序列采樣 個(gè)退出序列 ,并對每個(gè)退出序列計(jì)算損失,
Adaptive Depth Estimation
自適應(yīng)深度估計(jì)。上文還有一個(gè)問題待解決:如何采樣退出序列?提出了兩種策略:「sequence-specific」:對應(yīng)于aligned training,所有token都在同一層退出;
「token-specific」:對應(yīng)于mixed training,每個(gè)token可能在不同的層退出;
表示第 步對應(yīng)的退出層參數(shù)分布,其中 表示 在第 層退出并得到預(yù)測 的概率, 表示真實(shí)分布,使用下式優(yōu)化:
總體的損失函數(shù)為:
Sequence-Specific Depth
在該種模式下,所有token都在同一層退出,所以我們不考慮time-step 。通過將encoder輸出的平均值 送到多項(xiàng)式分類器,我們得到分布 :
接下來怎么得到真實(shí)分布 呢?本文提出了兩種策略:「Likelihood-based」:基于每個(gè)塊之后整個(gè)序列的似然性,并且以Dirac delta為中心對退出進(jìn)行了優(yōu)化,從而使序列似然性最高,
并且還可以加入正則項(xiàng)鼓勵更低的退出層「Correctness-based」:基于似然的方式無法判斷最大的似然是不是正確的序列,因此基于正確性的方式選擇正確字符最大分?jǐn)?shù)的最低的層。具體來說,對每個(gè)層,我們計(jì)算在該層上所有正確預(yù)測的字符數(shù),然后選擇最大正確數(shù)的一層,并同樣加上正則項(xiàng):
Token-Specific Depth
基于token的方式對每個(gè)token自動學(xué)習(xí)在哪一層退出,提出兩種exit distribution 的計(jì)算方式:「Multinomial」:多項(xiàng)分布, 表示第一層decoder的輸出「Poisson Binomial」:泊松二項(xiàng)分布, 表示停止概率(halting probability),其對應(yīng)有一個(gè)閾值 ,當(dāng) 超過這個(gè)閾值時(shí)即退出否則繼續(xù)往上走直至結(jié)束
接下去也是對真實(shí)分布的計(jì)算,提出了三種策略:「Likelihood-based」:基于似然的方式在每一步選擇似然最大的層退出,
但是顯然,這種方法是貪心做法,我們還想要考慮未來的字符,所以本文考慮一個(gè)光滑化(smoothed)似然,它考慮附近的幾個(gè)字符:「Correctness-based」:基于正確性的方式,「Confidence thresholding」:基于自信度閾值,定義了一個(gè)自信度閾值 ,當(dāng)當(dāng)前輸出 的最大得分超過閾值時(shí),即選擇退出。其中 是通過驗(yàn)證集確定的。
上述幾種方法的示意圖:
一些結(jié)論Aligned training效果要優(yōu)于Mixed training;
用對齊訓(xùn)練方法得到的模型,在 的時(shí)候,差不多就能超過baseline模型(傳統(tǒng)Transformer),而Possion方法大體上比多項(xiàng)分布好;
更多更詳細(xì)的實(shí)驗(yàn)分析推薦閱讀reference里的作者PPT分享;
整體感覺和之前介紹過的Universal Transformer很像,都是采用dynamic computation的思想。但是很多細(xì)節(jié)還是不同,比如沒有大型共享的Transformer層,并且本文主要關(guān)注動態(tài)停止策略設(shè)計(jì)等等:There are a number of differences to universal transformer (UT): UT repeatedly applies the same layer for a number of steps, while as our approach applies different layers at every step. The dynamic computation in UT considers a single type of mechanism to estimate the number of steps (=network depth) while as we consider a number of mechanisms and supervision regimes. Moreover, dynamic computation was not actually used for the machine translation experiments in the UT paper (it was used for other tasks though), the authors used a fixed number of steps for every input instead.Open Review[1]DAT作者PPT分享[2]
本文參考資料[1]
Open Review: https://openreview.net/forum?id=SJg7KhVKPH[2]
DAT作者PPT分享: http://elbayadm.github.io/assets/talks/anytime/decore_04102019.pdf
總結(jié)
以上是生活随笔為你收集整理的transformer论文解读_【论文解读】ICLR2020 | 深度自适应Transformer的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: c++代码转为go_Go语言学习笔记六-
- 下一篇: php怎样数据缓存文件,php数据缓存到