文章目录

  • 总览
  • 1957-1970
  • 1994-
    • Neural Language Model
    • Multi-task learning
    • Word embedding
    • Neural networks for NLP
    • Seq2seq
    • Attention
    • Memory-based networks
    • Pretrained language models
    • 神经网络的其他里程碑
    • 非神经网络方向的其他里程碑
  • 参考

总览

NLP的发展趋势:规则—>统计—>深度学习。

自然语言处理的发展大致经历了4个阶段:1956年以前的萌芽期;1957-1970年的快速发展期;1971 -1993年的低谷的发展期和1994年至今的复苏融合期。

57年快速发展的一个原因是:1956被称之为人工智能的元年,那一年召开了达特茅斯会议,首次正式提出了“人工智能”。

1956年8月,在美国汉诺斯小镇(其实就是美国的东北部沿海的一个州下面的一个镇)宁静的达特茅斯学院中,约翰·麦卡锡(John McCarthy)、马文·闵斯基(Marvin Minsky,人工智能与认知学专家)、克劳德·香农(Claude Shannon,信息论的创始人)、艾伦·纽厄尔(Allen Newell,计算机科学家)、赫伯特·西蒙(Herbert Simon,诺贝尔经济学奖得主)等科学家正聚在一起,讨论着一个完全不食人间烟火的主题:用机器来模仿人类学习以及其他方面的智能。

1957-1970

自然语言处理在这一时期很快融入了人工智能的研究领域中。由于有基于规则和基于概率这两种不同方法的存在,自然语言处理的研究在这一时期分为了两大阵营。一个是基于规则方法的符号派(symbolic),另一个是采用概率方法的随机派(stochastic)。

50年代中期开始到60年代中期,以Chomsky为代表的符号派学者开始了形式语言理论和生成句法的研究,60年代末又进行了形式逻辑系统的研究。这个的话属于非常理论的部分,大家如果上过<形式语言与自动机>或者《编译原理与技术》的话就很清楚,课中的内容很多就是出自于这个时期的研究。也就是说,形式语言理论是处理编程语言的工具,是编译器的重要组成部分。没有这个,就没有你今天看到的各种编程语言!

而随机派学者采用基于贝叶斯方法的统计学研究方法,在这一时期也取得了很大的进步。但由于在人工智能领域中,这一时期多数学者注重研究推理和逻辑问题,只有少数来自统计学专业和电子专业的学者在研究基于概率的统计方法和神经网络,

在这一时期中,基于规则方法的研究势头明显强于基于概率方法的研究势头。

1994-

90年代中期以后,有两件事从根本上促进了自然语言处理研究的复苏与发展。一件事是90年代中期以来,计算机的速度和存储量大幅增加,为自然语言处理改善了物质基础,使得语音和语言处理的商品化开发成为可能;另一件事是1994年Internet商业化和同期网络技术的发展使得基于自然语言的信息检索和信息抽取的需求变得更加突出。
2000年之后的几个里程碑事件:
2001年 - 神经语言模型
2008年 - 多任务学习
2013年 - Word嵌入
2013年 - NLP的神经网络
2014年 - 序列到序列模型
2015年 - 注意力机制
2015年 - 基于记忆的神经网络
2018年 - 预训练语言模型

Neural Language Model

语言模型解决的是在给定已出现词语的文本中,预测下一个单词的任务。这可以算是最简单的语言处理任务,但却有许多具体的实际应用,例如智能键盘、电子邮件回复建议等。当然,语言模型的历史由来已久。经典的方法基于 n-grams 模型(利用前面 n 个词语预测下一个单词),并利用平滑操作处理不可见的 n-grams。

第一个神经语言模型是 Bengio 等人于 2001 年提出的。

论文名称:A Neural Probabilistic Language Model

该论文是2001年发表在会议上,2003年发表在期刊上的,所以也有人说这篇论文发表时间是在2003年,这都无所谓。

Multi-task learning

论文名称:A unified architecture for natural language processing: Deep neural networks with multitask learning

多任务学习是在多个任务下训练的模型之间共享参数的一般方法。在神经网络中,这可以通过绑定不同层的权重来轻松完成。直观地说,多任务学习鼓励模型学习对许多任务都有效的表征描述。这对于学习一般的低级表示,集中模型的注意力或在有限量的训练数据的设置中特别有用

Collobert在2008年首次将多任务学习应用于NLP的神经网络。在这一框架下,词嵌入矩阵被两个在不同任务下训练的模型共享.。

共享单词嵌入使模型能够在单词嵌入矩阵中协作和共享一般的低级信息,这通常构成模型中最大数量的参数。Collobert和Weston在2008年的论文中证明了它在多任务学习中的应用。它引领了诸如预训练单词嵌入和使用卷积神经网络(CNN)之类的方法,这些方法仅在过去几年中被广泛采用。他们也因此获得了2018年机器学习国际会议(ICML)的“时间测试”奖。
多任务学习现在用于各种NLP任务,并且利用现有或“人工”任务已成为NLP指令集中的有用工具。虽然通常预先定义参数的共享,但是在优化过程期间也可以学习不同的共享模式。随着模型越来越多地评估多项任务以评估其泛化能力,多任务学习越来越重要,最近又有提出了多任务学习的专用基准。

Word embedding

论文名称:Efficient Estimation of Word Representations in Vector Space。

这是Mikolov等人在2013年提出的,其使得大规模的词嵌入模型训练成为可能。其提供了两种训练方案:一个基于周围的单词预测中心词,一个是根据中心词来预测周围的单词。

虽然捕获的关系word2vec具有直观且几乎神奇的质量,但后来的研究表明word2vec没有任何固有的特殊性:通过矩阵分解也可以学习单词嵌入和通过适当的调整,像SVD和LSA这样的经典矩阵分解方法可以获得类似的结果。

一个特别令人兴奋的方向是将不同语言的单词嵌入投影到同一空间中以实现(零射击)跨语言转移。越来越有可能以完全无监督的方式(至少对于类似语言)学习良好的投影,这开启了低资源语言和无监督机器翻译的应用。

Neural networks for NLP

2013年和2014年,三种主要类型的神经网络成为热点,应用到了NLP中:循环神经网络(recurrent neural networks)、卷积神经网络(convolutionalneural networks)和结构递归神经网络(recursive neural networks)。因此,这里有一大批论文,比如GRU的那一篇论文:Learning Phrase Representations using RNN Encoder–Decoderfor Statistical Machine Translation。

RNN是处理NLP中普遍存在的动态输入序列的理想选择。Vanilla RNNs很快被经典的长期短期记忆网络(LSTM)所取代,后者证明其对消失和爆炸梯度问题更具弹性。

随着卷积神经网络(CNN)被广泛用于计算机视觉,它们也开始应用于语言(Kalchbrenner等,2014;Kim等,2014)。用于文本的卷积神经网络仅在两个维度上操作,其中滤波器仅需要沿时间维度移动。下图显示了NLP中使用的典型CNN。

卷积神经网络的一个优点是它们比RNN更容易并行化,因为每个时间步的状态仅取决于本地环境(通过卷积运算)而不是像RNN中的所有过去状态。 CNN可以使用扩张的卷积扩展到更宽的感受域,以捕捉更广泛的背景(Kalchbrenner等,2016)。CNN和LSTM也可以组合和堆叠,并且可以使用卷积来加速LSTM。
RNN和CNN都将语言视为一个序列。然而,从语言学的角度来看,语言本质上是等级的:单词被组成高阶短语和子句,它们本身可以根据一组生产规则递归地组合。将句子视为树而不是序列的语言启发思想产生了递归神经网络。


自下而上构建序列的结构递归神经网络,与从左至右或从右至左对序列进行处理的循环神经网络相比,有着明显的不同。在树的每个节点处,通过组合子节点的表示来计算新表示。由于树也可以被视为在RNN上施加不同的处理顺序,因此LSTM自然地扩展到树形结构取代序列。
不仅可以扩展RNN和LSTM以使用分层结构。不仅可以根据本地语言而且可以基于语法背景来学习单词嵌入(Levy&Goldberg,2014);语言模型可以基于句法堆栈生成单词(Dyer等,2016);图形卷积神经网络可以树状结构运行(Bastings等,2017)

Seq2seq

这里其实和上面有交叉,因为Seq2seq可以使用上述的RNN等来实现。所以,也是有一大批论文。
2014年,Sutskever等人提出了序列到序列学习,一种使用神经网络将一个序列映射到另一个序列的通用框架。在该框架中,编码器神经网络逐符号地处理句子并将其压缩成矢量表示;然后,解码器神经网络基于编码器状态逐个预测输出符号,在每个步骤中将先前预测的符号作为预测下一个的输入.

机器翻译成了这个框架的杀手级应用。 2016年,谷歌宣布开始用神经MT模型替换其基于单片短语的MT模型(Wu等,2016)。根据Jeff Dean的说法,这意味着用500行神经网络模型替换500,000行基于短语的机器翻译代码。
由于其灵活性,该框架现在是自然语言生成任务的首选框架,不同的模型承担编码器和解码器的角色。重要的是,解码器模型不仅可以以序列为条件,而且可以以任意表示为条件。这使得例如基于图片生成描述(Vinyals等人,2015),基于表格的文本(Lebret等人,2016),基于源的描述、代码更改(Loyola等,2017),以及许多其他应用程序成为可能。

在这个架构中,一个叫做解码器,一个叫做编码器。通常基于RNN,但是可以使用其他模型类型。新架构主要来自机器翻译的工作,机器翻译将作为序列到序列架构的培养皿。

Attention

请注意一下,Attention机制首次提出是在这里,而不是那篇论文:attention is all you need。

而是论文名称:NEURAL MACHINE TRANSLATION
BY JOINTLY LEARNING TO ALIGN AND TRANSLATE

注意力(Bahdanau等,2015)是神经MT(NMT)的核心创新之一,也是使NMT模型优于基于经典短语的MT系统的关键思想。序列到序列学习的主要瓶颈是它需要将源序列的整个内容压缩成固定大小的矢量。注意通过允许解码器回顾源序列隐藏状态来减轻这种情况,然后将其作为加权平均值提供给解码器的附加输入。


注意力机制是神经网络机器翻译 (NMT) 的核心创新之一,广泛适用,并且可能对任何需要根据输入的某些部分做出决策的任务有用。它已被应用于句法分析(Vinyals等,2015)、阅读理解(Hermann等,2015)和单样本学习(Vinyals等,2016)等等。输入的甚至不需要是一个序列,可以包括其他表示,比如图像的描述。注意力的一个有用的副作用是,通过根据注意力量检查输入的哪些部分与特定输出相关,它提供了罕见的对模型内部运作机制的观察。

注意也不仅限于查看输入序列;自我注意可用于查看句子或文档中的周围单词以获得更多上下文敏感的单词表示。这个注意力机制是Transformer架构的核心(Vaswani等,2017),这是目前最先进的NMT模型。

Memory-based networks

注意力可以看作是模糊记忆的一种形式,其中记忆由模型的过去隐藏状态组成,模型选择从记忆中检索的内容。有关注意事项及其与内存的关联的更详细概述,请查看此文章。已经提出了许多具有更明确记忆的模型。它们有不同的变体,例如神经图灵机(Neural Turing Machines)、记忆网络(Memory Network)、端到端的记忆网络(End-to-end Memory Newtorks)、动态记忆网络(DynamicMemory Networks)、神经可微计算机(Neural Differentiable Computer)、循环实体网络(RecurrentEntity Network)。
通常基于与当前状态的相似性来访问存储器,类似于注意机制,并且通常可以写入和读取存储器。模型在实现和利用内存方面有所不同。例如,端到端内存网络多次处理输入并更新内存以启用多个推理步骤。神经图灵机还具有基于位置的寻址,允许他们学习简单的计算机程序,如排序。基于内存的模型通常应用于任务,其中保留较长时间跨度的信息应该是有用的,例如语言建模和阅读理解。存储器的概念非常通用:知识库或表可以用作存储器,而存储器也可以基于整个输入或其特定部分来填充。

Pretrained language models

预训练的词嵌入与下游任务无关,仅用于初始化模型中的第一层。语言模型是无监督的,只需要未标记的文本;因此,培训可以扩展到数十亿单词的语料、新域和新语言。2015年首次提出了预训练语言模型(Dai&Le,2015);直到最近,它们才被证明对各种各样的任务都有益。语言模型嵌入可以用作目标模型中的特征(Peters等,2018),或者可以对目标任务数据微调语言模型(Ramachandran等,2017; Howard&Ruder,2018)。添加语言模型嵌入比许多不同任务的最新技术有了很大的改进。

已经展示了预训练语言模型,可以用更少的数据进行学习。由于语言模型仅需要未标记的数据,因此对于标记数据稀缺的低资源语言尤其有用。


预训练模型这个概念在2018年后大火。

神经网络的其他里程碑

其他一些发展不如上面提到的那么普遍,但仍然具有广泛的影响。
比如基于字符的描述(Character-based representations),在字符上使用CNN或LSTM来获得基于字符的单词表示是相当普遍的,特别是对于形态学丰富的语言和形态信息很重要或具有许多未知单词的任务。据我所知,基于特征的表示首先用于序列标记(Lample等,2016;Plank等,2016)。基于字符的表示减少了必须以增加的计算成本处理固定词汇表的需要,并且能够实现诸如完全基于字符的NMT之类的应用(Ling等人,2016; Lee等人,2017)。
对抗学习(Adversarial learning)已经全面入侵和颠覆了及其计算领域,并且在NLP中也以不同的形式使用。对抗性示例越来越广泛地被广泛使用,不仅作为探测模型和理解其失败案例的工具,而且还使它们更加强大(Jia&Liang,2017)。 (虚拟)对抗性训练,即最坏情况的扰动(Miyato等,2017; Yasunaga等,2018)和域对抗性损失(Ganin等,2016; Kim等,2017)是有用的正规化的形式可以同样使模型更加坚稳。生成对抗网络(GAN)对于自然语言生成来说,还不是太有效(Semeniuta等,2018),但是例如在匹配分布时是有用的(Conneau等,2018)。
强化学习(Reinforcement learning)已经被证明对于具有时间依赖性的任务是有用的,例如在训练期间选择数据(Fang等,Wu等,2018)和建模对话(Liu等,2018)。RL对于直接优化诸如反向强化学习在奖励太复杂而无法指定的环境中可能是有用的,例如视觉叙事(Wang等,2018)。

非神经网络方向的其他里程碑

在1998年以及随后的几年中,引入了FrameNet项目(Baker等,1998),这导致了语义角色标记的任务,这是一种浅层语义分析,至今仍在积极研究中。在21世纪初期,与自然语言学习会议(CoNLL)共同组织的共同任务催化了核心NLP任务的研究,如分块(Tjong Kim Sang等,2000),命名实体识别(Tjong Kim Sang等,2003),以及依赖性解析(Buchholz等,2006)等。许多CoNLL共享任务数据集仍然是当今评估的标准。
2001年,引入了条件随机区域(CRF; Lafferty等,2001),这是最具影响力的序列标记方法之一,在ICML 2011中获得了时间测试奖.CRF层是核心部分目前最先进的模型用于序列标记问题与标签相互依赖性,如命名实体识别(Lample等,2016)。
2002年,提出了双语评估替代研究(BLEU; Papineni等,2002)度量,这使得MT系统能够扩展,并且仍然是目前MT评估的标准度量。同年,引入了结构化先行者(Collins,2002),为结构化感知工作奠定了基础。在同一次会议上,引入了情感分析,这是最受欢迎和广泛研究的NLP任务之一(Pang等,2002)。这三篇论文都获得了2018年NAACL的时间测试奖。
2003年引入了潜在的dirichlet分配(LDA; Blei等,2003),这是机器学习中使用最广泛的技术之一,它仍然是进行主题建模的标准方法。2004年,提出了新的最大边际模型,它们更适合捕获结构化数据中的相关性而不是SVM(Taskar等,2004a; 2004b)。
2006年,OntoNotes(Hovy等,2006)引入了一个具有多个注释和高交互注入协议的大型多语言语料库。 OntoNotes已被用于培训和评估各种任务,例如依赖性解析和共参考解析。 Milne和Witten(2008)在2008年描述了维基百科如何用于丰富机器学习方法。到目前为止,维基百科是用于训练ML方法的最有用的资源之一,无论是用于实体链接和消歧,语言建模,作为知识库还是各种其他任务。
2009年,提出了远程监督的想法(Mintz等,2009)。远程监督利用来自启发式或现有知识库的信息来生成可用于从大型语料库中自动提取示例的噪声模式。远程监督已被广泛使用,并且是关系提取,信息提取和情感分析以及其他任务中的常用技术。

参考

https://www.jianshu.com/p/284a153c1cd6

自然语言处理的发展历程相关推荐

  1. 自然语言处理(NLP)的发展历程,神经语言模型多任务学习介绍, ECM模型介绍等

    1读前准备 读本篇论文之前我先调研了并理解了什么是自然语言处理(自然语言是人类交流信息的工具.很多自然语言处理问题都可以等同于通信系统中的解码问题–一个人根据接收到的信息,去猜测发话人要表达的意思)以 ...

  2. 【技术白皮书】第二章:OCR智能文字识别回顾——自然语言文本发展历程

    2.发展历程与现状 2.1信息抽取技术发展历程 从自然语言文本中获取结构化信息的研究最早开始于20世纪60年代中期,这被看作是信息抽取技术的初始研究,它以两个长期的.研究性的自然语言处理项目为代表. ...

  3. 自然语言处理发展历程

    自然语言处理发展历程(算法进阶+历史重要阶段) 作者:张qianer~ 本文适合有一定NLP基础,想对NLP的知识有系统梳理的小伙伴~ 文章目录 自然语言处理发展历程(算法进阶+历史重要阶段) 什么是 ...

  4. 张志华:机器学习的发展历程及启示

    近年来,人工智能的强势崛起,特别是刚刚过去的AlphaGo和韩国九段棋手李世石的人机大战,让我们领略到了人工智能技术的巨大潜力.数据是载体,智能是目标,而机器学习是从数据通往智能的技术途径.因此,机器 ...

  5. 通用计算机的发展历程是巨型机大型机小型机,计组1——计算机系统概述

    本篇总结了<计算机组成原理>第一章--计算机系统概述,主要内容如下 计算机系统简介 计算机的发展历程 计算机系统的分类与发展方向 计算机的硬件组成 计算机的层次结构 计算机的性能指标 计算 ...

  6. 知识图谱系列-2-知识图谱发展历程及其分类

    1. 知识图谱发展历程 知识图谱的发展可以从人工智能和语义网(注意语义网和语义网络是不同的)这两个领域进行追溯.在人工智能方面,人类致力于使计算机更智能,能够进行推理.分析.预测等高级思维活动.而知识 ...

  7. OpenAI的创立和发展历程

    OpenAI的创立和发展历程是一个引人入胜的故事,它涉及到许多有趣的人物和里程碑事件.让我们一起来探索OpenAI的成长历程吧. OpenAI成立于2015年,由一群富有远见和对人工智能充满热情的创始 ...

  8. 简析NFT交易平台的发展历程及4F评估模型

    早在 2016-2018 年,以 OpenSea,MakersPlace,SuperRare 为代表的第一批 NFT 交易市场横空出世.在那时,有一部分交易平台使用了邀请制,只有受邀的艺术家才可以进行 ...

  9. 2019中国智能语音的发展历程、现状及前景分析

    智能语音,即智能语音技术,以语音识别技术为开端,是实现人机语言的通信,包括语音识别技术(ASR)和语音合成技术(TTS).智能语音技术是最早落地的人工智能技术,也是市场上众多人工智能产品中应用最为广泛 ...

最新文章

  1. devops_最低可行DevOps
  2. Android人脸识别App(带web上传注册信息)
  3. mysql常用表名大全_MySQL常用命令大全
  4. oracle:delete和truncate
  5. Leetcode 648.单词替换
  6. Spring @AspectJ 实现AOP 入门例子(转)
  7. 吴恩达机器学习编程作业
  8. live555保存文件的问题
  9. 阿里巴巴Java开发手册代码规范
  10. javascript脚本_应用JavaScript:用户脚本
  11. 【Unity项目实战】手把手教学:飞翔的小鸟(4)文本添加
  12. 启鸿蒙什么意思,鸿蒙是什么?大多数人可能都理解错了
  13. MySQL Workbench 已停止工作 错误模块名称: KERNELBASE.dll 异常代码: 0xe0434352 程序无法正常启动:( 0xc000007b)
  14. cadence SPB17.4 - 用autoCAD2022画一个PCB板框
  15. gif一键抠图 在线_5个一键抠图高效率工具
  16. 陈旭数据科学与计算机学院,数据科学与计算机学院硕士研究生招生专业及各专业导师...
  17. 石油勘探是属于计算机应用中的,中石油17春《油气田勘探》第一二三阶段在线作业答案...
  18. C语言switch 语句
  19. iOS开发入门——项目创建
  20. 什么是超级电容?它与普通电容有何区别?

热门文章

  1. 解决RuntimeError: cuda runtime error (30) : unknown error at /pytorch/aten/src/THC/THCGeneral.cpp:70N
  2. 实践操作:六步教你如何用开源框架Tensorflow对象检测API构建一个玩具检测器
  3. 乳腺MG数据获取(Breast Mammography)
  4. CMU开源:价值百万美元的多目标人体关键点实时检测
  5. MVC、JSP实现mysql的增删改查功能的封装和简陋的界面交互
  6. FAIR 训练 AI 玩拳击,效果堪比真人比赛,试探+周旋+爆头
  7. 20亿参数+30亿张图像,刷新ImageNet最高分!谷歌大脑华人研究员领衔发布最强Transformer...
  8. 基于深度神经网络的风电场超短期功率预测系统【数据故事计划最佳学术奖】...
  9. “2018中国AI英雄风云榜”年度人物榜:“AI天才”何恺明
  10. 独家 | 一文了解强化学习的商业应用2