Heloowird

NLP论文阅读- ULMFiT

论文题目

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

背景介绍

迁移学习对CV领域有着巨大影响,然而现存NLP领域的相关方法需要针对特定任务做相应修改,并从头开始训练。所以,本文提出了一种有效的文本分类的迁移学习方法—通用语言模型微调方法(Universal Language Model Fine-tuning)—可应用于所有的NLP任务,并介绍了微调语言模型的关键技术。

预训练的语言模型被证明是有效的,如word2vec。作者认为,并非语言模型微调思想本身有问题,而是缺乏如何有效地微调语言模型这方面知识才是阻碍其广泛应用的「罪魁祸首」。

模型结构

ULMFiT模型主框架图

ULMFiT包含3个步骤:

  1. 通用领域语言模型预训练
  2. 目标领域语言模型微调
  3. 目标分类任务微调

三步使用了相同的主框架:首先是embedding层,然后接三层LSTM层,最后接一个Softmax层。

在目标分类任务微调中,为解决分类问题,加了两个全连接层:第一个全连接为bn+dropout+relu;第二个全连接层为bn+dropout+softmax,输出各个类别的概率。

另外:第一个全连接的输入除了LSTM最后一层的最后一个隐层状态,还分别拼接了最后一层各个隐层状态经max-pool和mean-pool后的结果,尽可能地保真文档的信息。

模型训练

使用大规模通用领域语料预训练语言模型,文中用到的通用语料为Wikitext-103。使用具体的语言模型为:通过上文,预测下一个词,即从左到右建模。在大规模通用预训练时,不同模型层次提取不同级别的通用特征,这点期待和CV领域的IMAGENET模型达到l类似的效果。

使用目标任务的语料微调语言模型。目标任务物料与通用语料的分布通常是不一样,所以需要针对目标任务预料语义特性,进行参数微调。这里使用了两个trick:

  • 每层学习到的特征不一样,需要进行不同程度的微调:越低层网络学习到的特征越基础,微调幅度应越小。所以每层设置不同的初始学习率。最后一层学习率为$\eta ^{l}$,则前一层学习率为的$\eta ^{l-1} = \eta^{l}/2.6$,依次类推.
  • 开始时,学习率随着每次迭代逐渐增加至最大学习率,然后随着训练迭代依次递减。学习率随着迭代次数呈斜三角形分布。

最后一步是在目标文本分类任务上进行参数微调。在此步中微调程度把握至关重要,过大幅度的微调会导致忽略从语言模型中学习到的知识;过小幅度微调又影响收敛速度,且易过拟合。所以,这里又使用一个技巧:逐层微调。具体来说:从LSTM最后一层开始,每遍训练将该层添加到微调集合,其它层固定,直到所有层完全解冻。

模型优劣

优点:

  • 适用于不同语料量级、类别数量和类型
  • 统一框架和训练过程
  • 无需人工特征工程
  • 无需额外的任务领域的语料或样本

缺点:

  • 训练过程略复杂,学习率调整比较繁复,较为依赖经验(不过也算是一个微调语言模型的经验吧)
  • 没有验证低层网络能捕捉更通用特征(个人认为自然语言和CV还是有一定区别)

参考资料:

  1. Universal Language Model Fine-tuning for Text Classification