transformer論文解讀_【論文解讀】ICLR2020 | 深度自適應Transformer

作者?| kaiyuan? ?整理 |?NewBeeNLP

一篇來自ICLR2020,facebook人工智能實驗室的論文,關于改進Transformer推理速度的。論文地址:https://arxiv.org/abs/1910.10073

寫在前面

大模型在困難任務上表現非常好,而小模型也可以在比較簡單的任務上表現出色。但是目前大模型在應用簡單任務時的運算量同復雜任務一樣,這就導致了不必要的資源浪費,此外還會導致推理速度變慢。對此,提出了一種depth-adaptive transformer,可以在推理階段針對不同的token自動選擇在合適的層進行停止并輸出,在不損失模型效果的同時大大提高推理速度。

Anytime Prediction

傳統的transformer decoder,所有的token都需要經過N個block,且最后的分類器是唯一的。但是一些簡單的任務并不需要推理如此多步,可能在第 層模型已經得出結果了,再往上走并沒有意義,于是可以選擇在第 層就輸出,這稱為「動態計算(Dynamic Computation)」,

并且,每一層的分類器 可以選擇不同或者相同。接下去就是怎么去實現上面的想法,即對于每個輸入token,如何自動確定其在哪一層退出?文中提出了兩種策略:

Aligned training

對齊訓練會同時優化所有分類器,并假設當前狀態之前的所有狀態 均可以被看見,然后計算 項loss,如下圖(a)

其中, 是第 層所有 損失和, 是 的加權平均(論文附錄A實驗說明平均加權的效果最好)。

Mixed training

但是上述對齊訓練是不好實現的,因為不是所有token都在同一層輸出,那么當有的token在較早的層輸出后,在后續層計算時就無法看見它。解決這個問題一個直觀的想法就是將已經輸出的單元直接copy到上面一層即可,如下圖(b)。對輸入序列采樣 個退出序列 ,并對每個退出序列計算損失,

Adaptive Depth Estimation

自適應深度估計。上文還有一個問題待解決:如何采樣退出序列?提出了兩種策略:「sequence-specific」:對應于aligned training,所有token都在同一層退出;

「token-specific」:對應于mixed training,每個token可能在不同的層退出;

表示第 步對應的退出層參數分布,其中 表示 在第 層退出并得到預測 的概率, 表示真實分布,使用下式優化:

總體的損失函數為:

Sequence-Specific Depth

在該種模式下,所有token都在同一層退出,所以我們不考慮time-step 。通過將encoder輸出的平均值 送到多項式分類器,我們得到分布 :

接下來怎么得到真實分布 呢?本文提出了兩種策略:「Likelihood-based」:基于每個塊之后整個序列的似然性,并且以Dirac delta為中心對退出進行了優化,從而使序列似然性最高,

并且還可以加入正則項鼓勵更低的退出層「Correctness-based」:基于似然的方式無法判斷最大的似然是不是正確的序列,因此基于正確性的方式選擇正確字符最大分數的最低的層。具體來說,對每個層,我們計算在該層上所有正確預測的字符數,然后選擇最大正確數的一層,并同樣加上正則項:

Token-Specific Depth

基于token的方式對每個token自動學習在哪一層退出,提出兩種exit distribution 的計算方式:「Multinomial」:多項分布, 表示第一層decoder的輸出「Poisson Binomial」:泊松二項分布, 表示停止概率(halting probability),其對應有一個閾值 ,當 超過這個閾值時即退出否則繼續往上走直至結束

接下去也是對真實分布的計算,提出了三種策略:「Likelihood-based」:基于似然的方式在每一步選擇似然最大的層退出,

但是顯然,這種方法是貪心做法,我們還想要考慮未來的字符,所以本文考慮一個光滑化(smoothed)似然,它考慮附近的幾個字符:「Correctness-based」:基于正確性的方式,「Confidence thresholding」:基于自信度閾值,定義了一個自信度閾值 ,當當前輸出 的最大得分超過閾值時,即選擇退出。其中 是通過驗證集確定的。

上述幾種方法的示意圖:

一些結論Aligned training效果要優于Mixed training;

用對齊訓練方法得到的模型,在 的時候,差不多就能超過baseline模型(傳統Transformer),而Possion方法大體上比多項分布好;

更多更詳細的實驗分析推薦閱讀reference里的作者PPT分享;

整體感覺和之前介紹過的Universal Transformer很像,都是采用dynamic computation的思想。但是很多細節還是不同,比如沒有大型共享的Transformer層,并且本文主要關注動態停止策略設計等等: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

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/539763.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/539763.shtml
英文地址,請注明出處:http://en.pswp.cn/news/539763.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

vs2017下開發C++MFC動態庫實現

2019獨角獸企業重金招聘Python工程師標準>>> 今天無意間瀏覽了一些關于vs2017新功能的介紹,特別是微軟發部了Visual Studio Installer,這個集成安裝工具簡約的操作風格,豐富vs開發內容,真正打通了開發的“最后一公里”…

hadoop為什么出現

在很多領域里面,在現在這個時代下面,很多公司產生的數據太多了,數據量太大了。用原來的技術去做,有種捉襟見肘的感覺,要么在性能上面,要么在速度上面遇到了瓶頸,這個時候需要新的技術來解決&…

微信視頻開發jquery mobile

功能 微信企業號里開發一個微視頻功能,用于播放視頻。技術 J2EE,前端ui是jquerymobile,HTML5,CSS3,開源視頻插件:mediaelement-and-player.min.js 插件官網:http://www.mediaelementjs.com/視…

python加密程序_Python 簡單的可逆加密程序

簡單加密1.[代碼][Python]代碼#codingutf-8Description: 可逆的加密與解密Environment: python2.5.xAuthor:idehonggmail.comimport osimport sysclass Code(object):可逆的加密與解密def __init__(self, key "idehonggmail.com"):self.__src_key keyself.__key s…

eclipse中tomcat服務器locations不能修改,解決eclipse中Tomcat服務器的server location選項不能修改的問題...

解決eclipse中Tomcat服務器的server location選項不能修改的問題問題描述編輯tomcat服務器時,server locations無法編輯,如下圖:解決方法在Eclipse菜單欄中選擇window — show view — server 可以看到服務的面板,服務面板中可看到…

當create table as select 遇上大數據

統計24小時的紅包感知專題,有1.5億行以上的數據,Nokia給出的方法是先按小時執行算法,再匯總各個小時的執行結果。 算法中包含了大量的 sum(case when)計算。 專題里有5個小節,執行計劃的時候,需要跑5次where條件不同…

mybatis源碼分析(方法調用過程)

十一月月底,宿舍樓失火啦,搞得20多天沒有網,目測直到放假也不會來了。。。 正題 嗯~,其實閱讀源碼不是為了應付面試,更重要的讓你知道,大師是怎樣去寫代碼的,同樣是用Java,為啥Clint…

提取多個字段_動態合并多個工作表,數據再多也不怕

小伙伴們好啊,今天老祝和大家分享一個動態合并多個工作表的技巧。很多時候,咱們的數據是按照部門或是月份等項目,分別存放在不同工作表中的,要對這些數據進行分析匯總的時候,需要先將不同工作表中的數據合并到一起才可…

深入理解Oracle的并行操作【好文認真讀】

請尊重原文作者,http://czmmiao.iteye.com/blog/1487568 -------------------------------------------------------------------------------- 并行(Parallel)和OLAP系統 并行的實現機制是:首先,Oracle會創建一個進…

服務器虛擬化性能瓶頸怎么辦,如何突破虛擬化三大瓶頸

如果你希望在應用虛擬化技術的過程中不出現任何問題的話,那么顯然這是不切合實際的期望。虛擬化技術能給你的數據中心帶來諸多好處,但是為了可以利用虛擬化的優勢,你需要了解可能會面對哪些問題。即使虛擬化技術已經被應用到了許多企業中&…

2017-2018-1 20155229 《信息安全系統設計基礎》第十四周學習總結

2017-2018-1 20155229 《信息安全系統設計基礎》第十四周學習總結 對“第三章 程序機器級表示”的深入學習 我選擇這章的理由是第一次學的時候還是不太理解,老師也有說這章建議在認真學習,所以本周的學習任務是認真再次學習這一章c語言、匯編代碼以及機器…

python中為什么推薦使用with_Python中的with關鍵字使用詳解

這篇文章主要介紹了Python 中的with關鍵字使用詳解的相關資料,在Python中,with關鍵字是一個替你管理實現上下文協議對象的好東西,需要的朋友可以參考下">在 Python 2.5 中, with 關鍵字被加入。它將常用的 try ... except ... finally ... 模式很方便的被復…

create table as select性能測試

轉載自:http://blog.csdn.net/yangzhijun_cau/article/details/7396088 --------------------------------------------------------------------------------- 原表270W數據,無照片,字段比較多,有50個左右 測試機是一個虛擬機&a…

類似索引Model套Model之 iOS模型閑聊二

看下界面, 這是類似于索引的頁面, 只不過木有右側索引條的布局. 如果想了解通訊錄索引的,請移步iOS - 高仿通訊錄之商品索引排序搜索. 提供思路如下: 分析界面及接口用 MVC 設計模式來實現(其實核心點都在下面5)創建內外層 Model 并綁定兩者 Model兩者 Cell 布局的實現 (便于后…

輸入法畫面_搜狗輸入法:用AI技術譜寫詩意生活

十九世紀著名的思想家斯賓塞曾說:科學本身就富有詩意。這里應該包含兩種意思,字面上,科學是飽含文字之美的,比如原理和規律的推演,僅通過文字符號的簡單排列,便有了生機。但深層次上科學又不止于文字&#…

hadoop偽分布式(單機版)安裝,Linux

一、下載 1、hadoop官網下載:https://archive.apache.org/dist/hadoop/common/ 進入stable文件夾里下載,這是穩定版本。 stable/ 本文的版本是 hadoop-2.7.2.tar.gz 2、jdk下載,JDK7及以上,本文用jdk8-64位 二、版本區別 2.…

c++-add two numbers 兩個鏈表相加

題目描述 You are given two linked lists representing two non-negative numbers. The digits are stored in reverse order and each of their nodes contain a single digit. Add the two numbers and return it as a linked list. Input: (2 -> 4 -> 3) (5 -> 6…

城軌的兩類時鐘系統均同步于_基于兩臺SDS3000示波器同步產生“8通道”示波器...

在很多應用場合需要4通道以上的示波器,但是市面上極大部分示波器最多只有四通道,而且沒有外部輸入的同步時鐘接口。 有什么快捷的方法獲得更多通道功能的示波器? 最簡便的方法是:將兩臺示波器的輔助輸入信號作為觸發源,同時連接到…

Linux設置ssh免密碼登錄

一、SSH來源 對于需要遠程管理其它機器,一般使用遠程桌面或者telnet。linux一般只能是telnet。但是telnet的缺點是通信不加密,存在不安全因素,只適合內網訪問。 為解決這個問題,推出了通信加密通信協議,即SSH&#x…

解析json數據_Retrofit同時解析JSON和XML數據格式

前言Android開發中,我們會經常遇到前端需要解析兩種數據格式(json和xml),比如自己服務器返回的是json格式的數據,我們做微信登錄的時候,微信返回的格式又是xml格式的。我們可以通過自己編寫Retrofit的ConverterFactory來做到可以同時解析兩種…