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.mzph.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来做到可以同时解析两种…