一种基于端到端记忆网络的问答方法与流程

文档序号:15615650发布日期:2018-10-09 21:18阅读:983来源:国知局

本发明涉及自然语言处理领域和端到端记忆网络(end-to-endmemorynetworks),具体是一种基于端到端记忆网络的问答方法。



背景技术:

2011年,ibm因为推出名为watson的计算机而受到广泛关注,watson被设计用来回答游戏节目jeopardy上的问题,它的表现非常好,足以和最好的玩家相匹敌。想让watson跟最好的玩家竞争,需要集成大量的知识,而且需要用到很多自然语言处理领域最好的研究成果和大量的人工智能技术。从此,问答系统(question-answersystem,qasystem)便获得了广大研究者的广泛关注。

传统的问答系统是人工智能领域的一个应用,通常局限于一个非常狭窄的领域,虽然精巧,但大多由人工编制的知识库加上一个自然语言接口形成,本质上都属于受限于实验室的玩具系统(toysystem)。随着互联网的发展以及搜索引擎的普及,一些具有商业应用价值的开放式问答系统应运而生。目前开放式问答系统主要分为两类:基于信息检索(informationretrievalbased)的系统和基于语义分析(semanticparsingbased)的系统。基于信息检索的系统首先将问题转化为有效的查询,然后获取大量的候选答案,再通过对候选答案进行打分排序,得到最后的答案;而基于语义分析的系统更侧重于通过语义分析系统来获取问题的精准释义,然后从知识库中获取正确答案。随着深度学习的发展,研究者们开始探索如何实现一种端到端训练的问答系统模型。2015年,facebook人工智能实验室提出一种新颖的基于循环神经网络和外部存储块的端到端问答系统模型(memn2n),与传统的问答系统模型相比,该模型在训练阶段降低了监督粒度的要求,从而使得memn2n能够更容易地应用到实际任务中。

人工智能领域,创建模型一直面临着两大难题:一是模型能够在回答问题或者完成任务时提供多个计算步骤;二是模型能够描述序列数据中长期依赖关系。注意力机制(attentionmechanism)是解决上述问题的一个有效方法,并在图像识别领域得到了广泛的应用。但是直到最近,该机制才开始被用于自然语言处理领域的一些任务。注意力机制是效仿人类视觉,即人类视线会专注于某一区域,这一区域的图像呈现“高分辨率”而该区域周围呈现“低分辨率”。注意力机制在确定“attention”时需要计算每个输入和输出之间的相关度,通过比较这些相关度数据(模型的内部状态)选择“attention”。因此注意力的实现实际上更类似于内存访问,而不是“attention”。但是这种内存访问不同于传统的内存访问,注意力机制访问的是所有计算单元以及他们的权重因子,而不是一个内存单元中的数据。相对于上述注意力机制,记忆机制(memorymechanism)则可以追溯到更早的工作中,一个标准的循环神经网络的隐藏层状态就是一种记忆机制。循环神经网络存在梯度流失的问题,该问题会进一步妨碍循环神经网络学习和获取数据的长期依赖关系。后来,hochreiter等人引入门机制(gatingmechanism)来改进上述循环神经网络。门机制是一种让信息选择式通过的方法,允许显示内存删除或更新网络内部状态。最近,研究者们提出越来越复杂的记忆机制,比如文章中提出的一种端到端记忆网络(end-to-endmemorynetworks)。该模型是一种新颖的循环神经网络结构,它能够在一定程度上有效地解决上述问题。该模型在输出信号之前允许网络循环多次的在一块足够大的内存中进行读写操作,并且每次访问内存操作都会更新内存单元的内容。该模型的参数一旦通过某种特定的方式进行设置后,模型采用的记忆机制就演变为注意力机制。该模型是对文章中提出的记忆神经网络(memoryneuralnetwork,memnn)的一种变体,即各模块之间是连续的,本发明后面的内容都简称该模型为memn2n模型。

memn2n是rnnsearch模型的一个扩展版本,memn2n在得到输出信号前会经过多层计算单元,下文中本发明将每一层的计算称为一个hop。memn2n的输入为一个离散的集合x(x1,…,xn)和一个查询或者问题q,最后输出答案a。xi,q以及a中每个符号都来自同一个包含v个词的字典,memn2n会把每个xi写入到固定大小的内存,然后将x和q通过一些方法转换为一个特殊的连续空间中的连续表示(continuousrepresentation),这样在训练后期即可应用bp算法进行反向调优,模型的整体结构如图1所示。memn2n能够灵活地增加模型的计算单元(hop),实验结果表明,增加模型的计算单元可以提高模型的整体性能。memn2n模型每层的计算单元结构都是一致的,区别在于每层的模型参数不同,图1(a)展示的是仅包含一层计算单元(onehop)的情况,主要包含以下几个模块:

1.输入内存表示(inputmemoryrepresentation)。

memn2n首先将输入集合x=(x1,…,xn)存入内存中,其中x1,…,xn代表本发明中涉及的句子,并且将集合中的每个{xi}都转换为内存向量{mi}。每个{mi}都是对应的{xi}在一个连续空间经过转换而来的d维向量,最简单的转换方式就是通过一个d×v维的转换矩阵a。对于查询q,memn2n采用类似的转换方式。另外,通过一个与a维度相同的转换矩阵b,得到句子的词向量u,然后就可以转换后的空间中通过内积度量每个mi和u之间的相关度,最后通过公式1将该内积度量转换为概率形式。

pi=softmax(utmi)(1)

其中,

2.输出内存表示(outputmemoryrepresentation)。

和上面输入向量的转换类似,这里也通过一个转换矩阵c(与a,b的维度相同)来得到{xi}的对应的输出向量,表示为{ci}。最终模型的响应向量(responsevector)o是对输入ci的加权求和,如公式2所示,其中pi来自输入内存表示模块。

o=∑ipici(2)

直观上看,输入内存表示到输出内存表示的过程是连续的,因此可以用bp算法来对整个模型进行训练。

3.生成最后的预测值(generatingthefinalprediction)。

对于只有一层计算单元的模型,memn2n首先将响应向量o和查询的内部表示u进行加和,然后再将一个维度与上述转换矩阵一致的加权矩阵w来作用该加和结果,最后通过softmax计算出最后的预测标签,计算公式如下:

本发明可以通过叠加计算单元来进一步增强模型的性能,如图1(b)所示。这里展示的一个包含三层(threehops)计算单元的模型,其中,叠加计算单元的算法流程如下:

(1)模型每一层计算单元的的输入都是基于上一层的输入ik和输出ok

ik+1=ok+ik(4)

(2)每一层的计算单元都有自己的转换矩阵ak,而bk用来转换输入x中的每个{xi}。为了方便训练,减少训练参数,memn2n提供了两种方式来对这些矩阵进行约束:1)adjacent方式。每一层计算单元的输出内存表示对应的转换矩阵等于上一层输入内存表示的转换矩阵,

ak+1=ck(5)

而对于生成最终预测的加权矩阵w,本发明将其设置为与最上层计算单元的输出内存表示的转换矩阵相等

wt=ck(6)

同时查询(或者问题)q的转换矩阵等于第一层计算单元的输入内存表示的转换矩阵,即

b=a1(7)

2)layer-wise(rnn-like)。各层的输入内存表示和输出内存表示的转换矩阵均相等,即

a1=a2=…=ak(8)

c1=c2=…=ck(9)

(3)最后,输出memn2n的最顶层:

memn2n模型的输入通过神经网络传播,得到最终的输出标签。模型内部数据流动的过程是连续平滑的,并采用bp算法进行训练。模型中的转换矩阵a,b,c和w等参数都是通过联合学习得到的。

memn2n模型的attention机制计算方法和对句子的编码方式都存在着一定改进的空间。attention机制中只是简单的通过把句子中每个单词词向量叠加在一起形成句子向量然后计算了句子之间的相似度,这样会损失掉很多句子内部单词与单词间的语义。其次,memn2n模型中对于句子编码是通过每个单词的位置编码与词向量相乘,虽然这种操作可以在形成句子向量时加入位置信息,但是每个单词的词性信息被丢失了,不同词性的单词会在句子中起到不同的作用。所以基于以上两点memn2n模型可以改进的技术点,提出了以下的发明。



技术实现要素:

本发明提供了一种基于端到端记忆网络的问答方法,本发明在代表当前最高水平的memn2n框架上做出了一定的改进。具体来说,memn2n是一种基于循环神经网络和外部存储块的memnn的变种,本发明深入研究了memn2n如何增加计算单元的层次以提高模型性能的机制以及如何利用外部存储块来获取序列数据的长期依赖信息的相关算法。

本发明的技术方案为:

一种基于端到端记忆网络的问答方法,其步骤包括:

1)对目标数据集进行划分,将该目标数据集中的已知事实、问题和答案分割开并存储;

2)将所述已知事实中的每个句子xi转换为词向量并存储到memory模块中;

3)将所述问题转换为词向量,计算memory中每一句子xi对应的词向量mi与所述问题的词向量的相关度,得到对应句子xi的权重值pi;

4)提取所述问题中的关键词key;在memory模块中检索包含所述关键词key的词向量,对于搜索到的每一词向量mi,计算该词向量mi中每个单词与所述关键词key的相关度,作为第j个单词的权重pij_key;该词向量mi中每个单词加权后的向量记为向量ci;

5)计算memn2n模型中每层网络的输出o=∑i(pi+pij_key*axij)*ci;其中,axij表示句子xi中第j个单词的词向量;如果memn2n模型为单层网络,则o即为memn2n模型的输出;如果memn2n模型为多层网络,则计算uk+1=ok+uk+keyn作为第k+1层的输入;其中,keyn表示第n个关键词key的词向量,ok为第k层网络的输出,uk为第k层网络的输入,uk+1为第k+1层网络的输入;

6)根据memn2n模型的最终输出作为所述问题的答案。

进一步的,所述词向量mi=∑j(lj+tj)·axij;其中,lj表示为句子xi中第j个单词的词向量位置编码,tj表示第j个单词的词性权重值。

进一步的,所述权重值pi=softmax(ut(mi-1+mi+mi+1);其中,mi-1是memory模块中存储的句子i上一句话对应的词向量,mi+1是memory中存储的句子i的下一句话对应的词向量;u为所述问题对应的词向量。

进一步的,所述权重其中,表示在词向量mi中第j个单词。

进一步的,采用卷积神经网络中的卷积操作存储memory模块中的词向量;设置卷积核为n,将每n个句子的词向量相加作为一条记录存入memory中,即

本发明将词性信息加入整个推理过程,同时还引入了利用上下文信息共同参与运算,对于语义理解进行了更深层次的挖掘。

方法一:在最初对memory中mi与查询q编码时,原论文中是根据每个单词的位置不同,利用位置编码来表示其位置信息,以便在形成句子向量时还可以表达位置信息。其编码方式为:

mi=∑jlj·axij(11)

其中axij表示在第i句话中第j个单词的词向量,lj表示为位置编码。本发明对其改进利用每个单词的词性作为该单词的权重,与位置编码作为不同的通道进行叠加,即公式表达为:

mi=∑j(lj+tj)·axij(12)

其中tj表示第j个单词的词性所占的权重值。本发明将名词、动词、形容词、副词的权重设置为1,其余词性设置为0.1。这样,在每个单词的词性作为权重与单词词向量相乘,再将句子中的每个单词加权词向量对应位置相加即可得到句向量,这个句向量不仅包含了每个词的位置信息,还包含了每个词的词性,可以表达更多信息,为后续推理等过程提供依据。

方法二:在memn2n中,其中的attention机制是计算问题与memory的相关度来体现的,其含义可以理解为计算memory中每个句子与问题有多相关,越相关的句子越可能包含问题的答案。本发明提出改进计算相关度的方法。原本相关度计算公式如公式1所示。本发明认为,在memory中存储的句子不是独立存在的,每句话与其上下文都有关联。参照卷积神经网络在自然语言处理中的应用,本发明认为卷积神经网络的卷积操作可以获取n-gram的语义特征,这符合自然语言处理的基本结构,因为文本信息存在着上下文互相依赖。尤其是在问答系统中,上下文的结合可以大大提高推理出答案的可能性,独立的一句话可能包含的信息比较少,需要结合上下文来推理。所以本发明提出,在计算相关度时,不单单使用问题与当前句子xi的词向量mi,使mi的上下文句子一同参与运算,即计算公式为:

pi=softmax(ut(mi-1+mi+mi+1)(13)

其中,ut是u向量的转置,mi-1是当前memory中存储的句子xi的上一句话对应的词向量,mi+1是当前memory中存储的句子xi的下一句话对应的词向量。本发明将上下文信息相加在一起,得到一个包含上下文语义的向量,再与问题计算相关度,计算相关度得到的值再进行归一化处理即可得到权重pi,该权重即表示mi与问题的相关度,约高则表示约相关,即上下文中包含答案的可能性越大。

方法三:memn2n是一种基于循环神经网络变种。从网络结构上,循环神经网络会记忆之前的信息,并利用之前的信息影响后面结点的输出。也就是说,循环神经网络的隐藏层之间的结点是有连接的,隐藏层的输入不仅包括输入层,还包括上一时刻隐藏层的输出。所以当涉及到连续的、与上下文相关的任务时,它比其他人造神经网络具有更大的优势。在memn2n多层网络结构中,每一层计算单元的的输入都是基于上一层的输入ik和输出ok得到的,即公式4所示。在这个计算过程中,本发明认为uk+1是上一时刻隐藏层的输出,增加问题中的关键词作为多层网络结构在高层次的输入。关键词的提取技术在下文中介绍,我们在该方法中选择的关键词提取方法是对句子进行句法分析,选择句子的主语、谓语和宾语作为问题的关键词。

ik+1=ok+ik+keyn(14)

其中keyn表示第n个关键词key的词向量,因为问题中的关键词可能不止包含一个,所以n≥1。

关键词的提取是这个改进的核心技术,传统关键词提取技术包括tf-idf、词性标注以及句法分析等。tf-idf方法的核心思想是:判断一个词在一篇文章中是否重要,一个容易想到的衡量指标就是词频,重要的词往往会在文章中多次出现。但另一方面,不是出现次数多的词就一定重要,因为有些词在各种文章中都频繁出现,那它的重要性肯定不如那些只在某篇文章中频繁出现的词重要性强。从统计学的角度,就是给予那些不常见的词以较大的权重,而减少常见词的权重。idf(逆文档频率)就是这个权重,tf则指的是词频。在tf-idf方法中,

tf=(词语在文章中出现次数)/(文章总词数)(15)

idf=log(语料库文档总数/(包含该词的文档数+1))(16)

核心公式为,

tf-idf=tf*idf(17)

词性标注和句法分析的方法就是使用现有的开源工具,例如词性标注工具(part-of-speechtagger)、句法分析器(parser)等。使用开源工具对问题句子进行分析,若使用词性标注提取关键词即可提取问题中的名词、动词等单词作为关键词。如果使用句法分析的方法则提取进行句法分析之后的问题句子中的主语和动词作为关键词。

方法四:根据问题中提取的关键词,在memory中进行检索,搜索包含关键词的mi。在mi中计算每个单词j与关键词key的相关度pij_key,

其中表示在mi中第j个单词。该权重值pij_key表达了与问题相关的句子中,每个单词的在推理过程中的重要性。如果权重值越高,则代表单词与答案越相关。所以该方法计算出的权重值可以看作是另外一种attention机制,与原有的attention计算方法想叠加。原有的attention是通过计算查询问题与memory中每句话的相似度,在计算的过程中是把查询问题和mi都压缩为一个句子向量,是通过句子中每个单词的词向量对应位置相加得到的。在这个过程中,本发明认为忽略了单词是文本的最小单元,单词与单词之间也存在着联系和相关度。所以基于这个不足,本发明提出了以上改进。

方法五:针对存储在memory的词向量,本发明可以采用卷积神经网络中的卷积操作来存储这些词向量。具体操作为如果本发明设置卷积核为3,那么将已知事实story存储在memory前先进行卷积操作,把每三个句子的词向量相加作为一条记录存入memory中,即:

如果卷积核为4,则把每四个句子的词向量相加作为一条记录存入memory中,即

存储时采用类似卷积的操作的优点是减少存储memory的空间,通过不同的卷积核大小就可以控制最终存储的空间大小,此外卷积存储还可以将句子的上下文信息整合在一个句子里面,在方法二中就提到了使用上下文信息一起计算相似度。如果采用卷积的存储memory,那么本发明就可以替代方法一来实现利用丰富的上下文信息参与运算和推理。

与现有技术相比,本发明的积极效果为:

本发明将词性信息加入整个推理过程,同时还引入了利用上下文信息共同参与运算,对于语义理解进行了更深层次的挖掘,这样在后续实现推理问答任务中可以有更好的表现。除此之外,我们还针对attention机制进行了改进,从原本计算句子与句子之间相似度作为权重值追加了一种计算单词与单词之间的相似度作为权重值的方法,本发明可以更关注句子与句子中单词间的语义关联,从而提升实问答的准确性。

附图说明

图1为end-to-endmemorynetworks网络结构示意图;

(a)包含一层计算单元结构图,(b)包含三层计算单元的结构图;

图2为本发明方法的架构图;

图3为本发明的整体流程图。

具体实施方式

整体的系统构架有四个部分组成:输入表示,输出表示,推理,生成答案,如图2所示。对于输入到系统的问题,具体流程图如图3所示。下面是本发明使用的数据集中一具体实例:

1.samwalksintothekitchen.

2.sampicksupanapple.

3.samwalksintothebedroom.

4.samdropstheapple.

5.q:whereistheapple?

6.a:bedroom.

其中1-4句是已知的事实,5句是问题,6句是答案。

根据以上介绍的实例,具体介绍本发明的实施步骤如下:

1.对facebook公开数据集babi进行划分,如上述实例,把已知的事实、问题和答案分割开并存储在数组中。

2.把已知的事实中的每句话(1-4句)对应转换为词向量方式表达并存储到memory模块中,其中涉及位置编码和词性编码,具体计算方法如公式12。

3.把数据集中的问题也通过转换变为词向量方式表示,其中涉及位置编码和词性编码,具体计算方法如公式12。

4.计算memory中每句话与问题question的相关度(计算1-4句句子分别与句子5的相似度),相关性的计算如公式13所示,得到权重值pi。

5.提取question中的关键词key(对句子5使用已有的句法分析器进行分析,选择其中的主语、谓语和宾语作为提取的关键词,此例中where,is和apple是关键词)。

6.在memory中检索包含key的词向量,在这些词向量中计算每个单词与key的相关度,计算出的pij_key作为权重与memory中包含key的词向量加权得到输出向量ci,具体计算方法如公式18(在句子1-4中检索包含句子5的关键词,如:句子2包含关键词apple,则计算句子2中每个单词与apple的相似度再归一化处理)。

7.利用步骤6中计算的输出向量ci计算每层的输出ok=∑i(pi+pij_key*axij)*ci,其中i为第i个句子,j表示第i个句子中的第j个单词。如果是单层网络即,则输出ok即为整个网络的输出,直接省略步骤8跳到步骤9。如果是多层网络结构即跳至步骤8。

8.ik+1=ok+ik+keyn作为下一层的输入进行计算。

9.根据公式10计算每个单词是正确答案的概率,选择概率最大的单词作为最终答案(本实例的答案是bedroom)并输出。

以上实施仅用以说明本发明的技术方案而非对其进行限制,本领域的普通技术人员可以对本发明的技术方案进行修改或者等同替换,而不脱离本发明的精神和范围,本发明的保护范围应以权利要求书所述为准。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1