BERT 模型蒸馏 TinyBERT

BERT 的效果好,但是模型太大且速度慢,因此需要有一些模型压缩的方法。TinyBERT 是一种对 BERT 压缩后的模型,由华中科技和华为的研究人员提出。TinyBERT 主要用了模型蒸馏的方法进行压缩,在 GLUE 实验中可以保留 BERT-base 96% 的性能,但体积比 BERT 小了 7 倍,速度快了 9 倍。

1.前言

模型蒸馏 Distillation 是一种常用的模型压缩方法,首先训练一个大的 teacher 模型,然后使用 teacher 模型输出的预测值训练小的 student 模型。student 模型学习 teacher 模型的预测结果 (概率值) 从而学习到 teacher 模型的泛化能力。

有不少利用模型蒸馏压缩 BERT 的研究,例如将 BERT 蒸馏到 BiLSTM,还有 huggingface 的 DistilBERT 等,在之前的文章《BERT 模型蒸馏 Distillation BERT》有比较详细的介绍,对模型蒸馏不熟悉的童鞋可以参考一下。

这里主要介绍另一种 BERT 蒸馏的模型 TinyBERT,之前蒸馏模型的损失函数主要是针对 teacher 模型输出的预测概率值,而 TinyBERT 的损失函数包括四个部分:Embedding 层的损失,Transformer 层 attention 的损失,Transformer 层 hidden state 的损失和最后预测层的损失。即 student 模型不仅仅学习 teacher 模型的预测概率,也学习其 Embedding 层和 Transformer 层的特性。

TinyBERT 结构

上面的图片展示了 TinyBERT (studet) 和 BERT (teacher) 的结构,可以看到 TinyBERT 减少了 BERT 的层数,并且减小了 BERT 隐藏层的维度。

2.TinyBERT

TinyBERT 蒸馏过程中的损失函数主要包含以下四个:

  • Embedding 层损失函数
  • Transformer 层 attention 损失函数
  • Transformer 层 hidden state 损失函数
  • 预测层损失函数

我们先看一下 TinyBERT 蒸馏时候每一层的映射方法。

2.1 TinyBERT 蒸馏的映射方法

假设 TinyBERT 有 M 个 Transformer 层,而 BERT 有 N 个 Transformer 层。TinyBERT 蒸馏主要涉及的层有 embedding 层 (编号为0)、Transformer 层 (编号为1到M) 和输出层 (编号 M+1)。

我们需要将 TinyBERT 每一层和 BERT 中要学习的层对应起来,然后再蒸馏。对应的函数为 g(m) = n,m 是 TinyBERT 层的编号,n 是 BERT 层的编号。

对于 embedding 层,TinyBERT 蒸馏的时候 embedding 层 (0) 对应了 BERT 的 embedding 层 (0),即 g(0) = 0。

对于输出层,TinyBERT 的输出层 (M+1) 对应了 BERT 的输出层 (N+1),即 g(M+1) = N+1。

对于中间的 Transformer 层,TinyBERT 采用 k 层蒸馏的方法,即 g(m) = m × N / M。例如 TinyBERT 有 4 层 Transformer,BERT 有 12 层 Transformer,则 TinyBERT 第 1 层 Transformer 学习的是 BERT 的第 3 层;而TinyBERT 第 2 层学习 BERT 的第 6 层。

2.2 Embedding 层损失函数

Embedding 层损失函数

ES 是 TinyBERT 的 embedding,ET 是 BERT 的 embedding,l 是句子序列的长度,而 d‘ 是 TinyBERT embedding 维度,d 是 BERT embedding 维度。因为是要压缩 BERT 模型,所以 d' < d,TinyBERT 希望模型学到的 embedding 与 BERT 原来的 embedding 具有相似的语义,因此采用了上面的损失函数,减少两者 embedding 的差异。

embedding 维度不同,不能直接计算 loss,因此 TInyBERT 增加了一个映射矩阵 We (d'×d) 的矩阵,ES 乘以映射矩阵后维度与 ET 一样。embedding loss 就是二者的均方误差 MSE。

2.3 Transformer 层 attention 损失函数

TinyBERT 在 Transformer 层损失函数有两个,第一个是 attention loss,如下图所示。

TinyBERT attention loss

attention loss 主要是希望 TinyBERT Multi-Head Attention 部分输出的 attention score 矩阵 能够接近 BERT 的 attention score 矩阵。因为有研究发现 BERT 学习到的 attention score 矩阵能够包含语义知识,例如语法和相互关系等,具体可参考论文《What Does BERT Look At? An Analysis of BERT’s Attention》。TinyBERT 通过下面的损失函数学习 BERT attention 的功能,h 表示 Multi-Head Attention 中 head 的个数。

TinyBERT attention loss

2.4 Transformer 层 hidden state 损失函数

TinyBERT 在 Transformer 层的第二个损失函数是 hidden loss,如下图所示。

TinyBERT hidden 层蒸馏

hidden state loss 和 embedding loss 类似,计算公式如下,也需要经过一个映射矩阵。

TinyBERT hidden loss

2.5 预测层损失函数

预测层的损失函数采用了交叉熵,计算公式如下,其中 t 是模型蒸馏的 temperature value,zT 是 BERT 的预测概率,而 zS 是 TinyBERT 的预测概率。

预测层的损失函数

3.TinyBERT 两阶段训练方法

TinyBERT 两阶段训练方法

BERT 有两个训练阶段,第一个训练阶段是训练一个预训练模型 (预训练 BERT),第二个训练阶段是针对具体下游任务微调 (微调后的 BERT)。TinyBERT 的蒸馏过程也分为两个阶段。

  • 第一个阶段,TinyBERT 在大规模的 general 数据集上,利用预训练 BERT 蒸馏出一个 General TinyBERT。
  • 第二个阶段,TinyBERT 采用数据增强,利用微调后的 BERT 训练一个 task specific 模型。

4.参考文献

TINYBERT: DISTILLING BERT FOR NATURAL LANGUAGE UNDERSTANDING

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