上一次我的综述介绍到序列生成技术,这次继续介绍自然语言处理中的另外两个重要的方面:机器翻译和对话系统。
3.2机器翻译
在很长一段时间里(20 世纪 50 年代到 80 年代),机器翻译都是通过研究源语言与目标语言的语言学信息来做的,也就是基于词典和语法生成翻译,这被称为基于规则的机器翻译(RBMT)。随着统计学的发展,研究者开始将统计模型应用于机器翻译,这种方法是基于对双语文本语料库的分析来生成翻译结果。这种方法被称为统计机器翻译(SMT),它的表现比 RBMT 更好。随后,蒙特利尔大学研究团队开发了一个基于神经网络的语言模型,改善了传统 SMT 模型的数据稀疏性问题。他们的研究工作为未来神经网络在机器翻译上的应用奠定了基础。
2013 年,Nal Kalchbrenner 和 Phil Blunsom 提出了一种用于机器翻译的新型端到端编码器-解码器结构[8]。该模型可以使用卷积神经网络(CNN)将给定的一段源文本编码成一个连续的向量,然后再使用循环神经网络(RNN)作为解码器将该状态向量转换成目标语言。他们的研究成果可以说是神经机器翻译(NMT)的诞生;神经机器翻译是一种使用深度学习神经网络获取自然语言之间的映射关系的方法。NMT 的非线性映射不同于线性的 SMT 模型,而且是使用了连接编码器和解码器的状态向量来描述语义的等价关系。此外,RNN 应该还能得到无限长句子背后的信息,从而解决所谓的长距离重新排序问题。但是,梯度爆炸消失问题 让 RNN 实际上难以处理长距依存,因此,NMT 模型一开始的表现并不好。
2014 年,Sutskever等人开发了一种名叫序列到序列(seq2seq)[10]学习的方法,可以将 RNN 既用于编码器也用于解码器,并且还为 NMT 引入了LSTM。在门机制的帮助下梯度爆炸消失问题得到了控制。LSTM 的引入解决了长距离重新排序问题,同时将 NMT 的主要难题变成了固定长度向量问题:如图 3.2 所示,
自 2014 年 Bengio团队为 NMT 引入了attention机制 之后,固定长度向量问题也开始得到解决。注意力机制最早是由 DeepMind 为图像分类提出的,这让神经网络在执行预测任务时可以更多关注输入中的相关部分,更少关注不相关的部分。当解码器生成一个用于构成目标句子的词时,源句子中仅有少部分是相关的;因此,可以应用一个基于内容的attention机制来根据源句子动态地生成一个加权的语境向量(如图 3.3 所示,紫色线的透明度表示权重大小)。然后网络会根据这个语境向量而不是某个固定长度的向量来预测词。自那以后,NMT 的表现得到了显著提升,注意力编码器-解码器网络已经成为了 NMT 领域当前最佳的模型。
图3.3就是目前神经机器翻译的基准模型,NMT 已经在特定的翻译实验上取得了惊人的成就,为了得到更有力的证据,研究团队在语料库上进行了实验,该语料库包含 15 种语言对和 30 个翻译方向;而通过 BLEU 分数对实验结果的测定,显示NMT 在这所有 30 个翻译方向上都得到了与 SMT 媲美或更好的表现。
但NMT最近也发生了一些新进展,就是Google于2017年6月发布在arxiv上的一篇文章Attention is all you need[11],由于现在用attention处理序列问题的论文层出不穷,本文的创新点在于抛弃了之前传统的encoder-decoder模型必须结合CNN或者RNN的固有模式,而只用attention,极大地简化了以前的模型。同时解决了传统RNN 训练并行度的问题,并降低了计算复杂度。它的主要目的是在减少计算量和提高并行效率的同时不损害最终的实验结果,创新之处在于提出了两个新的Attention机制,分别叫做 Scaled Dot-Product Attention 和 Multi-Head Attention.
谷歌的这篇论文里提出的transformer模型抛弃了以前的CNN,RNN, 如图3.4所示;这也是目前最流行的一种模型,因为它是现在做神经翻译里最好的BLUE结果。Positional embedding;(位置嵌入向量)multi-head attention; (多头注意力机制)Position-wise Feed-Forward Networks(位置全链接前馈网络)。
3.3对话系统
近年来,对话系统越来越受到人们的关注。京东数据团队发表了一篇非常好的关于对话系统的论文,论文名字为《A Survey on Dialogue Systems: Recent Advances and New Frontiers》[12] 。该文章引用了124篇论文,同时提到对话系统的最新进展主要得益于深度学习技术,深度学习技术已被用于增强计算机视觉、自然语言处理和推荐系统等大数据应用领域。对于对话系统,深度学习可以利用大量的数据来学习有意义的特征表示和响应生成策略,同时需要最少的手工制作。本节详细介绍了深度学习技术如何帮助他们使用具有代表性的算法,讨论一些有吸引力的研究方向,可以将对话系统研究带入一个新的前沿。
现有的对话系统划分成面向任务的模型和非面向任务的模型(聊天机器人), 面向任务的系统旨在帮助用户完成实际具体的任务,例如帮助用户找寻商品,预订酒店餐厅等。如图3.5所示:
系统一开始接受人类的信息, 然后用一个内部状态来表示, 然后在对话的状态下通过某些规则采取一些动作, 最后这个动作被转换成自然语言。
虽然语言理解是利用统计模型处理的, 但是大多数对话系统还在使用人工特征或者固定规则的对于状态或者动作的表达, 目的检测和位置填充, 这样不仅耗时, 昂贵而且对于跨领域的使用也出现了限制.最近许多基于深度学习的算法被开发出来用于缓解在高维的分布形式下学习特征表达的问题, 并且在这方面做出了卓越的成果.另外, 希望建立端到端的面向任务的对话系统, 将传统的管道系统扩展状态空间的表达, 帮助生成那些有注解的特定任务的全集之外的对话。
3.3.1面向任务导向型对话系统
面向任务导向型对话系统,主要用的是以下两种方法:
(1)管道方法,管道方法包括四个关键部分:1.自然语言理解(NLU): 也就是自然语言理解, 解析用户的话语到预定义的语义槽。2.对话状态跟踪: 管理每一轮的输入以及对话的历史, 输出当前的对话状态。3.对话决策学习: 基于当前的对话状态来学习下一个动作。4.自然语言生成(NLG): 把所选择的动作和其表义相对应, 生成相应的回答。
(2)端到端方法,尽管在传统的面向任务对话系统中有很多的特定领域的人工处理方法, 但很难去适应新的领域。
传统的面向任务的管道方法有两个限制:一个是信用分配问题,其中最终用户的反馈很难传播到每个上游模块第二个是过程相互依赖, 一个组件的输入依赖于另一个组件的输出。当一个组件适应一个新的环境或者使用新的数据进行训练, 所有的其他组件需要通过保证全局优化方法来进行适应。槽和特征也会相应的改变, 这个操作需要人的重要的影响, 随着这几年端到端神经生成网络模型的增加, 许多都是试着构造一个对于面向任务的对话系统的端到端的可训练框架.
除了传统的管道模型, 端到端模型使用一个简单的模块并且和结构化外部数据库进行交互。Li X等人介绍了一种基于网络的端到端的可训练的面向任务的对话系统[13], 它们将对话系统学习看作是学习一种从对话历史到对话回应的映射, 应用编码器-解码器模型来训练整个系统。然而在有监督样式下的训练的系统, 不仅需要大量的数据, 而且可能缺少在训练数据中对于对话控制的探究
T.Zhao等人首次提出了端到端的强化学习方法用于联合训练对话管理中的对话状态跟踪以及策略学习[14], 进而更为鲁棒性地优化系统动作。在对话之中, agent询问用户Yes/No问题来找到正确的答案, X. Li等人训练了一个端到端的系统作为一个任务完成神经对话系统, 其目的也就是完成一个任务, 比如预定电影票任务。如图3.6所示,端到端神经对话系统的说明:给定用户话语,使用强化学习以端到端方式训练所有组件。
微软研究院提出的一种混合编码网络:特定领域对话系统的端到端的训练方案[16],相比于传统的端到端模型来说,亮点在于用更少量的、更有效的数据进行训练,并且结合一些动作模板和API来实现对话生成,探索了监督学习和增强学习两种方案。如图3.7所示;这是操作回路。梯形指软件开发商提供的编程代码,阴影框是可训练的组成成分。“6”下的竖线表示形成于网络的输入的连接量。
非面向任务导向的对话系统与人类交互,提供合理的回复和娱乐消遣功能,通常情况下主要集中在开放的领域与人交谈。虽然非面向任务导向的系统似乎在进行聊天,但是它在许多实际应用程序中都发挥了作用。数据显示,在网上购物场景中,近80%的话语是聊天信息,处理这些问题的方式与用户体验密切相关。
3.3.2 非面向任务导向型对话系统
一般来说,对于非面向任务导向型对话系统,目前用的主要是两种主要方法:
(1)生成模型,例如序列到序列模型(seq2seq),在对话过程中产生合适的回复,生成型聊天机器人目前是研究界的一个热点,和检索型聊天机器人不同的是,它可以生成一种全新的回复,因此相对更为灵活,但它也有自身的缺点,比如有时候会出现语法错误,或者生成一些没有意义的回复;
最开始的生成概率模型是基于短语统计机器翻译的数据驱动方法[17]来生成对Twitter状态帖子的响应。它将回答的生成问题视为一个翻译问题, 然而回答的生成是要比语言之间的翻译要困难得多, 这是由于存在许多貌似正确的回应, 以及过去和回答之间的分析校准的缺失。
随着神经机器翻译(NMT见3.2节)的成功应用,进而促进了神经生成对话系统的研究工作。生成神经模型的基础是序列到序列模型(3.2和4.2已有介绍)。I. Serban等人使用层次模型, 首次捕获到个人的话语的意思, 并且将其整合成完整的对话。同时,分别用字级别和句子级别的注意力方法扩展层次化的结构。实验已经证明:层次化 RNN的表现通常优于非层次化的RNN;在考虑上下文相关的信息后,神经网络趋向于产生更长的、更有意义和多样性的回复。
在图3.8的结构中Chen Xing等人引入两个层次的Attention机制[19],让模型能够自动的学到词语与句子级别的重要度信息,从而更好的生成新一轮的对话。
作者在句子级别的信息中,是反向学习的,即认为下一句的信息中更能够包含上一句的信息,所以从总体上来看,其对于对话的学习是逆向使用每一轮对话的内容的。
在随后的发展过程中,回复多样性问题,为了明确对话内在属性的主题和个性化问题都有进展。但人类对话与对话系统之间的一个重要区别是它是否与现实相结合。结合外部知识库(KB)是一种很有前途的方法,可以弥补背景知识之间的差距,即对话系统和人之间的差距。记忆网络(Memory Network)是一种以知识库处理问题的经典方法。因此,它非常直接的用于在对话生成中。实际研究表明,由记忆网络所提出的模型能够通过参考知识库中的事实来生成对问题的自然和正确答案。
图3.9是南加州和微软的研究团队提出的完全数据驱动的带有知识的对话模型[20]。其中的 World Facts是一个集合,收集一些经过权威认证过的句子或者准确的句子,作为知识库。当给定一个输入S和历史,需要在 Fact 集合里面检索相关的facts,这里采用的搜索引擎进行检索,然后经过 Fact Encoder 进行 fact injection。图3.9的模型提出了一种全新的、完全由数据驱动的、基于知识的神经对话模型,目的是在没有槽位的情况下产生更多的内容。
(2)基于检索的方法:基于检索的方法从候选回复中选择回复。检索方法的关键是消息-回复匹配,匹配算法必须克服消息和回复之间的语义鸿沟。检索型方法的缺点在于它过于依赖数据质量,如果选用的数据质量欠佳,那就很有可能前功尽弃。
检索聊天机器人的早期研究主要集中在反应选择单轮的谈话,只有消息用于选择一个合适的回复。目前比较新的方法是利用深度卷积神经网络体系结构改进模型,学习消息和响应的表示,或直接学习两个句子的相互作用表示,然后用多层感知器来计算匹配的分数。
但近年来,基于检索的多轮会话越来越受到人们的关注,在多轮回答选择中,将当前的消息和先前的话语作为输入。模型选择一个自然的、与整个上下文相关的响应。重要的是要在之前的话语中找出重要的信息,并恰当地模仿话语的关系,以确保谈话的连贯性。多轮对话的难点在于不仅要考虑当前的问题,也要考虑前几轮的对话情景。多轮对话的难点主要有两点:1.如何明确上下文的关键信息;2.在上下文中如何模拟多轮对话间的关系。现有检索模型的缺陷:在上下文中容易丢失重要信息,因为它们首先将整个上下文表示为向量,然后将该上下文向量与响应sentence向量进行匹配。但将生成模型和基于搜索的模型相结合在性能上有重要的提升。基于检索的系统通常给出精确但是较为生硬的答案,而基于生成的系统则倾向于给出流畅但却是毫无意义的回答。集成模型中,被抽取的候选对象和原始消息一起被输入到基于RNN的回复生成器中。这种方法结合了检索和生成模型的优点,这在性能上具备很大的优势。[21] Yoshua Bengio研究团队的深度强化学习聊天机器人(命名为MILABOT)集成了自然语言生成和搜索模型, 包括基于组件的模型, 如模板模型,词袋模型, 序列到序列的神经网络和隐变量神经网络模型, 通过将强化学习应用到众包数据和真实用户互动中进行训练,该系统学习从自身包含的一系列模型中选择合适的模型作为响应。真实用户使用 A/B 测试对该系统进行评估,其性能大大优于竞争系统。由于其机器学习架构,该系统的性能在额外数据的帮助下还有可能继续提升。
参考文献
[8] Kalchbrenner N, Blunsom P. Recurrent continuous translation models[C]//Proceedings of the 2013 Conference on Empirical Methods in Natural Language Processing. 2013: 1700-1709.
[9] Bahdanau D, Cho K, Bengio Y. Neural machine translation by jointly learning to align and translate[J]. arXiv preprint arXiv:1409.0473, 2014.
[10] Sutskever I, Vinyals O, Le Q V. Sequence to sequence learning with neural networks[C]//Advances in neural information processing systems. 2014: 3104-3112.
[11] Vaswani A, Shazeer N, Parmar N, et al. Attention is all you need[C]//Advances in Neural Information Processing Systems. 2017: 5998-6008.
[12] Chen H, Liu X, Yin D, et al. A survey on dialogue systems: Recent advances and new frontiers[J]. ACM SIGKDD Explorations Newsletter, 2017, 19(2): 25-35.
[13] Bordes A, Boureau Y L, Weston J. Learning end-to-end goal-oriented dialog[J]. arXiv preprint arXiv:1605.07683, 2016.
[14]Zhao T, Eskenazi M. Towards end-to-end learning for dialog state tracking and management using deep reinforcement learning[J]. arXiv preprint arXiv:1606.02560, 2016.
[15] Li X, Chen Y N, Li L, et al. End-to-end task-completion neural dialogue systems[J]. arXiv preprint arXiv:1703.01008, 2017.
[16] Williams J D, Asadi K, Zweig G. Hybrid code networks: practical and efficient end-to-end dialog control with supervised and reinforcement learning[J]. arXiv preprint arXiv:1702.03274, 2017.
[17] Ritter A, Cherry C, Dolan W B. Data-driven response generation in social media[C]//Proceedings of the conference on empirical methods in natural language processing. Association for Computational Linguistics, 2011: 583-593.
[18] Serban I V, Sordoni A, Bengio Y, et al. Building End-To-End Dialogue Systems Using Generative Hierarchical Neural Network Models[C]//AAAI. 2016, 16: 3776-3784.
[19] Xing C, Wu Y, Wu W, et al. Hierarchical recurrent attention network for response generation[C]//Thirty-Second AAAI Conference on Artificial Intelligence. 2018.
[20] Ghazvininejad M, Brockett C, Chang M W, et al. A knowledge-grounded neural conversation model[C]//Thirty-Second AAAI Conference on Artificial Intelligence. 2018.
[21]Serban I V, Sankar C, Germain M, et al. A deep reinforcement learning chatbot[J]. arXiv preprint arXiv:1709.02349, 2017.