0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

文本分类任务的Bert微调trick大全

自然语言处理爱好者 来源:ChallengeHub 作者: 致Great 2021-07-18 09:49 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

1

前言

大家现在打比赛对预训练模型非常喜爱,基本上作为NLP比赛基线首选(图像分类也有预训练模型)。预训练模型虽然很强,可能通过简单的微调就能给我们带来很大提升,但是大家会发现比赛做到后期,bert等预训练模型炼丹一定程度的时候很难有所提升,分数达到了瓶颈,这个时候需要针对具体的任务如何进行微调使用,就涉及到了考经验积累的tricks。

这篇论文做了非常大的充足实验,为我们提供了宝贵的BERT微调经验及方法论,当需要应用BERT到具体的现实任务上时,可以参照这篇论文提供的调参路线进行优化,我在NLP比赛中也屡试不爽,总有一个trick是你的菜,推荐大家读一读这篇论文!

2

论文摘要

这篇论文的主要目的在于在文本分类任务上探索不同的BERT微调方法并提供一种通用的BERT微调解决方法。这篇论文从三种路线进行了探索:(1) BERT自身的微调策略,包括长文本处理、学习率、不同层的选择等方法;(2) 目标任务内、领域内及跨领域的进一步预训练BERT;(3) 多任务学习。微调后的BERT在七个英文数据集及搜狗中文数据集上取得了当前最优的结果。有兴趣的朋友可以点击上面的实验代码,跑一跑玩一玩~

3

论文背景与研究动机

文本分了是NLP中非常经典的任务,就是判断给定的一个文本所属的具体类别,比如判断文本情感是正向还是负向。尽管已经有相关的系研究工作表明基于大语料预训练模型可以对文本分类以及其他NLP任务有非常不错的效果收益和提升,这样做的一个非常大的好处我们不需要从头开始训练一个新的模型,节省了很大资源和时间。

一种常见的预训练模型就是我们常见的词嵌入,比如Word2Vec,Glove向量,或者一词多义词向量模型Cove和ELMo,这些词向量经常用来当做NLP任务的附加特征。另一种预训练模型是句子级别上的向量化表示,如ULMFiT。其他的还有OpenAI GPT及BERT。

虽然BERT在许多自然语言理解任务上取得了惊人的成绩,但是它的潜力还尚未被完全探索出来。很少有研究来进一步改进BERT在目标任务上的性能。这篇论文的主要目的就是通过探索多种方式最大化地利用BERT来增强其在文本分类任务上的性能。本篇论文的主要贡献如下:

(1)提出了一个通用的解决方案来微调预训练的 BERT 模型,它包括三个步骤:(1)进一步预训练 BERT任务内训练数据或领域内数据;(2) 如果有多个相关任务可用,可选用多任务学习微调 BERT;(3) 为目标任务微调BERT。

(2)本文研究了 BERT 在目标任务上的微调方法,包括长文本预处理、逐层选择、逐层学习率、灾难性遗忘

(3)我们在七个广泛研究的英文文本分类数据集和一个中文新闻分类数据集上取得了SOTA成果

4

论文核心

Fine-Tuning Strategies:当我们为目标任务微调 BERT 时,有很多方法可以使用 BERT。例如,BERT 的不同层捕获不同级别的语义和句法信息,哪一层更适合目标任务?我们如何选择更好的优化算法和学习率?

Further Pre-training:BERT 在通用域中训练,其数据分布与目标域不同。一个自然的想法是使用目标域数据进一步预训练 BERT。这个真的非常有效,在微调达到一定瓶颈之后,可以尝试下在比赛语料上ITPT,也就是继续预训练。在海华阅读理解比赛以及基于文本挖掘的企业隐患排查质量分析模型都得到了成功验证~

Multi-Task Fine-Tuning:在没有预先训练的 LM 模型的情况下,多任务学习已显示出其利用多个任务之间共享知识优势的有效性。当目标域中有多个可用任务时,一个有趣的问题是,在所有任务上同时微调 BERT 是否仍然带来好处。

5

微调策略

1. 处理长文本我们知道BERT 的最大序列长度为 512,BERT 应用于文本分类的第一个问题是如何处理长度大于 512 的文本。本文尝试了以下方式处理长文章。

Truncation methods 截断法文章的关键信息位于开头和结尾。我们可以使用三种不同的截断文本方法来执行 BERT 微调。

head-only: keep the first 510 tokens 头部510个字符,加上两个特殊字符刚好是512 ;

tail-only: keep the last 510 tokens;尾部510个字符,同理加上两个特殊字符刚好是512 ;

head+tail: empirically select the first 128and the last 382 tokens.:尾部结合

Hierarchical methods 层级法输入的文本首先被分成k = L/510个片段,喂入 BERT 以获得 k 个文本片段的表示向量。每个分数的表示是最后一层的 [CLS] 标记的隐藏状态,然后我们使用均值池化、最大池化和自注意力来组合所有分数的表示。

上表的结果显示,head+tail的截断法在IMDb和Sogou数据集上表现最好。后续的实验也是采用这种方式进行处理。

2. 不同层的特征BERT 的每一层都捕获输入文本的不同特征。文本研究了来自不同层的特征的有效性, 然后我们微调模型并记录测试错误率的性能。

我们可以看到:最后一层表征效果最好;最后4层进行max-pooling效果最好3. 灾难性遗忘Catastrophic forgetting (灾难性遗忘)通常是迁移学习中的常见诟病,这意味着在学习新知识的过程中预先训练的知识会被遗忘。因此,本文还研究了 BERT 是否存在灾难性遗忘问题。我们用不同的学习率对 BERT 进行了微调,发现需要较低的学习率,例如 2e-5,才能使 BERT 克服灾难性遗忘问题。在 4e-4 的较大学习率下,训练集无法收敛。

这个也深有体会,当预训练模型失效不能够收敛的时候多检查下超参数是否设置有问题。4. Layer-wise Decreasing Layer Rate 逐层降低学习率下表 显示了不同基础学习率和衰减因子在 IMDb 数据集上的性能。我们发现为下层分配较低的学习率对微调 BERT 是有效的,比较合适的设置是 ξ=0.95 和 lr=2.0e-5

为不同的BERT设置不同的学习率及衰减因子,BERT的表现如何?把参数θ hetaθ划分成{ θ 1 , … , θ L } { heta^1,dots, heta^L}{θ1,…,θL},其中θ l heta^lθl

6

ITPT:继续预训练

Bert是在通用的语料上进行预训练的,如果要在特定领域应用文本分类,数据分布一定是有一些差距的。这时候可以考虑进行深度预训练。

Within-task pre-training:Bert在训练语料上进行预训练In-domain pre-training:在同一领域上的语料进行预训练Cross-domain pre-training:在不同领域上的语料进行预训练

Within-task pretraining

BERT-ITPT-FiT 的意思是“BERT + with In-Task Pre-Training + Fine-Tuning”,上图表示IMDb 数据集上进行不同步数的继续预训练是有收益的。2 In-Domain 和 Cross-Domain Further Pre-Training

我们发现几乎所有进一步的预训练模型在所有七个数据集上的表现都比原始 BERT 基础模型。一般来说,域内预训练可以带来比任务内预训练更好的性能。在小句子级 TREC 数据集上,任务内预训练会损害性能,而在使用 Yah 的领域预训练中。Yah. A.语料库可以在TREC上取得更好的结果。

这篇论文与其他模型进行了比较,结果如下表所示:

我们可以看到ITPT和IDPT以及CDPT的错误率相比其他模型在不同数据集有不同程度下降。

7

多任务微调

所有任务都会共享BERT层及Embedding层,唯一不共享的层就是最终的分类层,每个任务都有各自的分类层。

上表表明对于基于BERT多任务微调,效果有所提升,但是对于CDPT的多任务微调是有所下降的,所以说多任务学习对于改进对相关文本分类子任务的泛化可能不是必要的。

8

小样本学习 Few-Shot Learning

实验表明:BERT能够为小规模数据带来显著的性能提升。

9

BERT Large模型上进一步预训练

实验结果表明:在特定任务上微调BERT Large模型能够获得当前最优的结果。

接下来给大家带来干货部分:不同学习率策略的使用

不同学习率策略

Constant Schedule

Constant Schedule with Warmup

Cosine with Warmup

Cosine With Hard Restarts

Linear Schedule with Warmup

Polynomial Decay with Warmup

参考资料

一起读论文 | 文本分类任务的BERT微调方法论

NLP重铸篇之BERT如何微调文本分类

【论文解析】如何将Bert更好地用于文本分类(How to Fine-Tune BERT for Text Classification?)

How to Fine-Tune BERT for Text Classification 论文笔记

Bert微调技巧实验大全

论文阅读笔记:这篇文章教你在文本分类任务上微调BERT

How to Fine-Tune BERT for Text Classification?读论文-如何让Bert在finetune小数据集时更“稳”一点

论文标题:How to Fine-Tune BERT for Text Classification?中文

中文标题:如何微调 BERT 进行文本分类?

论文作者:复旦大学邱锡鹏老师课题组

实验代码:https://github.com/xuyige/BERT4doc-Classification

编辑:jq

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 文本分类
    +关注

    关注

    0

    文章

    18

    浏览量

    7441

原文标题:文本分类上分利器: Bert微调trick大全

文章出处:【微信号:NLP_lover,微信公众号:自然语言处理爱好者】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    Vishay TSM3微调电阻器技术解析与应用指南

    Vishay/Sfernice TSM3微调电阻器设计用于表面贴装微型微调电位器,采用多圈金属陶瓷密封,性能和稳定性卓越。 此系列微调电阻器设计紧凑,可节省电路板空间,经密封可耐受标准电路板冲洗处理
    的头像 发表于 11-12 11:00 272次阅读
    Vishay TSM3<b class='flag-5'>微调</b>电阻器技术解析与应用指南

    Vishay Sfernice M61系列金属陶瓷微调电位器技术解析

    Vishay/Sfernice M61 3/8”方形单匝金属陶瓷微调电位器有多种引脚配置可供选择,用于手指设置。这些微调电位器通过物理操作轻松调整电阻值,组装在PCB上后可提供稳定性。M61系列采用
    的头像 发表于 11-10 11:44 338次阅读
    Vishay Sfernice M61系列金属陶瓷<b class='flag-5'>微调</b>电位器技术解析

    ‌基于Vishay TSM41微调电位器的精密电路设计与应用解析

    Vishay/Sfernice TSM41 4mm方形SMT微型微调电位器设计用于表面贴装应用,采用符合EIA SMD标准微调电位器占位的4mm设计。这些微调电位器具有容积效率、高性能和稳定性,以及
    的头像 发表于 11-10 11:25 337次阅读
    ‌基于Vishay TSM41<b class='flag-5'>微调</b>电位器的精密电路设计与应用解析

    传感器大全分类

    传感器大全分类
    发表于 09-04 16:56 1次下载

    飞书开源“RTV”富文本组件 重塑鸿蒙应用富文本渲染体验

    近日,飞书正式将其自研的富文本组件库 RichTextVista(简称“RTV”)开源,并上线OpenHarmony 三方库中心仓。该组件以领先的性能、流畅的渲染体验与高度的开放性,为鸿蒙生态提供了
    的头像 发表于 07-11 15:20 444次阅读
    飞书开源“RTV”富<b class='flag-5'>文本</b>组件 重塑鸿蒙应用富<b class='flag-5'>文本</b>渲染体验

    Docker Volume管理命令大全

    Docker Volume管理命令大全
    的头像 发表于 05-28 17:14 607次阅读

    电子元器件封装大全

    电子元器件封装大全,附有详细尺寸 纯分享贴,有需要可以直接下载附件获取完整资料! (如果内容有帮助可以关注、点赞、评论支持一下哦~)
    发表于 05-15 13:50

    中国集成电路大全 接口集成电路

    资料介绍本文系《中国集成电路大全》的接口集成电路分册,是国内第一次比较系统地介绍国产接口集成电路的系列、品种、特性和应用方而知识的书籍。全书共有总表、正文和附录三部分内容。总表部分列有国产接口
    发表于 04-21 16:33

    把树莓派打造成识别文本的“神器”!

    在许多项目中,RaspberryPi被用作监控摄像头或执行机器学习任务。在这些场景中,图像中经常包含应用程序感兴趣的文本信息。我们希望提取这些信息并将其转换,以便通过程序分析文本
    的头像 发表于 03-25 09:30 746次阅读
    把树莓派打造成识别<b class='flag-5'>文本</b>的“神器”!

    ​VLM(视觉语言模型)​详细解析

    的详细解析: 1. 核心组成与工作原理 视觉编码器 :提取图像特征,常用CNN(如ResNet)或视觉Transformer(ViT)。 语言模型 :处理文本输入/输出,如GPT、BERT等,部分模型
    的头像 发表于 03-17 15:32 7541次阅读
    ​VLM(视觉语言模型)​详细解析

    使用OpenVINO™训练扩展对水平文本检测模型进行微调,收到错误信息是怎么回事?

    已针对水平文本检测模型运行OpenVINO™训练扩展中的 微调 步骤,并收到错误消息: RuntimeError: Failed to find annotation files
    发表于 03-05 06:48

    铁电存储器SF24C64对标FM24C64性能、应用和成本分

    铁电存储器SF24C64对标FM24C64性能、应用和成本分
    的头像 发表于 03-03 10:25 1225次阅读
    铁电存储器SF24C64对标FM24C64性能、应用和成<b class='flag-5'>本分</b>析

    【「基于大模型的RAG应用开发与优化」阅读体验】+大模型微调技术解读

    。对于文本数据,可以采用同义词替换、句法变换、上下文扩展等技术。微调策略和方法全参数微调:对模型的所有参数进行再训练。虽然需要大量的计算资源,但它可以充分适应特定任务。轻量级
    发表于 01-14 16:51

    美的电磁炉维修手册大全

    美的电磁炉维修手册大全
    发表于 12-24 14:48 52次下载

    如何使用自然语言处理分析文本数据

    媒体、新闻报道、用户评论等)收集你感兴趣的文本数据。 数据清洗 :去除无关字符(如HTML标签、特殊符号等),确保文本数据干净且一致。 2. 预处理 分词 :将文本分割成有意义的单元(单词、短语或句子),这取决于使用的语言和分析
    的头像 发表于 12-05 15:27 2376次阅读