多快好省的预训练模型:你丢我也丢

©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 最大的瓶颈在于芝麻街的主人公太少,快不够用了。

·

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值