雷锋网 AI 科技评论按:当前,整个人工智能领域对自然语言处理技术的热情可谓空前高涨。一方面,这是由于借着深度学习的东风,计算机在各种自然语言处理任务中的表现有了突飞猛进的提高;另一方面,人们生活中大量的信息检索、语音识别、文本分析等应用对粒度更细、精度更高的专用自然语言模型提出了越来越高的要求。可以预见,随着信息时代数据量的不断增长以及人类社会中语料资源的不断丰富,自然语言处理研究将不断面临新的挑战。
已于近日结束的 ICLR 2018 中的一篇关于智能问答系统的论文《QANet: Combining Local Convolution with Global Self-Attention for Reading Comprehension》以优秀的表现吸引了我们的注意。在具体介绍论文之前,我们也先对智能问答系统这个研究课题稍作回顾。
问答系统本质上是一个信息检索(IR)系统,只是它从文具中获取更多信息,返回更加精准的答案。传统的问答系统将按照以下的流程工作:(1)问题解析(2)信息检索(3)答案抽取。问题解析的工作包括分词、词性标注、句法分析、命名实体识别、问题分类、问题扩展等;信息检索则是以问题解析模块的结果作为输入,从底层知识库重返回一系列相关的排序后的文档;答案抽取,顾名思义,就是从文档中抽取出最终的答案。
图 1. 传统问答系统基本框架。最下层为实体层,为上层模型提供计算单元(语义社区搜索、语义消歧、词共现等);第二层为语义层,包含了具有一定语义信息的文本,提取出了一部分语义特征;第三层则是最终的核心应用部分。
不难看出,传统的问答系统模型工序复杂,对人工的要求也较高,实行起来较为困难。每一道工序的质量都可能成为制约最终模型性能的因素,并且由于其级联误差的积累,往往会导致模型的失败。而当今大热的深度学习对于序列性的问题有着天然的优势(利用大量的训练数据学习到泛化的知识表示,对篇章和问题从语义层面上进行高度的抽象),因此,人们自然而然地想到了用深度学习来代替问答系统中的大量组件,例如:IBM 的研究人员通过人工搭配迁移学习抽取一系列的特征,再将特征输入一个回归模型中,实现了用于 Watson 问答机器人的 DeepQa 算法。(详情见雷锋网文章:https://www.leiphone.com/news/201607/FOeUS5Wo5gIFMvwJ.html)
进而,为了降低模型使用门槛,同时也为了使模型内部负责各种功能的组件能够更好地协调配合,从而提升模型整体性能,越来越多的研究者将所有的问答系统功能封装在一个端到端的自动化问答系统中。当然,我们并不是说传统的问答系统研究就失去了其研究价值,事实上,传统的可解释性更强的问答系统的研究可以反哺端到端的深度学习问答系统,从而为设计深度学习系统提供更多启发和理论依据。
其实,一部问答系统发展史就是一部人工智能史。伴随着人工智能的兴衰,问答系统也经历了半个多世纪的浮沉。此外,随着符号主义(代表算法为:关联规则、决策树等)、贝叶斯主义(代表算法为:概率图模型)、进化主义(代表算法为:遗传算法)、Analogizer(代表算法为:支持向量机)、联结主义(代表算法为:深度神经网络)轮流登上历史舞台的最高峰,用于支撑问答系统的核心算法也经历了数次更迭,从而使得人们构建问答系统的思路不一。为了构建一个良好的问答系统产学研生态圈,业界和学术界一直致力于提出质量更好的数据集、举办更有影响力的比赛来促进该领域的蓬勃发展。其中,斯坦福大学在 2016 年推出的数据集 SQuAD 成为了今年来最受到学术界和工业界瞩目的重量级阅读理解数据集,可以说 SQuAD 之于问答系统就好比 ImageNet 之于计算机视觉的意义。这个阅读理解数据集会给研究者提供一篇篇文章,准备相应的问题,而研究者需要自己设计问答系统模型用于给出问题的答案。SQuAD 之所以备受推崇,得益于其巨大的规模,它包含 536 篇文章以及相关的 107,785 个问题。(详情请见雷锋网文章:https://www.leiphone.com/news/201608/ftBdq445PzC1kxbF.html )此外,数据集采用 F1 值和 EM(exact match,完全匹配)两种分类标准来评价模型性能,保证了模型评价的相对客观。
图 2: SQuAD排行榜
如上图所示,SQuAD 赛事吸引了微软、谷歌、阿里巴巴、科大讯飞等业界巨头和 CMU,哈工大等高校参与其中,排行榜上的名次经常处于变化之中。尤记得去年 7 月科大讯飞首次登顶该榜榜首,取得了 77.845 的 EM 以及 85.297 的 F1 值,一时间风头无两,但是不久后这个成绩就被其他机构超越。今年年初,微软的 r-net 在 EM 指标上获得了 82.625 的高分,声称首次在该指标上超越了人类(根据斯坦福收集的数据,人类的 EM 值为 82.304)。
直到最近,谷歌大脑团队和 CMU 联合推出的 QANet 再一次拔得头筹,大幅度地将 EM 值提高至 83.877(第二名为科大讯飞和哈工大的 AOA reader 模型获得的 82.482), F1 值也获得了有史以来的最高分——89.737。另一方面,相比别的团队提交的模型在 DAWNBench 中动辄 7 到 10 个小时的训练时间,QANet 只需要短短 45 分钟。
那么接下来我们一起来看看 QANet 究竟是一个什么样的模型?作者们是如何同时大幅提升了精度和训练时间的?
(1)形式化定义
给定一个包含 n 个单词的上下文片段 C={c1,c2,...,cn},我们考虑包含 m 个单词的查询语句 Q={q1,q2,...,qm},模型输出为一个包含 j 个单词的片段 C 中的答案区间 S={ci,ci+1,...,ci+j}。
(2)模型概览
大体上来说,和现有的阅读理解模型相类似,QANet 包含五个主要的组成部分:嵌入层 (embedding layer),嵌入编码层(embedding encoder layer),语境-查询注意力层(context-query attention layer),模型编码层(model encoder)以及输出层(output layer)。
区别于目前大多数包含注意力机制(attention model)和循环神经网络(RNN)的阅读理解模型,QANet 的嵌入编码器和模型编码器摒弃了 RNN 的复杂递归结构,仅仅使用卷积(convolution)和自注意力机制(self-attention)构建了一个神经网络,使得模型的训练速率和推断速率大大加快,并且可以并行处理输入的单词。
卷积操作可以对局部相互作用建模(捕获文本的局部结构),而使用自注意力机制则可以对全局交互进行建模(学习每对单词之间的相互作用)。据作者们介绍,这也是领域内首次将卷积和自注意力机制相结合。由于卷积层和自注意力机制都没有消耗时间的递归操作,所以作者们不仅大胆地把模型深度增加到了问答任务中史无前例的超过 130 层,同时还在训练、推理中都有数倍的速度提升。(相较于基于 RNN 的模型,训练速度提升了3-13倍,推理速度提升了 4-9 倍)
图 3: 左图为包含多个编码器模块的 QANet 整体架构。右图为基本编码器模块单元,QANet 所使用的所有编码器都是按照这个模式构建的,仅仅修改模块中卷积层的数量。QANet 在每一层之间会使用层正则化和残差连接技术,并且将编码器结构内位置编码(卷积、自注意力、前馈网络等)之后的每个子层封装在残差模块内。QANet 还共享了语境、问题、输出编码器之间的部分权重,以达到知识共享。
以往基于 RNN 的模型受制于训练速度,研究员们其实很少考虑图像识别任务中类似的「用更大的数据集带来更好表现」的思路。那么对于这次的 QANet,由于模型有令人满意的训练速度,作者们得以手脚,使用数据增强技术对原始数据集进行了扩充,大大方方用更多数据训练了模型。
具体来说,他们把英文原文用现有的神经机器翻译器翻译成另一种语言(QANet 使用的是法语)之后再翻译回英语。这个过程相当于对样本进行了改写,这样使得训练样本的数量大大增加,句式更加丰富。
图 4: 数据增强示例。k 为 beam width,即 NMT 系统产生的译文规模。
读罢上文,你可能惊叹于「卷积+自注意力机制」的神奇效果,即便考虑到更多训练数据的帮助,也仍然可以直接挑战使用已久的 RNN 模型。「卷积」是大多数深度学习的研究者十分熟悉的概念,它用于提取局部的特征。那么,自注意力(self-atteition)机制又是何方神圣呢?它在 QANet 中起到了什么关键性的作用?
要想弄清 self-attetion 机制,就不得不从 attention 机制的原理谈起,因为 self-attention 顾名思义,可以看作attention 机制的一种内部形式的特例。
图 5: attention 机制原理示意图
我们可以将原句中的每一个单词看作一个 <Key,Value> 数据对,即原句可表示为一系列 <Key,Value> 数据对的组合。这时我们要通过计算 Query 和 每一个 Key 的相似性,得到每个 Key 对应的 Value 的权重,再对 Value 进行加权求和,得到 Attention 值。这个过程在于模拟人在看图片或者阅读文章时,由于先验信息和任务目标不同,我们对于文本的不同部分关注程度存在差异。例如:在语句「Father hits me!」中,如果我们关心的是「谁打了我?」那么,Father 的权重应该就要较高。这种机制有利于我们从大量的信息中筛选出有用的部分,而过滤掉对我们的任务不重要的部分,从而提高了模型的效率和准确率。
而区别于一般的编码器-解码器结构中使用的 Attention model(输入和输出的内容不同),self attention 机制并不是输入和输出之间的 attention 机制,而是输入内部的单词或者输出内部单词之间的 attention 机制。Self-attention即K=V=Q,在 QANet 中,作者使得原文中每一对单词的相互作用都能够被刻画出来,捕获整篇文章的内部结构。
使用 self-attention 有以下好处:
(1)在并行方面,self-attention 和 CNN一样不依赖于前一时刻的计算,可以很好的并行,优于RNN。
(2)在长距离依赖上,由于 self-attention 是每个词和所有词都要计算 attention,所以不管他们中间有多长距离,最大的路径长度也都只是 1。可以高效捕获长距离依赖关系。
图6: self-attention 机制示意图
因此,在使用了 self-attention 机制之后,模型可以对单词进行并行化处理,大大提高了运行效率;使得模型能够使用更多数据进行训练,可以捕获长距离的依赖关系,也从另一个方面提升了模型的准确率。
问答系统发展的浪潮方兴未艾,当您阅读到本文时,不知 SQuAD 榜单上的名次是否又发生了变化。笔者在本文中和大家一起温习了问答系统的概念,回顾了其发展历史,说明了 SQuAD 数据集对于问答系统学科发展的重大意义,并且向大家介绍了目前得分最高的 QANet 系统的设计框架,分析了其使用 self-attention 机制的重要作用。事实上,能在 SQuAD 榜单上占有一席之地的模型都有其值得我们大家学习借鉴的地方,笔者这里之所以着重分析 QANet,是因为它是第一个利用「卷积+self-attention」机制代替其他模型广泛使用的 RNN 网络的问答系统模型。它并不依赖于 RNN 的递归训练来提升模型性能,反而另辟蹊径,通过较为简单的网络组建节省了计算开销,使得我们使用更多的数据进行训练成为了可能,从而使模型的性能得到了质的飞跃。此外,他们设计的数据增强方法也十分巧妙,并取得了很好的效果。可见,人工智能研究之路本是「八仙过海,各显神通」,广大研究者们还需开阔思路,不囿于前人的思维定式,方可曲线突围!
论文地址:https://openreview.net/forum?id=B14TlG-RW
雷锋网 AI 科技评论报道