赞
踩
©AI学术前沿原创 · 作者 | IanChi
研究方向 | 机器学习、NLP
本文将罗列几篇通过 Drop 一些组件来提升预训练模型效率的工作。
▍STRUCTURED DROPOUT Pruning
论文标题:
Reducing Transformer Depth on Demand with Structured Dropout
论文链接:
https://arxiv.org/abs/1909.11556
代码链接:
https://github.com/pytorch/fairseq/tree/master/examples/layerdrop
idea 非常简单,类似 Huang Gao 的 Stochastic Depth,在 Train 和 Test 阶段利用结构化的 Dropout,对网络结构的一些 layer 进行丢弃操作。
文章提出了三种丢弃策略:
1. Every Other:每隔几层丢一层;
2. Search on Valid:在valid set搜索一些layer丢弃组合;
2. Data Driven Pruning:将丢弃任务建模成一个函数拟合任务,来学习如何丢弃。
结果发现最简单的 Every Other 效果最好,简单太秀了……
这里起名字为 DropLayer,和一般的 Dropout 不同,是丢弃 weight 的(DropConnect),本质上就是在权重矩阵中乘个 Mask 矩阵({0,1} 矩阵)。
很多问题的本质都是一个 subset selection 的问题,包括一些工作是做 sparse attention,提高 Transformer 的时间和空间效率。
▍Dynamic Early Exiting
论文标题:
DeeBERT: Dynamic Early Exiting for Accelerating BERT Inference
论文链接:
https://arxiv.org/abs/2004.12993
代码链接:
https://github.com/castorini/DeeBERT
这个工作乍一看和上面的思路一模一样,同样也是受启发于 Huang Gao 的工作。大概的思路是,作者认为 BERT 中堆叠了这么多的 Transformer Layer,有很多的冗余。所以,想尝试着,在每个 Transformer 之后,都做一次预测,试试看是不是 ok,这里 ok 不 ok 是用 prediction entropy 来度量的(手动设定个阈值,一顿调)。如果 ok 直接给出预测,后面的 transformer 就不计算了,所以可以省下不少 inference time。
当然作者也尝试了 ensemble 一下多个 layer 的 prediction,貌似没啥效果。
实验方面,也和论文 1 中的 LayerDrop 进行了对比,在有限的对比实验中,提升效率上不如 LayerDrop。
这个工作有点像更加粗糙的 LayerDrop,人家 drop 的是 layer,这里 drop 的 transfomer,粒度更大一些。
▍Scheduled DropHead
论文标题:
Scheduled DropHead: A Regularization Method for Transformer Models
论文链接:
https://arxiv.org/abs/2004.13342
本文也是 Drop 的思想,不同于上面的两篇文章,这里关注的是 Head 的位置。多头是 Transformer 成功的重要原因之一,有些研究表明只有一部分 attention 对于结果影响很大,其他的 attention 是冗余的,所以 drop 掉一些 attention 一方面可以 prevent overfitting,另一方面可以达到 prune 的效果,提升 efficiency。
当然这里,drop 的时候,颗粒度比较大,直接对整个 head attention 进行 drop。除了这个点之外,本文另一个重要的点,是提出了一种 V 字 dropout rate scheduler,而不是 fixed rate,通过烧蚀实验验证了这种 scheduler 的作用。
▍Big Bird Transformers
论文标题:
Big Bird: Transformers for Longer Sequences
论文链接:
https://arxiv.org/abs/2007.14062
代码链接:
https://github.com/google-research/bigbird
这个工作不同于文章 3 的粗暴,而是更加细腻的做 sparse attention,drop 的更加精细,self-attention 也好,encoder-decoder attention 也罢,最大的问题是效率问题,但其实并不是所有的 token 都有直接联系,这里存在着巨大的冗余。此次作为一个引子,回头专门针对 sparse attention 写一篇文章,这里先不赘述。
▍总结
简单总结几句,因为 transformer based models 已经横扫了这么多 NLP task,也包括 CV 和 speech 的一些 task,那么 More Efficient Transformer 一定是个大趋势。本文节选了几篇通过 drop 的思路来 improve transformer 的工作,肯定不够全面,但基本上说清了一个趋势。
如果我们将 neural network 从结构上拆解成不同粒度的组件来看,可以写个简单的伪代码如下:
- for component in [neuron, weight, layer, block, head, attention, ...]:
- performance, time = drop(component)
- if performance is sota:
- a novel drop based transformer is proposed
- elif time is sota:
- a novel prune method of transformer is proposed
- elif performance and time both sota:
- a big news is coming soon
- else:
- continue
- Auto Drop will be a new direction to follow.
调侃完了之后,说句公道话,不管是黑猫还是白猫,抓住老鼠就是好猫咪。
抖个机灵,Transformer 最大的瓶颈在于芝麻街的主人公太少,快不够用了。
·
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。