本文是由2018ACL上收录的一篇论文。
摘要
归纳迁移学习在计算机视觉有很成熟的应用,但是在NLP任务中,对于一个特定任务还需要从头进行训练,因此本文想要提出一个通用语言微调模型,可以对任意一个NLP任务都适用。本文应用的模型为三层AWD-LSTM模型,首先在一个规模比较大的语料库上进行训练,然后针对特定任务进行参数微调,最后在对特定任务进行分类器训练。本文提出的模型在六个通用的语料库上都较现有的方法有更好的表现。模型结构图如下所示。
实验
1.通用语料库训练
在一个范围比较广的的语料库上对本文应用的AWD-LSTM语言模型进行训练,希望得到一个通用的词向量表示。
2.特定任务模型微调
尽管在通用的语料库上进行训练,但是在特定的任务上还会有不同的分布,所以要在特定的任务上对参数进行微调,本文提出了两种参数微调方法。
Discriminative fine-tuning
这一方法对每一层采用了不同的学习率,参数迭代公式如下所示,其中学习率η的确定方式为:首先确定最后一层(layer3)的学习率为η(本文并未说明具体的确定方法),之前每一层为下一层学习率除以2.6(本文也并未指出为何除以2.6),及layer2的学习率为η/2.6,layer1的学习率为η/(2.6*2.6)。
Slanted triangular learning rates
为了适应特定的任务,使模型更快的收敛,这一方法根据迭代次数决定不同的学习率,计算公式如下所示:
其中:
cut_frac: 学习率上升的比例(本文为0.1)
T:总迭代次数
t:当前迭代次数
cut:学习率上升和下降的转折点
ratio:最大学习率与最小学习率的比值(本文为32)
ηmax:最大学习率(本文为0.01)
p:学习率已经上升的比例/还将下降的比例
学习率随迭代过程变化如下图所示,在迭代过程中学习率先增后减,从小开始,希望能针对特定任务有正确的方向,随后学习率增加可以使收敛速度加快,随后学习率减小并且减得比例大,对模型进行细化工作。
3. 特定任务分类器微调
该阶段就是使用domain中的有标注数据进行分类器的训练,就是把layer3的LSTM的输出变量进行一系列的变换操作,最后输入分类器的形式就是 ,就是最后一时刻的输出向量,分类器为两个线性block,每个线性block包含(batch normalization,dropout,ReLU),最后跟一个softmax输出属于某一类的概率。对于每个任务来说,这两个线性block和softmax都是从头训练的。在输入分类器时,由于仅仅输入最后一层隐藏单元的输出可能导致丢失信息,所以进行级联池化操作,将最后一层的输出与每一层的最大池化和平均池化进行连接,公式如下。
Gradual unfreezing
由于调节分类器过程中,参数的调节是十分重要的,调节过大会遗失之前学习到的特征,调节过小会导致收敛速度变慢,因此本文在调节参数过程中提出一种逐步解冻方法,在调参过程中从最后一层往前依次解冻,每次只对解冻的层进行调节。
实验
本文在六个数据集上与常用的方法进行了性能对比,进行了NLP中三种常见的任务分类:情感分类、问题分类、话题分类,可以发现本文提出的模型性能有显著的提高。