发明内容
本发明提供了一种基于文本分类的候选段落生成及多跳问题问答方法,首先利用提示学习的思想从众多段落中快速且准确地提取出解答多跳问题所需的候选段落,然后通过提供中间跳推理器,使得每个推理步骤基于当前的支持事实,产生了更准确的问题分解,从而使得整个多跳推理过程更精确、更稳健;通过提供单跳问题生成器,利用现成的单跳问题数据集来训练一个单跳问题生成器,直接以无监督的方式生成子问题,不再需要对问题分解后进行人工标注,且避免了伪监督可能引入标签噪声的风险;另外,将用于训练单跳问题生成器的单跳问题数据集同样作为单跳问答模型训练的样本之一,使得单跳问答模型与单跳问题生成器所使用的数据更加一致,有利于提升单跳问答模型的预测性能。
为达此目的,本发明采用以下技术方案:
提供一种基于文本分类的候选段落生成及多跳问题回答方法,步骤包括:
S1,提取原始问题Q中的关键词并打上标签t;
S2,对于给定的段落文本x,使用模板函数p将x转换为语言模型M的输入p(x),p(x)在原始的所述段落文本x中增加了分类任务的提示语言,所述提示语言中包含需要预测并填写标签的掩码位置;
S3,所述语言模型M预测出填入所述掩码位置的标签m;
S4,标签转换器v将所述标签m映射为事先构建的标签体系的标签词集合V中对应的标签词v(m)作为预测得到的所述段落文本x的类型;
S5,判断所述标签词v(m)与所述标签t是否一致,
若是,则将所述段落文本x作为回答所述原始问题Q的候选段落加入到候选段落集中,
若否,则过滤掉所述段落文本x;
S6,将所述原始问题Q输入到预先训练的段落排序模型中计算得到表征所述候选段落集中的每个所述候选段落与解答所述原始问题Q具有的相关性的概率得分,然后选取得分排名前n的所述候选段落以及排名第一的所述候选段落链接的跳转段落作为解答所述原始问题Q 的相关上下文,记为C;
S7,将所述原始问题Q、相关上下文C以及前一中间跳得到的子问题-答案对(q,a)输入到以每一跳的输入输出数据为训练样本迭代更新训练的统一阅读器模型Mθ中进行中间跳答案推理,输出当前中间跳对应的子问题-答案对(q,a)和单跳支持句Sk;
S8,以最终跳的前一跳输出的子问题-答案对9q,a)、所述原始问题Q、所述相关上下文C以及预设的答案类型为所述统一阅读器模型Mθ的输入进行最终跳的答案推理,输出所述原始问题Q对应的多跳问题答案A和多跳支持句S。
作为优选,训练步骤S2中的所述语言模型M的方法步骤包括:
A1,对于作为训练样本的每个p(x),计算所述标签词集合V中的每个标签词v(m)填入所述掩码位置的概率分数sp,v(m,x),sp,v(m,x)的计算方法通过以下公式(1)表达:
sp,v(m,x)=M(v(m)|p(x)) 公式(1)
A2,通过softmax函数计算概率分布dp,v(m,x),dp,v(m,x),计算方法通过以下公式(2) 表达:
公式(1)-(2)中,m表示所述标签词v(m)的标签;
K表示文本分类任务的标签集合。
A3,根据sp,v(m,x)和dp,v(m,x),并利用所构造的损失函数,计算模型预测损失,所构造的所述损失函数通过以下公式(3)表达:
L=(1-α)·LCE+α·LMLM 公式(3)
公式(3)中,α表示微调系数;
LCE表示模型预测的分布dp,v(m,x)与真实分布间的差距;
LMLM表示模型预测的分数sp,v(m,x)与真实分数间的差距;
A4,判断是否达到模型迭代训练终止条件,
若是,则终止迭代,输出所述语言模型M;
若否,则调整模型参数后返回步骤A1继续进行迭代训练。
作为优选,所述语言模型M为由若干个语言子模型Mp融合形成的融合语言模型,训练所述融合语言模型的方法包括步骤:
B1,定义模板函数集合P,所述模板函数集合P中包含若干个不同的所述模板函数p;
B2,对于作为训练样本的每个p(x),通过对应的所述语言子模型Mp,计算所述标签词集合V中的每个标签词v(m)填入所述掩码位置的概率分数sp,v(m,x),sp,v(m,x)的计算方法通过以下公式(4)表达:
sp,v(m,x)=Mp(v(m)|p(x)) 公式(4)
B3,对关联每个所述模板函数p的sp,v(m,x)进行融合得到s(m,x),s(m,x)通过以下公式 (5)计算而得:
公式(5)中,Z表示所述模板函数集合P中的所述模板函数p的数量;
w(p)表示所述模板函数p在计算s(k,x)时所占的权重;
B4,通过softmax函数计算概率分布d(m,x),d(m,x)通过以下公式(6)计算而得:
公式(5)、(6)中,m表示标签集合K中与所述标签词v(m)具有映射关系的标签;
K表示文本分类任务的标签集合;
B5,根据s(m,x)和d(m,x),并利用所构造的损失函数,计算模型预测损失,所构造的所述损失函数通过以下公式(7)表达:
L=(1-α)·LCE+α·LMLM 公式(7)
公式(7)中,α表示微调系数;
LCE表示模型预测的分布d(m,x)与真实分布间的差距;
LMLM表示模型预测的分数s(m,x)与真实分数间的差距;
B6,判断是否达到模型迭代训练终止条件,
若是,则终止迭代,输出所述融合语言模型;
若否,则调整模型参数后返回步骤B2继续进行迭代训练。
作为优选,所述语言模型M或所述语言子模型Mp为BERT语言模型。
作为优选,微调系数α=0.0001。
作为优选,步骤S6中,n=3。
作为优选,所述统一阅读器模型Mθ在每一步中间跳或最终跳中,通过以下方法步骤识别当前第k跳的所述单跳支持句Sk:
C1,将输入的所述原始问题Q、所述相关上下文C和前一跳形成的所述子问题-答案对 (q,a)形成为如下表达式(9)表达的联接序列:
上述表达式中,[CLS]表示第k跳中输入到单跳支持句识别器的联接序列表征;
HOP=k表示第k跳;
[SEP]表示某个候选段落在步骤S1中选定的相关上下文C中的分隔符;
Q表示原始输入的多跳问题;
[SUB]q表示第k-1跳生成的子问题;
[BDG]a表示解答第k-1跳生成的子问题得到的答案;
n表示候选段落中的文本段落数;
m表示候选段落中的第n个文本段落中的句子数;
C2,基于每个句子
的特殊标记[SENT]的表示,构建一个二元分类器来预测每个句子
是当前第k跳的支持事实的概率
并将
概率值大于x的句子
作为当前第k跳的单跳支持句,构成S
k;
C3,通过最小化二元交叉熵损失函数,对所有跳使用的所述统一阅读器模型Mθ进行优化,所述二元交叉熵损失函数通过以下公式(8)表达:
公式(8)中,
表示优化第k跳中使用的所述统一阅读器模型Mθ所采用的所述二元交叉熵损失函数;
Ns表示所述相关上下文C中的句子总数。
作为优选,x=0.5。
作为优选,通过以下方法步骤生成当前第k跳的子问题:
D1,提取于当前第k跳中识别到的所述单跳支持句Sk和所述原始问题Q的重叠单词;
D2,将所提取的各所述重叠单词添加到所述单跳支持句Sk中;
D3,以添加了所述重叠单词的各所述单跳支持句Sk为预先训练的单跳问题生成器的输入,由所述单跳问题生成器根据输入生成当前第k跳分解的子问题q。
作为优选,以当前第k跳中识别得到的所述单跳支持句Sk和当前第k跳中生成的单跳子问题q为预先训练的单跳问答模型的输入,预测输出所述单跳子问题q对应的单跳答案a,训练所述单跳问题模型的样本为每个中间跳产生的所述单跳子问题q以及训练所述单跳问题生成器时使用的单跳问题数据集。
本发明具有以下有益效果:
1、通过在段落文本x中增加分类任务的提示语言,该提示语言中包含需要预测并填写标签的掩码位置,将段落文本分类问题转换为类似完形填空的分类预测问题,简化了段落文本分类预测的过程,能够基于段落文本的类型与原始问题Q中的关键词的标签t之间的匹配关系,更精准地从文本内容构成和文本结构的角度解析段落文本,并挖掘出更深层的信息,提高了段落文本分类的准确度。
2、通过提供中间跳推理器,使得每个推理步骤基于当前的支持事实,产生了更准确的问题分解,从而使得整个多跳推理过程更精确、更稳健。
3、通过提供单跳问题生成器,利用现成的单跳问题数据集来训练一个单跳问题生成器,直接以无监督的方式生成子问题,不再需要对问题分解进行人工标注,且避免了伪监督可能引入标签噪声的风险。
4、将用于训练单跳问题生成器的单跳问题数据集作为单跳问答模型训练的样本之一,使得单跳问答模型与单跳问题生成器所使用的数据更加一致,有利于提升单跳问答模型的预测性能。
具体实施方式
下面结合附图并通过具体实施方式来进一步说明本发明的技术方案。
其中,附图仅用于示例性说明,表示的仅是示意图,而非实物图,不能理解为对本专利的限制;为了更好地说明本发明的实施例,附图某些部件会有省略、放大或缩小,并不代表实际产品的尺寸;对本领域技术人员来说,附图中某些公知结构及其说明可能省略是可以理解的。
本发明实施例的附图中相同或相似的标号对应相同或相似的部件;在本发明的描述中,需要理解的是,若出现术语“上”、“下”、“左”、“右”、“内”、“外”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本发明和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此附图中描述位置关系的用语仅用于示例性说明,不能理解为对本专利的限制,对于本领域的普通技术人员而言,可以根据具体情况理解上述术语的具体含义。
在本发明的描述中,除非另有明确的规定和限定,若出现术语“连接”等指示部件之间的连接关系,该术语应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或成一体;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连,可以是两个部件内部的连通或两个部件的相互作用关系。对于本领域的普通技术人员而言,可以具体情况理解上述术语在本发明中的具体含义。
本发明实施例提供的基于文本分类的候选段落生成及多跳问题回答方法,如图1,包括步骤:
S1,提取原始问题Q中的关键词并打上标签t,例如,“西瓦拉玛·斯瓦米在哪个乡镇开设毗湿奴派神学课程?”这一原始问题Q,提取其关键词比如为“西瓦拉玛·斯瓦米”和/或“毗湿奴派神学课程”,对关键词“西瓦拉玛·斯瓦米”、“毗湿奴派神学课程”打上标签比如为“文学”;
这里需要说明的是,对原始问题Q进行关键词提取和对关键词进行打标的现有方法有许多,因此不做具体说明。
S2,对于给定的段落文本x,使用模板函数p将x转换为语言模型M的输入p(x),p(x)在原始的段落文本x中增加了分类任务的提示语言,提示语言中包含需要预测并填写标签的掩码位置;
S3,语言模型M预测出填入掩码位置的标签m;
S4,标签转换器v将标签m映射为事先构建的标签体系的标签词集合V中对应的标签词 v(m)作为预测得到的段落文本x的类型;
这里需要说明的是,本实施例中,对输入的段落文本进行分类的技术核心是采用了提示学习的思想,提示学习可以简化分类过程、提高分类效率,对于小规模数据集具有更高的分类优越性。具体而言,为了更充分地发挥段落文本分类器强大的问答和阅读理解能力,通过将输入的段落文本按照特定模式进行处理,为其增加任务提示语言,使其更适配语言模型的问答形式。基于提示学习的段落文本分类器进行段落分类的原理如下:
设M为预先训练的语言模型(优选为BERT语言模型),V是预先构建的标签体系中的标签词集合,掩码词被用于填写语言模型M的输入里被遮盖住的掩码位置[mask]的内容,并令 K是文本分类任务(段落文本分类任务)的标签集合。对每个段落文本分词后得到输入语言模型M的词序列x,然后使用自定义的模板函数p将x转换为语言模型M的输入p(x),p(x)在x 中增加了分类任务的提示语言,提示语言中包含需要预测并填写标签的掩码位置。经p(x)转换后,可以将段落文本类型预测问题转换为完形填空问题,即语言模型M以完形填空问题形式表示的p(x)为输入,将预测得到的最合适填入掩码位置的词作为对x表达的段落文本的分类预测结果。
需要强调的是,本申请基于提示学习的思想,更好地利用了语言模型M的问答和阅读理解能力,同时由于将分类问题转换成了完形填空问题,预测过程更加简单,提高了政策文本分类器的分类效率。进一步地,本实施例定义了一个从文本分类任务的标签集合K到预先构建的标签体系中的标签词集合V的映射作为标签的转换器v。例如,对于K中的标签m,该标签转换器v将其映射为标签词v(m)。
对于每一个模板函数p和标签转换器v,本实施例通过以下步骤来实现对段落文本的分类:
给定一个输入段落文本x(优选为原始段落文本词序列),使用模板函数p将x转换为语言模型M的输入p(x),语言模型M会预测p(x)中掩码位置最合适的标签m,m∈K,然后使用标签转换器v将这个标签映射为政策文件要素体系中的标签词v(m),v(m)∈V,并将其作为对段落文本x的分类。作为优选,本实施例采用预训练的中文BERT模型作为语言模型M,其对掩码位置的预测方法沿用了BERT模型的预训练任务,即使用其对p(x)中掩码位置对应的输出来预测到的掩码位置的标签(预测方法与BERT模型的Masked Language Model预训练任务一致,不做详细说明)。
举例而言,关于模板函数p,假设定义p(x)为“x。总体而言,这是有关_____的文本段落。”其中,“_____”表示掩码位置,这样就为原始段落文本x增加了一个分类任务的提示语言。x例如为“西瓦拉玛·斯瓦米在哪个乡镇开设毗湿奴派神学课程?”,对于该段落文本x,增加上述的提示语言后,语言模型M的分类任务为预测“西瓦拉玛·斯瓦米在哪个乡镇开设毗湿奴派神学课程?。总体而言,这是有关_____的文本段落。”中的掩码位置“_____”的标签m。预测出掩码位置后的标签后,将预测到的标签m映射为标签体系中的标签词集合V中对应的标签词v(m)作为预测得到的段落文本x的类型。
以下对本实施例训练语言模型M的方法进行说明:
语言模型M优选采用BERT模型,BERT模型的现有训练方法有许多,这些现有的训练方法可应用到本申请中用于训练语言模型M,区别在于,本实施例用于训练语言模型M的样本为经模板函数p转换得到的p(x)以及经标签转换器v转换得到的标签词集合V中对应的标签词 v(m),以及本申请为提高分类精度而改进的用于评估模型性能的损失函数。
训练语言模型M时,本申请将样本数据集按照7:3的比例随机划分为训练集和验证集,训练过程如下:
对于每个段落文本产生的只包含一个掩码位置的序列x,对标签体系中的标签词集合V中的每个标签词v(m)填入该掩码位置的概率计算一个分数(由于标签m在标签词集合V中具有一个存在映射关系的标签词v(m),因此预测标签m填入该掩码位置的概率分数相当于预测对应的标签词v(m)填入该掩码位置的概率分数),这个分数由语言模型M预测,代表预测出的该标签词可以填入该掩码位置的可能性。更为具体地,对于一个序列x,本申请计算文本分类任务的标签集合K中的标签m填入该掩码位置的概率分数的方法通过以下公式(1)表达:
sp,v(m,x)=M(v(m)|p(x)) 公式(1)
公式(1)中,sp,v(m,x)表示标签m填入掩码位置的概率分数,由于标签m与标签体系的标签词集合V中对应的标签词v(m)具有映射关系,因此sp,v(m,x)相当于表示标签词v(m)填入掩码位置的概率分数;
m表示标签集合K中与标签词v(m)具有映射关系的标签,例如可以将标签词“军事”的标签映射为m1,将标签词“人文”的标签映射为m2,通过这样建立映射关系,将所述任务从为输入句子分配一个没有含义的标签变为了选择最有可能填入掩码位置的词。
在计算得到V中所有标签词填入同个掩码位置的分数后,通过softmax函数得到一个概率分布,具体计算方法通过以下公式(2)表达:
公式(2)中,K表示文本分类任务的标签集合;
然后,根据sp,v(m,x)和dp,v(m,x),并利用所构造的损失函数,计算模型预测损失,所构造的损失函数通过以下公式(3)表达:
L=(1-α)·LCE+α·LMLM 公式(3)
公式(3)中,α表示微调系数(优选为0.0001);
LCE表示模型预测的分布dp,v(m,x)与真实独热向量分布间的差距;
LMLM表示模型预测的分数sp,v(m,x)与真实分数间的差距;
最后,判断是否达到模型迭代训练终止条件,
若是,则终止迭代,输出语言模型M;
若否,则调整模型参数后继续进行迭代训练。
为了进一步提升模型训练效果,进而提升语言模型M的分类性能,优选地,语言模型M为由若干个语言子模型Mp融合形成的融合语言模型,训练融合语言模型的方法为:
首先,定义一个模板函数集合P,模板函数集合P中包含若干个不同的模板函数p,例如,模板函数p为“x。这个文本段落和什么有关?_____”,又例如,模板函数p为“这个文本段落和什么有关?和_____有关”等等。对于不同的模板函数p,本实施例通过以下方法来训练融合语言模型:
对于作为训练样本的每个p(x),通过对应的语言子模型Mp计算标签词集合V中的每个标签词v(m)填入掩码位置的概率分数sp,v(m,x),计算方法通过以下公式(4)表达:
sp,v(m,x)=Mp(v(m)|p(x)) 公式(4)
公式(4)中,m表示标签集合K中与标签词v(m)具有映射关系的标签;
然后,对关联每个模板函数p的sp,v(m,x)进行融合得到s(m,x),s(m,x)通过以下公式(5) 计算而得:
公式(5)中,Z表示模板函数集合P中的模板函数p的数量;
w(p)表示模板函数p在计算s(k,x)时所占的权重;
然后,再通过softmax函数计算概率分布d(m,x),计算方法通过以下公式(6)表达:
公式(2)中,K表示文本分类任务的标签集合。最后,根据s(m,x)和d(m,x),并利用所构造的损失函数,计算模型预测损失,所构造的损失函数通过以下公式(8)表达:
L=(1-α)·LCE+α·LMLM 公式(8)
公式(8)中,α表示微调系数(优选为0.0001);
LCE表示模型预测的分布d(m,x)与真实分布间的差距;
LMLM表示模型预测的分数s(m,x)与真实分数间的差距。
预测得到段落文本x的类型后,如图1所示,转入步骤:
S5,判断标签词v(m)与标签t是否一致,
若是,则将段落文本x作为回答原始问题Q的候选段落加入到候选段落集中,
若否,则过滤掉段落文本x;
得到原始问题Q的候选段落集后,进入多跳问题回答环节,即转入图1中所示的步骤:
S6,将原始问题Q输入到预先训练的段落排序模型中以计算得到表征每个候选段落与解答原始问题Q具有相关性的概率得分,然后选取得分排名前n(n优选等于3,n=3时,加上排名第一的候选段落所链接的跳转段落,即原始问题Q的相关上下文C包含4个候选段落,由于本实施例在每个中间跳的推理步骤都是基于当前的支持事实,产生了更准确的问题分解,因此,相比较背景技术中交代的仅基于原始问题而未考虑每个分解步骤基于的当前支持事实的现有的单跳问题分解方法,n的取值可以更小。经反复实验数据对比,当n=3时对多跳问题回答的准确率几乎没有影响,但由于n取值减小,而大幅提升了多跳问题回答的整体速度。另外,本申请将排名第一的候选段落所链接的跳转段落加入到原始问题Q的相关上下文C中,考虑了与候选段落链接的跳转段落对问题分解以及问题解答的影响,有效确保了多跳问题回答的准确率)的候选段落以及排名第一的候选段落链接的跳转段落作为与解答原始问题Q具有相关性的上下文,记为C;
S7,将原始问题Q和相关上下文C输入到预先训练的统一阅读器模型Mθ(又称中间跳推理器)中进行中间跳答案推理,输出每个中间跳对应的子问题-答案对(q,a)和单跳支持句Sk;
S8,以最终跳的前一跳输出的子问题-答案对(q,a)、原始问题Q、相关上下文C以及答案类型为统一阅读器模型Mθ的输入进行最终跳的答案推理,输出原始问题Q对应的多跳问题答案A和多跳支持句S。
以下结合图2、图3对多跳问题回答的具体实现方式进行详细说明:
如图2所示,例如,对于“西瓦拉玛·斯瓦米在哪个乡镇开设毗湿奴派神学课程?”这个多跳问题(即原始问题Q),按照背景技术中交代的多跳问题分解方法,仅基于原始问题Q,而不考虑每个跳转推理步骤涉及的支持事实,该多跳问题可能被分解为Sub-Q1:西瓦拉玛·斯瓦米在哪里开设毗湿奴派神学课程以及Sub-Q2:西瓦拉玛·斯瓦米在哪个乡镇两个子问题。而通过本申请提供的方法,将该多跳问题分解为Step1-Q:西瓦拉玛·斯瓦米在哪个庄园开设毗湿奴派神学课程以及Step2-Q:巴克提维丹塔庄园属于哪一乡镇两个子问题,以及从候选段落中识别出作为生成Step1-Q、Step2-Q的依据的单跳支持句Step1-S、Step2-S。显然,Step1-Q、Step2-Q的生成由于有据可依(分别具有Step1-S、Step2-S的支持事实),更容易推断出正确的答案。
本实施例中,给定一个原始问题Q和一个包含多个候选段落的上下文,目标是识别出与解答该原始问题Q相关的上下文C,预测出最终答案A,并对答案A用支持性句子S进行解释。
为了减少多跳推理过程中因候选段落数量过多对问题解答的干扰,并提高问题解答效率,本实施例中,首先从所有候选段落中筛选出与解答原始问题Q最相关的候选段落作为问题Q的相关上下文,记为C。相关上下文C的具体筛选方式为:给定多个候选段落为段落排序模型的训练样本,训练成形段落排序模型,段落排序模型由一个RoBERTa编码器和一个二元分类层构成,该模型将每个原始问题Q和每个候选段落作为输入,二元分类层中的sigmoid 函数会输出每个候选段落与原始问题Q相关的概率分数,利用训练数据中正确的问题相关段落作为监督优化一个交叉熵损失函数即可训练出段落排序模型。然后采用两跳选择策略,对于第一跳,在包含与原始问题Q具有相同短语的候选段落中选择得分最高的候选段落,然后通过嵌入在得分最高的候选段落中的wiki超链接跳转到其链接的跳转段落中,最终将该跳转段落与概率得分由大到小排序前n(n优选等于3)的候选段落作为解答该原始问题Q的上下文,记为C。
这里需要强调的是,本申请提供的多跳问题回答方法的步骤S6,即寻找原始问题Q的上下文C非常重要,后续中间跳推理以及最终跳推理中识别作为每一跳中子问题生成依据的单跳支持句、生成每一跳的子问题、预测每一跳的子问题对应的答案,以及输出最终的原始问题Q对应的答案都必须基于步骤S6得到的该上下文C。由于本申请将得分最高的候选段落所链接的跳转段落纳入为原始问题Q对应的上下文C中,中间跳的每一跳中的子问题生成和子问题对应的答案推理均考虑了第一跳中得分最高的候选段落所链接的第二跳段落(即跳转段落)对子问题生成和子问题解答的影响,使得子问题生成和子问题解答不容易偏离原始问题 Q本身,且选取得分排名前n的候选段落共同作为该原始问题Q的相关上下文C,考虑了不同候选段落对子问题生成和子问题解答准确率的综合影响,且由于选取了有限数量的相关上下文C,确保了子问题生成和子问题解答的效率,进而确保了多跳问题回答的效率。
此处另需说明的是,由于段落排序模型的具体训练过程并非本申请要求权利保护的范围,因此关于段落排序模型的具体训练过程在此不做具体说明。
筛选出原始问题Q的相关上下文C后,本实施例提供的多跳问题回答方法转入中间跳推理过程。中间跳推理,即基于筛选后的相关上下文C,一步一步地进行多跳推理。本实施例中,采用统一的阅读器模型Mθ(即为中间跳推理器或最终跳推理器)来识别每一中间跳的单跳支持句Sk,然后根据识别到的单跳支持句Sk生成并回答相应的单跳子问题,并将原始问题Q、相关上下文C以及当前中间跳得到的子问题-答案对(q,a)传递给统一阅读器模型Mθ进行下一跳的问题解答推理。
本实施例采用的统一阅读器模型Mθ包括3个模型,分别为单跳支持句识别器、单跳问题生成器和单跳问答模型。
单跳支持句识别器以原始问题Q、相关上下文C和前一跳形成的子问题-答案对(q,a)为输入(前一跳为第一跳时,由于未生成子问题-答案对(q,a),只有原始问题Q,因此第二跳作为中间跳时,单跳支持句识别器的输入为原始问题Q和相关上下文C),试图从相关上下文C中找到用于作为生成当前跳的子问题以及解答所生成的子问题的依据的单跳支持句Sk。具体而言,输入到单跳支持句识别器的原始问题Q、相关上下文C和前一跳的子问题-答案对(q,a)的联接序列通过以下表达式(9)表达:
表达式(9)中,[CLS]表示第k跳中输入到单跳支持句识别器的联接序列表征;
HOP=k表示第k跳;
[SEP]表示某个候选段落在步骤S1中选定的相关上下文C中的分隔符,[SEP]后面表示的是一个段落,比如
构成相关上下文C中的某个候选段落;
Q表示原始输入的多跳问题;
[SUB]q表示第k-1跳生成的子问题;
[BDG]a表示解答第k-1跳生成的子问题得到的答案;
n表示候选段落中的文本段落数;
m表示候选段落中的第n个文本段落中的句子数。然后基于每个句子
的特殊标记[SENT] 的表示,构建一个二元分类器来预测每个句子
是当前跳支持事实的概率
预测每个句子
是当前跳支持事实的概率
可以采用现有的支持事实预测方法,因此有关
的具体计算方法在此不做阐述;
最后通过最小化二元交叉熵损失函数,对第k跳使用的统一阅读器模型Mθ进行优化,该二元交叉熵损失函数通过以下公式(10)表达:
公式(10)中,
表示优化第k跳中使用的统一阅读器模型Mθ所采用的二元交叉熵损失函数;
Ns表示相关上下文C中的句子总数。
识别出当前第k跳的单跳支持句Sk后,进入对第k跳子问题的生成过程。本申请并不使用人工标注或伪监督方式来训练单跳问题生成模型,而是直接采用现成的单跳问题语料库预先训练一个单跳问题生成器,以根据当前跳中识别到的单跳支持句Sk和原始问题Q来生成当前跳的子问题q。具体而言,首先提取当前跳中识别到的单跳支持句Sk和原始问题Q的重叠单词,然后将重叠单词添加到单跳支持句Sk中(比如拼接在原始的单跳支持句Sk的前面),然后以添加了重叠单词的单跳支持句Sk为预先训练的单跳问题生成器的输入(该输入形式表达为[CLS](Q∩Sk)[SEP]Sk[SEP],例如图3中,Q是“西瓦拉玛·斯瓦米在哪个乡镇开设毗湿奴派神学课程?”,S1是“西瓦拉玛·斯瓦米是一位毗湿奴派上师和宗教领袖,在巴克提维丹塔庄园举办课程,讲授他自己对毗湿奴派神学的评论。”,那么Q∩S1是“西瓦拉玛·斯瓦米毗湿奴派神学课程”,由单跳问题生成器根据输入生成当前第k跳分解的子问题q。
此处需要说明的是,将重叠单词添加到单跳支持句Sk中有利于引导子问题的生成更符合原始问题Q的推理目标。另需说明的是,由于单跳问题生成器的具体训练方法并非本申请请求权利保护的范围,因此具体训练过程不做说明。
生成当前第k跳的子问题q后,本申请以单跳支持句Sk和生成的单跳子问题q为预先训练好的单跳问答模型的输入,预测输出单跳子问题q对应的单跳答案a。这里需要说明的是,为了提升单跳问答模型预测单跳答案a的准确率,在训练单跳问答模型时,采用的样本之一为训练单跳问题生成器时同样使用的单跳问题数据集。由于训练单跳问答模型和训练单跳问题生成器都采用了同个单跳问题数据集,保证了部分训练样本的数据一致性,减少了因引入样本不一致带来的噪声误差,预测准确度更高。
此处另需说明的是,以单跳支持句Sk和单跳子问题q为样本的单跳问答模型的训练可基于现有的训练方法训练而得,且由于单跳问答模型的具体训练过程并非本申请请求权利保护的范围,因此有关单跳问答模型的训练过程不做具体阐述。
完成若干步中间跳后进入最后一跳(最终跳K)的多跳问题答案生成和多跳支持句识别过程。具体地,如图3所示,在最终跳中,利用前一跳(即中间跳的最后一跳)的子问题-答案对(q,a)构建起中间跳和最终跳的桥梁,然后使用与中间跳推理过程中相同的统一阅读器模型Mθ来预测原始问题Q的最终答案A,同时提供作为解答原始问题Q依据的多跳支持句S。如图3所示,输入到最终跳的统一阅读器模型Mθ中的联接序列表达为:
对比表达式(9)和表达式(11)可知,最终跳中,输入给统一阅读器模型Mθ的联接序列中在相关上下文C之前插入了两个额外的标记yes或no,用于答案预测。本实施例中,原始问题Q对应的答案类型有2种,分别为:yes、no,yes表示原始问题Q的答案类型为yes; no表示原始问题Q的答案类型为no,比如对于原始问题Q为“中国第一个获得了奥运金牌的运动员是许海峰吗?”,其答案类型为“yes”。
为了完成最后一跳推理,首先使用二元分类器来识别相关上下文C中的每个句子是否为整个多跳问题(即原始问题Q)的支持事实,并通过损失函数
计算识别支持句的损失,然后进行最终答案片段的预测,预测方法为:在所有上下文表示上增加一个带有softmax函数的线性层(Softmax是一个计算概率的函数,可以在相关上下文C中所有字符的表示上,计算出每个字符是答案起始位置或结束位置的概率),以获得每个token_t
n(即相关上下文C中的第n个字符)作为答案起始位置的概率
或作为结束位置的概率
并将作为答案起始位置和作为答案结束位置的最大概率分别记为
然后获取
和
所在位置及之间的内容作为最终预测输出的多跳问题答案A。
对于多跳问题答案A在相关上下文C中的起始位置和结束位置的预测损失通过以下公式 (12)计算而得:
为提高统一阅读器模型Mθ的训练速度和模型性能,本发明还专门构建了统一阅读器模型 Mθ的联合损失函数,构建的联合损失函数通过以下公式(13)表达:
公式(13)中,L表示联合损失函数;
表示第k跳中间跳中的中间跳推理器采用的二元交叉熵损失函数;
表示最终第K跳中的最终跳推理器采用的二元交叉熵损失函数;
K表示推理原始问题Q对应的多跳问题答案A所需的总跳数;
λ
1、λ
2分别表示
在参与构建联合损失函数时的加权超参数;
Lspan表示最终跳推理器对原始问题Q对应的多跳问题答案A在相关上下文C中的起始位置和结束位置的预测损失;
公式(14)中,
表示优化第p跳中使用的统一阅读器模型Mθ所采用的所述二元交叉熵损失函数,p=k时表示当前跳为第k跳中间跳,k=K时表示当前跳为第K跳最终跳;
表示相关上下文C中的第i段第j个句子
是否为第p跳支持事实的标签;
Ns表示相关上下文C中的句子总数。
Lspan通过以下公式(15)表达:
公式(15)中,
分别表示最终跳中从相关上下文C中提取的标签内容作为原始问题Q的多跳问题答案A的答案起始位置、答案结束位置的最大概率。
以联合损失函数训练统一统一阅读器模型Mθ的方法为:
以联合损失函数作为训练统一阅读器模型Mθ时采用的损失函数,并且以每个中间跳得到的子问题答案对(q,a)(q表示每个中间跳分解得到的子问题,a为每个中间跳预测得到的子问题q对应的答案)、原始问题Q、相关上下文C以及预设的答案类型为联合训练样本,联合训练得到统一阅读器模型Mθ;
然后,将将原始问题Q、相关上下文C输入到统一阅读模型Mθ中进行中间跳和最终跳答案推理,最终输出原始问题Q对应的多跳问题答案A和多跳支持句S。
为了验证本申请通过联合优化方法训练的统一阅读器模型Mθ的性能,本申请以HotpotQA 为问答数据集对模型性能作了评估,评估过程需要同时回答问题和预测支持事实来解释推理。包括两个基准设置:Distractor(给定10个段落找答案)和fullwiki(不给定段落,需要在 wiki中检索相关段落找答案),本申请关注Distractor设置,以主要测试多跳推理能力,同时忽视信息检索部分。数据集分别由训练集、开发集和测试集中的90447、7405和7405个数据点组成。每个实例都有10个候选段落,其中只有两个段落包含支持问题的必要句子。在自动评估方面,采用了答案预测的精确匹配(EM)和F1,支持事实预测和它们的联合作为度量。此外,为了训练单跳问题生成器和单跳问答模型,使用SQuAD作为单跳问题语料库。
在实施方式中,将ELECTRA large作为逐步推理方法和单跳问答模型的主体模型,并使用BART-large训练单跳问题生成器。所有这些模型都是使用Huggingface实现的。使用的训练批大小为48,并进行10个epochs的微调。Adam作为优化器,学习率为3e-5。本申请使用10%预热比例的线性学习率。平衡损失权重的超参数选择为λ1=10和λ2=5。
本申请对通过联合训练方法训练的统一阅读器模型Mθ和目前最先进的多跳问题回答推理模型进行了性能比较(包括基于问题分解的模型和基于一步阅读器的模型),比较结果参照下表1。相较于之前问题分解的模型(表1内DecompRC和ONUS)和基于一步阅读器的模型(表1 内TAP2~HGN),由表1可以看到,本申请提供的统一阅读器模型Mθ(StepReasoner)在答案预测、支持句预测、以及联合分数上都有了明显的提高。
表1
同时在本场景示例中,对本申请提出的模型的联合训练方法进行了消融实验,实验结果请参照下表2。表2中,w/o代表without,w/o joint trainging的方法里不使用联合优化,直接使用pipeline推理模型,w/o bias.supp和w/o bias.ques的方法里不使用两种减少暴露偏差的部件,分别用来减少训练测试之间单跳支持句和单跳子问题的不一致。
表2
由表2可以看到,整体上同时使用三种组件能达到更好的效果。对所有跳的统一阅读器模型进行联合优化,可以提高对中间错误的容忍度,提高推理性能。在不使用任何缓解暴露偏差的措施后,效果也显著下降,表明这两种缓解单跳支持句和单跳问题训练测试差异的措施都有更好的泛化能力。
本申请还对采用现有的预训练模型以现有方法训练的统一阅读器模型Mθ与根据本申请提供的联合训练方法训练的统一阅读器模型Mθ的稳健性作了对比,对比结果请参照下表3,下表3中,以现有方法训练得到的模型包括BERT-base uncased,ELECTRA-large和ALBERT-xxlarge-v2,可以看到,这些现有预训练模型为初始模型,通过本申请提供的联合训练方法训练得到的模型(表3中用“StepReasoner-BERT”“StepReasoner-ELECTRA”“StepReasoner-ALBERT”表示)性能都有所提升,尤其是在EM分数方面。这表明本申请提出的以联合训练方法训练的统一阅读器模型Mθ更具稳健性,基于各种预训练模型训练都有效。
表3
本申请以联合训练方法训练得到的统一阅读器模型Mθ对于多跳推理中不同推理种类的推理效果比较请见下表4。表4中包括“Bridge”,“Implicit-Bridge”,“Comparison”和“Intersection”四个推理类别(“Bridge”:桥梁问题,需要先推理出一个显式的中间桥梁实体,再找到问题的答案;“Implicit-Bridge”:隐事桥梁问题,需要先推理出一个隐式的中间桥梁实体,再找到问题的答案;“Comparison”:比较性问题,需要比较两个实体的属性;“Intersection”:交叉问题,需要找到同时满足多个属性/约束的答案)。可以看到,在不同的推理种类上,本申请提供的多跳问答推理方法都有效,尤其是“Implicit-Bridge”和“Intersection”,因为这两个种类的问题更容易通过直接从单个证据中识别满足一个查询属性的实体来获得错误答案,而忽略涉及其他证据的多跳推理,从而获得快捷解决方案。这一观察结果也验证了本申请提供的基于中间单跳支持句逐步生成可解释多跳推理的单跳问题的有效性。
表4
为了证明所述基于已识别的单跳支持句生成单跳问题的有效性,将几种不同的单跳问题生成方法融入到逐步推理框架中,并在ELECTRA上比较问答结果,问答结果对比数据请见下表5,可以看出所述基于Supp的方法性能最好,基于单跳支持句生成更准确、信息量更大的子问题,比其他策略生成的单跳问题更有效。
表5
需要声明的是,上述具体实施方式仅仅为本发明的较佳实施例及所运用技术原理。本领域技术人员应该明白,还可以对本发明做各种修改、等同替换、变化等等。但是,这些变换只要未背离本发明的精神,都应在本发明的保护范围之内。另外,本申请说明书和权利要求书所使用的一些术语并不是限制,仅仅是为了便于描述。