“Universal Language Model Fine-tuning for Text Classification”论文解读

目录:
一、论文背景
二、相关知识
三、模型结构及训练

本篇文章主要是对论文“Universal Language Model Fine-tuning for Text Classification”的理解,该论文主要提出了一个针对NLP任务的迁移学习的模型及训练过程。
先对论文背景做一个简单介绍。

一、论文背景
1、什么是迁移学习?为什么要进行迁移学习?
迁移学习(Transfer learning) 就是把已经训练好的模型参数迁移到新的模型来帮助新模型训练。在机器学习中,我们一个主要的假设是训练和未来的数据都是在同一个特征空间当中,并且有同样的分布。而实际上,这个假设可能并不成立。比如,我们在一个感兴趣的领域有一个分类任务,但是我们只在另一个领域有充足的数据,而这些数据可能处于不同的特征空间,或者不同的分布。如果我们能够将后者的知识成功迁移到前者的任务当中,就能极大改进学习的效率。

2、迁移学习分类。
在这里插入图片描述
举例:给定源领域是电影评论,目标领域是电子产品评论,源任务是语言模型,如果目标任务是情感分类,那么则是归纳迁移学习,目标任务还是语言模型,则为直推式迁移学习。(本文采用的是归纳迁移学习)

3、作者为什么提出针对NLP的迁移学习?
迁移学习在计算机视觉领域取得了重大成功,但在NLP领域尚未得到很好的应用。作者指出并不是语言模型微调的想法而是我们缺乏训练模型的知识阻碍了语言模型微调的更广泛的应用。针对语言模型在小数据集上过拟合和当与分类器一起微调出现灾难性遗忘的问题,作者提出了通用的语言模型微调(Universal Language Model Fine-tuning) ,它适用于任意的NLP任务。

二、相关知识
1、为什么选择语言模型作为源任务?
基于以下原因,语言模型可以被视为理想的源任务(source task):
(1)语言模型能够捕获与下游任务相关的很多语言方面的特征,比如长期依赖、结构关系和情感等。
(2)不同于机器翻译和文本蕴含,语言模型在任何领域和语言当中,都有几乎无限的数据。
(3)一个经过预训练的语言模型能够轻易地适应目标任务的特点。
(4)语言模型是很多现存任务的一个关键组成部分,如机器翻译和对话模型。

2、什么是AWD-LSTM?
AWD-LSTM即ASGD Weight-Dropped LSTM。它使用了DropConnect及平均随机梯度下降的方法,除此之外还有包含一些其它的正则化策略。
DropConnect在训练神经网络模型过程中,并不随机的将隐层节点的输出变成0,而是将节点中的每个与其相连的输入权值以1-p的概率变成0。 不使用Dropouts,是因为它破坏了RNN长期依赖的能力。
“Universal Language Model Fine-tuning for Text Classification”论文解读_第1张图片
平均随机梯度:
提出原因:进一步改善训练过程。(传统的SGD每一轮的梯度更新都与上一轮的数据和梯度完全无关)
传统的SGD梯度更新:
w_t = w_prev – lr_tgrad(w_prev)
AGSD梯度更新:
Avg_fact = 1/max(t-k, 1)
If avg avg_fact !=1:
w_t = avg_fact
(sum(w_prevs)+(w_prev – lr_tgrad(w_prev)))
Else:
w_t = w_prev – lr_t
grad(w_prev)
其中,k是在加权平均开始之前运行的最小迭代次数。在k次迭代开始之前,ASGD与传统的SGD类似。t是当前完成的迭代次数,sum(w_prevs)是迭代k到t的权重之和,lr_t是迭代次数t的学习效率,由学习率调度器决定。

三、模型结构及训练
主要模型结构:
3层AWD-LSTM语言模型,嵌入层维度400,隐藏层维度1150。
ULMFiT包括三步:
1、通用领域LM预训练。
2、目标任务LM微调(fine-tuning)
3、目标任务分类器微调。

“Universal Language Model Fine-tuning for Text Classification”论文解读_第2张图片
1、通用领域LM预训练(general-domain LM pretraining):
在一个大型的语料库上训练语言模型。
对小数据集而言,预训练是最为有用的方式。
这一步是最为昂贵的,但是只需要执行一次。

2、目标任务LM微调(target task LM fine-tuning)
不管用于预训练的通用领域数据有多多样化,目标任务的数据很可能来自不同的分布,因此,需要在目标任务上微调LM。
给定一个预训练好的通用领域LM,在目标任务上进行微调由于只需要适应目标任务的特性,微调可以收敛得更快,并且对于一个小型的数据集也允许我们训练一个鲁棒的LM。
区分性的微调(discriminative fine-tuning):
不同的层捕获到不同的信息,因此它们应该用不同的程度进行微调。具体公式如下:

在这里插入图片描述
l层t时刻的参数, η^l l层学习速率。
作者根据经验发现,ηl=η(l-1)/2.6时效果会比较好。

斜三角学习速率(slanted triangular learning rates):
目的是使参数快速地收敛到合适的区域。公式如下

“Universal Language Model Fine-tuning for Text Classification”论文解读_第3张图片
T是迭代次数,cut_frac是学习速率增加的部分(0.1),cut是学习速率由增转降的转折点。用图形展示如下:“Universal Language Model Fine-tuning for Text Classification”论文解读_第4张图片
3、目标任务分类器微调(target task classifier fine-tuning)
在最后一层上加上一个softmax产生的线性分类器。线性分类器中的参数是唯一需要从头开始训练的参数。
用于文本分类的信号常常只包含在几个词当中,它们可能出现在文件中的任何位置。而输入的文本包含数百个词,如果只考虑最后的隐藏状态,信息可能会丢失。因此,作者将最后一个时间步的隐藏状态同前面所有隐藏层状态的最大池化和平均池化连接起来,再输入到分类器当中。
在这里插入图片描述
微调目标任务分类器是迁移学习当中最关键的部分。过于激进的微调会引起灾难性的遗忘,这会消除通过语言模型捕捉信息获得的益处。而过于谨慎的微调会导致缓慢的收敛。
作者在区分性的微调、斜三角学习速率还提出了一个逐层解冻(gradual unfreezing)的微调技术。

Gradual unfreezing:
与同时微调所有层的参数不同,这样会导致灾难性的遗忘, Gradual unfreezing从最后一层参数开始微调,因为最后一层包含了最少的一般知识。
微调过程:首先解冻最后一层,在一个迭代周期中进行微调。然后,将下一层也解冻,进行微调,直到最后解冻所有层。

参考资料:
1、A Survey on Transfer Learning
2、Regularizing and Optimizing LSTM Language Models
3、https://blog.csdn.net/manmanxiaowugun/article/details/83756122
4、https://www.jianshu.com/p/137a7640a5c6
5、https://blog.csdn.net/Oscar2018/article/details/81168603
6、https://blog.csdn.net/weixin_34130269/article/details/86818832

你可能感兴趣的:(迁移学习)