点击上方,选择星标,每天给你送干货!


来自 | AINLP

原创 · 作者 | 叶文杰

工作单位 | vivo 深圳AI研究院 NLP技术组

研究方向 | 自然语言处理

个人介绍 | 就读于东南大学二年级,在2020年8月至2021年1月在vivo 深圳AI研究院 NLP技术组实习,实习期间主要从事模型压缩与蒸馏的工作


1.开篇

去年年底,各大榜单上风起云涌,各路英雄在榜单上为了分数能多个0.01而不停的躁动,迫不及待地想要向外界秀秀自己的肌肉。

怎么回事呀,小老弟?

我们打开了中文NLP知名的评测网站CLUE,却看到……

怎么全是Bert和它的兄弟?

遥想4年前,还全是RNN,LSTM和CNN的天下,怎么转眼都不见了?LSTM不禁长叹:年轻人,不讲武德!欺负我这个25岁的老同志。

那么有没有办法让LSTM重新焕发青春呢?有!知识蒸馏!

2.什么是知识蒸馏?

知识蒸馏的思想很简单,就是让一个教师模型来指导学生模型,让学生模型学到教师模型的知识,而知识蒸馏的的核心也就是知识。

依据蒸馏所用的知识,可以把蒸馏分成三种:

  • Response-based Distillation:学学教师最后的输出就够我喝一壶了。

  • Feature-based distillation:中间层的知识也不能放过,毕竟神经网络最擅长的就是学习到层级信息。

  • Relation-based distillation:这些表面的知识完全不够,还要深挖层与层之间的关系,样本与样本之间的关系。

而这些知识之所以有效,主要是因为隐含的特征 (dark knowledge) 无法在数据层面表示出来,模型可以学习到这些特征。One-hot 无法衡量类间的区别,知识蒸馏一定程度上起到了标签平滑的作用。比如说马,驴和树他们在标注上都是不同的,通过one-hot表示呈现的区别也一致,很显然,马和驴的相似性强于马和树,而我们的标注无法衡量这种相似性,但是我们的教师模型却可以学到这样的知识。

细看这些年的BERT蒸馏都是这些套路:

  • DistilBERT: 学学教师最后的输出就够我喝一壶了

  • PKDBERT: 中间层的我也都要学

  • TinyBERT: embedding层的知识呢?我全都要!

TinyBERT对于知识的态度

既然能用蒸馏训练出一个性能强悍的小BERT,那可不可以用同样的方法来蒸馏LSTM,让他焕发第二春呢?

3.师夷长技以制夷

蒸馏的第一步是要选取一个表现优秀的教师模型,NER大榜的TOP1被RoBERTa抢先了,于是我们也选取RoBERTa作为我们的教师模型,在验证集上得分81.55。同时,在同样的训练集下训练双向LSTM,得分68.56。两者F1得分差距较大,直接尝试response-baseddistillation:

模型

NER F1 (Valid)

Roberta

81.55

LSTM (Baseline)

68.56

LSTM (蒸馏)

71.01

得分有所提升,但是和榜单上那个78、79的相比还是有很大的距离。这可怎么办?

这可怎么办?

有什么能进一步提升模型能力的方法,想想各类BERT都在几个T的数据上用几十块GPU训练了几百个小时,我们的LSTM只用个1万训练集当然不可能击败他们。我们也要用数据增强!

4.数据增强

CLUE NER的数据集是来源于清华大学开源的数据集THUCTC,所以我们尝试使用THU-News数据集进行增强。随机采样30万条进行测试。

这个0如此之纯粹,让人一度以为是不是跑错了代码,然后连续运行三次,得到的结果都是0!

我们赶紧拿到报告,找到里面的bad case(没有一条不是bad case),发现结果很直白,所有的预测全是O(非实体)。赶紧找来增强数据集出来看看,看到了这个:

他?亦或是她?也许都会有。

总会有花花修的,¥%……&&() ———当下冲动的想问问她姐姐是谁暴捶一顿……

今日悬念揭晓,几家雀跃几家惊讶,《精灵传说》正式与大家见面,

help item/ヘ儿プアイテム)等等 。

credits作为zynga旗下游戏在facebook平台上的主要支付方式。

成为勇士中的王者!

令附:

为了鼓励大家多交朋友,目前android版本所有礼物都可以无限次免费赠送,现在就去吧!

《马里奥赛车wii》wii任天堂株式会社

这是由大众对文化价值观认同决定的。2010年有差不多接近1亿左右的玩家,

THU-News新闻数据集-游戏部分

可以看出,大部分样本一个实体都没有,和我们的任务完全就不是相同的分布(skewed),用这种数据集来训练模型,训练出来的模型将所有的标签都认为成O(非实体)。

5.那么怎么从这些杂乱的数据集中提取出可以用作增强的数据集呢?

如果让人工来清洗数据集的话,对于数据增强需要几十几百倍的数据,NER标注数据有有一点难度。人工根本行不通!

鉴于我们在使用知识蒸馏训练模型,那能不能请教师模型来帮忙清洗数据?

我们进行了个大胆的尝试,不对数据集进行任何清洗,直接用教师模型对2000万的杂乱数据集进行推理,然后只保留了教师模型认为包含实体的数据:

至少包含一个实体

至少包含两个实体

甚至吸引了剃了平头的六番队队长朽木白哉~!哈哈哈(大误~。

联合导演兼主演吴亚桥担当形象大使的《剑网3》“收费游戏免费玩”高校威武计划。

2008年12月“it时代周刊:2008年最具商业价值网站”;

游戏委员会称,对游戏的审核需要很长时间,所以像苹果和谷歌系统旗下的游戏,

嘟嘟的目标是召集100名玩家在三江源办一场变身舞会,在这里希望大家帮她一起达成愿望。

咪兔数位科技旗下《穿越火线online》全新改版“末世录”正式上线!玩家不仅能体验到全新的“

但这一次overkill依然把自己的作品托付给了一家日本公司:soe(索尼娱乐在线)。

北美区全球争霸战亚军队伍tsg对上韩国全球争霸战冠军队伍shipit,分别采取圣骑、战士、

在最初阶段,微软发言人曾表示:“微软决不允许他人修改自己的产品。

dice已经抓住使命召唤的这根软肋了。

infi始终不给soccer拉后红血单位的机会,

tesl台湾电竞联盟提供了720p以上的高画质在线直播、与我视传媒共同合作,在i‘

阿里纳斯因枪击队友事件被游戏除名

看完上面这个名单,你可能会说gbasp和ndsi也没有《马里奥》游戏首发,

来自世界各地的媒体纷纷希望能够在e3任天堂展位上,抢先试玩到这款新主机,使得展位大排长龙。今日,

有玩家说:这真是索任结合啊,游戏是任天堂的,但是按键是索尼风格的……

一统乱世》即将在明日正式登场。今次数据片改版将会开放多部族结盟的“联盟系统”、争夺地图占领权的“

最后todd透露,“我们不知道会为《上古卷轴5》制作什么样的dlc,

始料不及《西游iii》你猜不到的结局

并且可以用这个地图编辑器做出很多目前流行的地图,塔防、dota等经典地图都可以在《星际2》

教师模型辅助清洗后的数据

教师模型为我们选择的这份数据集干净的多,不包含无实体,无意义的句子。但是作为交换,原来的2000万数据集只剩下110万左右。

利用筛选后的数据集训练模型,得到:

模型

数据集

蒸馏

NER F1

参数量

Roberta-Large (教师模型)

train

81.55

311.24M

LSTM (Baseline)

train

68.56

9.66M (x32.21)

LSTM

train

71.01

9.66M (x32.21)

LSTM

train+10w增强

72.61

9.66M (x32.21)

LSTM

train+20w增强

74.61

9.66M (x32.21)

LSTM

train+30w增强

76.51

9.66M (x32.21)

LSTM

train+40w增强

77.30

9.66M (x32.21)

LSTM

train+50w增强

77.40

9.66M (x32.21)

LSTM

train+60w增强

78.14

9.66M (x32.21)

LSTM

train+110w增强

79.68

9.66M (x32.21)

CLUE NER 结果

不同增强数据集增强效果

可以看出,随着增强数据集数量的提升,学生模型效果也在逐步提升。使用110万数据集,验证集的分数可以达到79.68。继续增加数据,效果应该还会有进一步提升。提交到榜单上,测试集的分数可以达到78.299,CLUENER单项排第二名,众多的BERT中挤出了一个LSTM。

nice!

6. 总结

利用少量的训练集训练教师模型,随后收集增强数据集用来训练学生模型可以大幅提升学生模型的能力。这样在业务的初期,只需要利用少量的标注语料,便可达到一个相对可观的一个效果,并且在服务部署方面使用小模型可以完成对GPU的一个释放,实际测试中使用学生LSTMGPU加速比达到3.72倍,CPU加速比达到15倍。

而模型蒸馏这样一个teacher-student的框架,可以十分灵活的选择教师模型和学生模型选,比如教师模型可以通过集成选择一个最好的效果,学生模型也可以任意尝试各式的模型结构比如CNN,LSTM,Transformers。当然其他的模型压缩方法,比如说剪枝,近秩分解也可以与这样的一个框架结合。而对于数据增强,在实际业务中,我们无需去寻找额外的公开数据集,直接从实际业务中就能获取大量的数据来进行增强,这样省去我们筛选数据的时间,也能更好的提升模型的效果。

这样的一套框架在分类,意图识别槽位提取,多模态等相应业务中都取得了较好的效果,甚至在增强数据集到达一定程度时超过了教师模型的效果。

7. 参考文献

[1] Revealing the Dark Secrets of BERT. (EMNLP 2019)

[2] DistilBERT, a distilled version of BERT: smaller, faster, cheaper and lighter

[3] Patient Knowledge Distillation for BERT Model Compression

[4] TinyBERT: Distilling BERT for Natural Language Understanding


说个正事哈

由于微信平台算法改版,公号内容将不再以时间排序展示,如果大家想第一时间看到我们的推送,强烈建议星标我们和给我们多点点【在看】。星标具体步骤为:

(1)点击页面最上方深度学习自然语言处理”,进入公众号主页。

(2)点击右上角的小点点,在弹出页面点击“设为星标”,就可以啦。

感谢支持,比心

投稿或交流学习,备注:昵称-学校(公司)-方向,进入DL&NLP交流群。

方向有很多:机器学习、深度学习,python,情感分析、意见挖掘、句法分析、机器翻译、人机对话、知识图谱、语音识别等。

记得备注呦

整理不易,还望给个在看!

【知识蒸馏】让LSTM重返巅峰!相关推荐

  1. 收藏 | 一文带你总览知识蒸馏,详解经典论文

    「免费学习 60+ 节公开课:投票页面,点击讲师头像」 作者:凉爽的安迪 来源 | 深度传送门(ID:deep_deliver) [导读]这是一篇关于[知识蒸馏]简述的文章,目的是想对自己对于知识蒸馏 ...

  2. 系统学习NLP(三十二)--BERT、XLNet、RoBERTa、ALBERT及知识蒸馏

    参考:https://zhuanlan.zhihu.com/p/84559048 一.BERT BERT是一种基于Transformer Encoder来构建的一种模型,它整个的架构其实是基于DAE( ...

  3. 知识蒸馏 | (1) 知识蒸馏概述

    原文地址 这是一篇关于[知识蒸馏]简述的文章,目的是想对知识蒸馏学习的内容和问题进行总结.笔者挑选了部分经典的paper详读,希望对于对KD有需求的同学提供一个概览和帮助. 引子 昆虫记里写道:&qu ...

  4. BERT知识蒸馏Distilled BiLSTM

    1. 概述 随着BERT模型的提出,在NLP上的效果在不断被刷新,伴随着计算能力的不断提高,模型的深度和复杂度也在不断上升,BERT模型在经过下游任务Fine-tuning后,由于参数量巨大,计算比较 ...

  5. 给Bert加速吧!NLP中的知识蒸馏论文 Distilled BiLSTM解读

    论文题目:Distilling Task-Specific Knowledge from BERT into Simple Neural Networks 论文链接:https://arxiv.org ...

  6. 论文阅读:Knowledge Distillation: A Survey 知识蒸馏综述(2021)

    论文阅读:Knowledge Distillation: A Survey 知识蒸馏综述2021 目录 摘要 Introduction Background 知识 基于响应的知识 基于特征的知识 基于 ...

  7. 模型压缩一-知识蒸馏

    一.知识蒸馏简介 知识蒸馏是模型压缩方法中的一个大类,是一种基于"教师-学生网络(teacher-student-network)思想"的训练方法, 其主要思想是拟合教师模型(te ...

  8. 知识蒸馏(Knowledge Distillation)详细深入透彻理解重点

    知识蒸馏是一种模型压缩方法,是一种基于"教师-学生网络思想"的训练方法,由于其简单,有效,在工业界被广泛应用.这一技术的理论来自于2015年Hinton发表的一篇神作: 论文链接 ...

  9. Deeplearning知识蒸馏

    Deeplearning知识蒸馏 merge paddleslim.dist.merge(teacher_program, student_program, data_name_map, place, ...

  10. 杂谈 | 当前知识蒸馏与迁移学习有哪些可用的开源工具?

    所有参与投票的 CSDN 用户都参加抽奖活动 群内公布奖项,还有更多福利赠送 作者&编辑 | 言有三 来源 | 有三AI(ID:yanyousan_ai) [导读]知识蒸馏与迁移学习不仅仅属于 ...

最新文章

  1. 这项X射线技术让芯片无秘密可言:纳米级还原内部构造,现已破解16nm芯片
  2. C#连接oracle的方式以及问题解决.
  3. 世界各地奇葩讨债方法,竟百发百中
  4. 如何在ASP.NET Core程序启动时运行异步任务(3)
  5. 前端学习(527):等分布局第二种方案
  6. 现代软件工程 第十七章 【人、绩效和职业道德】 练习与讨论
  7. ssd训练自己数据集
  8. (四)使用TensorFlow和Keras构建AI语言翻译
  9. 存储相关知识-DAS/SAN/NAS
  10. 代码中(C#)支持动态拼接SQL的参数化查询
  11. [GO]并发实现聊天室服务器
  12. 02 ARM存储控制器   SDRAM操作 实验
  13. iOS 的 APP 如何适应 iPhone 5s/6.6s/6.6sPlus 三种屏幕的尺寸?
  14. 怎样理解OOP?OOP又是什么?
  15. Win10下安装centos7双系统
  16. numpy 图片水印去除
  17. 股市和庞氏骗局的类同之处
  18. python --给图片加文字
  19. 项目管理五大过程与十大知识领域
  20. Windows10家庭版 打不开组策略

热门文章

  1. 中国城市供水统计年鉴
  2. onlyoffice添加删除字体
  3. 1.2 批量生成MySQL建表语句
  4. 360 html页面乱码,360浏览器乱码是怎么回事
  5. Web前端程序员简历
  6. 一天搞懂深度学习—学习笔记1
  7. SWAT模型在水文水资源、面源污染模拟中的实践技术
  8. red hat linux没有库文件libiconv.so,libiconv库链接问题一则(备忘)
  9. Python 地图篇 - 使用pyecharts绘制世界地图、中国地图、省级地图、市级地图实例详解
  10. h5问卷调查 html模版,问卷调查H5模板制作流程