本文首发于微信公众号「李rumor」

最近一年多,BERT的瘦身方法层出不穷,主要围绕着三个方向:蒸馏、剪枝、量化。也有不少同学直接砍掉BERT的一些层再精调也能达到不错的效果。我就是“懒惰”的砍层一族,不过在实践中发现,取不同的层得到的效果差异很大,最多能差出7个点。于是最近也在思考,怎样可以在不穷举的情况下抽出效果最好的子模型?

老天就是这么眷顾爱思考的孩子,让我刷到了一个亚马逊新鲜出炉的论文:Optimal Subarchitecture Extraction For BERT。论文的摘要中写道:参数量只有large模型的16%,通过1.2%的时间预训练后,对比BERT-large有0.3%到31%的提升! 不能更exciting了有木有!

再跳到GLUE实验结果,简直是工业界福音:

但。。是。。

在我快速(也没有快速,原理部分真的很煎熬)过了一遍论文后,发现文章的缺点和优点一样多。虽然作者给出了新的方法和一些有用的结论,但实验存在着两个主要问题:

  1. 对比不公平:BERT-large只在Wiki语料上进行训练,而作者预训练Bort的预料是原始BERT的十倍。同时BERT-of-Theseus、TinyBERT也是在分别基于原始BERT或者用Wiki语料训练的。无法证明是作者的方法好,还是用了更多的语料训练让效果更好。
  2. 没有消融实验:虽然文章主打“Optimal Subarchitecture Extraction”,但实际上作者也用了蒸馏预训练、以及一种名为Agora的蒸馏方法来精调,如果不做消融实验,怎么知道到底是子结构抽的好、还是蒸馏预训练好、还是Agora精调好?

不过从另一方面来说,作者确实通过各种方法,得到了一个效果很好的小模型Bort,其中使用的抽取、快速预训练、精调等流程也有值得借鉴的地方。

Good or not good?我进退两难。

接下来介绍一下作者训练模型的主要流程,同学们可以酌情在实践中参考。

论文题目:Optimal Subarchitecture Extraction For BERT
论文地址:https://arxiv.org/abs/2010.10499
源码地址:https://github.com/alexa/bort

最优子结构的选取

作者在今年早些时候的论文“An Approximation Algorithm for Optimal Subarchitecture Extraction”中对OSE(Optimal Subarchitecture Extraction)问题进行了研究。先证明对于BERT这类模型来说OSE是可解的,然后提出了一个近似求解的算法,并证明了算法的复杂度(多项式时间)和近似边界。

作者的证明和讨论长达15页多,感兴趣的同学可以仔细看看,这里只说一下选取最优子结构的算法思想:

输入:模型结构,数据,参数,子结构搜索空间(层数/注意力头数/隐藏维度/Intermediate层维度),模型超参,最大训练步数s,loss,最优模型
输出:最优结果,包括参数、层数/注意力头数/隐藏维度/Intermediate层维度
流程:
1. 计算最优模型的参数量、推理时间
2. 根据最优模型的参数量对搜索空间中的候选排序
3. 对于每一组超参数:
4.  对于每一组子结构:
5.  将子结构训练s步
6.   根据子结构的参数量、推理时间,计算分数W(参数量越小、推理时间越小、和最优模型T最后一层的交叉熵越小则分数越高)
7. 选取分数W最高的作为最优子结构

P.S. 解读如有错误,欢迎在评论区指出

作者在论文中给出了Top3结果,可以发现4层是性价比较高的子结构:

预训练

得到了最优子结构后,作者用小模型对Roberta-large进行蒸馏,并得到了两个结论:

  1. 用小模型对Roberta-large蒸馏相比MLM收敛更快
  2. 只蒸馏最后一层的效果比每层都蒸馏要更好

在蒸馏预训练的设定下,小模型的训练效率更高,只是原始Roberta-large预训练时间(GPU hours)的1.2%:

不过小模型本来就是Roberta抽出来的,收敛得快肯定也有这部分原因。

精调

在精调过程中,作者有引用了自己今年另一篇论文的算法Agora。该算法混合了数据增强和蒸馏,当二分类的数据很少或者存在数据不一致时,可以让student在大部分情况下逼近teacher模型的表现。

数学力Max的作者又给自己的算法配了10+页的证明,这里主要提一下作者数据增强的核心思想:

  1. 先根据超参数训练多个学生模型,选择acc最高的
  2. 用最好的学生模型对dev集打分,选出预测错的
  3. 让老师模型对上述数据重新预测,再将数据加入训练集

总结

作者的子结构和精调方法都略微复杂,需要不少计算量,最终得到的模型虽然比BERT-large和其他蒸馏模型好上很多,但相比它的teacher模型还是有不少差距。同时作者还提到,利用Agora精调很重要,说不定没用Agora效果就不如BERT-large了?

令人愉悦的是,作者已经把代码和模型都挂到github上了,但用的是亚马逊选型的Mxnet框架,给大家的复现之路加了一点阻力。

这个作者哥哥让我今天像坐过山车,经历了无数情绪转折,从兴奋到失落到无奈到疑惑,所以最后我去google了他:

居然有些帅???真是数学又好编程又好的有才小哥哥 =。=

------10.27更新------

世界就是这么小!发文的第二天,有一位在Alexa工作的读者朋友居然看到了我的文章!

推荐阅读:

EMNLP2020|超越MLM,微软打造全新预训练任务

谷歌最新模型pQRNN:效果接近BERT,参数量缩小300倍

如何优雅地训练大型模型?一文搞懂混合精度、分布式等训练技巧

一文搞懂NLP中的对抗训练

12层的bert参数量_Bort: 亚马逊最新4层小模型,效果超越BERT-large相关推荐

  1. 如何在亚马逊 SageMaker 进行 Stable Diffusion 模型在线服务部署

    文章目录 前言 - 浅谈 AIGC AIGC - 引领人工智能走向春天 春天里盛开的 AI 绘画 AI 绘画之Stable Diffusion 2.0 登场 人人都有机会成为前沿的技术探索者 基于Am ...

  2. 互联网日报 | 京东健康获批赴港上市;安博凯拟私有化神州租车;百度上线亚马逊海外购智能小程序...

    今日看点 ✦ 长安汽车.华为.宁德时代联合打造全新高端智能汽车品牌 ✦ 京东健康已获批赴港上市,平台年活跃用户7250万 ✦ 百度上线亚马逊海外购智能小程序,押注"黑五"跨境电商 ...

  3. 微软演示亚马逊Alexa与微软小娜的合作项目,即将推出测试版本

    内容来源:ATYUN AI平台 Alexa和微软小娜的合作计划于去年夏天首次公开,根据亚马逊和微软的联合发布,双方最初计划于2017年底开始合作. 如今,5月7日至9日在西雅图举行的微软Build会议 ...

  4. 亚马逊云科技:小鹏汽车拓展全球市场,跑出“加速度”

    汽车产业变革走向下半场,智能汽车的市场份额之争也从国内走向国际,出海之战讲求速战速决,小鹏汽车携手亚马逊云科技拓展海外市场,完成海外布局. 扩大"鹏"友圈,迈进欧洲市场 近年来,小 ...

  5. 亚马逊最新财报盈利下滑,我们仍然看好

    [阅读原文] 作者:楠沨 亚马逊发布了2016第三季度财报,营收增长但盈利下滑, 股价有所下跌,周四以818.36美元的价格收盘.但是,我们仍然看好,这里不妨作个预测,亚马逊股价涨上1000美元,不会 ...

  6. 亚马逊广告怎么做?广告效果如何提升?

    随着加入亚马逊的卖家越来越多,卖家意识到亚马逊广告投放的实用性越来越多,广告上唯一的位置竞争也越来越多,很多卖家在开通亚马逊广告后发现自己的产品引流不成功. 很多卖家说,自己的广告几乎花不了钱,处于没 ...

  7. 亚马逊最新财报:营收724亿美元,AWS利润高达22亿

    近日,各大巨头纷纷报喜,云业务增长步伐丝毫没有减缓- 近日,亚马逊公布2018财年Q4财报,整体数字超过华尔街投资者预期,这在很大程度上要归功于其庞大的云业务增长. 财报显示,亚马逊在该季度营收达到7 ...

  8. 亚马逊:自动选择AI模型,进化论方法效率更高!

    [新智元导读]亚马逊称,进化论可以帮助AI模型的选择.选择架构是构建AI模型的关键步骤.研究人员表示,鉴定遗传算法和协同进化算法的性能指标取决于彼此之间的相互作用,是寻找最佳(或接近最佳)AI模型架构 ...

  9. 亚马逊为什么能够成为创新力最强的公司

    想像一下:最理想的街区是怎样的?是不是应该修剪整齐,建筑布局遵循一定的模式,设计完美?或者选用沙粒,崇尚自然,餐厅深入,占据了原本属于干洗店的位置?无论是哪一种,亚马逊包裹都可以送到门阶,不过对于亚马 ...

最新文章

  1. 未来一年最有可能成为独角兽的29家美国初创公司
  2. jQuery操作css样式、属性、动画、节点
  3. 甲骨文中国确认裁员 900 余人;网易回应邮箱账号遭公开叫卖;我国网民达 8.29 亿 | 极客头条...
  4. 独行侠作风之CRM实施阻力
  5. 声纹识别:自监督学习语音识别利于声纹识别Why does Self-Supervised Learning for Speech Recognition Benefit Speaker Recogni
  6. 程雷被机器人_机器人登台表演节目?程雷惨遭机器人戏耍郭德纲一旁大笑!
  7. 各大官网的隐藏彩蛋,我感觉自己打开了新世界的大门...
  8. 计算机素养的论文,核心素养下计算机程序设计教学探索
  9. Learning to ranking简介
  10. 单片机驱动蜂鸣器(有源和无源)
  11. 《绝版游戏之地心护核者》
  12. 【数据异常校验】肖维勒准则(Chauvenet Criterion)处理异常数据
  13. jQuery实现拍打灰太狼小游戏
  14. 最新苹果开发者账号申请流程
  15. 嵌入式里的中断解读以及中断服务函数
  16. JAVA大厅有100盏灯_由100盏灯想到的(一)
  17. 6.2 关联规则可视化
  18. 一段有趣的python代码_Python 五个有趣的彩蛋,你都知道吗?
  19. 别再开省电模式了!华为手机调整这4个设置,手机电量会更持久
  20. iOS表单input自动填充后背景色变为黄色

热门文章

  1. canvas-绘制圆形
  2. 如何通过远程桌面连接 重启电脑
  3. Anaconda安装 directory xxx already exists
  4. 2022年自考专业考试(护理)护理管理学练习题
  5. 使用Flash Lite 制作手机主题
  6. 奔图高拍仪-vue二次开发
  7. Unity+GitHub多人协作开发
  8. Java编程规范(一)
  9. 3Blue1Brown推荐教程链接
  10. 杰理之底噪处理2【篇】