本文内容为简要介绍,欲详细了解相关内容,建议阅读原论文——
论文标题:Evolution of Transfer Learning in Natural Language Processing
论文地址:https://arxiv.org/abs/1910.07370
随着Recurrent Neural Network (RNN) 等算法的提出,迁移学习在NLP任务中的应用也越来越广泛。解决NLP任务的传统算法主要有基于规则的方法和统计学方法,与这些方法相比,迁移学习方法在文本分类、机器翻译、情感分析等领域内均表现出了优异的性能。
迁移学习的主要优势在于:
1、通过在大数据集上对复杂模型进行预训练,可以提前确定模型的主要参数。当采用该模型来解决具体的自然语言处理任务时,只需要将预训练好的模型在小数据集上进行微调即可,因此可以减轻计算机运算成本;
2、在解决具体的NLP任务时,目标领域内带标签的数据样本往往很难获得,这就限制了监督学习算法在NLP中的应用。而借助于迁移学习,即使数据样本较少时依然可以使用监督学习解决NLP任务。
在具体讨论各类算法之前,有必要介绍接下来会用到的一些概念。
1. 语言模型(Language Model, LM)
语言模型的性能评估指标为 Perplexity,其计算公式如下:
其中,w1 w2 … wn代表语料库中包含有N个单词的语句,代表当语句中前面的单词分别为w1 … wi-1时,单词 wi 出现的概率。
通常情况下,Perplexity的值越低,表征着生成文本的熵值越低,则语言模型的性能越好。
2. 迁移学习(Transfer Learning)
在传统方法中,NLP模型的参数(或称权值)可以通过随机初始化来完成,但是这种方法效率较低。借助于迁移学习,我们可以在通用任务上对深度学习模型参数进行预训练,然后在具体的任务上对预训练模型进行微调,从而保证模型具有较快的收敛速度,且对目标领域的训练数据量要求较小。这就是迁移学习的核心思想。迁移学习最初主要用于解决计算机视觉问题,近几年在NLP任务中也得到了广泛应用。
研究背景
本部分将介绍NLP任务中常用的基础算法及其结构原理。
1. Vanilla RNN
虽然机器学习模型在分类、回归、聚类等任务中均取得了广泛的应用,但是多层感知机、支持向量基等机器学习算法在文本分类、语言模型预测等任务上的表现却不尽如人意,这些方法往往无法保留语句序列的完整信息。
循环神经网络(Recurrent Neural Network,RNN)算法[1]可用于解决该问题,其结构如下图所示:
RNN中各隐含层的状态可以用以下公式来计算:
其中,ht和ht-1分别为第t和t-1层的状态,W和U均为权重矩阵,b为偏置,为激活函数,x为输入值。网络权值的更新可以通过Backpropagation Through Time (BPTT) 来完成。
Vanilla RNN可以用于处理语音识别、翻译等任务,但是该方法只能对语句中short-term的依赖性进行建模,而无法解决long-term的依赖性问题;此外,RNN网络在训练过程中可能会出现梯度消失和梯度爆炸问题,影响模型性能。
2. 长短期记忆网络(LSTM)
为了克服RNN网络的缺点,Sepp Hochreiter等[2]设计了LSTM网络,该模型可以避免梯度消失和梯度爆炸问题,同时可以实现对输入信息的长期记忆,与由单一神经层组成的RNN相比,LSTM由4层神经层连接而成。其主要结构为:
上图所示的结构可以称为“细胞状态”,主要用于存储与传递信息。信息的增加或删减是通过一种叫做门(gates)的结构来实现的。通过一个 sigmoid 神经层和一个逐点相乘的操作,门可以选择性地让信息通过。LSTM由3个门组成,分别为:
- 遗忘门:可以通过输出0或1来决定信息是否在细胞状态内保留;
- 输入门:决定是否将输入信息添加到细胞状态中;
- 输出门:用于确定对哪些信息进行输出。
3. GRU(Gated Recurrent Units)
GRU网络是2014年由K.cho等[3]提出的,该模型可以看作是LSTM模型的简化版,因此其计算量比后者小。其结构如下图所示:
与LSTM模型相比,GRU模型将LSTM的输入门和遗忘门组合成为了更新门,LSTM的细胞状态和隐含层状态则组合成为了重置门。通过这一变形,GRU可以在处理信息流的过程中大大减小对存储单元的依赖,而且运行效率大大提高。
4. Average SGD Weight Dropped (AWD) – LSTM
AWD-LSTM模型是目前性能最优秀的模型之一,于2017年由Stephen Merity等[4]提出,作者采用了Drop-Connect方法来解决RNN模型过拟合的问题,并采用Non-monotonically Triggered ASGD (NTASGD) 方法对模型进行优化,这些策略大大提升了AWD-LSTM模型的性能。
5. Seq2Seq结构
Seq2Seq模型由一个编码器和一个解码器共同组成,编码器用于将语句序列改写为一个固定长度的向量,解码器则用于处理输入信息并产生输出序列。该结构在机器翻译领域取得了良好的结果,但是在将复杂的上下文和长序列语句转换为单一固定长度向量时,往往导致信息的丢失。Attention机制正是为解决这一问题而提出。
6. Attention机制
Attention的原理就是计算当前输入序列与输出向量的匹配程度,匹配度高也就是注意力越集中,其相对的得分越高。将这些得分进行归一化之后,就可以得到attention权值ats。用这些权值对各隐含层状态加权求和,结果为Context Vector。然后,将context vector与隐含层状态进行串联,并进行双曲正切运算,就可以得到attention向量at。用公式表示为:
与传统的固定尺寸的向量相比,Attention向量可以更好的代表输入序列,从而克服了Seq2Seq模型的缺点。
Transformer的模型
得益于Attention机制在解决NLP任务时的显著改进,Vaswani等[5]提出了Transformer模型,该模型在机器翻译等多种任务上均取得了较好的效果。其结构可以表示为:
Transformer结构由编码器和解码器共同组成,编码器则由multi-head attention层、残差连接和归一化层、feed-forward层共同组成,解码器比编码器多包含一个masked multi-head attention层。
在编码器结构中,输入的信息经过embedding后,还要进行positional encoding环节,该环节主要目的在于保留输入的位置和顺序信息。然后,作者进行了multi-head操作,并将结果进行归一化。最后进行feed-forward处理。
而在解码器中,输入的信息在进行embedding和positional encoding之后,需要经过masked multi-head attention层,然后再进行与编码器同样的操作。最后得到的结果需要经过线性化处理,并通过softmax函数确定单词出现的概率。
Transformer模型基于attention机制来实现,没有采用任何循环机制。该模型在机器学习等任务上表现良好,运算速度快,是对LSTM、GRU等RNN模型的有效补充。
迁移学习在NLP任务中的应用
前面几个部分介绍了NLP任务中常用的一些算法与模型,以这些算法和模型为基础,迁移学习技术在解决NLP任务时也取得了非常好的效果。本部分将具体介绍迁移学习在NLP任务中的应用实例。
1. ULMFIT
Universal Language Model Fine-tuning [6]是最早将迁移学习用于NLP任务的方法之一。顾名思义,该方法通过对通用语言模型进行预训练,然后在目标任务上进行微调,可以实现对标记序列的预测。具体来讲,ULMFIT模型由以下三个步骤来实现:
通用模型的预训练。作者在WikiText-103数据集上对模型进行预训练,虽然该过程计算量较大,但是只需完成一次即可。
语言模型微调。这一步骤可以学习到目标任务的主要特征,且可以在相对较小的目标训练集上完成。为了取得更好的微调效果,作者分别采用分层微调和斜三角学习率策略,在目标任务的数据集上得到语言模型的参数。
分类器微调。最后,为了微调分类器,作者使用两个额外的线性块来增强预训练语言模型。每个块使用批量标准化和dropout技术来实现正则化,与CV模型相似,分类器采用ReLU作为激活函数。作者还采用了拼接池化、gradual unfreezing和双向语言模型策略来实现分类器微调。
2.ELMo
传统的词向量(例如word2vec)是上下文无关的,而ELMo (Embeddings from Language Models) 模型[7]是一种新型深度语境化词表征,可对词进行复杂特征(如句法和语义)和词在语言语境中的变化进行建模(即对多义词进行建模)。
与词向量相比,ELMo模型能够更好的捕捉语法与语义层面的信息,而且可以理解同一个单词在不同语境中的不同含义。因此其在Question Answering、Semantic role labeling、Namedentity extraction等任务中均有较好的表现。
3. OpenAI Transformer
虽然用于模型训练的数据集有很多,但是很多数据没有标记,手动标记是一件非常棘手的事情,因此采用现有模型和数据集进行监督学习往往比较困难。为此,OPEN AI的Radford等[8]提出了半监督学习模型——GPT(Generative Pre-training),该模型包括基于无监督学习的预调环节和基于监督学习的微调环节两个部分,其基础模型为Transformer。
在模型训练时,首先在无标记样本上通过无监督学习对模型参数初始化,然后在目标任务上通过监督学习对参数进行调整,大大简化了微调过程中的工作量,提高了模型的鲁棒性。
4. BERT
BERT(Bidirectional Encoder Representation fromTransformers)模型将双向Transformer用于语言模型,传统的模型是从左向右输入一个文本序列,或者将 left-to-right 和 right-to-left 的训练结合起来,J.Devlin等证明[9]了双向训练的语言模型对语境的理解会比单向的语言模型更深刻。在进行模型训练时,作者提出了两个预测任务,
Masked LM:在将单词序列输入给BERT之前,将序列中15%的随机token进行masked,然后模型尝试基于序列中其他未被 mask 的单词的上下文来预测被掩盖的原单词。
Next Sentence Prediction:即NSP问题,在BERT的训练过程中,模型接收成对的句子作为输入,其中只有50%的输入对在原始文档中是前后对应关系,通过预测第二个句子是否在原始文档中也是第一个句子的后续语句,来验证模型。
5. Universal sentence encoder
通用语句编码器是由Daniel等[10]提出的一种新型模型,该模型直接对语句进行编码,而不需要将句子转换为词向量,因此只需要较少的目标任务数据集即可得到较好的模型性能。根据模型精度与复杂度的不同,作者提出了两种基础的架构:Transformer架构和DAN(Deep Averaging Network)架构。
通用语句模型被广泛应用于情感分析、语句分类等任务中,尤其是在可用训练数据集有限时,训练效果明显好于其他模型。
6. Transformer-XL
Transformer-XL[11]模型可以对输入文本的长距离依赖关系进行建模,从而解决了transformer只能学习固定长度文本的缺点。
Transformer-XL通过segment-level递归机制和一种新型相对位置编码方案来捕捉更长距离的上下文依赖,并解决了上下文碎片(context fragmentation)问题。该模型在enwiki8和text8数据集上的性能达到了目前的最高水平。
7. XLNet
BERT模型是一种AE(Auto Encoding)模型,其主要缺点在于:在预训练过程中被masked的token与在微调过程中出现的token出现差异性;模型通常会忽略这些差异性,从而影响其性能。
XLNet[12]模型正是为了解决这一问题而提出,通过采用通用的自回归预训练模型,该方法将给定序列的所有置换传递给模型,并预测该序列中缺少的特定token。
与BERT模型相比,XLNet模型在需要长距离依赖性的阅读理解任务上性能大大提升。
参考文献
[1] Zachary C. Lipton, John Berkowitz, Charles Elkan, ”A Critical Review of Recurrent Neural Networks for Sequence Learning”, arXiv:1506.00019 [cs.LG]
[2] Sepp Hochreiter,Jurgen Schmidhuber, ”Long short-term memory”, Neural Computation 9(8):1735-1780, 1997
[3] K. Cho, B. van Merrienboer, D. Bahdanau, Y. Bengio, ”On the properties of neural machine translation: Encoder-decoder approaches”, arXiv preprint arXiv:1409.1259, 2014
[4] Stephen Merity, Nitish Shirish Keskar, Richard Socher, ”Regularizing and Optimizing LSTM Language Models”, arXiv:1708.02182 [cs.CL]
[5] Ashish Vaswani, Noam Shazeer, Niki Parmar, Jakob Uszkoreit, Llion Jones, Aidan N. Gomez, Lukasz Kaiser, Illia Polosukhin, ”Attention is All you Need”, Advances in Neural Information Processing Systems 30 (NIPS 2017)
[6] Jeremy Howard, Sebastian Ruder, ”Universal Language Model Fine-tuning for Text Classification”, arXiv:1801.06146 [cs.CL]
[7] Matthew Peters, Mark Neumann, Mohit Iyyer, Matt Gardner, Christopher Clark, Kenton Lee, Luke Zettlemoyer, ”Deep Contextualized Word Representations”, Volume: Proceedings of the 2018 Conference of the North American Chapter of the Association for Computational Linguistics: Human Language Technologies, Volume 1, June 2018
[8] Alec Radford, Kartik Narsimhan, Tim Salimans, Ilya Sutskever ”Improving Language Understanding by Generative PreTraining”,2018
[9] Jacob Devlin, Ming-Wei Chang, Kenton Lee, Kristina Toutanova, ”BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding”, arXiv:1810.04805 [cs.CL]
[10] Daniel Cer, Yinfei Yang, Sheng-yi Kong, Nan Hua, Nicole Limtiaco, Rhomni St. John, Noah Constant, Mario GuajardoCespedes, Steve Yuan, Chris Tar, Yun-Hsuan Sung, Brian Strope, Ray Kurzweil, ”Universal Sentence Encoder”, arXiv:1803.11175 [cs.CL]
[11] Zihang Dai, Zhilin Yang, Yiming Yang, Jaime Carbonell, Quoc V. Le, Ruslan Salakhutdinov, ”Transformer-XL: Attentive Language Models Beyond a Fixed-Length Context”, arXiv:1901.02860 [cs.LG]
[12] Zhilin Yang, Zihang Dai, Yiming Yang, Jaime Carbonell, Ruslan Salakhutdinov, Quoc V. Le, ”XLNet: Generalized Autoregressive Pretraining for Language Understanding”, arXiv:1906.08237 [cs.CL]