阿里云「飞天发布时刻」2024来啦!新产品、新特性、新能力、新方案,等你来探~ 了解详情
写点什么

深度学习在自然语言处理中的应用发展史 | NLP 专栏

  • 2019-09-07
  • 本文字数:3713 字

    阅读完需:约 12 分钟

深度学习在自然语言处理中的应用发展史 | NLP专栏

本篇介绍深度学习在自然语言处理(NLP)中的应用,从词向量开始,到最新最强大的 BERT 等预训练模型,梗概性的介绍了深度学习近 20 年在 NLP 中的一些重大的进展。


在深度学习之前,用于解决 NLP 问题的机器学习方法一般都基于浅层模型(如 SVM 和 logistic 回归),这些模型都在非常高维和稀疏的特征(one-hot encoding)上进行训练和学习,出现了维度爆炸等问题难以解决。并且基于传统机器学习的 NLP 系统严重依赖手动制作的特征,它们极其耗时,且通常并不完备。


而近年来,基于稠密向量表征的神经网络在多种 NLP 任务上得到了不错结果。这一趋势取决了词嵌入和深度学习方法的成功;并且深度学习使多级自动特征表征学习成为可能。因此,本文从词的分布式表征开始介绍深度学习在 NLP 中的应用。

分布式词表征(词向量)的实现

通常来讲,在 2003 年的《A Neural Probabilistic Language Model》中 Bengio 等人提出了神经语言模型(NNLM),而它的副产品,词向量,可以实现词的分布式表征。该文通常被认为是深度学习在自然语言处理中应用的开始。提出伊始,由于届时计算机计算能力的限制,该网络并不能较好的得到训练。因此,这一篇成果,在当时并没有得到相当的关注。其神经网络结构如下:



2008 年 Collobert 和 Weston 展示了第一个能有效利用预训练词嵌入的研究工作,他们提出的神经网络架构,构成了当前很多方法的基础。这一项研究工作还率先将词嵌入作为 NLP 任务的高效工具。


不过词嵌入真正走向 NLP 主流还是 Mikolov 等人在 2013 年做出的研究《Distributed Representations of Words and Phrases and their Compositionality》。


Mikolov 等研究者在这篇论文中提出了连续词袋模型 CBOW 和 Skip-Gram 模型,通过引入负采样等可行性的措施,这两种方法都能学习高质量的词向量。CBOW 模型的网络结构如下:



分布式的词表征的一大好处是实现了语义的合成性,即两个词向量相加得到的结果是语义相加的词,例如[man]+[royal]=[king]。



这种语义合成性的理论依据最近已经由 Gittens et al. 在 2017 年给出,他们表示只有保证某些特定的假设才能满足语义合成性,例如词需要在嵌入空间中处于均匀分布。


GloVe 是另外一个很有名的获得词向量的方法,在有些情况下,CBOW 和 Skip-Gram 采用的交叉熵损失函数有劣势。因此 GloVe 采用了平方损失。同时,它基本上是一种基于词统计的模型,它令词向量拟合预先基于整个数据集计算得到的全局统计信息,从而学习高效的词表征。

NLP 中特征提取方法的进化

随着词分布式表征的问题得到了有效的解决,人们开始思考如何提取词序列中高级的语义信息,然后才能将这些提取到的语义信息,应用到下游的 NLP 任务中,例如情感分析、问答系统、机器翻译以及自动摘要等。


最早用来对自然语言词序列进行特征提取的,其实是卷积神经网络(CNN)。这主要归因于卷积神经网络在图像领域取得的骄人成绩。


使用 CNN 进行句子建模可以追溯到 Collobert 和 Weston 在 2008 年的研究,他们使用多任务学习为不同的 NLP 任务输出多个预测,如词性标注、语块分割、命名实体标签和语义相似词等。其中查找表可以将每一个词转换为一个用户自定义维度的向量。因此通过查找表,n 个词的输入序列 {s_1,s_2,… s_n } 能转换为一系列词向量 {w_s1, w_s2,… w_sn}。


在 Collobert 2011 年的研究中,他扩展了以前的研究,并提出了一种基于 CNN 的通用框架来解决大量 NLP 任务,这两个工作都令 NLP 研究者尝试在各种任务中普及 CNN 架构。CNN 具有从输入句子抽取 n-gram 特征的能力,因此它能为下游任务提供具有句子层面信息的隐藏语义表征。


因为语言序列常常具有长程性需要记忆很早时候的输入信息,CNN 并不具备这种能力。这个时候,循环神经网络(RNN)网络被提出。



RNN 的思路是处理序列信息。“循环”表示 RNN 模型对序列中的每一个实例都执行同样的任务,并且权重共享,从而使输出依赖于之前的计算和结果。


通常,RNN 通过将 token 挨个输入到循环单元中,来生成表示序列的固定大小向量。一定程度上,RNN 对之前的计算有“记忆”,并在当前的处理中使用对之前的记忆。该模板天然适合很多 NLP 任务,如语言建模、机器翻译、语音识别、图像字幕生成。因此近年来,RNN 在 NLP 任务中逐渐流行。


但是 RNN 容易出现梯度消失和爆炸的问题,因而其改进版本 LSTM 和 GRU 被提出来了。



LSTM 比简单 RNN 多了“遗忘门”,其独特机制帮助该网络克服了梯度消失和梯度爆炸问题。与原版 RNN 不同,LSTM 允许误差通过无限数量的时间步进行反向传播。它包含三个门:输入门、遗忘门和输出门,并通过结合这三个门来计算隐藏状态。另一个门控 RNN 变体是 GRU,复杂度更小,其在大部分任务中的实验性能与 LSTM 类似。GRU 包括两个门:重置门和更新门,并像没有记忆单元的 LSTM 那样处理信息流。因此,GRU 不加控制地暴露出所有的隐藏内容。由于 GRU 的复杂度较低,它比 LSTM 更加高效。


在 llya Sutskever 等人 2014 年的研究《Sequence to Sequence Learning with Neural Networks》中,作者提出了一种通用深度 LSTM 编码器-解码器框架,可以实现序列之间的映射。使用一个 LSTM 将源序列编码为定长向量,源序列可以是机器翻译任务中的源语言、问答任务中的问题或对话系统中的待回复信息。然后将该向量作为另一个 LSTM 解码器的初始状态。在推断过程中,解码器逐个生成 token,同时使用最后生成的 token 更新隐藏状态。


传统编码器-解码器框架的一个潜在问题是:有时编码器会强制编码可能与目前任务不完全相关的信息。这个问题在输入过长或信息量过大时也会出现,选择性编码是不可能的。因此,能够根据编码器编码内容动态解码内容的注意力机制(Attention)得到提出。


《Neural Machine Translation by Jointly Learning to Align and Translate》首次将注意力机制应用到机器翻译任务,尤其改进了在长序列上的性能。该论文中,关注输入隐藏状态序列的注意力信号由解码器最后的隐藏状态的多层感知机决定。通过在每个解码步中可视化输入序列的注意力信号,可以获得源语言和目标语言之间的清晰对齐。


但是 RNN 及其优化变种,因为都要按时序输入,都存在编码效率低下的问题。Transformer 这种基于 self-attention 机制的强大特征提取器应运而生。《Attention Is All You Need》提出了 Transformer,它完全去除了编码步中的循环和卷积,仅依赖注意力机制来捕捉输入和输出之间的全局关系。因此,整个架构更加并行化,在翻译、解析等任务上训练得到积极结果所需的时间也更少。


NLP 中的预训练模型

训练得到的词向量表征的词语之间的信息其实有限。词向量一个难以解决的问题就是多义词的问题,例如“bank”在英文中有“河岸”和“银行”两种完全不同意思,但是在词向量中确实相同的向量来表征,这显然不合理。


2017 年,为了解决这个问题,ELMO 模型在“Deep contextualized word representation”被提出。


ELMO 的本质思想是:用事先训练好的语言模型学好一个单词的 Word Embedding,此时多义词无法区分,不过这没关系。在实际使用 Word Embedding 的时候,单词特定的上下文就可以知道,这个时候模型可以根据上下文单词的语义去调整单词的 Word Embedding 表示,这样经过调整后的 Word Embedding 更能表达在这个上下文中的具体含义,自然也就能克服多义词的问题。


从 ELMO 开始,这种先预训练,在实际应用时再 fine-Tune 的模式就开始流行起来了。我们再看 ELMO,通过双向语言模型,能够学到较丰富的语义信息。但其用的是 LSTM 作为特征抽取器,在特征抽取能力上较弱。



2018 年,Generative Pre-Training(GPT)采用单向语言模型,用 Transformer 作为特征抽取器,取得了非常不错的效果,但由于主创人员营销能力欠佳,并没有像下面这一个主角一样,在 NLP 领域掀起滔天巨浪。


2018 年 10 月,谷歌推出 BERT(Bidirectional Encoder Representation from Transformers)模型,刷新了几乎所有 NLP 任务的榜单,一时风头无两。仔细看 BERT 的实现,其与 GPT 的主要差别在于,BERT 用的“双向语言模型”,它通过 MASK 掉预料中的部分词再重建的过程来学习预料中词语序列中的语义表示信息,同样采用 Transformer 作为特征抽取器。BERT 的出现,因其效果太好,几乎让其他所有的 NLP 工作都黯然失色。


2019 年 2 月 openAI 用更大的模型,规模更大质量更好的数据推出了 GPT2.0,其语言生成能力令人惊叹。


目前来看,出彩的工作都是基于 BERT 和 GPT 的改进工作。在 2019 年 6 月,XLNet: Generalized Autoregressive Pretraining for Language Understanding 诞生,其基于 BERT 和 GPT 等两类预训练模型来进行改进,分别吸取了两类模型的长处,获得的很好的效果。


需要注意的是,所有的预训练模型都是无监督的,这意味着,模型的数据来源是廉价而且数量巨大的。因为 XLNET 在训练时一直是 under-fitting 的,因此即使是通过增加数据量,都还能提升 NLP 预训练模型的效果。这无疑是振奋人心的。

总结

以上大体上介绍了深度学习在自然语言处理领域的一些标志性进展。可预见的是,现阶段是 NLP 最好的时代,后续一段时间内,会有更多更好的模型出现,不断刷新各个任务的"state of the art"。


原文链接


https://mp.weixin.qq.com/s/1z5RCYyEiHRbaERaXvgwQw


公众号推荐:

跳进 AI 的奇妙世界,一起探索未来工作的新风貌!想要深入了解 AI 如何成为产业创新的新引擎?好奇哪些城市正成为 AI 人才的新磁场?《中国生成式 AI 开发者洞察 2024》由 InfoQ 研究中心精心打造,为你深度解锁生成式 AI 领域的最新开发者动态。无论你是资深研发者,还是对生成式 AI 充满好奇的新手,这份报告都是你不可错过的知识宝典。欢迎大家扫码关注「AI前线」公众号,回复「开发者洞察」领取。

2019-09-07 14:425427

评论

发布
暂无评论
发现更多内容

深度解析代码变更对业务的影响范围:业务影响范围关联分析

测吧(北京)科技有限公司

测试

如何轻松管理你的海外主机?实用技巧大公开!

一只扑棱蛾子

海外主机

TikTok直播专线是什么?有什么用?

Ogcloud

海外直播专线 海外直播 tiktok直播 tiktok直播专线 海外直播网络

阿里云实时计算Flink的产品化思考与实践【上】

Apache Flink

大数据 flink 实时计算

亚马逊云科技携手埃森哲、Anthropic助力企业打造负责任的AI

财见

OLAP性能再获突破!火山引擎ByteHouse性能白皮书发布

Geek_2d6073

敏捷开发:想要快速交付就必须舍弃产品质量?

敏捷开发

项目管理 Scrum 敏捷开发 产品研发 研发

一站式大数据开发与治理产品实践

Jackchang234987

元数据 大数据平台 数据开发平台 数据中台数据治理

保障校园网络安全用堡垒机的几个原因分析

行云管家

网络安全 数据安全 堡垒机 等保合规 校园

“专业敏捷教练课程” 6月1-2日 · CSP-SM认证周末班【晋升高阶享多重福利】

ShineScrum捷行

中国 10 亿参数规模以上大模型数量已超 100 个;GitHub 推出代码自动修复工具丨 RTE 开发者日报 Vol.172

声网

深入理解精准测试理论与技术:揭秘测试技术的核心原理

测吧(北京)科技有限公司

测试

SpringBoot集成ElasticSearch,实现模糊查询,批量CRUD,排序,分页,高亮...

Java技术精选

聊聊我做测试开发的十年心路历程

阿里技术

测试 开发

解锁TikTok直播专线,提高使用体验

Ogcloud

海外直播专线 海外直播 tiktok直播 tiktok直播专线 tiktok直播网络

比 MyBatis 效率快 100 倍...

Java技术精选

软件测试学习笔记丨Allure2 报告中添加附件(视频)

测试人

软件测试

分享一些大数据处理算法

宇文辰皓

大数据

ECS公网连接指南:精明选择公网IP计费策略

Geek_2d6073

山东省正规等保测评机构名称以及地址一览表

行云管家

等保 山东 等级保护 等保测评

软件测试学习笔记丨Allure2报告中添加附件-日志

测试人

软件测试 测试开发

新版Redis不再“开源”,对使用者都有哪些影响?

华为云开发者联盟

数据库 redis 华为云 华为云开发者联盟 华为云GeminiDB

是什么阻碍了你的成长

老张

个人成长 职场成长

ChatTuGraph:通过大模型“与图对话”

TuGraphAnalytics

graph FineTuning Text2GQL

库存控制秘诀:鞋服品牌如何避免库存积压风险

第七在线

一文掌握Trello:功能解析、与其他工具优劣对比及高效使用技巧

PingCode

任务管理工具 Trello

云端简易指南:快速启动与管理您的ECS实例

Geek_2d6073

深入了解一下http和https的区别

秃头小帅oi

同城双活:交易链路的稳定性与可靠性探索

得物技术

Java 后端 中间件 双活

日立公司采用元太科技电子纸实现了无纸化营运

财见

更轻松地部署和升级 NGINX Service Mesh

NGINX开源社区

nginx Kubernetes Helm Service Mesh 服务网格 mTLS

深度学习在自然语言处理中的应用发展史 | NLP专栏_AI&大模型_小Dream哥,有三AI_InfoQ精选文章