深入浅出Embedding:原理解析与应用实践
上QQ阅读APP看书,第一时间看更新

1.6 Contextual Word Embedding

前面介绍了因word2vec而流行的Word Embedding,这种表示方法比离散的独热编码要好很多,因为它不仅降低了维度,还可以反映出语义空间中的线性关系,如“国王-王后≈男-女”这种相似关系。因此word2vec及其他类似方法几乎是所有深度模型必备的方法。但是,这类表示方法是根据语料库生成的字典,一个单词对应一个固定长度的向量,如果遇到一词多义的情况,它就无能为力了。

例如,在由“苹果股票正在上涨(Apple stock is rising),我不要这个苹果(I don’t want this apple)”构成的语料中,如果用word2vec模型实现词嵌入,就无法区分这两个苹果的含义。一词多义的情况是非常普遍的,如何有效解决一词多义的问题,一直是人们孜孜以求的目标。

本节将围绕Contextual Word Embedding(语境词嵌入)这个话题展开,讨论如何解决一词多义的问题。

根据word2vec生成词嵌入的特点,人们又称其为静态词嵌入。无论上下文及其含义是什么,静态词嵌入都会给出相同的表示。所以,如果要考虑上下文,我们不能使用静态词嵌入的方法,而应该使用动态词嵌入(或预训练模型+微调)的方法来处理。ELMo、GPT、GPT-2、BERT、ENRIE、XLNet、ALBERT等都属于此类动态词嵌入方法,它们极大提升了相关领域的性能,且目前还处于飞速发展之中。

1.6.1 多种预训练模型概述

词嵌入是预训练模型(Pre-Trained Model,PTM)的学习载体,根据词嵌入的学习方式,可分为上下文无关和上下文有关两类,两者的区别在于一个词语的嵌入是否随着上下文动态地变化。

  • 上下文无关的词嵌入(Non-contextual Word Embedding)

只关注学习词嵌入的单一表示的预训练模型(如word2vec),训练完成后,其词嵌入就固定了(或处于静态),而且一个词对应一个固定词向量,其预训练的词嵌入虽可以捕获单词的语义,但无法解决一词多义问题,而一词多义在NLP中是非常普遍的。为解决这个问题,人们提出了上下文有关的词嵌入。

  • 上下文有关的词嵌入(Contextual Word Embedding)

以学习上下文相关的词嵌入的预训练模型(如ELMo、BERT、GPT、XLNet等)是目前的研究重点,而且在很多领域取得了业内最好水平(SOTA),原因主要在于这些采用上下文有关学习方式的预训练模型是动态的。它们之所以能动态,是因为这些预训练模型除带有学习到的结果(即词嵌入)外,还带有学习这些词嵌入的模型架构和学到的权重参数等。因此,把这些预训练模型迁移到下游任务时,便可根据上下文动态调整。有些预训练模型甚至无须迁移,根据少量的提示语,就可直接生成新的语句,如GPT-2、GPT-3。

这些动态的预训练模型,依据的语言模型不尽相同,可谓“八仙过海各显神通”。ELMo、GPT采用自回归语言模型(Autoregressive Language Model,通常简写为AR LM)[1]、BERT使用掩码语言模型(Mask Language Model,MLM)、XLNet采用排列语言模型(Permuted Language Model,PLM)。

接下来对这三种语言模型做个简单介绍,详细说明请参考本书附录B。

1. 自回归语言模型

自回归语言模型是指通过给定文本的上文或下文,对当前字进行预测。例如,根据上文内容预测下一个可能跟随的单词,即我们常说的自左向右的语言模型任务,或者反过来,根据下文预测前面的单词,这种类型的LM被称为自回归语言模型,其损失函数(从左到右)如下所示:

039-1

其中:x <t={x 1x 2,…,x t-1},T为输入序列的长度。

损失函数(从右到左)如下所示:

039-2

其中:x >t={x t+1x t+2,…,x T},T为输入序列的长度。

自回归语言模型表示序列文本的联合概率分布,为降低对长文本的概率估算难度,通常使用一个简化的n-gram模型。代表模型有ELMo、GPT、GPT-2等。

2. Mask语言模型

Mask语言模型通过在输入序列中随机掩藏掉一部分单词,然后通过训练来预测这些被掩藏掉的单词。这点与噪音自编码(Denoising Autoencoder)很相似,那些被掩藏掉的单词就相当于在输入侧加入的所谓噪音。

其损失函数如下所示:

039-3

其中mx)、039-4分别表示从输入序列X中被掩藏的标识符集以及剩余的标识符集。代表模型有BERT、ERNIE、ALBERT。

3. 排列语言模型

排列语言模型综合了自回归语言模型和Mask语言模型的优点。其损失函数如下所示:

039-5

其中,Z <t=perm(X),即序列X的随机排列。代表模型为XLNet。

1.6.2 多种预训练模型的发展脉络

近些年基于深度学习的NLP技术的重大进展主要包括NNLM(2003)、Word Embedding(2013)、Seq2Seq(2014)、Attention(2015)、Transformer(2017)、GPT(2018)、BERT(2018)、XLNet(2019)、GPT-2(2019)、GPT-3(2020)等,主要预训练模型的大致发展脉络可用图1-34所示。

040-1

图1-34 预训练模型发展脉络

各种主要预训练模型的特征、抽取特征方法、使用语言模型类别等内容如表1-3所示。

表1-3 各种预训练模型的特点

040-2

1.6.3 各种预训练模型的优缺点

上节介绍了各种预训练模型,这些模型各有优点和缺点,新模型往往是在解决旧模型缺点的基础上提出的,如图1-35所示。

041-1

图1-35 近些年预训练模型遇到的问题及解决方法

1.6.4 常用预训练模型

预训练模型很多,发展也很迅速,这节我们介绍几种常用的预训练模型。

1. ELMo预训练模型

2018年的早些时候,AllenNLP的Matthew E. Peters等人在论文Deep Contextualized Word Representations(该论文获得了NAACL最佳论文奖)中首次提出了ELMo(Embedding from Language Model)预训练模型。从名称上可以看出,ELMo为了利用无标记数据,使用了语言模型。ELMo是最早进行语境化词嵌入的方法之一,是典型的自回归预训练模型,包括两个独立的单向LSTM实现的单向语言模型。ELMo的基本框架是一个双层的Bi-LSTM,每层对正向和反向的结果进行拼接,同时为增强模型的泛化能力,在第一层和第二层之间加入了一个残差结构。因此,ELMo在本质上还是一个单向的语言模型,其结构如图1-36所示。

042-1

图1-36 ELMo模型结构

2. Transformer简介

从表1-3可知,现在很多预训练模型均采用一种称为Transformer的特征提取器,之前我们一般采用RNN、LSTM等方法处理序列问题,这些方法在处理自然语言处理、语音识别等序列问题方面有一定优势,但也存在一些不足,如需要按次序处理问题时,这种按部就班的方法在大量的语料库面前就显得力不从心。其间虽然有人尝试用CNN方法避免这种串联式的运行方法,但效果不佳。而现在很多自然语言处理、语言识别、推荐算法、搜索排序等问题都需要依赖大量的语料库或成千上万的用户数据等,所以,如何解决这个问题成为新的瓶颈。

Transformer就是为解决类似问题而提出的,目前在很多领域的性能已远超RNN、LSTM。

Google于2017年6月在arxiv上发布了一篇非常经典的文章—Attention is all you need。该论文使用Self-Attention的结构代替LSTM,抛弃了之前传统的Encoder-Decoder模型必须结合CNN或者RNN的固有模式,在减少计算量和提高并行效率的同时还取得了更好的结果。该论文也被评为2017年NLP领域的年度最佳论文。

Transformer有两大亮点:平行处理序列问题,利用Self-Attention机制有效解决长期依赖问题。详细内容将在本书第5章介绍。

3. GPT、GPT-2和GPT-3预训练模型

GPT是在OpenAI团队于2018年6月发表的一篇论文Generative Pre-Training中提出的。从名字上就可以看出GPT是一个生成式的预训练模型,与ELMo类似,也是一个自回归语言模型。与ELMo不同的是,其采用多层单向的Transformer Decoder作为特征抽取器,多项研究也表明,Transformer的特征抽取能力是强于LSTM的。

GPT-2、GPT-3与GPT模型框架没有大的区别,GPT-2和GPT-3使用了更大的模型、更多的且质量更高的数据、涵盖范围更广的预训练数据,并采用了无监督多任务联合训练等。

4. BERT模型

BERT模型是由Google AI的Jacob Devlin和他的合作者们于2018年10月在arXiv上发表的一篇名为BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding的论文中提出的。

BERT属于MLM模型,通过超大数据、巨大模型和极大的计算开销训练而成,在11个自然语言处理的任务中取得了最优(SOTA)结果,并在某些任务性能方面得到极大提升。

1.6.5 Transformer的应用

目前主流的预训练模型,大都以2017年谷歌提出的Transformer模型作为基础,并以此作为自己的特征抽取器。可以说,Transformer自从出现以来就彻底改变了深度学习领域,最早波及NLP领域,近些年又向传统的搜索、推荐等领域拓展。

更可喜的是,目前Transformer也开始在视觉处理领域开疆拓土、攻城略地了。本节就将介绍Transformer在推荐系统及视觉处理方面的典型应用。

1. Transformer在推荐系统中的应用

2019年阿里搜索推荐团队在arXiv上发布了论文Behavior Sequence Transformer for E-commerce Recommendation in Alibaba。文中提出BST模型,利用Transformer中的多头自注意力(Multi-Head Self-Attention)机制替换LSTM,捕捉用户行为序列的序列信息,取得了非常好的效果,目前BST已经部署在淘宝推荐的精排阶段,每天为数亿消费者提供推荐服务。BST网络架构见图1-37。

044-1

图1-37 BST网络架构图

图1-38是使用BST与传统方法的比较结果。

044-2

图1-38 BST与传统方法的对比

目前,比较常用的Transformer应用实例有谷歌的推荐系统WDL(Wide and Deep Learning)和阿里的推荐系统DIN(Deep Interest Network for Click-Through Rate Prediction)。

2. Transformer在视觉处理领域的应用

2020年12月,北京大学联合华为诺亚方舟实验室、悉尼大学、鹏城实验室提出了一个图像处理Transformer(Image Processing Transformer,IPT),他们把Transformer技术应用到视觉处理上,用于完成超分辨率、去噪、去雨等底层视觉任务,结果在视觉处理领域超过了卷积神经网络(CNN),并且多项底层视觉任务达到业内最好水平(SOTA)。IPT的网络架构如1-39所示。

045-1

图1-39 IPT模型架构图

IPT整体架构由四个部分组成。

(1)头部(head)

采用多头架构,每个头由三个卷积层组成来分别处理每个任务。这部分主要负责从输入的损坏图像中提取特征,比如分辨率低、需降噪的图像。

(2)Transformer编码器

在将特征输入Transformer模块前,将给定的特征分割成特征块,每个特征块被视作一个“word”。

(3)Transformer解码器

与编码器采用了同样的架构。将解码器的输出作为Transformer的输入。

编码器与解码器用于恢复输入数据中的缺失信息。

(4)尾部(tail)

与头部的结构相同,用于将特征映射到重建图像中。

最后,研究人员使用ImageNet数据集进行预训练。结果表明,该模型只要在特定任务数据集上微调,即可在此任务上达到最好水平。他们对IPT与深度超分辨率网络(Enhanced Deep Super-Resolution,EDSR)在不同数量训练集上的性能进行了对比,如图1-40所示,当训练集数量较少时,EDSR具有更好的指标;当数据集持续增大后,EDSR很快达到饱和,而IPT仍可持续提升并大幅超过了EDSR。

045-2

图1-40 CNN和IPT模型在不同数据规模上的性能比较


[1]为了与后文的MLM、PLM区分,后文将简写为LM。