论文分享|《Universal Language Model Fine-tuning for Text Classificatio》

https://www.sohu.com/a/233269391_395209

本周我们要分享的论文是《Universal Language Model Fine-tuning for Text Classificatio》

迁移学习在计算机视觉方面取得了很多成功,但是同样的方法应用在NLP领域却行不通。文本分类还是需要从零开始训练模型。本文的作者提出了一种针对NLP的有效的迁移学习方法,通用语言模型微调(ULMFiT)并介绍了用于微调模型的关键技巧。

越底层的特征越通用,越顶层的特征越特殊

ULMFiT效果:该方法在6个文本分类任务上的性能明显优于现有的文本分类方法,在大部分的数据集上测试使得错误率降低了18-24%。此外,仅有100个标记样本训练的结果也相当不错。

Universal Language Model Fine-tuning

ULMFiT方法包括三个阶段:

LM pre-training:在语料库上训练语言模型,获取每个word在大语料库上面的representation;

LM fine-tuning:LM使用区分微调(Discriminative)和本文使用的是三角变化的学习率(Slanted triangular learning rates)两个trick对目标域数据进行微调,以学习每个word的特定语料上的representation。

Classifier fine-tuning:上层分类器训练,这一步也用了很多的trick。

文中使用的几种trick

Discr + STLR

Discr:每一层设置一个学习率的方法(第一层的特征具有通用性,所以设置相对较小的学习率,高层的特征与具体任务相关,因此设置相对较大的学习率)

STLR:学习率先逐渐增加后逐渐下降(由于具体任务的变化,先用较小的学习率,得到一个好的优化方向,再使用较大的学习率,进行优化,在训练后期再使用较小的学习率进行更细致的优化)

使用STLR技巧,学习率随迭代次数的变化

目标任务分类器微调(作者用了四种技巧)包括:

级联池化(Concat pooling):把RNN模型里每一个时刻的输出pooling一下,然后concat到最后一层特征上

逐步解冻(Gradual unfreezing)

用于文本分类的BPTT(BPTT for Text Classification, BPTT backpropagation through time随时间的反向传播)

双向语言模型(Bidirectional language model)

实验

实验的主要目的有两个:一是验证该方法是否有效;二是验证该方法里面的哪一步更有效。

作者在六个比较常用的数据集上评估了该方法,这些数据文档的数量以及文档的长度都不尽相同,在三个常见的分类任务(情感分析、问题分类、主题分类)上进行实验。

通过和其他的一些文本分类方法进行比较,作者提出的ULMFiT方法错误率最低,效果最好。

在三类分类任务上,ULMFit的监督学习、半监督学习需要的数据比从头训练模型的数据要少得多,但是错误率却更低,模型的效果更好。

讨论LM fine-tuning的影响

论文中作者除了使用微调的方法,还增加了很多技巧以优化模型,所以需要对微调的方法是否有效进行讨论。

通过实验可以看出,从零开始训练模型和使用ULMFiT的方法,在三个测试集上错误率下降幅度较大,后面增加各种trick,使得模型的错误率进一步下降,但是下降的幅度却并不是很大,所以可以看出,确实是ULMFiT的方法是有效。

从论文中学习:

1、文中提到的ULMFiT方法,可以尝试使用在nlp迁移学习中。

2、在调模型时可以考虑增加一些技巧,可以优化结果。比如这篇文章中提到的一些技巧,可以参考。

论文链接:https://arxiv.org/abs/1801.06146v4

原文地址:https://www.cnblogs.com/DjangoBlog/p/9481277.html