0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

删掉Transformer中的这几层性能变好了?

深度学习自然语言处理 来源:夕小瑶的卖萌屋 作者:chaos 2021-03-08 10:27 次阅读

基于Transformer结构的各类语言模型(Bert基于其encoder,Gpt-2基于其decoder)早已经在各类NLP任务上大放异彩,面对让人眼花缭乱的transformer堆叠方式,你是否也会感到迷茫?没关系,现在让我们回到最初,再次看看transformer 本来的模样——Rethinking the Value of Transformer Components。该文收录已于COLING 2020。

众所周知,一个完整的transformer结构可以切分成Encoder-self attention(“E:SA”), Encoder-Feed Forward(“E:FF”), Decoder-Self Attention(“D:SA”), Decoder-Encoder Attention(“D:EA”) 和 Decoder-Feed Forward(“D:FF”) 5个sub-layer结构。文中作者采用了两种度量方式确认这些sub-layer的重要程度。

方法稍后再谈,先上干货,实验结果表明:

Decoder self-attention layers是最不重要的,而Decoder feed-forward layers是最重要的;

离模型的输入和输出越近的sub-layer要比其他的重要些;

在decoder里越靠后的encoder-attention layer要比之前的重要。

这些结果对不同的度量方法,数据集,初始化种子以及模型容量都能保持一致性。

▲Transformer结构图

模块重要性分析

所谓的重要性究竟是什么呢?论文认为,这主要包括两个方面:

Contribution in information Flow,对于模型信息流的贡献程度

Criticality in Representation Generalization,模型的模块对参数的扰动表现出不同的鲁棒性

Contribution in Information Flow

Transformer 最初是用来做机器翻译任务的。所谓的information flow就是指数据如何从源语言经过Transformer的encoder和decoder最终成为目标语言的。如何衡量模型的每个部分对information flow做出的贡献呢? 最直观的想法就是去掉那个部分看看同样条件下模型的效果如何。如果去掉那个部分,模型效果没什么变化,那就说明该部分没做什么贡献,反之,如果删掉该部分,模型效果显著降低则说明它贡献卓著,没它不行。作者采用了如下的量化方法:

公式中指的是去除第n个部分后模型整体的BLEU得分降。为了避免出现重要性指数出现负值和爆炸性下跌,作者将的值设定在[0,C]之间(真的会出现负重要性指数吗?那样倒挺好——模型变小,效果更好)。然后通过除以最大的得分降将的值进行了归一化,这里作者设置的上限C值为基线模型的BLEU得分的1/10.

Criticality in Representation Generalization

这里说的criticality指的是模型的模块对参数的扰动表现出不同的鲁棒性。比方说,如果将某个模块的参数重置为初始化参数,模型的表现变差,那么这个模块就是critical的,否则就是non-critical的。有人在理论上将这个criticality给公式化了,而且他们表明这个criticality可以反映神经网络的泛化能力。

作者便是参考了这个工作,对网络的第n个模块,定义

即初始权重和最终权重的一个凸组合。

那么第n个部分的criticality score就可以表示为

这个式子定量的说明了criticality是最小的能使模型在阈值的情况下保持性能。这个值越小说明该模块越不重要,这里取的是 0.5 BLEU分。

两种度量方法虽然都是基于模块对模型表现的影响的,但是又有不同之处。Contribution score可以看成是 hard metric(完全删除模块),而 Criticality score可以看成是一种soft metric,它衡量的是在保证模型表现的前提下模块参数能多大程度的回卷。

实验

实验是在WMT2014 English-German(En-De)和English-French(En-Fr)两个机器翻译数据集上进行的,作者使用的Transformer模型和Transformer的那篇原始文献(Vaswani et al.,2017)是一样的。Transformer model 一共6层编码器和解码器,layer size是512,feed-forward sub-layer的size是2048,attention head的数值是8,dropout是0.1,initialization seed设置为1。

观察模块的重要性

上图是采用两种度量方式在两个数据集上的实验结果,其中X轴代表的是模块类型,Y轴表示的是layer id。其中颜色越深就越重要。可以看出两种度量方式的结果很大程度上是一致的,比方说:

the decoder self-attention(D:SA)是最不重要的,而the decoder feed-forward layers(D:FF)是最重要的。

编码器里越靠前(E:SA和E:FF)和解码器里越靠后(D:EA和D:FF)是更重要的。这个其实很直观,因为这些模块离数据的输入和输出更近,所以对输入句子的理解和输出句子的生成要更加重要些。

在解码器里越靠后的encoder-attention(D:EA)layers要比之前的encoder-attention layers重要。

分析不重要的模块

更低的dropout比例和更多的训练数据会让不重要的模块变得更少(dropout是一种常见的用来防止过拟合的手段)。为了保证模型的效果,当我们使用dropout的时候其实说明模型本身有一定程度上的冗余。在不降低模型效果的前提下,小的dropout比例刚好说明模型的冗余越少,也就是不重要的模块更少。大规模的训练数据本身就自带更多的patterns。需要充分发挥transformer的各个模块才能有效地学习到。

从上面两张图可以明显的看出:当使用更小的dropout和更大的数据集时,颜色深的版块明显变得更多。此外之前所得到的结论这里依然成立。

区分和利用一批不重要的模块

之前的结果都是只删除一个模块得到,那我们一次性删除多个模块呢?

上图显示当我们删除3到4个不重要的模块时,模型效果并没有明显降低。但是当删的更多了之后,模型的效果会受到较大的影响。那么我们是否可以利用这些不怎么重要的模块去对模型进行优化呢?作者采用了两种方式:一个是模块剪枝,另一个是模块回卷。

模块剪枝就是将不重要的模块直接删掉,因为删掉了相应模块使得模型的参数变小,作为对比作者在相同参数量下使用了一个浅层的decoder模型结果如表:

ad644d5a-7f2a-11eb-8b86-12bb97331649.png

可以看出剪枝后的模型要比同样参数下的浅层模型结果要好,而且也能达到和原始模型相应的效果,有的甚至更好(还真有)。

模块回卷就是将不重要的模块参数回卷到初始化状态,再和其他模块一起微调一下得到的训练结果要比原始模型好一点。

总结

我们可以利用contribution score和criticality score评价模型中各个模块的重要性,知晓了模块的重要性程度后我们可以对不重要的模块进行剪枝或者参数回卷都能在一定程度上让原有模型得到优化。

原文标题:我删掉了Transformer中的这几层…性能反而变好了?

文章出处:【微信公众号:深度学习自然语言处理】欢迎添加关注!文章转载请注明出处。

责任编辑:haq

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 人工智能
    +关注

    关注

    1775

    文章

    43688

    浏览量

    230480
  • 深度学习
    +关注

    关注

    73

    文章

    5219

    浏览量

    119863
  • Transformer
    +关注

    关注

    0

    文章

    129

    浏览量

    5894

原文标题:我删掉了Transformer中的这几层…性能反而变好了?

文章出处:【微信号:zenRRan,微信公众号:深度学习自然语言处理】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    Transformer压缩部署的前沿技术:RPTQ与PB-LLM

    随着人工智能技术的迅速发展,Transformer在自然语言处理、机器翻译、问答系统等领域取得了显著的性能提升。
    的头像 发表于 01-24 14:05 273次阅读
    <b class='flag-5'>Transformer</b>压缩部署的前沿技术:RPTQ与PB-LLM

    更深层的理解视觉Transformer, 对视觉Transformer的剖析

    最后是在ADE20K val上的LeaderBoard,通过榜单也可以看出,在榜单的前几名中,Transformer结构依旧占据是当前的主力军。
    的头像 发表于 12-07 09:39 408次阅读
    更深层的理解视觉<b class='flag-5'>Transformer</b>, 对视觉<b class='flag-5'>Transformer</b>的剖析

    降低Transformer复杂度O(N^2)的方法汇总

    首先来详细说明为什么Transformer的计算复杂度是 。将Transformer中标准的Attention称为Softmax Attention。令 为长度为 的序列, 其维度为 , 。 可看作Softmax Attention的输入。
    的头像 发表于 12-04 15:31 458次阅读
    降低<b class='flag-5'>Transformer</b>复杂度O(N^2)的方法汇总

    关于深度学习模型Transformer模型的具体实现方案

    Transformer 本质上是一个 Encoder-Decoder 架构。因此中间部分的 Transformer 可以分为两个部分:编码组件和解码组件。
    发表于 11-17 10:34 300次阅读
    关于深度学习模型<b class='flag-5'>Transformer</b>模型的具体实现方案

    求助,AD8132谐波测试电路transformer有没有推荐型号?

    AD8132谐波测试电路transformer有没有推荐型号?
    发表于 11-16 06:15

    为什么transformer性能这么好?Transformer的上下文学习能力是哪来的?

    为什么 transformer 性能这么好?它给众多大语言模型带来的上下文学习 (In-Context Learning) 能力是从何而来?在人工智能领域里,transformer 已成为深度学习
    的头像 发表于 09-25 12:05 785次阅读
    为什么<b class='flag-5'>transformer</b><b class='flag-5'>性能</b>这么好?<b class='flag-5'>Transformer</b>的上下文学习能力是哪来的?

    emwin显示最多分几层

    通常是两层,请问最多可以几层
    发表于 09-22 06:16

    BEV人工智能transformer

    BEV人工智能transformer  人工智能Transformer技术是一种自然语言处理领域的重要技术,广泛应用于自然语言理解、机器翻译、文本分类等任务中。它通过深度学习算法从大规模语料库中自动
    的头像 发表于 08-22 15:59 607次阅读

    卷积神经网络包括哪几层

    卷积神经网络包括哪几层 卷积神经网络(Convolutional Neural Network, CNN)是一种前馈神经网络,通常被应用于图像识别和语音识别等领域。它的设计灵感来源于生物神经系统
    的头像 发表于 08-17 16:30 2638次阅读

    基于Transformer的目标检测算法

    掌握基于Transformer的目标检测算法的思路和创新点,一些Transformer论文涉及的新概念比较多,话术没有那么通俗易懂,读完论文仍然不理解算法的细节部分。
    发表于 08-16 10:51 421次阅读
    基于<b class='flag-5'>Transformer</b>的目标检测算法

    RetNet架构和Transformer架构对比分析

    微软研究院最近提出了一个新的 LLM 自回归基础架构 Retentive Networks (RetNet)[1,4],该架构相对于 Transformer 架构的优势是同时具备:训练可并行、推理成本低和良好的性能,不可能三角。
    发表于 07-26 10:44 961次阅读
    RetNet架构和<b class='flag-5'>Transformer</b>架构对比分析

    transformer模型详解:Transformer 模型的压缩方法

    剪枝在高稀疏率时往往不可避免地删除表达神经元,这将导致模型性能严重降低。低秩近似则旨在压缩表达神经元,它对于压缩神经元中的相干部分十分有效,其本质就是提取神经元共享相干子空间的公共基,该方法在 Transformer 结构上也遇到了困难,不
    的头像 发表于 07-17 10:50 1314次阅读
    <b class='flag-5'>transformer</b>模型详解:<b class='flag-5'>Transformer</b> 模型的压缩方法

    基于 Transformer 的分割与检测方法

    ,并能做出属于自己的 SAM 模型,那么接下这篇 Transformer-Based 的 Segmentation Survey 是不容错过!近期,南洋理工大学和上海人工智能实验室几位研究人员写了
    的头像 发表于 07-05 10:18 544次阅读
    基于 <b class='flag-5'>Transformer</b> 的分割与检测方法

    2D Transformer 可以帮助3D表示学习吗?

    预训练的2D图像或语言Transformer:作为基础Transformer模型,具有丰富的特征表示能力。作者选择了先进的2D Transformer模型作为基础模型,例如Vision Transformers (ViTs) 或
    的头像 发表于 07-03 10:59 436次阅读
    2D <b class='flag-5'>Transformer</b> 可以帮助3D表示学习吗?

    Transformer结构及其应用详解

    本文首先详细介绍Transformer的基本结构,然后再通过GPT、BERT、MT-DNN以及GPT-2等基于Transformer的知名应用工作的介绍并附上GitHub链接,看看Transformer是如何在各个著名的模型中大
    的头像 发表于 06-08 09:56 1432次阅读
    <b class='flag-5'>Transformer</b>结构及其应用详解