IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 人工智能 -> BERT知识蒸馏Distilled BiLSTM -> 正文阅读

[人工智能]BERT知识蒸馏Distilled BiLSTM

1. 概述

随着BERT模型的提出,在NLP上的效果在不断被刷新,伴随着计算能力的不断提高,模型的深度和复杂度也在不断上升,BERT模型在经过下游任务Fine-tuning后,由于参数量巨大,计算比较耗时,很难真正上线使用。这些基于Transformer模型的提出,包括BERT,GPT等,那么对于传统的NLP方法,如RNN,LSTM,TextCNN是不是就已经过时了呢?结合知识蒸馏的思想,Distilled BiLSTM[1]将BERT模型当作Teacher模型,对Fine-tuned BERT进行蒸馏,使得蒸馏得到的Student模型BiLSTM模型与ELMo模型具有相同的效果,但是参数量却减小了100倍,同时,计算时间缩短了15倍。

2. 算法原理

2.1. 知识蒸馏

知识蒸馏(knowledge distillation)[2]是模型压缩的一种常用的方法,对于一个完整的知识蒸馏过程,有两个模型,分别为Teacher模型和Student模型,通过学习将已经训练好的Teacher模型中的知识迁移到小的Student模型中。其具体过程如下图所示:

在这里插入图片描述
对于Student模型,其目标函数有两个,分别为蒸馏的loss(distillation loss)和自身的loss(student loss),Student模型最终的损失函数为:

L = α L s o f t + β L h a r d L=\alpha L_{soft}+\beta L_{hard} L=αLsoft?+βLhard?

2.2. Distilled BiLSTM

在对BERT蒸馏过程中,选择了两个特定的任务,一个是分类任务,另一个则是句子对任务。

2.2.1. Teacher模型

在Distilled BiLSTM,Teacher网络为Fine-tuned BERT模型,BERT模型的结构如下图所示:

在这里插入图片描述

假设BERT模型对句子抽取出的向量为 h ∈ R d \mathbf{h}\in \mathbb{R}^d hRd。对于单句的分类任务,增加一个输出层即可:

y ( B ) = s o f t m a x ( W h ) \mathbf{y}^{\left ( B \right )}=softmax\left ( W\mathbf{h} \right ) y(B)=softmax(Wh)

其中, W ∈ R k × d W\in \mathbb{R}^{k\times d} WRk×d k k k为分类的个数。对于句子对,则是采用上述的方法对每个句子计算,计算完将两个特征concat在一起,再经过上述的softmax计算。

2.2.2. Student模型

在Distilled BiLSTM中,Student模型为一个单层的BiLSTM模型,BiLSTM网络结构如下图所示:

在这里插入图片描述

在分类任务中,参考文献[1]中将最后一个隐层状态concat在一起,即上述的 [ h T → , h 1 ← ] \left [ \overrightarrow{h_T},\overleftarrow{h_1} \right ] [hT? ?,h1? ?],后续经过一个输出层得到最终的输出,具体的网络结构如下图所示:

在这里插入图片描述

其中,上图中的c和d表示的是将前向和后向的隐层状态concat在一起,上图中的e和g表示的是一个全联接层,e的激活函数是ReLU。对于句子对的任务,利用BiLSTM分别产出句子向量,并将两个向量合在一起,后续的处理方法与单句的处理方法相同,具体的网络结构如下图所示:

在这里插入图片描述

对于句子对特征的组合,在参考文献[1]中,其处理方法为:

f ( h s 1 , h s 2 ) = [ h s 1 , h s 2 , h s 1 ⊙ h s 2 , ∣ h s 1 ? h s 2 ∣ ] f\left ( \mathbf{h}_{s1},\mathbf{h}_{s2} \right )=\left [ \mathbf{h}_{s1},\mathbf{h}_{s2},\mathbf{h}_{s1}\odot \mathbf{h}_{s2},\left|\mathbf{h}_{s1}-\mathbf{h}_{s2} \right| \right ] f(hs1?,hs2?)=[hs1?,hs2?,hs1?hs2?,hs1??hs2?]

其中, ⊙ \odot 表示的是向量元素相乘。

2.2.3. 蒸馏目标

对于知识蒸馏的目标函数,其包含两个部分,一个是蒸馏的loss(distillation loss)和Student模型自身的loss(student loss)。对于Student模型自身的loss采用的是交叉熵 L C E L_{CE} LCE?作为分类问题的目标函数,对于蒸馏的loss,则是采用对比logits结果的差异:

L d i s t i l l = ∥ z ( B ) ? z ( S ) ∥ 2 2 L_{distill}=\left\|\mathbf{z}^{\left ( B \right )}-\mathbf{z}^{\left ( S \right )} \right\|_2^2 Ldistill?= ?z(B)?z(S) ?22?

其中, z ( B ) \mathbf{z}^{\left ( B \right )} z(B)为BERT模型的logits输出, z ( S ) \mathbf{z}^{\left ( S \right )} z(S)为Student模型的logits输出。最终的蒸馏目标为:

L = ? α ∑ i t i ? l o g ? y i ( S ) ? ( 1 ? α ) ∥ z ( B ) ? z ( S ) ∥ 2 2 L=-\alpha \sum _it_i\cdot log\: y_i^{\left ( S \right )}-\left ( 1-\alpha \right )\left\|\mathbf{z}^{\left ( B \right )}-\mathbf{z}^{\left ( S \right )} \right\|_2^2 L=?αi?ti??logyi(S)??(1?α) ?z(B)?z(S) ?22?

3. 总结

Distilled BiLSTM是对于知识蒸馏较为一般性的实践,将BERT模型(Teacher)蒸馏到一个简单的BiLSTM模型(Student),蒸馏的目标函数中的蒸馏loss也是采用了对比logits结果的差异。虽然理论上较为简单,但是最终的结果是与与ELMo模型具有相同的效果,说明知识蒸馏的方法的有效性。

在BiLSTM中,多个隐层状态的融合有不同的方法,如上面直接用最后一个隐层状态作为最终的状态,实际上,可以使用Attention的方法综合多个隐层状态作为最终的状态能够进一步增强模型的效果。

参考文献

[1] Tang R , Lu Y , Liu L , et al. Distilling Task-Specific Knowledge from BERT into Simple Neural Networks[J]. 2019.

[2] 知识蒸馏基本原理

  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章      下一篇文章      查看所有文章
加:2022-09-21 00:29:07  更:2022-09-21 00:30:36 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年12日历 -2024/12/28 17:34:42-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码
数据统计