2020-04-01 18:45:38

作者 | 杨晓凡

编辑 | 丛末

在自然语言处理技术的整个发展历史中,如何把最小语义元素「单词」做数字化表示,一直都是一个研究热点。

近几年,用海量无标记文本数据训练出的低维单词表征向量,也就是词嵌入 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直接根据它在特定词关系任务上的结果来评价词嵌入的质量。绝对内在评价比比较内在评价更为常用,因为它们在测试时不需要人的参与。比较流行的评估方法包括:

外在评价使用词嵌入作为下游任务的输入,并使用这些任务的特定度量来测量变化。由于词嵌入几乎适用于所有 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 个具有挑战性的方面做了探讨,包括自监督学习、多任务学习、多模态学习、小样本学习、语言生成、可解释性、对抗性攻击和简化训练过程,我们这里不再赘述,感兴趣的读者可以阅读论文原文。

从静态到动态,词表征近几十年发展回顾相关推荐

  1. ​ES elasticsearch-analysis-dynamic-synonym​连接数据库动态更新synonym近义词

    前言 在很多搜索场景中,我们希望能够搜索出搜索词相关的目标,同时也希望能搜索出其近义词相关的目标.例如在商品搜索中,搜索"瓠瓜",也希望能够搜索出"西葫芦",但 ...

  2. 论文浅尝 | 动态词嵌入

    Citation: Bamler R, Mandt S. Dynamic word embeddings.InInternational Conference on Machine Learning ...

  3. Elasticsearch 7.X Ik源码解读,及自定义远程动态词库

    一.ik 远程词库 上篇文章对ik进行了整体的讲解,包括远程动态词库的讲解,但是上篇文章中是基于nginx+静态txt文件实现的,利用nginx 对文件修改后自动添加Last-Modified 的属性 ...

  4. 词向量与词向量拼接_动态词向量算法—ELMo

    传统的词向量模型,例如 Word2Vec 和 Glove 学习得到的词向量是固定不变的,即一个单词只有一种词向量,显然不适合用于多义词.而 ELMo 算法使用了深度双向语言模型 (biLM),只训练语 ...

  5. 自然语言处理从入门到应用——动态词向量预训练:ELMo词向量

    分类目录:<自然语言处理从入门到应用>总目录 在双向语言模型预训练完成后,模型的编码部分(包括输入表示层以及多层堆叠LSTM)便可以用来计算任意文本的动态词向量表示.最自然的做法是使用两个 ...

  6. 【Android 插件化】Hook 插件化框架 ( Hook 技术 | 代理模式 | 静态代理 | 动态代理 )

    Android 插件化系列文章目录 [Android 插件化]插件化简介 ( 组件化与插件化 ) [Android 插件化]插件化原理 ( JVM 内存数据 | 类加载流程 ) [Android 插件 ...

  7. 文本深度表示模型Word2Vec 简介 Word2vec 是 Google 在 2013 年年中开源的一款将词表征为实数值向量的高效工具, 其利用深度学习的思想,可以通过训练,把对文本内容的处理简

    文本深度表示模型Word2Vec 简介 Word2vec 是 Google 在 2013 年年中开源的一款将词表征为实数值向量的高效工具, 其利用深度学习的思想,可以通过训练,把对文本内容的处理简化为 ...

  8. 【华为】华为模拟器模拟静态、动态NAT、PAT技术

    实验拓扑: 实验目的:1.利用静态.动态NAT技术使C1.C2ping通AR2. 2.利用PAT技术ping通. 实验步骤:1.如图配置好C1.C2 IP地址.掩码.网关. 如实验拓扑所示接好线.配置 ...

  9. AI:2020年6月22日北京智源大会演讲分享之《语音与自然语言处理》09:10-09:40 Christopher 教授《基于深度上下文词表征的语言结构的发现》

    AI:2020年6月22日北京智源大会演讲分享之<语音与自然语言处理>09:10-09:40 Christopher 教授<基于深度上下文词表征的语言结构的发现> 导读:首先感 ...

最新文章

  1. 使用CoreOS及Docker搭建简单的SaaS云平台
  2. SAP CRM WebClient UI html 格式的 Text 显示逻辑
  3. C++:18---const关键字(附常量指针、指针常量、常量指针常量)
  4. java未发现数据源名称并且未指定默认驱动程序_转:java.sql.SQLException: [Microsoft][ODBC 驱动程序管理器] 未发现数据源名称并且未指定默认驱动程序...
  5. 网易被曝暴力裁患绝症员工,回应:存在不近人情的地方,向前同事道歉
  6. 电脑功耗测试软件_电脑“烤机”怎么测?用这几款软件就对了
  7. oracle 9i、10g、11g、12c官方文档
  8. 优先队列重载(理解)
  9. DATEADD日期函数的使用
  10. 汇编语言基础之二 - 各种寻址和过程进出简介
  11. 毕业设计:基于SSM框架的学生实习管理系统
  12. php怎么做性格测试题目,PHP和原生JS实现九型人格在线测试(144题)
  13. FMS3.5的安装使用
  14. java格林威治时间转换_JAVA 格式化格林威治时间(Wed Aug 01 00:00:00 CST 2012)格式转换...
  15. 基于JAVA宠物喂养资讯分享平台的设计与实现计算机毕业设计源码+系统+lw文档+部署
  16. 定积分的基本性质2 乘积可积性
  17. 敏捷领导力2.0培训体会
  18. GNSS原理与应用(三)——坐标系统与时间系统
  19. python爬取豆瓣书籍_Python 爬取豆瓣读书标签下的书籍
  20. 水仙花数 matlab,matlab向量运算解决水仙花数问题

热门文章

  1. java多线程-死锁的一些问题
  2. torchvision.transforms 的CenterCrop():在图片的中间区域进行裁剪
  3. 《预训练周刊》第36期: 谷歌提出梯度最大化增长方法GradMax
  4. 开源数据库技术分享及未来展望|CIC 真·全明星阵容
  5. 我和大师Jeffrey Richter相约@北京
  6. stylegan生成循环gif图片
  7. 加速100倍,性能媲美SOTA!浙大提出无数据知识蒸馏新方法FastDFKD
  8. 图卷积神经网络分析复杂碳水化合物
  9. CIKM 2020 | 如何更为合适地评测推荐算法? Top-N物品推荐算法评测设置回顾
  10. 原创 | 从智慧交通、智慧安防、智能电网三大应用场景看我国智慧城市建设现状...