深度神经网络极大促进了自然语言处理技术的发展。来自微软亚研的周明、段楠、 刘树杰、沈向洋发表了神经自然语言处理的进展,从表示到建模再到推理,共16页pdf,值得详细查看。
https://www.sciencedirect.com/science/article/pii/S2095809919304928
摘要
介绍
自然语言处理(Natural Language Processing, NLP)是人工智能(AI)的一个重要分支,通过自然语言研究人与计算机之间的交互。它研究单词、短语、句子和文档的意义表达的基础技术,以及句法和语义处理(如断句、句法分析器和语义解析)的基础技术,并开发诸如机器翻译(MT)、问答(QA)、信息检索、对话、文本生成和推荐系统等应用程序。NLP对于搜索引擎、客户支持系统、商业智能和语音助手至关重要。
NLP的历史可以追溯到20世纪50年代。在NLP研究之初,我们使用基于规则的方法来构建NLP系统,包括单词/句子分析、QA和MT。这些由专家编辑的规则被用于从MT开始的各种NLP任务的算法中。通常,设计规则需要大量的人力。此外,当规则数量很大时,很难组织和管理规则。20世纪90年代,随着互联网的快速发展,出现了大量的数据,这使得统计学习方法可以用于处理NLP任务。使用人工设计的特征,统计学习模型通过使用标记/挖掘数据学习。统计学习方法为许多自然语言处理任务,特别是MT和搜索引擎技术带来了显著的改进。2012年,随着深度学习在ImageNet[1]对象识别和Switchboard[2]语音识别方面的成功,深度学习方法被引入到NLP中。深度学习方法比统计学习方法快得多,结果好得惊人。目前,基于神经网络的神经语言处理(以下简称神经语言处理)框架已经达到了新的质量水平,并且已经成为处理神经语言处理任务的主要方法,例如MT、机器阅读理解(MRC)、聊天机器人等等。例如,微软的Bible系统在2017年MT研讨会的中英新闻翻译任务中就取得了能和人媲美的结果。微软亚洲研究院(MSRA)的R-NET和NLNet在斯坦福问题回答数据集(小组)评估任务中,在精确匹配(EM)得分和模糊匹配(F1)得分上都取得了人机质量结果。最近,生成式预训练(GPT)[3]、来自 Transformers的双向编码器表示(BERT)[4]和XLNet[5]等预训练模型在多个NLP任务中显示了强大的能力。神经NLP框架在有大量标记数据用于学习神经模型的监督任务中工作得很好,但在资源有限或没有标记数据的低资源任务中仍然表现不佳。
建模
NLP系统使用自然语言句子并生成一个类类型(用于分类任务)、一个标签序列(用于序列标记任务)或另一个句子(用于QA、对话、自然语言生成和MT)。要应用神经语言处理方法,需要解决以下两个关键问题:
(1)在神经网络中对自然语言句子(词的序列)进行编码。
(2)生成一个标签序列或另一个自然语言句子。
从这两个方面,本节将介绍几种常用的神经网络语言处理模型,包括字嵌入、句子嵌入和序列到序列的建模。单词嵌入将输入句子中的单词映射成连续的空间向量。
基于“嵌入”这个词,复杂网络如递归神经网络(RNNs)卷积神经网络(CNNs)和自注意力网络可以用于特征提取,考虑到整个句子的上下文信息构建嵌入环境敏感词,句子的或集成所有的信息来构造句子嵌入。上下文感知词嵌入可用于序列标记任务,如词性标记(POS)和命名实体识别(NER),句子嵌入可用于句子级任务,如情绪分析和意译分类。句子嵌入也可以作为另一个RNN或自注意网络的输入,生成另一个序列,形成序列-序列建模的编解码框架。给定一个输入句子,序列到序列的建模可以用来生成一个问题的答案(即问答任务)或翻译成另一种语言(即机器翻译任务)。
学习
目前已经提出了新的和有效的训练算法,以优化大量的参数在深度学习模型。在训练神经网络时,常用的方法是随机梯度下降(SGD)[18],它通常是基于[19]的反向传播方法。基于动量的SGD被提出是为了引入动量来加速训练过程。AdaGrad [20], AdaDelta [21], Adam [22], RMSProp方法尝试对不同的参数使用不同的学习比率,这进一步提高了效率,稳定了训练过程。当模型非常复杂时,并行训练方法被用来利用许多计算设备,甚至数百或数千台(中央处理单元、图形处理单元或现场可编程门阵列)。根据参数是否同步更新,分布式训练方法可以分为同步SGD和异步SGD。
推理
神经方法在许多NLP任务中取得了良好的进展,如MT和MRC。然而,他们仍然有一些未解决的问题。例如,大多数神经网络模型的行为就像一个黑盒子,它从来没有告诉我们一个系统是如何以及为什么会以这种方式解决了一个问题。此外,对于QA和对话系统这样的任务,仅仅了解输入话语的字面意义往往是不够的。为了生成正确的响应,可能还需要外部和/或上下文知识。为了建立这种可解释的和知识驱动的系统,推理是必要的。在本文中,我们将推理定义为一种机制,它可以通过使用推理技术操作现有知识来生成未见问题的答案。根据这一定义,推理系统(图11)应该包括两个部分:
知识,如知识图、常识、规则、从原始文本中提取的断言等;
一个推理引擎,通过操作现有的知识来生成问题的答案。
接下来,我们用两个例子来说明为什么推理对于NLP任务是重要的。
第一个例子是基于知识的QA任务。“比尔·盖茨的妻子是什么时候出生的?”, QA模型必须将其解析为生成答案的逻辑形式:
其中需要基于知识图谱的推理从这个问题开始,可以附加新的问题,例如:“他/她的工作是什么?”,为了回答这种上下文感知的问题,共指解析决定了他/她指的是谁。这也是一个推理的过程,需要一个常识,他只能指男人,她只能指女人。
第二个例子是一个对话任务。例如,如果一个用户说我现在很饿,更合适的回答应该是:让我向您推荐一些不错的餐馆,而不是让我推荐一些好电影给你。这也需要推理,因为对话系统应该知道饥饿会导致寻找餐馆而不是看电影的行为。在本节的剩余部分中,我们将首先介绍两种类型的知识:知识图谱和常识。接下来,我们将描述典型的推理方法,这些方法在自然语言处理领域已经或正在研究。
专知便捷查看
便捷下载,请关注专知公众号(点击上方蓝色专知关注)
后台回复“NNLP” 可以获取《【神经自然语言处理进展:建模,学习,推理】》专知下载链接索引