BERT 蒸馏在垃圾舆情识别中的探索

简介: 近来 BERT等大规模预训练模型在 NLP 领域各项子任务中取得了不凡的结果,但是模型海量参数,导致上线困难,不能满足生产需求。舆情审核业务中包含大量的垃圾舆情,会耗费大量的人力。本文在垃圾舆情识别任务中尝试 BERT 蒸馏技术,提升 textCNN 分类器性能,利用其小而快的优点,成功落地。

image.png
近来 BERT等大规模预训练模型在 NLP 领域各项子任务中取得了不凡的结果,但是模型海量参数,导致上线困难,不能满足生产需求。舆情审核业务中包含大量的垃圾舆情,会耗费大量的人力。本文在垃圾舆情识别任务中尝试 BERT 蒸馏技术,提升 textCNN 分类器性能,利用其小而快的优点,成功落地。

风险样本如下:

image.png

一 传统蒸馏方案

目前,对模型压缩和加速的技术主要分为四种:

  • 参数剪枝和共享
  • 低秩因子分解
  • 转移/紧凑卷积滤波器
  • 知识蒸馏

知识蒸馏就是将教师网络的知识迁移到学生网络上,使得学生网络的性能表现如教师网络一般。本文主要集中讲解知识蒸馏的应用。

1 soft label

知识蒸馏最早是 2014 年 Caruana 等人提出方法。通过引入 teacher network(复杂网络,效果好,但预测耗时久) 相关的软标签作为总体 loss 的一部分,来引导 student network(简单网络,效果稍差,但预测耗时低) 进行学习,来达到知识的迁移目的。这是一个通用而简单的、不同的模型压缩技术。

  • 大规模神经网络 (teacher network)得到的类别预测包含了数据结构间的相似性。
  • 有了先验的小规模神经网络(student network)只需要很少的新场景数据就能够收敛。
  • Softmax函数随着温度变量(temperature)的升高分布更均匀。

Loss公式如下:

image.png

其中,

image.png

由此我们可以看出蒸馏有以下优点:

  • 学习到大模型的特征表征能力,也能学习到one-hot label中不存在的类别间信息。
  • 具有抗噪声能力,如下图,当有噪声时,教师模型的梯度对学生模型梯度有一定的修正性。
  • 一定的程度上,加强了模型的泛化性。

image.png

2 using hints

(ICLR 2015) FitNets Romero等人的工作不仅利用教师网络的最后输出logits,还利用了中间隐层参数值,训练学生网络。获得又深又细的FitNets。

image.png

中间层学习loss如下:

image.png

作者通过添加中间层loss的方式,通过teacher network 的参数限制student network的解空间的方式,使得参数的最优解更加靠近到teacher network,从而学习到teacher network的高阶表征,减少网络参数的冗余。

3 co-training

(arXiv 2019) Route Constrained Optimization (RCO) Jin和Peng等人的工作受课程学习(curriculum learning)启发,并且知道学生和老师之间的gap很大导致蒸馏失败,导致认知偏差,提出路由约束提示学习(Route Constrained Hint Learning),把学习路径更改为每训练一次teacher network,并把结果输出给student network进行训练。student network可以一步一步地根据这些中间模型慢慢学习,from easy-to-hard。

训练路径如下图:
image.png

二 Bert2TextCNN蒸馏方案

为了提高模型的准确率,并且保障时效性,应对GPU资源紧缺,我们开始构建bert模型蒸馏至textcnn模型的方案。

方案1:离线logit textcnn 蒸馏

使用的是Caruana的传统方法进行蒸馏。

image.png

方案2:联合训练 bert textcnn 蒸馏

参数隔离:teacher model 训练一次,并把logit传给student。teacher 的参数更新至受到label的影响,student 参数更新受到teacher loigt的soft label loss 和label 的 hard label loss 的影响。

image.png

方案3:联合训练 bert textcnn 蒸馏

参数不隔离: 与方案2类似,主要区别在于前一次迭代的student 的 soft label 的梯度会用于teacher参数的更新。

image.png

方案4:联合训练 bert textcnn loss 相加

teacher 和student 同时训练,使用mutil-task的方式。

image.png

方案5:多teacher

大部分模型,在更新时候需要覆盖线上历史模型的样本,使用线上历史模型作为teacher,让模型学习原有历史模型的知识,保障对原有模型有较高的覆盖。

image.png

实验结果如下:

image.png

从以上的实验,可以发现很有趣的现象。

1)方案2和方案3均使用先训练teacher,再训练student的方式,但是由于梯度返回更新是否隔离的差异,导致方案2低于方案3。是由于方案3中,每次训练一次teacher,在训练一次student,student学习完了的soft loss 会再反馈给teacher,让teacher知道指如何导student是合适的,并且还提升了teacher的性能。

2)方案4采用共同更新的,同时反馈梯度的方式。反而textcnn 的性能迅速下降,虽然bert的性能基本没有衰减,但是bert难以对textcnn每一步的反馈有个正确性的引导。

3)方案5中使用了历史textcnn 的logit,主要是为了用替换线上模型时候,并保持对原有模型有较高的覆盖率,虽然召回下降,但是整体的覆盖率相比于单textcnn 提高了5%的召回率。

Reference

1.Dean, J. (n.d.). Distilling the Knowledge in a Neural Network. 1–9.
2.Romero A , Ballas N , Kahou S E , et al. FitNets: Hints for Thin Deep Nets[J].
3.Jin X , Peng B , Wu Y , et al. Knowledge Distillation via Route Constrained Optimization[J].

欢迎各位技术同路人加入蚂蚁集团大安全机器智能团队,我们专注于面向海量舆情借助大数据技术和自然语言理解技术挖掘存在的金融风险、平台风险,为用户资金安全护航、提高用户在蚂蚁生态下的用户体验。内推直达 lingke.djt@antfin.com,有信必回。

目录
相关文章
|
数据采集 人工智能 自然语言处理
领域知识图谱的医生推荐系统:利用BERT+CRF+BiLSTM的医疗实体识别,建立医学知识图谱,建立知识问答系统
领域知识图谱的医生推荐系统:利用BERT+CRF+BiLSTM的医疗实体识别,建立医学知识图谱,建立知识问答系统
领域知识图谱的医生推荐系统:利用BERT+CRF+BiLSTM的医疗实体识别,建立医学知识图谱,建立知识问答系统
|
自然语言处理
使用bert+lstm+crf做实体识别经验总结
使用bert+lstm+crf做实体识别经验总结
179 0
|
数据采集
基于Bert文本分类进行行业识别
基于Bert文本分类进行行业识别
215 0
|
机器学习/深度学习 自然语言处理 测试技术
给Bert加速吧!NLP中的知识蒸馏论文 Distilled BiLSTM解读
给Bert加速吧!NLP中的知识蒸馏论文 Distilled BiLSTM解读
429 0
|
机器学习/深度学习 人工智能 自然语言处理
LRC-BERT:对比学习潜在语义知识蒸馏|AAAI 2021
背景介绍 方法 实验 在高德具体业务场景的落地 总结
556 0
LRC-BERT:对比学习潜在语义知识蒸馏|AAAI 2021
|
6月前
|
PyTorch 算法框架/工具
Bert Pytorch 源码分析:五、模型架构简图 REV1
Bert Pytorch 源码分析:五、模型架构简图 REV1
85 0
|
6月前
|
PyTorch 算法框架/工具
Bert Pytorch 源码分析:五、模型架构简图
Bert Pytorch 源码分析:五、模型架构简图
64 0
|
25天前
|
自然语言处理 PyTorch 算法框架/工具
掌握从零到一的进阶攻略:让你轻松成为BERT微调高手——详解模型微调全流程,含实战代码与最佳实践秘籍,助你应对各类NLP挑战!
【10月更文挑战第1天】随着深度学习技术的进步,预训练模型已成为自然语言处理(NLP)领域的常见实践。这些模型通过大规模数据集训练获得通用语言表示,但需进一步微调以适应特定任务。本文通过简化流程和示例代码,介绍了如何选择预训练模型(如BERT),并利用Python库(如Transformers和PyTorch)进行微调。文章详细说明了数据准备、模型初始化、损失函数定义及训练循环等关键步骤,并提供了评估模型性能的方法。希望本文能帮助读者更好地理解和实现模型微调。
53 2
掌握从零到一的进阶攻略:让你轻松成为BERT微调高手——详解模型微调全流程,含实战代码与最佳实践秘籍,助你应对各类NLP挑战!
|
20天前
|
机器学习/深度学习 自然语言处理 知识图谱
|
13天前
|
机器学习/深度学习 自然语言处理 算法
[大语言模型-工程实践] 手把手教你-基于BERT模型提取商品标题关键词及优化改进
[大语言模型-工程实践] 手把手教你-基于BERT模型提取商品标题关键词及优化改进
52 0

热门文章

最新文章