BERT 模型蒸馏 Distillation BERT

BERT 在很多 NLP 任务上都取得不错的效果,但是其模型体积与计算量都很大,而且现在出现了更多越来越大的模型,例如 roBERTa 和 GPT2。由于这些模型的太大,难以用于一些性能没那么好的机器上,也不能很好地用于实时性要求高的应用中。因此有不少针对 BERT 模型压缩的研究,其中模型蒸馏 Distillation 是一种比较好的解决方法,本文介绍两种基于模型蒸馏的 BERT 模型压缩方法。

1.前言

各种模型的大小

上图展示了很多基于 Transformer 的模型,模型下方的数字对应了模型的参数数量,单位是百万,可以看到这些模型变得越来越大。这些模型的体积也限制了其在现实世界中的使用,因为各方面因素:

  • 这种模型的训练花费大量的金钱,需要使用昂贵的 GPU 服务器才能提供大规模的服务。
  • 模型太大导致 inference 的时间也变长,不能用于一些实时性要求高的任务中。
  • 现在有不少机器学习任务需要运行在终端上,例如智能手机,这种情况也必须使用轻量级的模型。

基于以上的原因,不少研究开始针对 BERT 模型压缩进行,常见的模型压缩方法有以下几种:

  • 模型蒸馏 Distillation,使用大模型的学到的知识训练小模型,从而让小模型具有大模型的泛化能力。
  • 量化 Quantization,降低大模型的精度,减小模型。
  • 剪枝 Pruning,去掉模型中作用比较小的连接。
  • 参数共享,共享网络中部分参数,降低模型参数数量。

前一篇文章《RoBERTa 和 ALBERT》中介绍的 ALBERT 也是一种 BERT 压缩方法,主要是用了参数共享和矩阵分解的方法压缩 BERT,但是 ALBERT 只减少模型的参数,并不能减少其 inference 的时间。

接下来介绍两种使用模型蒸馏压缩 BERT 的算法,第一种是 DistilBERT,将 12 层的 BERT-base 模型蒸馏到 6 层的 BERT 模型;第二种是将 BERT 模型蒸馏到 BiLSTM 模型。

2.模型蒸馏 Distillation

首先介绍模型蒸馏的概念,模型蒸馏是一种模型压缩的方法,由 Hinton 在论文《Distilling the Knowledge in a Neural Network》中提出,下面是模型蒸馏的要点:

  • 首先需要训练一个大的模型,这个大模型也称为 teacher 模型。
  • 利用 teacher 模型输出的概率分布训练小模型,小模型称为 student 模型。
  • 训练 student 模型时,包含两种 label,soft label 对应了 teacher 模型输出的概率分布,而 hard label 是原来的 one-hot label。
  • 模型蒸馏训练的小模型会学习到大模型的表现以及泛化能力

在有监督训练中,模型会有一个预测的目标,通常是 one-hot label,模型在训练时需要最大化对应 label 的概率 (softmax 或者 logits)。在模型预测时的概率分布中,应该是正确的类别概率最大,而其他类别的概率都比较小,但是那些小概率类别之间的概率大小应该也是存在差异的,例如将一只狗预测成狼的概率比预测成树木的概率应该更大。这种概率之间的差异在一定程度上表明了模型的泛化能力,一个好的模型不是拟合训练集好的模型,而是具有泛化能力的模型。

模型蒸馏希望 student 模型学习到 teacher 模型的泛化能力,因此在训练模型时采用的 target 是 teacher 模型输出的概率分布,这也称为 soft target。有些模型蒸馏的方法在训练的时候也会使用原来的 one-hot label,称为 hard target。

为了更好地学习到 teacher 模型的泛化能力,Hinton 提出了 softmax-temperature,公式如下:

softmax-temperature

softmax-temperature 在 softmax 基础上添加了一个参数 T,T 越接近 0,则分布越接近 one-hot,T 越接近无穷大,则分布越接近平均分布。即 T 越大,分布会越平滑,选择合适的 T 可以让更加 student 模型更能观察到 teacher 模型的类别分布多样性。在训练的过程中,teacher 模型和 student 模型使用同样的参数 T,而后续使用 student 模型推断时,T 设置回 1,变成标准的 softmax。

3.DistilBERT

DistilBERT 模型是 HuggingFace 发布的,论文是《DistilBERT, a distilled version of BERT: smaller, faster, cheaper and lighter》。DistilBERT 模型与 BERT 模型类似,但是 DistilBERT 只有 6 层,而 BERT-base 有 12 层,DistilBERT 只有 6600 万参数,而 BERT-base 有 1.1 亿参数。DistilBERT 在减少 BERT 参数和层数的情况下, 仍然可以保持比较好的性能,在 GLUE 上保留了 BERT 95% 的性能。

3.1 DistilBERT 训练

DistilBERT 使用 KL 散度作为损失函数,q 表示 student 模型的分布,而 p 表示 teacher 模型输出的分布,损失函数如下:

KL 散度

DistilBERT 最终的损失函数由 KL 散度 (蒸馏损失) 和 MLM (遮蔽语言建模) 损失两部分线性组合得到。DistilBERT 移除了 BERT 模型的 token 类型 embedding 和 NSP (下一句预测任务),保留了 BERT 的其他机制,然后把 BERT 的层数减少为原来的 1/2。

此外 DistilBERT 的作者还使用了一些优化的 trick,例如使用了 teacher 模型的参数对 DistilBERT 模型进行初始化;采用 RoBERTa 中的一些训练方法,例如大的 batch,动态 Mask 等。

3.2 DistilBERT 实验结果

DistilBERT 实验结果

上图是 DistilBERT 在 GLUE 基准开发集上的实验结果,可以看到在所有的数据集上,DistilBERT 的效果都比 ELMo 好,在一些数据集上效果甚至比 BERT 还好,整体上性能也达到了 BERT 的 97%,但是 DistilBERT 的参数量只有 BERT 的 60 %。

DistilBERT 参数和时间

上图是不同模型参数以及推断时间的对比,可以看到 DistilBERT 的参数比 ELMo 和 BERT-base 都少很多,而且推断时间也大大缩短。

4.将 BERT 蒸馏到 BiLSTM

另一篇文章《Distilling Task-Specific Knowledge from BERT into Simple Neural Networks》则尝试将 BERT 模型蒸馏到 BiLSTM 模型中,称为 Distilled BiLSTM。即 teacher 模型是 BERT,而 student 模型是 BiLSTM。文章提出了两种模型,其中一个是针对单个句子的分类;另一个是针对两个句子做匹配。

4.1 Distilled BiLSTM 模型

将 BERT 模型蒸馏到 BiLSTM 模型

上图是第一种 BiLSTM 模型,用于单个句子的分类,将句子的所有单词的词向量输入一个 BiLSTM,然后将前向和后向 LSTM 的隐藏层向量拼接在一起,传入全连接网络中进行分类。

将 BERT 模型蒸馏到 BiLSTM 模型

上面是第二种 BiLSTM 模型,用于两个句子的匹配,两个 BiLSTM 输出的隐藏向量分别为 h1 和 h2,则需要用将两个向量拼接在一起,再进行分类。h1 和 h2 拼接的公式如下:

4.2 Distilled BiLSTM 训练

将 BERT 蒸馏到 BiLSTM 模型,使用的损失函数包含两个部分:

  • 一部分是 hard target,直接使用 one-hot 类别与 BiLSTM 输出的概率值计算交叉熵。
  • 一部分是 soft target,使用 teacher 模型 (BERT) 输出的概率值与 BiLSTM 输出的概率值计算均方误差 MSE。

在训练过程中,太小的数据集不足以让 student 模型学习到 teacher 模型的所有知识,所以作者提出了三种数据增强的方法扩充数据:

  • Masking,使用 [mask] 标签随机替换一个单词,例如 "I have a cat",替换成 "I [mask] a cat"。
  • POS-guided word replacement,将一个单词替换成另一个具有相同 POS 的单词,例如将 "I have a cat" 替换成 "I have a dog"。
  • n-gram,在 1-5 中随机采样得到 n,然后采用 n-gram,去掉其他单词。

4.3 Distilled BiLSTM 实验结果

Distilled BiLSTM 实验结果

上面是 Distilled BiLSTM 模型的结果,可以看到比单纯使用 BiLSTM 模型的效果好很多,在 SST 和 QQP 数据集上的效果甚至比 ELMo 好,说明模型能够学习到一部分 BERT 的泛化能力。但是 Distilled BiLSTM 的效果还是比 BERT 差了很多,说明还是有很多知识不能迁移到 BiLSTM 中。

上面是 Distilled BiLSTM 的参数和推断时间,BiLSTM 的参数要远远少于 BERT-large,比 BERT-large 少了 335倍,推断时间比 BERT-large 快了 434 倍。压缩效果还是比较明显的。

5.总结

DistilBERT 模型的效果相对更好,而 Distilled BiLSTM 压缩得更小。

DistilBERT 模型使用了 KL 散度计算 soft target,而 Distilled BiLSTM 使用 MSE 计算。HuggingFace 在博客中给出的原因是,DistilBERT 训练的是语言模型,而 Distilled BiLSTM 针对下游分类任务,语言模型的输出空间维度要大很多,这种时候使用 MSE 可能不同 logit 之间会相互抵消。

6.参考文献

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

Distilling Task-Specific Knowledge from BERT into Simple Neural Networks

Distilling the Knowledge in a Neural Network

HuggingFace 博客

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,214评论 6 481
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,307评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 152,543评论 0 341
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,221评论 1 279
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,224评论 5 371
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,007评论 1 284
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,313评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,956评论 0 259
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,441评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,925评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,018评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,685评论 4 322
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,234评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,240评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,464评论 1 261
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,467评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,762评论 2 345