TinyBERT

部分内容转载自机器之心


TinyBERT的创新点主要在:

新型蒸馏方式

不同于普通的知识蒸馏(knowledge distillation,KD)方法只针对输出层logits的soft label进行student模型的学习,TinyBERT应用的KD方法还对embedding层、每个transformer layer中的多头注意力层、以及每个transformer layer输出的hidden states和最后一层预测层这四部分进行蒸馏。

TinyBERT蒸馏概览

通过以上几个蒸馏目标,可以整合 teacher 和 student 网络之间对应层的蒸馏损失(具体每个目标的loss见转载原文):


TinyBERT loss function

两段式学习框架

BERT 的应用通常包含两个学习阶段:预训练和微调。BERT 在预训练阶段学到的大量知识非常重要,并且迁移的时候也应该包含在内。因此,研究者提出了一个两段式学习框架,包含通用蒸馏和特定于任务的蒸馏,(说白了就是预训练阶段也进行蒸馏)如下图所示:


TinyBERT 的两段式学习图示

通用蒸馏可以帮助 student TinyBERT 学习到 teacher BERT 中嵌入的丰富知识,对于提升 TinyBERT 的泛化能力至关重要。特定于任务的蒸馏赋予 student 模型特定于任务的知识。这种两段式蒸馏可以缩小 teacher 和 student 模型之间的差距。

  1. 通用蒸馏。在通用蒸馏中,研究者使用原始 BERT 作为 teacher 模型,而且不对其进行微调,利用大规模文本语料库作为学习数据。通过在通用领域文本上执行 Transformer 蒸馏,他们获取了一个通用 TinyBERT,可以针对下游任务进行微调。然而,由于隐藏/嵌入层大小及层数显著降低,通用 TinyBERT 的表现不如 BERT。
  2. 针对特定任务的蒸馏。研究者提出通过针对特定任务的蒸馏来获得有竞争力的微调 TinyBERT 模型。而在蒸馏过程中,他们在针对特定任务的增强数据集上(如图 2 所示)重新执行了提出的 Transformer 蒸馏。具体而言,微调的 BERT 用作 teacher 模型,并提出以数据增强方法来扩展针对特定任务的训练集。
  3. 数据增强。使用BERT和Glove对句子序列进行词的替换,即通过BERT预测mask住的词,再使用Glove选择和这个词最相近的词(cosine similarity),进行替换,从而达到数据增强的目的。


    The Proposed Data Augmentation

消融实验

本文提出的两段式 TinyBERT 学习框架包含三个关键步骤:TD(特定于任务的蒸馏)、GD(通用蒸馏)和 DA(数据蒸馏)。每个学习步骤的影响如下表所示:

不同学习步骤的影响

研究者还探索了不同蒸馏目标对 TinyBERT 学习的影响,结果如下表:

不同蒸馏目标的影响

研究者探究了teacher模型和student模型transformer层的不同映射函数 n = g(m) 对于 TinyBERT 学习的影响,比较结果见下表:


不同映射策略的影响
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1、STS与P3C集成 1)模版导入 阿里规范提供的有2个代码模版文件,导入到sts中 Window>>Prefe...
    木易小刀阅读 10,229评论 0 0
  • 分类:UE4 物理系统 标签:物理约束 定轴转动 机械臂模拟 液压部件模拟 主要包括要被连接的物体,连接点的位置,...
    Lif68阅读 3,126评论 0 0
  • 好久没写文了,国庆期间发生很多事,有趣的,开心的,失落的,等我考完试,再一一叙述
    悠浅说阅读 1,820评论 0 1
  • 1、域名配置,不配置无法访问 小程序开发,要调用API,就必须把域名填写在配置里面,这点儿一定要记住,万一服务端突...
    连胜老师阅读 3,590评论 0 2
  • 方法汇总 数组方法 字符串方法 时间函数 Mysql数据库 File函数 Directory函数 其他方法 iss...
    Captain_tu阅读 3,192评论 0 0