作者 | 杨晓凡
编辑 | 丛末
在自然语言处理技术的整个发展历史中,如何把最小语义元素「单词」做数字化表示,一直都是一个研究热点。
近几年,用海量无标记文本数据训练出的低维单词表征向量,也就是词嵌入 embedding,已经在包括词性标注、句法解析、命名实体识别、语意角色标注、机器翻译等许多任务中展现出了有效性。但这种词嵌入是静态的,因为只要训练过程完成之后,它们就不再会随着新的上下文而变化了。
虽然静态词嵌入有很高的效率,但它静态的本质属性让它很难应对一词多义的问题,因为这时词的意思依赖于它的上下文 。为了处理这个问题,研究者们近期提出了许多方法,根据上下文动态地学习词的意思。
比如两个句子「苹果销售手机」和「我吃了一个苹果」,静态词嵌入无法辨别这两个「苹果」之间的语义差异,而动态词嵌入却可以根据上下文给出不同的表示。很显然,这样的从预训练语言模型中提取出的动态词嵌入,相比此前的静态词嵌入,在诸多自然语言处理任务中能会发挥出更好的表现。
那么,词嵌入,从静态到动态,是如何发展的呢?现状如何?以及未来有什么样的趋势?
近日,哈尔滨工业大学王宇轩、侯宇泰、车万翔和刘挺等人在《机器学习和神经机械学国际期刊》(International Journal of Machine Learning and Cybernetics)上发表了一篇关于词嵌入的综述论文,回答了这个问题。
期刊源地址:https://doi.org/10.1007/s13042-020-01069-8
开放下载地址:http://ir.hit.edu.cn/~car/papers/icmlc2020-wang.pdf
这篇综述用一个全新的视角 —— 词嵌入从静态到动态的发展 —— 对词表示模型做了全面回顾,内容详实,值得收藏,是一份放在案角随时查阅的资料。
1
静态表征
静态词表征的发展大致可分为两个阶段。
在第一个阶段,主要使用稀疏和高维向量来表示单词。最为经典的就是独热(One‑hot)表示,每个词对应一个高维向量,向量中除了一位为「1」以外其余位都是「0」。这样的词向量相互之间全都是正交的,自然无法度量不同词之间的语意距离是否接近。这种嵌入系统存在着数据稀疏和高维的问题,通常词向量的维度与系统的词汇量一样大,难以使用。
为了解决这些问题,在第二阶段,人们用大量的文本数据训练稠密的低维向量,来代替高维向量。以下为这个阶段中几个代表性的词表示方法:
神经网络语言模型。用深度神经网络生成分布式词向量开创了一个新的时代,它很好地解决了第一阶段「数据稀疏」问题(即测试集中可能会出现训练集中不存在的词序列)。模型的训练目标是给定一个单词序列以后预测下一个可能出现的词。
SENNA。SENNA 同样是一种基于神经网络的模型,但它的训练目标是判断一段文本的可接受程度。这个目标比预测单词出现的概率要更简单可行。
CBOW 和 跳词模型(Skip‑gram)。经过创新设计、简化网络架构后得到的 CBOW 和 Skip‑gram 模型的计算复杂度大幅降低,成为分布式表征发展历史上的一座里程碑。大家耳熟能详的 Word2Vec 就是 CBOW 和Skip‑gram 的最受欢迎的实现。
GloVe 和fastText。在爆发式涌现的词嵌入模型中,GloVe 和fastText 留下了很大影响。前者更多地捕捉全局信息,更好地利用某些单词经常共同出现的特点;后者考虑了不同单词之间的拼写相似性,而且再一次大幅改进了训练速度。
虽然上述介绍的这些低维稠密分布表示在NLP领域已经取得了很大的成功,但对于一词多义问题却有点无能为力。这很显然,一个单词由一个原型向量(prototype vector)表示,这个向量不会随着上下文的变化而变化。
解决这个问题的一种直观方法是,使用多个原型向量来表示一个单词(的不同词义)。根据这一思想,Reisinger和Mooney提出了一个多原型向量空间模型,通过聚类为每个单词生成多个特定意义的向量。这种多原型的思想还被广泛应用到学习意义级的嵌入(sense-level embeddings)上,Huang等人在 SENNA架构中便使用了这种技术,取得了良好的效果。
2
动态表征
解决一词多义问题的另一种方法(可能也是更有效的),是使用动态表征,或所谓的“上下文嵌入”,其表征随着上下文的变化而变化。
CoVe。这是根据上下文内容不同而生成不同词表征的首个尝试。他们在序列到序列的机器翻译任务上训练了一个深度 LSTM 编码器,然后用它生成根据上下文变化的词嵌入,再在下游任务中应用这些词嵌入。这个模型的设计简单直接,但它在许多任务中都带来了改进,也开启了动态表征这条路线。
ELMo。相比于 CoVe,ELMo 的训练不再需要双语数据,从而让它可以直接利用几乎无限多的无标注文本,它在下游任务中的重大成功也引发了整个 NLP 研究领域的注意。技术角度上,在大规模无标注语料库上训练一个深度双向语言模型,然后从它内部的层中提取表征,就是 EMLo 表征。
ULMFit。ULMFit 是基于 LSTM 的一个改进尝试,它的技术亮点在于判别式精细调节 discriminativefinetuning 、倾斜三角学习率 slanted triangular learning-rates 以及逐层解冻 gradual unfreezing,可以帮助模型在微调阶段更好地适应目标任务,从而以很大优势领先当时的其它模型。
GPT。LSTM 的学习能力是比较有限的,所以采用了 LSTM 的 ELMo 和ULMFit 都无法很好处理长序列中的依赖关系。在基于注意力的 Transformer 模型提出以后,采用 Transformer 作为核心的 GPT 模型发挥出了优秀的表现,也进一步证明了语言模型预训练和基于上下文的词表征的有效性。
BERT。同样基于Transformer,而且考虑了从左到右、从右到左两种顺序的预训练模型 BERT 无疑是 2019 年一整年中最常被对比、最常被讨论的模型。不仅因为它的表现极为优秀,还因为它提出了单词掩膜和下句预测这两种新的无监督预训练任务,也为后来的研究者们带来了很多启发。基于 BERT 的改进模型也有一大批。
XLNet。有研究者认为BERT 的掩膜方式带来了新的缺点,而且也有观点认为 BERT 存在训练不足(不够收敛)的问题。XLNet 重新设计了预训练过程中的诸多细节,再一次刷新了预训练词嵌入的表现记录。
3
评价方法和数据集
现有的词嵌入评价指标分为两类,即内在评价和外在评价。
内在评价是在人工评价的基础上,直接评价词语之间的句法或语义关系。根据评价方法的不同,可将其分为绝对内在评价法和比较内在评价法。在第一类中,预先收集人类评估,然后作为嵌入方法的基准。而在比较内在评价法中,accessor直接根据它在特定词关系任务上的结果来评价词嵌入的质量。绝对内在评价比比较内在评价更为常用,因为它们在测试时不需要人的参与。比较流行的评估方法包括:
评估方法 | 数据集 |
---|---|
Word semantic similarity | SimVerb-3500、WordSim-353、MEN |
Word analogy | Google Analogy、Microsoft Research Syntactic Analogies Dataset、WordRep、BATS |
Synonym detection | TOEFL、ESL、RDWP |
Concept categorization | BM、AP、ESSLLI-2008 |
Selectional preference | MSTNN、UP、GDS |
外在评价使用词嵌入作为下游任务的输入,并使用这些任务的特定度量来测量变化。由于词嵌入几乎适用于所有 NLP 任务,因此理论上所有任务都可以看作是外部评价。
在外在评价下,隐含的假设是,词嵌入在一个任务上有好的结果,在另一个任务上也会。但这种假设并不正确,实验结果表明,不同的NLP任务对不同的词嵌入有不同的偏好。因此,虽然某个外在评价对特定任务上的词嵌入是有用的,但并不能认为它们可以作为一般评估的指标。
4
跨语言词嵌入
世界上大约有7000种不同的语言,但只有少数语言具有丰富的人类注释资源。这就需要跨语言的词嵌入迁移学习,以资源丰富的语言作为训练对象,迁移到资源较少的语言中,输入的嵌入则被投射到一个共享的语义空间中。这种嵌入被称为跨语言词嵌入。
根据训练目标的不同,还可以分为on-line和off-line两种方式。通常,on-line 方法联合优化单语和跨语目标,而off-line方法将预先训练的不同语言的单语词嵌入作为输入,并将它们投射到共享的语义空间。
根据单语词嵌入类型的不同,跨语言嵌入学习方法可以分为静态嵌入和动态嵌入两种。
静态嵌入的on-line方法,通常会去学习源语言和目标语言的语言模型,并通过跨语言目标共同优化它们的目标。而静态嵌入的off-line方法,则是去学习一个映射(大多是线性转移矩阵),将源语言的向量空间转化为目标语义的向量空间。
受单语的动态词嵌入启发,最近有人开始研究跨语言的动态词嵌入。在on-line方法中,Mulcaire等人基于ELMo模型,通过从多语言数据中获取字符级信息,提出了一种多语言上下文表示模型。Lample和Conneau 采用了BERT 的目标,并从并行数据中利用跨语言监督来学习跨语言语言模型(XLMs),这些模型已经在多个跨语言任务中获得了最新的结果。而对于off-line方法,Mulcaire等人通过线性映射,将预先训练好的上下文词嵌入对齐。Wang等人提出在语义空间中直接学习这种转换,从而获得一个能够保留词义的跨语言动态嵌入。
除了利用映射将富资源语言嵌入到低资源语言中,还可以尝试同时训练不同语言的嵌入。Devlin等人对来自104种语言的单语维基百科语料库,预训练了一个单语模型(Multi-BERT),该模型在zero-shot 跨语言模型迁移方面表现出惊人的优势。
5
总结
尽管动态词嵌入在大多数NLP任务中都取得了惊人的成功,但这个领域中仍有许多问题还值得探索。作者在文章中对 8 个具有挑战性的方面做了探讨,包括自监督学习、多任务学习、多模态学习、小样本学习、语言生成、可解释性、对抗性攻击和简化训练过程,我们这里不再赘述,感兴趣的读者可以阅读https://www.yanxishe.com/events/ICLR2020。