新知一下
海量新知
6 0 7 3 9 3 1

知识蒸馏,中文文本分类,教师模型BERT,学生模型biLSTM

机器学习AI算法工程 | 机器学习入门与实战 2022/01/14 14:03

虽然说做文本不像图像对gpu依赖这么高,但是当需要训练一个大模型或者拿这个模型做预测的时候,也是耗费相当多资源的,尤其是BERT出来以后,不管做什么用BERT效果都能提高,万物皆可BERT。

  然而想要在线上部署应用,大公司倒还可以烧钱玩,毕竟有钱任性,小公司可玩不起,成本可能都远大于效益。这时候,模型压缩的重要性就体现出来了,如果一个小模型能够替代大模型,而这个小模型的效果又和大模型差不多,何乐而不为。

在讲知识蒸馏时一定会提到的Geoffrey Hinton开山之作Distilling the Knowledge in a Neural Network当然也是在图像中开的山,下面简单做一个介绍。

  知识蒸馏使用的是Teacher—Student模型,其中teacher是“知识”的输出者,student是“知识”的接受者。知识蒸馏的过程分为2个阶段:

1.原始模型训练: 训练"Teacher模型", 它的特点是模型相对复杂,可以由多个分别训练的模型集成而成。

2.精简模型训练: 训练"Student模型", 它是参数量较小、模型结构相对简单的单模型。

模型结构

新知达人, 知识蒸馏,中文文本分类,教师模型BERT,学生模型biLSTM

借用YJango大佬的图,这里我简单解释一下我们怎么构建这个模型

1.训练大模型

  首先我们先对大模型进行训练,得到训练参数保存,这一步在上图中并未体现,上图最左部分是使用第一步训练大模型得到的参数。

2. 计算大模型输出

  训练完大模型之后,我们将计算soft target,不直接计算output的softmax,这一步进行了一个divided by T蒸馏操作。(注:这时候的输入数据可以与训练大模型时的输入不一致,但需要保证与训练小模型时的输入一致)

3. 训练小模型

  小模型的训练包含两部分。

  -soft target loss

  -hard target loss

  通过调节λ的大小来调整两部分损失函数的权重。

4. 小模型预测

  预测就没什么不同了,按常规方式进行预测。

代码 获取方式:

关注微信公众号 datayx  然后回复 知识蒸馏  即可获取。

模型实现

模型基本上是对论文Distilling Task-Specific Knowledge from BERT into Simple Neural Networks的复现,下面介绍部分代码实现

代码结构

Teacher模型:BERT模型

Student模型:一层的biLSTM

LOSS函数:交叉熵 、MSE LOSS

知识函数:用最后一层的softmax前的logits作为知识表示

学生模型输入

  Student模型的输入句向量由句中每一个词向量求和取平均得到,词向量为预训练好的300维中文向量,训练数据集为Wikipedia_zh中文维基百科。

新知达人, 知识蒸馏,中文文本分类,教师模型BERT,学生模型biLSTM

学生模型结构

  学生模型为单层biLSTM,再接一层全连接。

新知达人, 知识蒸馏,中文文本分类,教师模型BERT,学生模型biLSTM

教师模型结构

  教师模型为BERT,并对最后四层进行微调,后面也接了一层全连接。

新知达人, 知识蒸馏,中文文本分类,教师模型BERT,学生模型biLSTM

损失函数

  损失函数为学生输出s_logits和教师输出t_logits的MSE损失与学生输出与真实标签的交叉熵。

新知达人, 知识蒸馏,中文文本分类,教师模型BERT,学生模型biLSTM

模型效果

Teacher

Running time: 116.05915258956909 s

新知达人, 知识蒸馏,中文文本分类,教师模型BERT,学生模型biLSTM

Student

Running time: 0.155623197555542 s

新知达人, 知识蒸馏,中文文本分类,教师模型BERT,学生模型biLSTM

可以看出student模型与teacher模型相比精度有一定的丢失,这也可以理解,毕竟student模型结构简单。而在运行时间上大模型是小模型的746倍(cpu)。

TNEWS测试效果

在数据集中选了5类并做了下采样。(此部分具体说明后续完善)

Student alone

新知达人, 知识蒸馏,中文文本分类,教师模型BERT,学生模型biLSTM

Teacher

新知达人, 知识蒸馏,中文文本分类,教师模型BERT,学生模型biLSTM

Student

新知达人, 知识蒸馏,中文文本分类,教师模型BERT,学生模型biLSTM


更多“知识蒸馏”相关内容

更多“知识蒸馏”相关内容

新知精选

更多新知精选