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

    浏览量

    7267

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

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

收藏 人收藏

    评论

    相关推荐

    【大语言模型:原理与工程实践】大语言模型的基础技术

    之后,成为文本建模领域的热门架构。不仅如此,它还对自然语言处理领域产生了深远的影响。基于Transformer的预训练模型,如GPT系列和BERT系列,已在多种任务上取得了卓越的成绩。目前的大型语言
    发表于 05-05 12:17

    基于双级优化(BLO)的消除过拟合的微调方法

    这篇论文试图解决的问题是大型预训练模型在下游任务中进行微调时出现的过拟合问题。尽管低秩适应(LoRA)及其变体通过学习低秩增量矩阵有效地减少了与完全微调方法相比的可训练参数数量。
    的头像 发表于 04-02 16:46 356次阅读
    基于双级优化(BLO)的消除过拟合的<b class='flag-5'>微调</b>方法

    集成芯片类型大全

    集成芯片的大全会包括各种类型的集成电路,它们根据功能、结构和应用领域进行分类
    的头像 发表于 03-25 14:24 567次阅读

    了解如何使用PyTorch构建图神经网络

    图神经网络直接应用于图数据集,您可以训练它们以预测节点、边缘和与图相关的任务。它用于图和节点分类、链路预测、图聚类和生成,以及图像和文本分类
    发表于 02-21 12:19 379次阅读
    了解如何使用PyTorch构建图神经网络

    教您如何精调出自己的领域大模型

    BERT和 GPT-3 等语言模型针对语言任务进行了预训练。微调使它们适应特定领域,如营销、医疗保健、金融。在本指南中,您将了解 LLM 架构、微调过程以及如何为 NLP
    的头像 发表于 01-19 10:25 716次阅读
    教您如何精调出自己的领域大模型

    四种微调大模型的方法介绍

    微调(Full Fine-tuning):全微调是指对整个预训练模型进行微调,包括所有的模型参数。在这种方法中,预训练模型的所有层和参数都会被更新和优化,以适应目标任务的需求。
    发表于 01-03 10:57 1.7w次阅读
    四种<b class='flag-5'>微调</b>大模型的方法介绍

    人工智能中文本分类的基本原理和关键技术

    在本文中,我们全面探讨了文本分类技术的发展历程、基本原理、关键技术、深度学习的应用,以及从RNN到Transformer的技术演进。文章详细介绍了各种模型的原理和实战应用,旨在提供对文本分类技术深入理解的全面视角。
    的头像 发表于 12-16 11:37 749次阅读
    人工智能中<b class='flag-5'>文本分类</b>的基本原理和关键技术

    任务微调框架MFTCoder详细技术解读

    MFTCoder具备高效训练特征,包括提供高效的数据Tokenization模式和支持PEFT微调,能有效提升微调训练速度并降低对资源的需求。
    的头像 发表于 11-17 17:17 733次阅读
    多<b class='flag-5'>任务</b><b class='flag-5'>微调</b>框架MFTCoder详细技术解读

    基于BERT算法搭建一个问答搜索引擎

    鼎鼎大名的 Bert 算法相信大部分同学都听说过,它是Google推出的NLP领域“王炸级”预训练模型,其在NLP任务中刷新了多项记录,并取得state of the art的成绩。 但是有很多深度
    的头像 发表于 10-30 11:46 420次阅读
    基于<b class='flag-5'>BERT</b>算法搭建一个问答搜索引擎

    华为云 API 自然语言处理的魅力—AI 情感分析、文本分

    云服务、API、SDK,调试,查看,我都行  阅读短文您可以学习到:人工智能 AI 自言语言的情感分析、文本分词、文本翻译 IntelliJ IDEA 之 API 插件介绍 API 插件支持 VS
    的头像 发表于 10-12 11:02 302次阅读
    华为云 API 自然语言处理的魅力—AI 情感分析、<b class='flag-5'>文本分</b>析

    什么是零样本学习?为什么要搞零样本学习?

    零样本分类的技术目前正处于高速发展时期, 所涉及的具体应用已经从最初的图像分类任务扩展到了其他计算机视觉任务乃至自然语言处理等多个相关领域。 对此, 本文将其称为广义零样
    发表于 09-22 11:10 1449次阅读
    什么是零样本学习?为什么要搞零样本学习?

    一个任务通用的的指令微调Embedder!

    现有的文本嵌入表示方法在应用到新的任务或领域时,通常性能都会受损,甚至应用到相同任务的不同领域也会遇到同样的问题。常见的解决办法是通过针对下游任务和领域的数据集进一步
    的头像 发表于 09-05 17:13 676次阅读
    一个<b class='flag-5'>任务</b>通用的的指令<b class='flag-5'>微调</b>Embedder!

    BEV人工智能transformer

    BEV人工智能transformer  人工智能Transformer技术是一种自然语言处理领域的重要技术,广泛应用于自然语言理解、机器翻译、文本分类任务中。它通过深度学习算法从大规模语料库中自动
    的头像 发表于 08-22 15:59 687次阅读

    华为云ModelArts入门开发(完成物体分类、物体检测)

    利用ModelArts框架可以完成图像分类、物体检测、预测分析、声音分类文本分类等功能。介绍如何使用ModelArts完成图像分类、物体检测、自我学习等功能运用。
    的头像 发表于 07-10 16:26 1408次阅读
    华为云ModelArts入门开发(完成物体<b class='flag-5'>分类</b>、物体检测)

    大模型微调样本构造的trick

    现在chatglm2的代码针对这两个问题已经进行了改善,可以认为他就是典型的decoder-only模型了,具体表现为推断时候attention 是casual attention的形式,position id也退化为token次序增长。
    的头像 发表于 07-10 11:32 619次阅读
    大模型<b class='flag-5'>微调</b>样本构造的<b class='flag-5'>trick</b>