技术标签: 自然语言处理
论文:Improving BERT Fine-Tuning via Self-Ensemble and Self-Distillation
链接:https://arxiv.org/abs/2002.10345
作者:Yige Xu, Xipeng Qiu, Ligao Zhou, Xuanjing Huang
本文提出了一种自集成和自蒸馏的fine-tuning方法,在不引入外部资源和不显著增加训练时间的前提下,可以进一步增强fine-tuning的效果。
自蒸馏的前世今生——what、why、how?
知识蒸馏(Knowledge Distillation)指的是将预训练好的教师模型(Teacher Model)的知识通过蒸馏的方式迁移到学生模型(Student Model)。自蒸馏(Self-Distillation)则指的是自己蒸馏到自己,Teacher Model就是Student Model的集成版本,称为自集成(Self-Ensemble)。集成模型在是刷榜利器,因此我们希望在训练过程中不同time step的模型也可以集成。为了不增加训练开销,我们选择一种参数平均的方式来进行自集成。
与同期的工作FastBERT的自蒸馏(高层蒸馏到底层)不同,本文的自蒸馏指的是过去time step蒸馏到当前time step。在Fine-tune过程中,目标函数除了有来自标签的监督信号以外,还有来自过去time step的监督信号。本文的自蒸馏是为了进一步提高准确率而不是模型压缩。
I. 在一般的Fine-tune流程当中,我们通常只关注某一个epoch结束之后的模型参数,而不关心在Fine-tune过程中某个time step的参数。那么Fine-tune的中间过程是否有什么值得我们挖掘的信息呢?
II. 在一般的训练过程当中,我们通常将数据集划分成一个个mini-batch,依次通过模型进行训练。如果某一个mini-batch的数据质量不过关,可能会将模型参数带歪,因此是否可以寻找一种方式来减缓“带歪”的趋势呢?
III.好的teacher可以教出更好的学生,而好的学生可以进一步集成为更好的教师,通过迭代可以进行自我增强。
在本文中,我们提出了两种自蒸馏的方式:Self-Distillation-Averaged(SDA)和Self-Distillation-Voted(SDV)。在SDA中,我们首先计算出过去K个time step参数的平均值作为Teacher Model。在SDV中,我们将过去K个time step的参数视为K个Teacher Model。
SDA的目标函数计算方式如下:
£ θ ( x , y ) = C E ( B E R T ( x , θ ) , y ) + λ M S E ( B E R T ( x , θ ) , B E R T ( x , θ ˉ ) ) \pounds _{\theta }(x,y)=CE(BERT(x,\theta ),y)+\lambda MSE(BERT(x,\theta ),BERT(x,\bar{\theta})) £θ(x,y)=CE(BERT(x,θ),y)+λMSE(BERT(x,θ),BERT(x,θˉ))
其中 θ ˉ = 1 K ∑ k = 1 K θ t − k \bar{\theta} = \frac{1}{K}\sum_{k=1}^{K}\theta_{t-k} θˉ=K1∑k=1Kθt−k
SDV的目标函数计算方式如下:
£ θ ( x , y ) = C E ( B E R T ( x , θ ) , y ) + λ M S E ( B E R T ( x , θ ) , 1 K ∑ k = 1 K B E R T ( x , θ t − k ) ) \pounds _{\theta }(x,y)=CE(BERT(x,\theta ),y)+\lambda MSE(BERT(x,\theta ),\frac{1}{K}\sum_{k=1}^{K}BERT(x,\theta_{t-k})) £θ(x,y)=CE(BERT(x,θ),y)+λMSE(BERT(x,θ),K1k=1∑KBERT(x,θt−k))
更稳定的训练过程
我们在SNLI数据集当中随机抽取了1500条训练数据组成一个迷你训练集。不改变模型参数初始化,只改变数据训练顺序。通过在这个迷你训练集上的实验,我们发现SDA和SDV加持下的训练更为稳定,准确率的均值更高、方差更低。
更高的准确率
在SDA和SDV加持下,可以有效提升在下游任务Fine-tune BERT的性能。
目录[-]教程【一】教程【二】教程【三】教程【四】教程【五】教程【六】Git是一个分布式的版本控制系统,作为开源代码库以及版本控制系统,Github目前拥有140多万开发者用户。随着越来越多的应用程序转移到了云上,Github已经成为了管理软件开发以及发现已有代码的首选方法。Git是一个分布式的版本控制系统,最初由Linus Torvalds编写,用作L_github图形化界面的方式来创建本地仓库
有序无序列表无序列表coffeeteamilk有序列表coffee tea milk自定义列表 coffee -black hot drink milk -white cold drink 自定义起始选项 app bann_列表项是什么意思
#include<iostream>#include<string>using namespace std;int main() { string str; str = "123456"; cout << str << endl; //方法一:使用substr() str = str.substr(0, str.length(..._c++ string去掉最后一个字符
View篇ViewPager使用PagerAdapter的notifyDataSetChanged()方法,不会立即触发ViewPager.PageTransformer的动画效果,必须在滑动后才会触发。_android知识点
这几天做Junit测试接触到了setup和teardown两个方法,简单的可以这样理解它们,setup主要实现测试前的初始化工作,而teardown则主要实现测试完成后的垃圾回收等工作。 需要注意的是Junit3中每个测试方法执行时都会执行它们,而不是一个类中执行一次,查了查资料,JUnit4版本采用注解的方式可以实现一个类只执行一次,下面看看测试代码:jar下载地址:
比如:删除给定文件夹下所有大于2M的文件,如果文件夹下的子文件或者子文件夹被删除完毕了,也将该文件夹删除public class IODemo{ public static void main(String[] args) { File file = new File("E:\\itcast");//给定的文件夹 deleteDir(file); } private static void deleteDir(File file) {..._java删除本地文件,判断文件夹是否为空
IDEA 代码分析功能分析工具使用步骤总结分析工具使用步骤1) 打开 Analyze->Inspect Code.2)选择分析范围,如下图所示。3)分析结果如下4)以我项目的情况,我一般只关注 java里面的问题。展开折叠内容,可以一个一个查查,一些类型是可以全部处理。比如1:接口方法定义成public类型的。2:定义了变量从未使用的。具体情况具体分析吧。总结感觉..._idea analyze
在批处理中,段注释(多行注释)有一种比较常用的方法,即使用goto跳过:goto start= 可以是多行文本,可以是命令= 可以包含重定向符号和其他特殊字符= 只要不包含 :start 这一行,就都是注释:start其他各种注释形式有如:1、:: 注释内容(第一个冒号后也可以跟任何一个非字母数字的字符)2、rem 注释内容(不能出现重定向符号和管道符号)3、echo 注释内..._批处理注释多行
首先,让我们简单了解下什么是API网关? API网关是一个服务器,是系统的唯一入口。从面向对象设计的角度看,它与外观模式类似。API网关封装了系统内部架构,为每个客户端提供一个定制的API。它可能还具有其它职责,如身份验证、监控、负载均衡、缓存、请求分片与管理、静态响应处理。 API网关方式的核心要点是,所有的客户端和消费端都通过统一的网关接入微服务,在网关层处理所有的非业务功能。..._asp.net core ocelot
队列管理在FreeRTOS各个任务之间可能会进行相互通信,而在FreeRTOS中所有通信和同步的机制都是基于队列来实现的。本小结主要说明一下问题: 如何创建一个队列。 队列如何管理其数据。 如何像队列发送数据。 如何从队列接受数据。 队列阻塞是什么意思。往队列发送和从队列接收时优先级会有什么影响。3.1 队列的特性3.1.1 数据存储队列可以保存有限个确_对freertos进一步封装
window 无法访问,您没有权限访问共享资源。请与网络管理员联系请求访问权限。相信大家都遇到过这样的问题,有时候困扰了好久都没找到解决的办法,先汇集小编所知道的解决访问局域网内共享文件夹的方法,实实在在的解决电脑无法访问局域网共享文件的问题。【实操遇到问题情况】有一台电脑是win7的系统,在访问局域网内共享的一个目录时,提示0x800704cf错误,出现这个问题的只有这一台笔记本,其他电脑可以正..._0x800704cf
Debezium系列之:PostgreSQL数据库的Debezium连接器_debezium postgresql