一种基于强化学习的问句和答案句相关度的计算方法与流程

文档序号:16209091发布日期:2018-12-08 07:30阅读:397来源:国知局
一种基于强化学习的问句和答案句相关度的计算方法与流程

本发明涉及问答系统(questionanswering,qa)及强化学习(reinforcementlearning,rl)的技术领域,尤其是一种基于强化学习的问句和答案句相关度的计算方法。

背景技术

信息时代的到来与信息技术的飞速发展使得问答系统受到了广泛的关注与应用。问答系统旨在依据其所具备的知识信息,尝试回答用户提出的新的问题。国内外常见的社区问答网站,如answers.com,yahoo!answers和百度知道等,已经积累了丰富多样的问句和答案句语料。问答系统中最主要的问题,便是如何在这些语料中找到与用户所提出问题最相关的问句答案对(questionanswerpair)。最直接的方法便是在语料中寻找与用户问题最相似的问句,并将该问句的答案返回给用户,由此衍生出了很多问句间相似度的计算方法。这样做的好处是简单、快捷;然而,由于答案句没有经过分析和处理,其中可能包含未能被检查出来的无关信息和冗余信息,用户可能不甚满意。继而,研究内容开始围绕着计算用户问句与知识库中问答对之间的相关度展开,特别地,如何通过较为精确地评价答案句是否能够回答用户问句,即计算问句和答案句之间的相关度得分,成为了研究热点。

随着神经网络和深度学习模型在各大领域中崭露锋芒,国内外诸多学者纷纷开始利用这一技术解决上述问题,并在相关的研究中发表了许多论文和期刊。bingningwang等人和diwang等人就利用长短期记忆(long-shorttermmemory,lstm)网络,结合注意力(attention)机制对问句和答案句之间的相关性进行建模。seunghyunyoon等人则是将之看做是对答案的排序问题,通过多层循环神经网络(hierarchicalrecurrentneuralnetworks)和潜在主题聚类(latenttopicclustering)对问句和答案句进行联合表示,并在模型训练的过程中使用了pairwise的损失函数,取得了不错的效果。

这些方法都直接对整个问句与整个答案句进行处理,因此得到的句子信息局限在了整个句子层面,而句子中的无关信息和冗余信息没有被很好地过滤和处理,会影响到相关度计算的准确性和系统的性能。此外,模型所使用的pairwise损失函数计算的是每两个结果之间的误差,不能很好地反映整个排序结果的误差,具体体现在:(1).排名高的答案应该比排名低的答案更加重要,因此排名高的答案出现错误时产生的损失应该比排名低的答案出现错误时产生的损失更加高,而pairwise损失函数则赋予了所有错误一样的权重;(2).使用pairwise损失函数时,构造的答案对的数量会随着相关答案集规模的增大而显著增加,因而这部分数据产生的损失在整体损失中占了很大部分的比例,由此训练结果会偏向于相关答案集规模大的问题。



技术实现要素:

针对上述不足,本发明的目的是提出一种基于强化学习的问句和答案句相关度的计算方法,通过引入强化学习这一机制,使得模型能够有选择性地对句子进行表示。具体地说,在传统神经网络模型的基础上,加入了强化学习的部分,在对句子进行表示时,对句子中的词进行筛选操作。为此,定义行为(action)空间是{保留,删除},分别表示句子中的每个词需要/不需要用于整个句子的表示中。通过这种方式,可以将句子中的无关信息从句子的表示中除去,进而能够计算得到更精确的相关度值。此外,采用关注全局差异的listwise损失函数代替传统的pairwise损失函数,能够更加有效地对模型进行训练,使得得到的相关度值更加准确。

实现本发明目的的具体技术方案是:

一种基于强化学习的问句和答案句相关度的计算方法,该方法包括以下具体步骤:

步骤1:从问答网站上爬取问答对数据,获得平行语料,即用于模型训练的源训练预料和用于检验效果的目标语料;

步骤2:通过神经网络框架训练平行语料,得到相关度计算模型,具体包括:a1:对源训练语料中词序列的文本进行词向量编码,得到源训练语料中词的高纬度向量化表示;

a2:将向量化表示的源训练语料作为输入,放入神经网络框架中,获取问句和答案句的相关度得分;其中,对问句的表示采用长短期记忆网络(lstm),将最后的隐含状态作为整个问句的表示;答案句表示所使用的网络则分为两个部分:演员(actor)网络和评论家(critic)网络;演员网络为长短期记忆网络,其目的是对答案句中每个词采样一个行为,行为空间是{保留、删除};演员网络通过获取隐含状态序列,并为每个状态选择行为,得到真实的输入序列;评论家网络为长短期记忆网络,其目的是计算问句和答案句的相关度得分;评论家网络与演员网络共享参数,对演员网络输出的真实的输入序列编码,得到最终的隐含状态;设置线性层,得到问答句相关度得分;

a3:构造listwise损失函数,并训练步骤1中平行语料得到相关度计算模型;首先对评论家网络进行预训练,接着对演员网络进行预训练,之后交替训练这两个网络,直到模型收敛或达到最大训练次数为止;

步骤3:利用步骤2所得模型计算问句和每个候选答案句之间的相关度,选取相关度值最大的候选答案作为最终的回答。

与现有技术相比,本发明有以下优点:

1)在问句和答案句相关度计算的模型中引入了强化学习这一机制,在问句和答案句表示的过程中加入了选词的操作,使得问答句表示中包含的信息更加精炼,并且能够提升问句和答案句相关度计算的准确度。

2)在模型训练的过程中,采用learningtorank模式下listwise的损失函数,并将其作为奖励值的主要组成部分,使得反馈的奖励值能够反映出更加真实的情况,进而强化学习能够更有目的性地进行训练。

附图说明

图1为本发明实施例问句和答案句相关度计算模型结构示意图。

具体实施方式

为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施例对本发明进一步详细的描述。

本发明提供了一种基于强化学习的问句和答案句相关度的计算方法,通过该方法,只要预先准备好相关问答数据集,即可自动的获取平行语料且完成模型训练,通过训练得到的模型,即可在给定问题和其对应的候选答案集中选择出最恰当的答案。

本发明在不同的环境下都可以完成配置预测,可应用于终端或者服务器等装置的应用环境中。

本发明将答案选取的问题转换为问答句分类的问题,即将问答语料转换成平行语料,并通过基于平行语料训练得到的神经网络模型处理答案选取问题。通过词向量表示平行语料中的词汇,词向量之间的距离可以来表征词汇之间的语义距离,这样可以将词汇对应的众多上下文向量参与到神经网络模型的训练。

本实施例包括以下具体步骤:

1、获得平行语料的方法

获得平行语料,即构建问答对的平行语料,问答对可以从问答网站,中文如百度知道,英文如answers.com等进行抓取。需要抓取的内容有,问句文本,候选答案句集和其对应的排名。

2、参阅图1,通过神经网络框架训练平行语料,以得到相关度计算模型,之后使用该模型进行答案选取,其中平行语料包括:源训练语料和目标语料。

1).通过对源训练语料中词序列的文本进行词向量编码,以得到源训练语料的高纬度的向量化表示。具体做法为,对得到的文本序列分词后的词序列,同时生成对应词袋——词序列中不同词的集合。运用word2vec技术,对中文数据集训练词向量模型,使词袋中的词通过词向量模型得到唯一的向量表示,实施例中词向量维度设定为200维。

2).利用lstm分别对问句和答案句进行表示;其中,直接使用了lstm对问句进行表示,如下所示:

ft=σ(wf·[ht-1,xt]+bf)

it=σ(wi·[ht-1,xt]+bi)

ot=σ(wo·[ht-1,xt]+bo)

ht=ot*tanh(ct)

其中,ft和it代表遗忘门和输入门,表示t时刻时应该从上一个状态中保留多少信息,从当前状态中获取多少信息;ct表示t时刻lstm中cell的状态;ot代表输出门;ht表示t时刻状态的输出,xt表示t时刻输入的词,[,]表示联结操作。σ和tanh均为激活函数,wf,wi,wc,wo和bf,bi,bc,bo均为参数。

对答案句进行表示时,使用了两个网络:演员网络和评论家网络。其中,演员网络为长短期记忆网络,其目的是对答案句中每个词采样一个行为,行为空间是{保留、删除}。演员网络中引入了强化学习的策略参数θ,结合lstm的当前隐藏层状态和当前词的表示,在行为空间中做出合适的选择:

p(at|ht-1,xt)=σ(θ*[ht-1,xt])

其中,ht表示t时刻lstm的隐藏状态,xt表示t时刻输入的词,[,]表示联结操作,θ表示策略参数,σ表示激活函数,at表示t时刻所选择的行为,行为的空间为{保留,删除}。

评论家网络为长短期记忆网络,其目的是计算问句和答案句的相关度得分;评论家网络与演员网络共享参数,对演员网络输出的真实的输入序列进行编码,以得到最终的答案句的表示。之后,利用注意力机制,使问句和答案句之间产生信息交互,以得到加强的表示。

首先,根据问句和答案句的交互信息,为答案句中的每个词计算权重,并将其用来强化答案句的表示,即

e(ai,q)=(ai·wa+q·wq+b)vt

α=[α1,α2,α2,…,αn]

a′=αta

其中,ai∈r1×h表示答案句中每个词的隐藏状态,q∈r1×h表示问句最后一个状态的输出,wa,wq∈rh×h,b∈r1×h和v∈r1×h是参数,n是问句的长度,e(ai,q)计算答案中的每个词和问句之间的相关度,之后通过softmax操作得到答案中每个词的权重αi。最后,将所有词权重的值α∈r1×n与答案表示相乘得到最终答案的表示a′。类似的,得到问句的表示q′,

e(qi,a)=(qi·wq′+a·wa′+b′)v′t

β=[β1,β2,β3,…,βm]

q′=βtq

其中,w′q,w′a∈rh×h,b′∈r1×h和v′∈r1×h是参数,m是答案句的长度。之后,通过一个线性层,计算最后的相关度得分,并利用sigmoid进行归一化。

s(q′,a′)=σ(w1q;+w2a′)

其中,w1和w2是模型参数,σ表示sigmoid激活函数。

3).在得到每个答案的得分后,计算listwise的损失函数。

其中py(j)表示在得分分布为y的情况下,第j个样本的排名为第一的概率。该值反映了标准得分分布和计算得分分布之间的差异。通过梯度下降法可以更新模型网络部分的参数,同时将该值取负作为奖励函数的主体部分。

此外,在奖励函数中加入了一个约束项,以控制保留的词的个数,最终得到的奖励如下,

其中,l′和l分别表示经过删减操作后句子的长度和原始句子的长度,β是控制两个部分权重的参数。

最后,通过策略梯度方法,求出θ的梯度,并更新策略参数θ:

需要说明的是,对于具体方法步骤,为了简单描述清楚,因此将其表述为顺序执行的任务,但本发明实施例并不受描述顺序限制,某些步骤可以顺寻或同时进行。

以上对本发明所提供对问答句相关度计算的方法,进行了详细介绍,本文中应用了具体实施例对本发明的原理及实施方式进行了阐述,实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。

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