时间:2024-05-04
徐鹏飞 李晓戈
(西安邮电大学计算机学院 西安 710061)
自然语言处理(Natural Language Processing,NLP)[1]的目标就是让计算机能够阅读、处理文本,并且理解文本的内在含义。通常测试机器阅读水平的方法是在给定一篇文本或相关内容(事实)的基础上,要求机器根据文本中的上下文内容,对相应的问题作出回答,类似于英语考试里的阅读理解问题。这类任务通常被称作机器阅读理解[2~3]。试想一下如果机器真的具备了一定水准的阅读理解能力之后,那么在人工智能领域里将会产生难以想象的变革,比如搜索引擎[4]会在真正理解使用者搜索内容的基础上去回答用户的问题,而不是目前大部分以关键词匹配的方式来回应使用者,这对于搜索引擎来说应该是个颠覆性的突破,此外,聊天机器人或者说自动问答系统[5]如果换个角度来看,其实也能够看做是一种特殊的阅读理解问题,其他很多领域也是如此,所以机器学会阅读将是人工智能在处理和理解人类语言进程中一个里程碑式的事件。
所以,作为自然语言处理中的核心任务,机器阅读理解在研究领域占得比重越来越多,特别随着深度学习在自然语言处理领域里的广泛应用[6~7]以后,各种大规模阅读理解数据集纷纷出现,2015年,deepmind[8]发布了首个大规模阅读理解数据集CNN/Daily Mail,该数据集是根据CNN新闻语料构建的完形填空类型的数据集,随后,Fair[9]从儿童故事书中也构建了一个数据集CBT,该数据集也是完型填空类型。然而,完型填空这种限定条件的问答形式基本无法应用于实际。2016年,在emnlp会议上Rajpurkar等[10]提出了SQuAD数据集,这是首个大规模文本段类型的问答数据集。在给定文档D,给定问题Q的情况下,答案A是D中的一个文本段。
本文的数据集在数据集选择方面选择了近三年的对外汉语初级考试的听力部分,经过人工清洗整理后,由上下文、问题、答案三部分组成,其中问题是针对上下文提出的,答案为上下文中的某一段。本文在模型的构建方面,针对中文阅读理解,首先搭建了一个基本模型,并在基础模型上选择使用带有语义信息的词向量作为输入,采用能够学习长期依赖信息的双向长短时记忆网络来用作对上下文和问题间关系的嵌入及解析,中间层添加了注意力机制分析上下文中的哪些文本段对回答问题更有帮助。最后进行了两方面的实验分析,一是分析模型的每一部分对模型性能的影响,二是分析模型在不同的问题类型上的实验结果。
word2vec[11~12]也称为 word embeddings[13],中文名为“词向量”,它的作用是将NLP中的字词转为计算机可以理解的稠密向量(Dense Vector)。在word2vec出现之前,自然语言处理经常把字词转为离散的单独的符号,也就是One-Hot向量,但是One-Hot向量之间是相互独立的,即使是同义词也没有相互关联的关系,而且One-Hot向量的维度大小取决于数据集中字词的大小,如果数据集较大,就会造成One-Hot向量组成的矩阵太过稀疏,计算速度非常缓慢。word2vec可以将One-Hot向量转化为低维度的连续值,也就是稠密向量,并且其中意思相近的词将被映射到向量空间中相近的位置。
循环神经网络(Recurrent Neural Network,RNN)[14~15]已被广泛应用在处理可变长度的序列输入,在输入序列中,相对长远的信息会被存储在一个递归隐藏向量中,这个向量的产生又依赖于前一个隐藏向量。长短时记忆网络(Long Short Term Memory,LSTM)[16]是一种特殊形式的循环神经网络(RNN)。LSTM神经网络可以学习上下文的长期依赖信息,并且能够有效避免梯度消失问题。LSTM对RNN中内部神经元结构进行更改,它的记忆单元结构图如图1所示。给定一个文本输入序列 X={x1,x2…xn},其中 xt是文本中一个高维词向量,输出的隐藏向量ht在t时刻的表示如下:
图1 LSTM记忆单元结构图
在LSTM的记忆单元结构图中,LSTM有三种门来保护和控制细胞状态,分别是输入门i、遗忘门f和输出门o,另外还有一个细胞记忆向量c。σ是一个sigmoid函数,输入门可以决定输入向量xt如何改变存储细胞单元的状态。输出门可以允许存储细胞单元对输出产生影响。最后,遗忘门允许细胞单元记住或忘记它原来的状态。整体模型结构图如图2所示。
图2 LSTM模型结构图
单向的LSTM有一个缺点就是后续的输入向量序列不能很好地利用到上下文信息,例如,“我突然感到不舒服,我打算__半小时。”只根据“不舒服”,可能会推断出“我打算”后面的词可能是“休息”,“请假”,“去下医院”等等,这是从正向的输入信息推理出来的,但是如果再加上从反方向的输入信息,就能根据“半小时”推断出“休息”这个选项的概率更大一点,而“去下医院”这个选项的概率就比较小了。于是这就产生了双向的LSTM(Bidirec⁃tional Long Short-Term Memory,Bi-LSTM)[17]。Bi-LSTM通过从两个方向处理前后的输入向量序列,并且产生两个互相独立的LSTM输出向量序列,一个是处理在正向上的输入向量序列,另一个是处理反向输入。每一个时刻的输出都是这两个正反方向的输出向量链接而成的向量。双向LSTM的结构图如图3所示。
图3 Bi-LSTM模型结构图
注意力是一个用来分配有限的信息处理能力的选择机制。想象一个人在参加一个酒会,身边有人低语,有人高谈阔论,偶有玻璃碰杯声音,远处还有乐队在演奏。在这么嘈杂的环境中,这个人依旧能够听到身边的朋友在说什么。这不仅仅是因为离得近,更重要的是,这个人将注意力集中在了对他而言感兴趣的对象身上。注意力对人来说就是把有效的认知资源都用于在一堆嘈杂的信息中,寻找、分析对自己有用的东西。
注意力机制[18]在自然语言处理的任务中作用主要体现在对文本语义的抽取,本文使用了双向的注意力机制来提高上下文与答案之间交互信息的分析,便于找出答案在上下文中的起始与结束。本文的注意力计算是通过一个相似度矩阵来完成的,相似度矩阵里存放的是数据集里所有词向量之间的相似度,具体算法在下面模型架构中介绍。
本文搭建的模型共分为五层,分别是词嵌入层、关系嵌入层、注意力层、解析层和输出层,其模型结构如图4所示。
图4 模型框架图
该层主要负责把上下文和问题的每个字或词映射到一个高维的的向量空间,获得每个字或词的向量表示,使用C={x1,x2…xT}作为数据集中上下文的向量表示,使用Q={q1,q2…qJ}作为数据集中问题的向量表示,本文获取向量表示的方式使用了word2vec的方式。该层的输出是两个独立的向量序列或者说是向量矩阵,分别是C∈Rd×T代表上下文的向量矩阵,Q∈Rd×J代表问题的向量矩阵,其中,d表示向量的纬度,T表示上下文的最大长度,J表示问题的最大长度。
该层使用了双向的LSTM网络接收上一层传递过来的词向量,并对词向量之间的时序关系和词序关系进行建模,把经过两个方向LSTM得到的向量矩阵跨行串联得到两个向量矩阵,H∈R2d×T代表上下文向量矩阵,U∈R2d×J代表问题向量矩阵。前两层的主要目的是为了特征的提取和计算。
注意力层的主要目的在于找出上下文和问题间的有效的交互信息,也就是与问题有关的信息在上下文中的体现,也就是位置,注意力的计算是通过一个相似度矩阵S得到的:
其中H:i表示上下文向量矩阵H中的第i列也就是上下文中的第i个词的词向量表示,U:j表示问题向量矩阵U中的第j列也就是问题中的第j个词的词向量表示,Sij表示第i个上下文中词的词向量和第j个问题中词的词向量之间的相似度也就是注意力权重,α是一个可被训练的常量函数,它的公式为
wS是一个可训练的权重向量矩阵且w∈R6d,⊙表示把两个向量的各个分量依次相乘也就是向量的元素积,[;]表示把前后两个向量以行的方向进行拼接,后面需要计算的相似度就是由此公式得到的。
将问题中每个词与上下文中的一个词计算相似度,用ai表示上下文中第i个词的问题的注意力权重,对它进行softmax归一化,使aij表示相对于上下文中的第i个词,问题里的第j个词的注意力权重也就是上下文中的第i个词和问题里的第j个词的相似度。针对问题的注意力权重的计算是通过ai=soft max(Si:)∈RJ得到的,由
得到对于上下文中的第i个词,问题的注意力加权向量之和U͂:i。总共经过T次注意力计算后得到问题的带有注意力加权的向量矩阵U͂∈R2d×T。
接下来将关系嵌入层的输出和注意力层的输出上下拼接起来,形成向量矩阵G,G的每一列都包含两个部分:H:t,U͂:t,由此定义G的公式为
其中,G:t是G的第t列的列向量,对应上下文中的第t个字,β是一个可被训练的向量函数将其两个输入向量进行导入,dG表示函数β输出的向量维度,在实验里,把β定义为一个多层感知机,它的优点在于只需简单的拼接就能表现出优秀的性能,所以定义β的公式为
解析层是由双向LSTM(Bi-LSTM)组成的,输入进解析层的是注意力层的输出G,G里包含了基于问题的上下文查询感知向量,解析层与关系嵌入层都使用了Bi-LSTM,但是解析层的输出能获取得到基于问题的上下文词与词之间的交互信息(如时序语序等等),而关系嵌入层获取的只是与问题无关的上下文的交互信息。上层的输出G第一次通过解析层Bi-LSTM得到一个向量矩阵M1∈R2d×T,由 M1通过再次循环进入Bi-LSTM得到M2∈R2d×T,M1和M2的每个列向量都将包含关于整个上下文段落和待查询问题的词的上下文信息。
输出层接收传递而来的M1和M2来做答案的预测,预测的答案则是存在于上下文中的一个子短语,这个短语是通过预测上下文中短语的起始索引和结束索引得到的,通过公式:
得到整个上下文中答案起始索引的概率分布,公式
可计算出整个上下文中答案结束索引的概率分布,其中wp1∈R8d和wp2∈R8d是可训练的权重向量。
将训练函数定义为答案真实的开始索引和结束索引的负对数概率之和,在所有的训练样本中都是平均的,即:
其中,θ是模型的权重参数集合,包括卷积核的权重和偏置,LSTM细胞单元以及;N是数据集的实例数;分别是训练样本i中答案的真实起始索引和结束索引。
我们使用jieba分词器对所有上下文及问题进行分词[19],并且在尝试了将词嵌入(word embed⁃ding)的维度从100维提升到200维的实验中,对实验结果几乎没有提升,所以最后将词嵌入纬度设置为100维,同时卷积核的大小也设置为100×5,实验使用AdaDelta优化器对损失函数进行优化,mini⁃batch设置为 60,初始学习速率(learning rate)为0.4,学习速率衰减为0.999,dropout速率设置为0.3,作用在在CNN、所有LSTM层以及在softmax之前的所有线性变换中,最大的问题长度为20,最大上下文长度为100,选择在测试数据集上性能较好的一组参数作为训练模型参数的输出。
本文使用的数据集来源于历年对外汉语初级听力考试中的听力原文、问题和答案,经过整理后,共968个样本(其中训练样本808个,测试样本80个,模型评估样本80个),每个样本分为三个部分,第一部分为上下文Context,第二部分为问题Q,第三部分为答案A,样本结构如下例所示。
例:{Context:[“泰莎·沃尔图是一位加拿大著名的冰舞选手。她与搭档斯科特·莫伊尔一起,拿下了2010年温哥华冬奥会的冰舞冠军,成为史上最年轻的冬奥会冰舞冠军。同时她还是2010年、2012年的冰舞世界冠军,2006年的世青赛冰舞冠军。”],Q:[“泰莎·沃尔图来自哪个国家??”],A:[“加拿大”]}
本文在进行中文机器阅读理解性能的评估中,评价指标分别为答案匹配度,准确率,召回率和综合评价指标F1值。
匹配度,准确率,召回率及F1值的具体计算公式如下:
本次实验中首先搭建了一个基础模型(Base Line,BL),基础模型是以一层双向LSTM做输入层,该输入层是以One-Hot的方式将上下文和问题映射为高维向量作为输入,而后直接使用一个双向LSTM做循环解析,再由输出层得到答案的起止范围,所以基础模型的架构可以概括为BL+One-Hot。基础模型在本文的数据集上达到的匹配度和F1分别是33.576%和44.107%。之后在基础模型的基础上,使用word2vec取代One-Hot给模型加入了分词级的词嵌入,使模型的F1值提升了9.55%,这是因为One-Hot仅仅是将词符号化,而不包括任何语义信息,所有的词之间的距离都是相同的,但word2vec不一样,它能根据上下文的关系来定义词的向量,关联度较高的词距离较近,从信息论的角度来说,word2vec具有更强的信息表现能力,能更好的表现数据的内在特征。而后我们在此处的基础上给模型添加了注意力层,这对模型的性能提升更加明显,使模型的F1增加了11.636%,从功能性上来讲注意力主要分析的是对于每一个上下文中的词,问题中哪个词与它最相近,最后得到带有注意力加权的向量矩阵,该矩阵的每一列都能表达问题对于上下文中每个词的注意力权重,对于注意力权重值较高的词来说,这是回答问题的侧重点,所以注意力层的加入在针对上下文回答问题时对模型的提升起到了很重要的作用。
图5 不同模型组成对实验结果的影响
将数据集所有样本整理分类后,分为了六个种类,分别为人物类、地点类、数字类、时间类、实体类、描述类,如表1所示。
表1 数据集分类
图6是注意力模型在不同问题类型上的实验结果,可以看出,整个模型对于回答时间类问题效果最好,对于回答描述类问题效果最差,究其原因,首先,时间类的问题答案都相对较短,注意力层在分析该类问题并计算注意力分布时,发现注意力的分布较为明确,注意力权重较高的向量都比较集中在某个短语段上,这也就使得通过注意力层输出的向量在解析层被解析出来的结果作为正确答案的概率更高。而描述类问题的答案往往较长且比较分散,可能需对上下文进行一定的推理才能得到结果,这使得在计算注意力分布的时候,权重较高的向量不能集中在某些个短语段上,这导致解析层在解析注意力层输出的向量时,不能得到很好的结果。所以由此可以看出,注意力对需要推理或答案分布较长的问题回答效果没有达到理想中的效果。
图6 注意力模型在不同问题类型上的实验结果
本文针对中文机器阅读,搭建了一种基于注意力机制的神经网络模型,该模型共有五层,第一层使用word2vec做词嵌入,第二层使用一个双向的LSTM做上下文关系的嵌入,第三层引入注意力机制,形成注意力矩阵,为问答问题提供了有效的帮助,第四层通过对由原始向量和注意力向量形成的矩阵进行解析,分析答案的开始和结束在上下文位置的概率,由第五层通过判断找出问题的答案。该模型在中文阅读理解中最终达到了65.253%的F1和53.154%的EM。
虽然本文的模型能够在机器阅读理解里比较好的理解文章的语义,不过对于需要根据上下文进行推理或者要求对上下文进行总结概括的问题还有很多不足之处,以后的工作将考虑采用神经模块网络(Neural Module Network,NMN)[20~21]的方法让神经网络实现动态推理。
我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自各大过期杂志,内容仅供学习参考,不准确地方联系删除处理!