[PLM专题] 十分钟了解文本分类通用训练技巧

栏目: IT技术 · 发布时间: 4年前

内容简介:同时感谢清华大学自然语言处理实验室整理的体系图,我们将

[PLM专题] 十分钟了解文本分类通用训练技巧

前言

欢迎大家来到 预训练语言模型 的专题系列分享,本篇推送是该专题系列的第三篇。在前两篇推送[萌芽时代],[风起云涌]中,我们分享了该领域的奠基文章以及声名鹊起却生不逢时的ELMo模型,本期我们带来的文章将会让大家了解文本分类的一些通用技巧,希望大家看完后炼丹 技术都能更上一层楼!

同时感谢清华大学自然语言处理实验室整理的体系图,我们将 沿此脉络前行 ,探索预训练语言模型的前沿技术,本期的第一篇文章处于图中绿色框内,另一篇为课外阅读。红色框内的论文在前几期中介绍,大家有兴趣的可以前去一看。

[PLM专题] 十分钟了解文本分类通用训练技巧

Universal Language Model Fine-tuning for Text Classification (2018)

前几期介绍的大多是模型或结构,而这篇文章由 Jeremy Howard 和 Sebastian Ruder 发表于2018年,介绍的是文本分类中语言模型的 通用训练技巧 。其中的一些技巧,吴老师和我在kaggle 的jigsaw 文本分类比赛中也有应用,并在比赛中拿到了金牌。在未来的推送中,可能还会有详细介绍。

这篇文章认为,目前语言模型在finetune时经常会过拟合到小数据集上,而且容易导致灾难性遗忘。相比于CV模型,NLP模型层数较少,所以需要更多的训练技巧来使其表现更好。而他们在本文中提出了fine-tuning 语言模型的关键技术   ULMFiT ,可以大大地提高六个文本分类任务的效果,并且用更少的数据训练就可以达到相当的效果,加强了泛化能力。

首先介绍下ULMFiT的总体框架。之前的很多论文提出的都是预训练 + finetune 两个阶段的训练,而本文提出使用 三阶段训练

  • 第一个阶段,首先在一个很庞大的通用领域无关语料上,进行语言模型的训练,以捕捉语言的通用规律

  • 第二个阶段,在特定任务的领域相关语料上,进行语言模型的finetune,来学习任务数据的特定语言特征分布

  • 第三个阶段,进行目标任务分类器的总体学习,直接学习到任务的分类目标。

文章认为上述第二个阶段很有必要。因为无论通用的语料多样性多么好,都和你目标任务的数据分布有区别。而且在比较小的特定任务数据上finetune语言模型可以很快得到收敛,成本较低。同时,这样finetune以后,即使对比较小的数据集,语言模型也能变得比较鲁棒。

[PLM专题] 十分钟了解文本分类通用训练技巧

ULMFiT的总体框架(来自论文)

其次,在ELMo,GPT的介绍中我们都提到过,语言模型的不同层其实能够捕捉不同级别的语义特征,比如ELMo底层LSTM更多捕捉语法和词层面的特征,而上层LSTM更多捕捉整句话的语言的特征。既然是不同类型的信息,就应该区分地去进行参数的finetune,所以文章提出了 discriminative fine-tuning ,即对不同的层使用不同的学习率去学习。因为越靠近最下层Embedding层,模型参数就会含有更多通用信息,不应随任务目标发生很大变化。所以为了降低灾难性遗忘的可能,越下层,就会用更小的学习率来学习,而上层为了让模型能够更快地学习到目标任务的独有信息,会用相对大的学习率。一般层之间的学习率会等比地变化,在这篇文章里,这个比值为2.6, 即上一层参数学习率为下一层的2.6

再者,为了让语言模型能更好地学习到特定任务相关的特征,文章使用了 Slanted triangular learning rates (SLTR) ,让模型在训练初期快速收敛到一个合适的参数区域,接着再进行细致地优化。在现在看来这就是一种warmup策略。warmup已经在神经网络模型中被广泛应用了,huggingface的transformers也有现成的函数来对warmupscheduler进行控制。

[PLM专题] 十分钟了解文本分类通用训练技巧

SLTR示意图(来自论文)

最后,在目标任务的直接优化过程中,文章提出了几种辅助训练技巧,其中这些我认为比较简单通用。

  • 第一个是 Concat pooling ,一般文本分类的分类器会接在语言模型最后一层LSTM或transformer之后,但是其实很多信息蕴含在之前的层或时间步中。所以将几个时间步或者几层进行concat,再接上全连接层一般会获得更好的结果。这一点在BERT论文和 我们之前比赛 中也有验证,根据实验,将BERT的后四层concat起来再接上全连接层,会得到更好的效果。

  • 第二个是 Gradual unfreezing 。一下子把模型的全部层一起训练,通用信息容易丢失,从而增加灾难性遗忘的风险。所以文章提出,可以慢慢地从最后一层开始“解冻”,因为最后一层含有最少的 "general knowledge",让它先去拟合任务目标比较合适。具体做法是第一个epoch,“解冻”最后一层进行训练(只改变了最后一层参数)。接着“解冻”倒数第二层训练(改变了最后两层参数)。直到把所有层“解冻”为止。

文章接下来的篇幅从各方面比较了文中技巧对任务的提升,我们可以大致看一下。其中, full 是指优化整个模型,last指只优化最后一层,discr指discriminative fine-tuning, sltr指slanted triangular learning rates,cos指cosine annealing schedule。可以看到,文中提到的几个技术都对误差率的下降有 明显 的效果。

[PLM专题] 十分钟了解文本分类通用训练技巧

不同策略下验证错误率(来自论文)

这篇文章的贡献是 深远 的,它提出了预训练语言模型比较通用的训练方法和技术。这篇文章虽然早于GPT和BERT发表,但是它的框架完全可以在后来的强大模型中提供帮助,让我们NLP的炼丹之旅轻松又愉快!

How to Fine-Tune BERT for Text Classification(2019)

本篇文章是由复旦计算机系的多位作者发表的。讨论如何在文本分类任务中对 BERT模型 进行finetune。虽然这篇文章不在体系图,但与第一篇文章在内容上比较相关,而且我们在kaggle比赛中也应用到了,所以一起在这里介绍。我们长话短说,直接来总结一下这篇文章的几个贡献点和有用的技巧。

第一个贡献是,框架相比于上篇文章进行了微调。在通过任务相关数据进行语言模型finetune后,多加了一步可选的stage: 把BERT在领域内相关的其他任务上进行 多任务的训练 ,我认为这是对于ULMFiT的补充。

[PLM专题] 十分钟了解文本分类通用训练技巧

BERT finetune框架(来自论文)

第二个贡献是对 长文本的处理 ,我们在之后BERT文章中将会介绍,BERT模型能一次处理的最长文本长度为512,有时我们为了降低模型运行时间和占用空间,有可能将这个长度变得更短,这时候就可能要对文本进行截断。文章的结论就是最好的截断方式既不是截头,也不是截尾,应该头尾都截一部分保留最重要信息。

[PLM专题] 十分钟了解文本分类通用训练技巧

长文本不同处理方式的错误率 (来自论文

第三个贡献是在任务上详细分析了BERT的 不同层 对文本分类任务的效果 。具体做法是,在某一层后直接接分类器进行分类。单层中,以最后一层的效果最好,因为文本分类是更贴近语言层面的任务。而在文章尝试的其他几种选择中,把最后四层concat或者max pooling效果最好。

[PLM专题] 十分钟了解文本分类通用训练技巧

不同层向量用以分类的错误率 (来自论文

第四个贡献其实是借鉴discriminative fine-tuning,进行 层间学习率的下降 。越接近底层,含有的通用信息越多,越不应该随着特定任务进行大规模的参数改变,否则有灾难性遗忘风险。在他们的尝试中,学习率2e-5,层间学习率变化因数0.95对BERT来说比较合适的。

[PLM专题] 十分钟了解文本分类通用训练技巧

不同学习率设置的分类错误率 (来自论文

总之,这篇文章进行了很多完备的实验,来提出和验证了在文本分类任务上,BERT的较好的finetune策略及其效果。文章验证了 :  1) 对于文本分类,BERT的最高层的效果最好 2) 使用合适的层间学习率下降策略,BERT能够克服灾难性遗忘的问题 3) 任务相关或领域内相关数据的语言模型finetune可以大大提升效果 4) 相关的多任务学习也对特定任务有提升效果 5) BERT只需少量的特定数据就可以预训练以提升任务。文章对我们训练BERT模型有很好的指导意义,以后再也不用担心炸炉啦!

未完待续

本期的论文就给大家分享到这里,感谢大家的阅读和支持,下期我们会给大家带来预训练语言模型其他的论文阅读分享,敬请大家期待!

欢迎关注晴天1号,这里有很多最新最热的论文阅读分享,有问题或建议可以在公众号下留言。

参考资料

  1. Universal Language Model Fine-tuning for Text Classification (2018)

    https://www.aclweb.org/anthology/P18-1031.pdf

  2. How to Fine-Tune BERT for Text Classification(2019)

    https://arxiv.org/pdf/1905.05583.pdf

  3. BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding

    https://arxiv.org/pdf/1810.04805.pdf

推荐阅读

推荐阅读

AINLP年度阅读收藏清单

谈谈文本匹配和多轮检索

2021 校招算法岗, 劝退还是继续

10万元奖金语音识别赛进行中 | 自动化所博士生讲解业界主流 KALDI 基线模型

抛开模型,探究文本自动摘要的本质——ACL2019 论文佳作研读系列

鼠年春节,用 GPT-2 自动写对联和对对联

用 GPT-2 自动写诗,从五言绝句开始

征稿启示 | 稿费+GPU算力+星球嘉宾一个都不少

关于AINLP

AINLP 是一个有趣有AI的自然语言处理社区,专注于 AI、NLP、机器学习、深度学习、推荐算法等相关技术的分享,主题包括文本摘要、智能问答、聊天机器人、机器翻译、自动生成、知识图谱、预训练模型、推荐系统、计算广告、招聘信息、求职经验分享等,欢迎关注!加技术交流群请添加AINLP君微信(id:AINLP2),备注工作/研究方向+加群目的。

[PLM专题] 十分钟了解文本分类通用训练技巧


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Head First HTML and CSS

Head First HTML and CSS

Elisabeth Robson、Eric Freeman / O'Reilly Media / 2012-9-8 / USD 39.99

Tired of reading HTML books that only make sense after you're an expert? Then it's about time you picked up Head First HTML and really learned HTML. You want to learn HTML so you can finally create th......一起来看看 《Head First HTML and CSS》 这本书的介绍吧!

MD5 加密
MD5 加密

MD5 加密工具

正则表达式在线测试
正则表达式在线测试

正则表达式在线测试

HEX CMYK 转换工具
HEX CMYK 转换工具

HEX CMYK 互转工具