如何在文本分类任务中Fine-Tune BERT

问 题

BERT在许多自然语言理解(NLU)任务中取得了惊人的成果,但它的潜力还有待充分挖掘。目前很少有如何能进一步提高BERT性能的研究,因此,如何通过一些技巧和方法最大限度的提升BERT在文本分类任务中的性能是此次研究的重点。

目 标

在使用BERT做 text classification的时候,我们利用[CLS]的hidden state输出做为整个输入文本的representation,通过一层task specific层(通常是Linear Layer),再经过Softmax层得到概率,输出概率如下所示,其中的

是task specific层的参数,最后通过最大化log-probability of correct label优化模型参数。

方 法

How to Fine-Tune BERT for Text Classification?[1]这篇论文从四个方面对BERT(BERT base)进行不同形式的pretrain和fine-tune,并通过实验展示不同形式的pretrain和fine-tune之间的效果对比。

一、Fine-Tune策略

当我们在特定任务上fine-tune BERT的时候,往往会有多种方法利用Bert,举个例子:BERT的不同层往往代表着对不同语义或者语法特征的提取,并且对于不同的任务,不同层表现出来的重要性和效果往往不太一样。因此如何利用类似于这些信息,以及如何选择一个最优的优化策略和学习率将会影响最终fine-tune 的效果。

  • 对于长文本的处理
① 截断方法(不考虑[CLS]、[SEP]):
1.保留头部(head-only):保留头部最开始的510个tokens
2.保留尾部(tail-only):保留尾部最后的510个tokens
3.头部加尾部(head+tail):头部128+尾部382
② 分段的方法:
首先将输入文本(长度为L)分成k = L/510个小段落,将它们依次输入BERT得到k个文本段落的表示。每个段落的representation是最后一层[CLS]的hidden state,并分别使用mean pooling, max pooling and self-attention来合并所有段落的representation。上述两种处理方法在IMDb和Chinese Sougou News datasets上的实验效果如下所示,实验结果表明,采取head+tail的方式处理长文本更具优势。
  • Fine-tune层的选择

BERT的每一层捕获输入文本的不同特性,Table 3显示了在不同层Fine-tune BERT时performance的对比。实验结果表明,BERT的最后一层更能表征下游任务(Layer-11表示fit前12层),在对其进行Fine-tune时效果也是最好的。
  • 学习率优化策略
通常BERT模型的低层包含更general的信息,而靠近顶部的层偏向于学习下游任务的相关知识,因此可以在顶层赋予较大的学习率,越往低层学习率越小。因此,我们的策略如公式(1)所示,其中

代表第l层的学习率,我们设定base learning rate为

,代表顶层的学习率,其他层的策略如公式(2)所示,其中

是衰减系数,如果

,那么每层的学习率是一样的,如果

,那么越往下的层学习率就越低。

(1)

(2)

  • 灾难性遗忘问题

灾难性遗忘(Catastrophic forgetting)是transfer learning中常见的问题,即在学习新知识的过程中,预训练的知识有可能被遗忘或者抹去。因此,本文探讨了BERT是否也存在这种灾难性遗忘问题。如下图所示,当采用较低的学习率时(文中采用2e-5),BERT在训练的过程中能够克服灾难性遗忘问题,而当学习率较大时(文中采用4e-4),就会失去这种能力。
二、进一步预训练
BERT预训练模型是在通用领域(General Domain)上做的Training,很自然的一个想法就是在目标域(Target Domain)进一步pretrain。
  • 任务内进一步预训练:

任务内(within-task)pretrain是指在任务域(通常指具体的任务,比如某一金融细分领域的文本分类任务)上对模型进行预训练,预训练的方式仍然是unsupervised masked language model and next sentence prediction tasks,实验结果表明,任务内领域的预训练可以提升模型的效果,但在进一步预训练时需要注意training step,否则效果会变差。
  • 领域内和交叉域内的进一步预训练:

In-Domain指的是某一领域内数据,比如金融领域、计算机领域等等,该领域的数据分布往往和任务内数据分布相似,这里的Cross-Domain在内容上可以理解为通用领域,作者通过实验证明领域内(In-Domain)和任务内(Within-Task)的pretrain效果都会有提升,且通常情况下领域内的pretrain效果要好于任务内的pretrain效果,但在交叉域(或者说通用领域)上没什么提升,理由是BERT预训练本身就是在通用领域上训练的。实验结果对比如下图所示,all sentiment/question/topic代表In-Domain pretrain,all代表 Cross-Domain,w/o pretrain代表原始的BERT base 模型。
三、多任务上的Fine-tune
在多任务数据域(比如多个文本分类的数据集,这样做的目的是为了充分利用已有的分类任务数据)上做pretrain,然后在target-domain上进行fine-tune,也会提升模型的效果。其中,
BERT-FiT  =  “BERT + Fine-Tuning”.
BERT-CDPT-MFiT-FiT = “BERT + Cross-Domain Pre-Training+Multi-Task Pre-Training+ Fine-Tuning”.(先在交叉域上做pretrain,然后在多任务域上做pretrain,最后在target-domian上做fine-tune)
四、 少样本学习
BERT pretrain model的一个优势在于,在下游任务中,只需要少量的样本就能fine-tune一个较好的模型,但是随着数据的增大,在任务内数据的pretrain model和通用领域的pretrain model最后fine-tune的效果差不多,其中红线代表BERT+Fine-tune,即直接利用BERT在target -domain上fine-tune,蓝线代表BERT+ withIn-Task Pre-Training + Fine-Tuning,即先用BERT在within-task域上pretrain,然后在target-domain上fine-tune,这说明了BERT可以利用小数据改进下游任务,且小样本数据上fine-tune效果较明显,当然如果能事先在within-task域上做进一步的pretrain,再做fine-tune,效果会更好。
参考文献
[1] Sun C , Qiu X , Xu Y , et al. How to Fine-Tune BERT for Text Classification?[C]// China National Conference on Chinese Computational Linguistics. Springer, Cham, 2019.
(0)

相关推荐

  • asap异步执行实现原理

    目录 为什么分析asap asap概述 asap源码解析-Node版 参考 1.为什么分析asap 在之前的文章 async和await是如何实现异步编程? 中的 "浅谈Promise如何实 ...

  • 预训练模型最新综述:过去、现在和未来

    ©PaperWeekly 原创 · 作者 | 王馨月 学校 | 四川大学本科生 研究方向 | 自然语言处理 BERT.GPT 等大规模预训练模型(PTM)最近取得了巨大成功,成为人工智能领域的里程碑. ...

  • CV和NLP中的无监督预训练(生成式BERT/iGPT和判别式SimCLR/SimCSE)

    在之前的文章中讲过unsupervised learning主要分为生成式和判别式,那么unsupervised pretrain自然也分为生成式和判别式.目前CV和NLP都出现了非常强大的无监督预训 ...

  • 我们用transformer干啥?

    前言 2021年4月,距离论文"Attention is all you need"问市过去快4年了.这篇论文的引用量正在冲击2万大关. 笔者所在的多个学习交流群也经常有不少同学在 ...

  • 论文解读:Bert原理深入浅出

    Bert 自 Google 于 2018 年发表至今,一直给人们带来惊喜,期间也陆陆续续因为Bert出现的原因多了不少新的岗位,甚至公司 JD 上都明确表明必须懂 Bert. 它在 11 项自然语言处 ...

  • 清华大学刘知远组:文本分类任务中,将知识融入Prompt-tuning过程

    前两天看到刘知远老师组在 arxiv 上放出来了 Prompt-tuning 相关的新工作,这篇文章是将外部知识融入 Prompt-tuning 过程的一个尝试,引起了我的兴趣.于是,我在拜读了这篇文 ...

  • Bert遇到文本分类:如何用好Bert这把刀

    来自:NLP从入门到放弃 今天分享的论文主要是讲Bert如何在文本分类上获得比较好的效果,比较简单:How to Fine-Tune BERT for Text Classification?:不涉及 ...

  • 长短期记忆网络LSTM在时间序列预测和文本分类中的应用

    长短期记忆网络或LSTM网络是深度学习中使用的一种递归神经网络,可以成功地训练非常大的体系结构. 什么是LSTM? LSTM代表长短期记忆网络,在深度学习领域使用.它是各种循环神经网络(RNN),能够 ...

  • 干货|一文带你速览分层注意力网络在文本分类中的应用

    2016年,神经网络在文本分类的任务上逐渐成为了主流方法之一.Word2vec等预训练词向量模型为文本任务提供了一个具有很强语义信息的输入,而卷积神经网络和LSTM/GRU也已表现出了在序列任务上的聚 ...

  • 实战必备!文本分类中的一些经验和 tricks

    最近在总结之前做的文本分类实验的一些经验和 tricks,同时也参考了网上的一些相关资料(见文末),其中有些 tricks 没尝试过,先在这里记下,或者日后能用上. 这里的经验和 tricks 大概可 ...

  • 数据增强在贝壳找房文本分类中的应用

    深度学习已经在计算机视觉.语音识别.自然语言处理等领域取得了突出的进展,其中有监督学习起到了至关重要的作用.然而,有监督的深度学习极大地依赖大规模的标注数据,在实际项目中,我们通常会面临少样本.样本分 ...

  • 如何将关键词信息融入到文本分类任务

    在知乎看到这样一个问题[如何将关键词信息融入到文本分类任务],简单说一下自己的经验,供大家参考: 首先说,现在基本各组都有自己的关键词词库,构造方法也都基本上相似. 简单点的就是TF-IDF筛选,复杂 ...

  • 8张图,搞定中华传统美食分类(中英对照)

    中国美食荟萃了中华五千年的饮食文化精髓,满足了无数外国友人的味蕾,今天我们就一起学学,如何用英语表示各种令人垂涎三尺的美食吧. 面类 Noodles 主食 staple food 烹饪方式 Cooki ...

  • 补体在系统性红斑狼疮分类标准中的意义

    系统性红斑狼疮(systemic lupus erythematosus,SLE)是一种以多器官.多系统受累,血清中可以找到多种自身抗体为特征的自身免疫性疾病,病情迁延,早期识别对于治疗及预后影响重大 ...