对话响应生成模型的训练方法和装置及对话响应生成方法

allin2024-05-13  77



1.本发明涉及人机对话技术,特别是涉及一种对话响应生成模型的训练方法和装置及对话响应生成方法。


背景技术:

2.人机对话系统是自然语言处理领域一个重要的研究方向,随着深度神经网络技术的发展,诸如alexa、小冰等系统在某些领域已经可以与人展开流畅的对话。为了使对话系统可以适应于更多领域,受人人对话的启发,研究者们开始探索为对话系统增加外部知识。在这些外部知识中,文档易于获得且蕴含信息丰富,由文档驱动的对话任务被提了出来。为了使得对话更贴近于实际场景下的人人对话,高质量的回复需要满足语言通顺、上下文相关以及可以正确反映文档知识等要求。
3.文档驱动的对话种类繁多,根据用户对回复的需求,可分为面向知识的回复及面向业务的回复,根据文档获取的方式,则可分为固定单个文档驱动及自由选择文档的多文档驱动两种形式。
4.多文档驱动要求对话系统在每轮输出回复前都应从文档库中找出当前应当依赖的文档,其更贴近于实际场景下的人人对话;面向知识的回复则为对话系统赋予了向用户讲解知识或是交流知识的能力,具有较高的应用前景,故,面向知识回复的多文档驱动对话响应生成是当今研究的重点。针对此类问题,目前主要有检索预设回复以及直接生成回复两种方法。
5.直接生成回复的方法是目前学术界研究的重点,其借助文本生成的相关技术,直接生成回复。该类方法通常包括两个阶段,第一阶段通过若干编码器,编码对话上下文信息与备选文档,借助神经网络计算二者的相关性并输出检索结果,从而从备选文档中将目标文档检索出来。第二阶段则基于“编码器——解码器”的架构,通过若干编码器将对话上下文信息及第一阶段所选择的文档进行编码,将两类编码信息进行有效整合后,传入解码器以生成回复。
6.发明人在实现本发明的过程中发现:现有直接生成回复的方法存在无法满足高质量回复要求的问题。针对该问题,发明人经过研究分析发现其存在的原因如下:
7.现有直接生成回复的方法完全依赖解码器端的监督信号,其生成的回复的分布与模型训练时所使用的训练语料高度相关。这些训练语料往往只是实际应用中真实数据的一个较小的子集,故模型的泛化性能不足,更倾向于输出“好的。”、“是的。”这样的通用回复,这些通用回复既无法正确地体现文档知识,也不能满足上下文相关的要求。
8.另外,现有直接生成回复的方法在将对话上下文信息及第一阶段所选择的文档进行编码整合后,直接将整合结果传入解码器,生成回复,如此,往往会导致所生成的回复缺乏逻辑性,从而容易存在句子不通顺的问题。


技术实现要素:

9.有鉴于此,本发明的主要目的在于提供一种对话响应生成模型的训练方法和装置及对话响应生成方法,可以提高对话的回复质量。
10.为了达到上述目的,本发明实施提出的技术方案为:
11.一种对话响应生成模型的训练方法,包括:
12.获取预设的样本数据和文档库,所述样本数据包括对话过程数据以及每轮对话的正确文档标签和话题保持标签;
13.利用对话响应生成模型,遍历所述对话过程数据对应的每轮对话,基于在该轮对话的响应信息之前已产生的对话历史数据和所述文档库,生成该轮对话的响应信息,并基于所述样本数据中的相应标签,计算损失函数值,利用所述损失函数值,对所述对话响应生成模型的参数进行优化调整;其中,在进行所述生成时,采用二次相关方式,基于当前的话题保持状况,从所述文档库中选取用于生成所述响应信息的最相关文档。
14.本发明实施例还提出一种对话响应生成方法,包括:
15.在对话过程中,当需要生成对话响应时,利用对话响应生成模型,基于当前已产生的对话历史数据和预设的文档库,生成并输出所述对话响应;
16.其中,所述对话响应生成模型基于如上所述的训练方法得到。
17.本发明实施例还提出一种对话响应生成模型的训练装置,包括处理器和存储器;
18.所述存储器中存储有可被所述处理器执行的应用程序,用于使得所述处理器执行如上所述对话响应生成模型的训练方法。
19.综上所述,本发明实施例提出的上述技术方案,在利用对话响应生成模型基于多文档驱动生成对话响应时,对于文档选择阶段,采用二次相关方式,基于当前的话题保持状况,从所述文档库中选取用于生成所述响应信息的最相关文档,如此,可以提高对用于生成响应信息的文档进行选择的准确性,使得模型生成的响应信息既能正确地体现文档知识,又能满足上下文相关的要求。并且,样本数据中不仅包含真实的响应信息,还包含正确文档标签和话题保持标签,这样,在进行模型训练时,监督信号不再仅限于对话的响应信息,还可以基于文档选择及话题保持情况等,训练模型提高响应信息的生成质量。因此,采用本发明实施例,可以有效提高对话的回复质量。
附图说明
20.图1为本发明实施例的对话响应生成模型的训练方法流程示意图;
21.图2为本发明实施例中对文本编码器进行训练的示意图;
22.图3为本发明实施例中确定对话历史数据分别与每个文档的相关性分数的示意图;
23.图4为本发明实施例中确定每个备选文档为当前轮对话的最相关文档的最终概率的示意图:
24.图5为本发明实施例的利用响应生成网络生成对话响应信息的流程示意图。
具体实施方式
25.为使本发明的目的、技术方案和优点更加清楚,下面将结合附图及具体实施例对
本发明作进一步地详细描述。
26.图1为本发明实施例的方法流程示意图,如图1所示,该实施例实现的对话响应生成模型的训练方法主要包括:
27.步骤101、获取预设的样本数据和文档库。
28.所述样本数据包括对话过程数据以及每轮对话的正确文档标签和话题保持标签,这样,在进行模型训练时,监督信号不再仅限于响应信息,还可以基于文档选择及话题保持情况等,训练模型提高响应信息的生成质量。
29.步骤102、利用对话响应生成模型,遍历所述对话过程数据对应的每轮对话,基于在该轮对话的响应信息之前已产生的对话历史数据和所述文档库,生成该轮对话的响应信息,并基于所述样本数据中的相应标签,计算损失函数值,利用所述损失函数值,对所述对话响应生成模型的参数进行优化调整;其中,在进行所述生成时,采用二次相关方式,基于当前的话题保持状况,从所述文档库中选取用于生成所述响应信息的最相关文档。
30.本步骤中,需要遍历样本数据中对话过程数据对应的每轮对话(即相应对话过程包含的每轮对话),由模型生成该轮对话的响应信息,以根据响应信息的生成情况,对模型进行调优,使得模型能生成高质量的响应信息。与现有方案不同的是,这里在生成对话响应的过程中,需要在文档选择环节,采用二次相关方式,基于当前的话题保持状况,从所述文档库中选取用于生成所述响应信息的最相关文档,如此,可以提高对用于生成响应信息的文档进行选择的准确性,使得模型生成的响应信息既能正确地体现文档知识,又能满足上下文相关的要求。
31.一种实施方式中,对于对话过程中的每轮对话,对话响应生成模型具体可以采用下述方法生成该轮对话的响应信息:
32.步骤201、利用预先训练的文本编码器,对所述对话历史数据的进行编码,并对所得到的编码表示进行平均池化处理,得到所述对话历史数据的向量表示;获取所述文档库中每个文档的向量表示;其中,所述文档的向量表示通过利用所述文本编码器对所述文档分别进行编码,并对所得到的编码表示进行平均池化处理得到。
33.这里,对于当前轮对话对应的对话历史数据以及文档库中的每个文档,均需要利用预先训练的文本编码器生成相应的向量表示,以便此后基于这些向量表示,为当前轮对话进行最相关文档的选择。
34.一种实施方式中,具体可以采用图2所述的流程,对文本编码器进行训练,具体方法包括下述步骤a1~a4:
35.步骤a1、获取预设的编码样本数据,所述编码样本数据包括对话历史数据c、对话历史数据c的相关文档d
+
和不相关文档d-。
36.在实际应用中,可以通过从文档库中随机选择一个除相关文档d
+
之外的文档,作为所述不相关文档d-。
37.步骤a2、利用所述文本编码器,分别对所述编码样本数据中的对话历史数据c、所述相关文档d
+
和所述不相关文档d-进行编码,并对所得到的每个编码表示分别进行平均池化处理,得到所述对话历史数据c的向量表示c
vec
、所述相关文档d+的向量表示和所述不相关文档d-的向量表示具体采用下述公式实现:
38.c
vec
=average(transformerencoder(c));
[0039][0040][0041]
transformerencoder()是这里选择使用的文本编码器。
[0042]
步骤a3、基于所述对话历史数据c和所述相关文档d
+
的向量表示,计算向量间的余弦相似度(即相关性分布),得到所述对话历史数据c和所述相关文档d
+
的相关性分数relavance(c,d
+
);基于所述对话历史数据c和所述不相关文档d-的向量表示,计算向量间的余弦相似度,得到所述对话历史数据c和所述不相关文档d-的相关性分数relavance(c,d-),具体采用下述公式实现:
[0043][0044][0045]
步骤a4、基于所述相关性分数(即relavance(c,d
+
)、relavance(c,d-)),利用铰链损失函数(hinge-loss),计算编码损失函数值loss(c,d
+
,d-;m);利用所述编码损失函数值,对所述文本编码器的参数进行优化调整,具体采用下述公式实现编码损失函数值的计算:
[0046]
loss(c,d
+
,d-;m)=max(0,m-(relavance(c,d
+
)-relavance(c,d-)))
[0047]
其中,m为超参数。
[0048]
这里,通过采用铰链损失函数计算编码损失函数值,可以提高模型对相关文档与不相关文档的区分能力。
[0049]
步骤202、基于所述向量表示,利用文档选择网络,采用二次相关方式,基于当前的话题保持状况,确定当前轮对话的最相关文档。
[0050]
本步骤,用于为当前所遍历到的一轮对话,确定最相关文档,以便基于该最相关文档,生成相应的响应信息。
[0051]
这里需要说明的是,传统方案中采用的文档选择方法,仅借助对话历史,通过文本匹配的方法,计算当前对话内容与备选文档的相关程度,选取最相关的文档作为选择的结果。然而,发明人在实现本发明的过程中发现,在同一段对话中,不同轮次之间所选择的文档是具有一定的关联的。以所述预设样本数据中的一段对话为例,其文本选择的序列为“星际穿越——星际穿越——星际穿越——克里斯托弗诺兰——克里斯托弗诺兰——克里斯托弗诺兰”。其中,第一轮和第四轮发生了话题转移,其余轮次则保持之前的话题。基于此,本发明实施例中,通过借助对这种关联特性建模,即在选择文档时,采用二次相关方式,考虑当前的话题保持状况(即当前轮对话的话题是否与上一轮对话的话题一致),确定当前轮对话的最相关文档,可以有效提高对用于生成响应信息的文档进行选择的准确性。
[0052]
一种实施方式中,步骤202中具体可以采用下述步骤2021~2024确定当前轮对话的最相关文档:
[0053]
步骤2021、基于所述向量表示,通过计算向量间的余弦相似度,得到所述对话历史数据分别与每个所述文档的相关性分数。
[0054]
如图3所示,本步骤中需要基于步骤201中获得的对话历史数据的向量表示、文档库中每个文档的向量表示,计算出当前轮对话对应的对话历史数据与每个文档的相关性分数,以便在后续步骤基于相关性分数,选择出与对话历史数据最相关的若干文档作为备选
文档。
[0055]
向量间的余弦相似度的计算方法为本领域技术人员所掌握,在此不再赘述。
[0056]
步骤2022、从所述文档库中,选择前n个所述相关性分数最大的文档,作为备选文档;所述n为预设的大于1的整数。
[0057]
具体地,本步骤中,按照步骤2021中得到的相关性分数,按照相关性分数降序,对文档库中的文档进行排序,从排序结果中,选择前n个文档作为备选文档。
[0058]
所述n为预设的备选文档数量,在实际应用中,本领域技术人员可以根据实际需要设置n的合适取值。例如,n可以为4,但不限于此。
[0059]
步骤2023、基于在生成上一轮对话的响应信息时选取的最相关文档d
last
,确定所述备选文档为当前轮对话的最相关文档的最终概率。
[0060]
这里,基于在生成上一轮对话的响应信息时选取的最相关文档,可以预测当前话题是否与上一轮对话一致。如此,可以结合当前的话题保持状况,准确地确定出当前轮对话的最相关文档。因此,本步骤中,将基于在上一轮对话的响应信息生成时选取的最相关文档,进行第二次相关性计算,以对步骤2022中得到的每个备选文档,确定最终概率,以便后续步骤基于各备选文档的最终概率,为当前轮对话准确地选择出最相关文档。
[0061]
一种实施方式中,如图4所示,步骤2023中具体可以采用下述步骤20231~20234,为步骤2022中得到的每个备选文档,确定其为当前轮对话的最相关文档的最终概率:
[0062]
步骤20231、基于所述备选文档的向量表示和所述对话历史数据的向量表示,采用点积计算方式,预测所述备选文档为当前轮对话的最相关文档的概率,得到所述备选文档的直接相关概率,具体地,可以采用下述公式,利用softmax函数得到各备选文档的直接相关概率p(c,hi|relative
direct
):
[0063]
p(c,di|relative
direct
)=softmax(c
·hi
)
[0064]
其中,
[0065]
c=average(transformerencoder(c));
[0066]hi
=average(transformerencoder(di));
[0067]
c为当前轮对话的对话历史数据;di为备选文档。
[0068]
步骤20232、基于文档d
last
的向量表示和所述对话历史数据的向量表示,利用多层感知机mlp,预测所述文档d
last
为当前轮对话的最相关文档的概率p
keep
,具体地,可以利用sigmoid函数采用下述公式实现:
[0069]
p
keep
=sigmoid(mlp(c;h
last
))
[0070]
其中,
[0071]hlast
为文档d
last
的向量表示;
[0072]hlast
=average(transformerencoder(d
last
))。
[0073]
步骤20233、当所述文档d
last
为所述备选文档中的文档时,利用所述概率p
keep
,对所述备选文档的直接相关概率,进行修正;并对所述修正得到的概率,进行归一化处理,得到所述备选文档为当前轮对话的最相关文档的最终概率。
[0074]
这里,当文档d
last
为所述备选文档中的文档时,说明当前轮对话的话题和上一轮对话的话题有可能相同,此时,需要结合上一轮话题在本轮保持的概率,确定备选文档为当前轮对话的最相关文档的最终概率,以使得在进行文档选择时能够充分考虑相邻对话间的
关联性,从而可以提高对对话相关文档选择的准确性。
[0075]
具体地,本步骤中可以采用下述方法,利用所述概率p
keep
,对所述备选文档的直接相关概率,进行修正:
[0076]
如果所述备选文档为所述文档d
last
,则计算所述备选文档的直接相关概率p(c,hi|relative
direct
)与所述p
keep
的和,得到对所述备选文档的直接相关概率进行修正的结果p(c,di|relative
combined
),否则,计算所述备选文档的直接相关概率p(c,hi|relative
direct
)与

的和,得到对所述备选文档的直接相关概率进行修正的结果p(c,di|relative
combined
)。
[0077]
其中,所述

=1-p
keep

[0078]
例如,假设备选文档有4个,且文档d
last
是其中之一,则:
[0079]
如果备选文档di是上一轮对话所选文档d
last
,对其直接相关概率p(c,hi|relative
direct
)进行修正得到修正后的概率p(c,di|relative
combined
)的公式为:
[0080]
p(c,di|relative
combined
)=p(c,di|relative
direct
)+p
keep
,i为备选文档编号;
[0081]
反之,备选文档di不是上一轮对话所选文档d
last
,对其直接相关概率p(c,hi|relative
direct
)进行修正的公式为:
[0082]
p(c,di|relative
combined
)=p(c,di|relative
direct
)+(1-p
keep
)。
[0083]
采用上述方法得到修正后的概率p(c,di|relative
combined
)后,按照下述公式进行归一化处理,即可得到各备选文档di为当前轮对话的最相关文档的最终概率p(c,di|relative):
[0084][0085]
步骤20234、当所述文档d
last
不属于所述备选文档中的文档时,对所述备选文档的直接相关概率,进行归一化处理,得到所述备选文档为当前轮对话的最相关文档的最终概率。
[0086]
这里,当文档d
last
不是任何一个备选文档时,说明此时发生了话题转移,因此,不需要再对备选文档的直接相关概率进行修订,直接对备选文档的直接相关概率进行归一化处理,得到各备选文档为当前轮对话的最相关文档的最终概率。
[0087]
步骤2024、选取所述最终概率最大的备选文档,作为当前轮对话的最相关文档。
[0088]
步骤203、基于所述最相关文档的编码表示和所述对话历史数据的编码表示,利用响应生成网络,生成当前轮对话的响应信息。
[0089]
本步骤中将基于对话响应生成模型中的响应生成网络,生成当前轮对话的响应信息。
[0090]
考虑到,现有方案采用的:将对话上下文与所选文档交叉编码后,直接生成回复的方式,在每个时间步生成一个词时,容易受训练数据分布的影响,更倾向于生成那些在训练语料中出现频率较高的词,从而导致最终生成的回复大都是低质量的通用回复。
[0091]
为了克服上述问题对响应信息质量的影响,一种实施方式中,可以进一步对响应信息的生成过程进行优化,将响应信息的生成过程拆分为两部分,先基于语料库中出现频率较高的词,生成响应初始文本,再从所选文档中检索出出现频率较小的关键信息(即下文中的目标知识),对响应初始文本进行修正,如此,一方面可以使得响应信息的生成不受限于训练语料库,提高模型的泛化性,另一方面可以使得响应信息的语义通顺,从而可以进一
步提高对话回复质量。以响应信息“看过,是2014年上映的一部片子。”为例,其响应初始文本为“看过,是__knowledge__上映的一部片子。”,关键信息则是“2014年”。将关键信息替代响应初始文本中的特殊词“__knowledge__”即可得到响应信息“看过,是2014年上映的一部片子。”[0092]
基于上述,具体地,可以采用下述步骤2031~步骤2033,利用响应生成网络,生成当前轮对话的响应信息:
[0093]
步骤2031、基于所述最相关文档的编码表示和所述对话历史数据的编码表示,采用点积注意力机制,获得所述最相关文档和所述对话历史数据的交叉表示。
[0094]
这里,最相关文档的编码表示d
encoded
和对话历史数据的编码表示c
encoded
,基于上述文本编码器得到。具体可以采用下述公式得到两者的交叉表示cad(contextawaredocument):
[0095][0096]
步骤2032、基于所述交叉表示和预设词表,利用预先训练的文本解码器,采用拷贝机制,为当前轮对话生成响应初始文本;所述词表基于用于模型训练的语料库中的文档和对话文本生成,并且包含用于被目标知识替换的特殊词。
[0097]
一种实施方式中,具体可以采用下述步骤x1~步骤x2,为当前轮对话生成响应初始文本:
[0098]
步骤x1、在所述文本解码器的每个时间步,遍历所述词表中的每个词wj,确定当前时间步生成的词ti为该词wj的最终概率,从所述词表中,选择所述最终概率最大的词,作为当前时间步生成的词ti。
[0099]
一种实施方式中,具体可以采用下述方法,确定当前时间步生成的词ti为词wj的最终概率:
[0100]
基于所述文本解码器当前已生成的所有词和所述交叉表示cad,确定当前时间步生成的词ti为所述词wj的初始概率p
generate
(ti=wj)。具体可以采用下述公式实现:
[0101]
p
generate
(ti=wj)=transformerdecoder(cad,t0,...,t
i-1
);
[0102]
其中,t0,...,t
i-1
为当前已生成的所有词,transformerdecoder()表示这里选择使用的文本解码器。
[0103]
基于所述最相关文档的编码表示,利用多层感知机,确定当所述词ti为所述词wj时直接从所述最相关文档中复制得到所述词ti的概率p
copy
(ti=wj)。具体可以利用softmax函数,采用下述公式实现:
[0104]
p
copy
(ti=wj)=softmax(mlp(d
encoded
))。
[0105]
基于所述p
generate
(ti=wj),利用多层感知机,确定当所述词ti为所述词wj时直接从所述词表中复制得到所述词ti的概率p(copy)。具体可以利用sigmoid函数,采用下述公式实现:
[0106]
p(copy)=sigmoid(mlp(transformerdecoder(cad,t0,...,t
i-1
)))。
[0107]
基于所述p
generate
(ti=wj)、所述p
copy
(ti=wj)以及所述p(copy),按照p(ti=wj)=(1-p(copy)
×
p
copy
(ti=wj)+p(copy)
×
p
generate
(ti=wj),确定所述ti为所述词wj的最终概率p(ti=wj)。具体可以采用下述公式实现:
[0108]
p(ti=wj)=(1-p(copy))*p
copy
(ti=wj)+p(copy)*p
generate
(ti=wj)。
[0109]
步骤x2、依次将所有所述时间步得到的词ti串接,得到所述响应初始文本。
[0110]
步骤2033、如果所述响应初始文本中含有所述特殊词,则从所述最相关文档中,检索目标知识,将所述响应初始文本中的所述特殊词替换为所述目标知识,得到当前轮对话的响应信息;否则,将所述响应初始文本,作为当前轮对话的响应信息。
[0111]
经过上述步骤2022,就可以得到响应初始文本,如果该响应初始文本中包含有指定的特殊词(如,__knowledge__)时,则需要进一步从最相关文档中检索目标知识,以利用检索得到的目标知识,对响应初始文本中的特殊词进行替换,获得最终的响应信息,否则,直接将响应初始文本作为最终的回复。
[0112]
一种实施方式中,具体可以采用下述步骤y1~y3,从所述最相关文档中,检索目标知识:
[0113]
步骤y1、利用所述文本编码器,对所述响应初始文本进行编码,得到所述响应初始文本的编码表示。具体操作可以采用下述公式表示:
[0114]
pr
encoded
=transformerencoder(pr)。
[0115]
其中,pr(prototyperesponse)为响应初始文本。
[0116]
pr={t0,...,t
n-1
},n表示响应初始文本中词的数量。
[0117]
步骤y2、基于所述响应初始文本的编码表示和所述交叉表示cad,采用点积注意力机制,获得所述响应初始文本和所述交叉表示cad的交叉表示rad(responseawaredocument)。具体操作可以利用softmax函数,采用下述公式实现:
[0118]
rad=softmax(pr
encodea
cad
t
)cad
[0119]
需要说明的是,为了避免后续将目标知识与响应初始文本组合时出现语句不通顺的问题,这里引入了响应初始文本与文档的注意力交互改进,即需要采用点积注意力机制,对响应初始文本的编码表示和所述交叉表示cad进行交叉表示,如此,相较于传统方法,可以生成更高质量的回复。
[0120]
步骤y3、基于所述交叉表示rad,利用多层感知机,对于所述最相关文档中的每个词,预测该词为目标知识的起点的概率以及为目标知识的终点的概率;将所述起点的概率最大的词作为所述目标知识的起点,将所述终点的概率最大的词作为所述目标知识的终点,基于所述目标知识的起点和终点,从所述最相关文档中,获取所述目标知识。
[0121]
具体地,本步骤中,通过一个线性层处理后,再对整个序列作softmax处理,以得到最相关文档中的每个词在文档中的位置索引i作为目标知识起点或终点的概率,具体可以采用下述公式,获得位置索引i为目标知识的起点的概率p(start=i)以及为目标知识的终点的概率p(end=i):
[0122]
p(start=i)=softmax(mlp(rad));
[0123]
p(end=i)=softmax(mlp(rad))。
[0124]
图5给出了利用上述步骤203中的方法,为当前轮对话生成响应信息的较佳示例流程示意图,如图5所示,该过程中,引入拷贝机制,生成响应初始文本,之后,当响应初始文本中有特殊词时,再利用响应初始文本,从文档中进行知识片段的抽取,即检索目标知识,最后,基于响应初始文本与目标知识的组合,生成当前轮对话的响应信息,如此,可以使得响应信息的生成不受限于训练语料库,有效提高了模型的泛化性,同时还可确保响应信息的语句通顺,从而可以有效提高对话回复质量。
[0125]
在步骤102中,当为当前轮对话生成响应信息后,即可结合样本数据中的标签数据,计算相应的损失函数值,以对模型的网络参数进行调优。较佳地,为了提高对模型训练的效果,在一种实施方式中,样本数据可以进一步包括:每轮对话的响应信息的响应初始文本标签以及目标知识的起点标签和终点标签,这样,在计算损失函数时,可以以响应初始文本、以及目标知识为监督信号,从而可以基于监督信号的多样化,有效提高模型生成响应信息的质量。
[0126]
相应地,步骤102中具体可以采用下述步骤z1~z2,计算损失函数值:
[0127]
步骤z1、基于所述最终概率、所述p
keep
、当前轮对话的正确文档标签和话题保持标签,利用交叉熵损失函数,计算第一损失函数值loss(θ,keep,d
golden
;λ);所述第一损失函数值用于对所述文档选择网络的参数进行优化调整。
[0128]
本步骤,具体采用下述公式实现:
[0129]
loss(θ,keep,d
golden
;λ)=λ*ce(p
keep
,keep)+(1-λ)*ce(p(c,di|relative),d
golden
)
[0130]
其中,ce()表示交叉熵损失函数;θ为模型参数,keep表示话题保持标签,d
golden
表示正确文档标签,λ为超参数。
[0131]
步骤z2、基于所述词ti为所述词wj的最终概率、所述起点的概率和所述终点的概率、所述响应初始文本标签以及所述目标知识的起点标签和终点标签,利用交叉熵损失函数,计算第二损失函数值loss(θ,pr
golden
,start
golden
,end
golden
),所述第二损失函数值用于对所述响应生成网络的参数进行优化调整。
[0132]
本步骤,具体采用下述公式实现:
[0133][0134]
其中,θ为模型参数,pr
golden
表示响应初始文本标签,是pr
golden
在时间步i对应的词,start
golden
表示目标知识的起点标签、end
golden
表示目标知识的终点标签,λ为超参数。
[0135]
通过上述实施例可以看出,上述方案,基于人人对话中对话话题的变化特点构建对话响应生成模型,对模型中的文档选择网络进行优化,采用二次相关方式,基于话题的保持与转移的状态,选择与每轮对话最相关的文档,以进行响应信息的生成,如此,相较于传统算法,可以有效提高面向知识回复的多文档驱动对话响应生成中文档选择阶段选择的效果,同时由于模型中显式输出了话题保持以及最终选择的概率,使得响应信息的生成具有一定的可解释性。
[0136]
另外,针对文本生成中广泛存在的“通用回复”情况,上述实施例中,进一步对基于所选择的相关文档生成响应信息的过程进行了优化,将响应信息的生成过程拆分为响应初始文本的生成和目标知识的检索两个阶段,通过响应初始文本的生成将响应信息中出现频率较高的词生成出来,通过目标知识的检索,将文档中应当在响应信息中体现的关键信息检索出来。并且,针对两个信息的组合导致句子不通顺的情况,引入了响应初始文本与文档的注意力交互改进,如此,相较于传统方法,其可以生成更高质量的回复。
[0137]
基于上述对话响应生成模型的训练方法实施例,相应地,本发实施例还提供了一种对话响应生成方法,该方法包括:
[0138]
在对话过程中,当需要生成对话响应时,利用对话响应生成模型,基于当前已产生的对话历史数据和预设的文档库,生成并输出所述对话响应。
[0139]
其中,所述对话响应生成模型基于上述对话响应生成模型的训练方法实施例训练得到。
[0140]
如上文所述,采用上述训练方法实施例,可以使得对话响应生成模型能够提高响应信息的生成质量,因此,相较于现有方法,上述对话响应生成方法实施例可以有效提高对话过程中的回复质量,增强了机器回复的智能化。
[0141]
基于上述训练方法实施例,本发明实施例还提供了一种对话响应生成模型的训练装置,包括处理器和存储器;所述存储器中存储有可被所述处理器执行的应用程序,用于使得所述处理器执行如上所述对话响应生成模型的训练方法。具体地,可以提供配有存储介质的系统或者装置,在该存储介质上存储着实现上述实施例中任一实施方式的功能的软件程序代码,且使该系统或者装置的计算机(或cpu或mpu)读出并执行存储在存储介质中的程序代码。此外,还可以通过基于程序代码的指令使计算机上操作的操作系统等来完成部分或者全部的实际操作。还可以将从存储介质读出的程序代码写到插入计算机内的扩展板中所设置的存储器中或者写到与计算机相连接的扩展单元中设置的存储器中,随后基于程序代码的指令使安装在扩展板或者扩展单元上的cpu等来执行部分和全部实际操作,从而实现上述对话响应生成模型的训练方法实施方式中任一实施方式的功能。
[0142]
其中,存储器具体可以实施为电可擦可编程只读存储器(eeprom)、快闪存储器(flash memory)、可编程程序只读存储器(prom)等多种存储介质。处理器可以实施为包括一或多个中央处理器或一或多个现场可编程门阵列,其中现场可编程门阵列集成一或多个中央处理器核。具体地,中央处理器或中央处理器核可以实施为cpu或mcu。
[0143]
需要说明的是,上述各流程和各结构图中不是所有的步骤和模块都是必须的,可以根据实际的需要忽略某些步骤或模块。各步骤的执行顺序不是固定的,可以根据需要进行调整。各模块的划分仅仅是为了便于描述采用的功能上的划分,实际实现时,一个模块可以分由多个模块实现,多个模块的功能也可以由同一个模块实现,这些模块可以位于同一个设备中,也可以位于不同的设备中。
[0144]
各实施方式中的硬件模块可以以机械方式或电子方式实现。例如,一个硬件模块可以包括专门设计的永久性电路或逻辑器件(如专用处理器,如fpga或asic)用于完成特定的操作。硬件模块也可以包括由软件临时配置的可编程逻辑器件或电路(如包括通用处理器或其它可编程处理器)用于执行特定操作。至于具体采用机械方式,或是采用专用的永久性电路,或是采用临时配置的电路(如由软件进行配置)来实现硬件模块,可以根据成本和时间上的考虑来决定。
[0145]
在本文中,“示意性”表示“充当实例、例子或说明”,不应将在本文中被描述为“示意性”的任何图示、实施方式解释为一种更优选的或更具优点的技术方案。为使图面简洁,各图中的只示意性地表示出了与本发明相关部分,而并不代表其作为产品的实际结构。另外,以使图面简洁便于理解,在有些图中具有相同结构或功能的部件,仅示意性地绘示了其中的一个,或仅标出了其中的一个。在本文中,“一个”并不表示将本发明相关部分的数量限
制为“仅此一个”,并且“一个”不表示排除本发明相关部分的数量“多于一个”的情形。在本文中,“上”、“下”、“前”、“后”、“左”、“右”、“内”、“外”等仅用于表示相关部分之间的相对位置关系,而非限定这些相关部分的绝对位置。
[0146]
以上所述,仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

技术特征:
1.一种对话响应生成模型的训练方法,其特征在于,包括:获取预设的样本数据和文档库,所述样本数据包括对话过程数据以及每轮对话的正确文档标签和话题保持标签;利用对话响应生成模型,遍历所述对话过程数据对应的每轮对话,基于在该轮对话的响应信息之前已产生的对话历史数据和所述文档库,生成该轮对话的响应信息,并基于所述样本数据中的相应标签,计算损失函数值,利用所述损失函数值,对所述对话响应生成模型的参数进行优化调整;其中,在进行所述生成时,采用二次相关方式,基于当前的话题保持状况,从所述文档库中选取用于生成所述响应信息的最相关文档。2.根据权利要求1所述的方法,其特征在于,所述生成该轮对话的响应信息包括:利用预先训练的文本编码器,对所述对话历史数据的进行编码,并对所得到的编码表示进行平均池化处理,得到所述对话历史数据的向量表示;获取所述文档库中每个文档的向量表示;其中,所述文档的向量表示通过利用所述文本编码器对所述文档分别进行编码,并对所得到的编码表示进行平均池化处理得到;基于所述向量表示,利用文档选择网络,采用二次相关方式,基于当前的话题保持状况,确定当前轮对话的最相关文档;基于所述最相关文档的编码表示和所述对话历史数据的编码表示,利用响应生成网络,生成当前轮对话的响应信息。3.根据权利要求2所述的方法,其特征在于,所述文本编码器的训练包括:获取预设的编码样本数据,所述编码样本数据包括对话历史数据c、对话历史数据的相关文档d
+
和不相关文档d-;利用所述文本编码器,分别对所述编码样本数据中的对话历史数据c、所述相关文档d
+
和所述不相关文档d-进行编码,并对所得到的每个编码表示分别进行平均池化处理,得到所述对话历史数据c、所述相关文档d
+
和所述不相关文档d-各自的向量表示;基于所述对话历史数据c和所述相关文档d
+
的向量表示,计算向量间的余弦相似度,得到所述对话历史数据c和所述相关文档d
+
的相关性分数;基于所述对话历史数据c和所述不相关文档d-的向量表示,计算向量间的余弦相似度,得到所述对话历史数据c和所述不相关文档d-的相关性分数;基于所述相关性分数,利用铰链损失函数,计算编码损失函数值;利用所述编码损失函数值,对所述文本编码器的参数进行优化调整。4.根据权利要求2所述的方法,其特征在于,所述确定当前轮对话的最相关文档包括:基于所述向量表示,通过计算向量间的余弦相似度,得到所述对话历史数据分别与每个所述文档的相关性分数;从所述文档库中,选择前n个所述相关性分数最大的文档,作为备选文档;所述n为预设的大于1的整数;基于在生成上一轮对话的响应信息时选取的最相关文档d
last
是否属于所述备选文档,确定所述备选文档为当前轮对话的最相关文档的最终概率;选取所述最终概率最大的备选文档,作为当前轮对话的最相关文档。5.根据权利要求4所述的方法,其特征在于,所述确定所述备选文档为当前轮对话的最相关文档的最终概率包括:
基于所述备选文档的向量表示和所述对话历史数据的向量表示,采用点积计算方式,预测所述备选文档为当前轮对话的最相关文档的概率,得到所述备选文档的直接相关概率;基于所述文档d
last
的向量表示和所述对话历史数据的向量表示,利用多层感知机mlp,预测所述文档d
last
为当前轮对话的最相关文档的概率p
keep
;当所述文档d
last
属于所述备选文档时,利用所述概率p
keep
,对所述备选文档的直接相关概率,进行修正;并对所述修正得到的概率,进行归一化处理,得到所述备选文档为当前轮对话的最相关文档的最终概率;当所述文档d
last
不属于所述备选文档中的文档时,对所述备选文档的直接相关概率,进行归一化处理,得到所述备选文档为当前轮对话的最相关文档的最终概率;其中,所述利用所述概率p
keep
,对所述备选文档的直接相关概率,进行修正包括:如果所述备选文档为所述文档d
last
,则计算所述备选文档的直接相关概率与所述p
keep
的和,得到对所述备选文档的直接相关概率进行修正的结果,否则,计算所述备选文档的直接相关概率与

的和,得到对所述备选文档的直接相关概率进行修正的结果;其中,

=1-p
keep
。6.根据权利要求5所述的方法,其特征在于,所述利用响应生成网络,生成当前轮对话的响应信息包括:基于所述最相关文档的编码表示和所述对话历史数据的编码表示,采用点积注意力机制,获得所述最相关文档和所述对话历史数据的交叉表示;基于所述交叉表示和预设词表,利用预先训练的文本解码器,采用拷贝机制,为当前轮对话生成响应初始文本;所述词表基于用于模型训练的语料库中的文档和对话文本生成,并且包含用于被目标知识替换的特殊词;如果所述响应初始文本中含有所述特殊词,则从所述最相关文档中,检索目标知识,将所述响应初始文本中的所述特殊词替换为所述目标知识,得到当前轮对话的响应信息;否则,将所述响应初始文本,作为当前轮对话的响应信息。7.根据权利要求6所述的方法,其特征在于,所述为当前轮对话生成响应初始文本包括:在所述文本解码器的每个时间步,遍历所述词表中的每个词w
j
,基于所述文本解码器当前已生成的所有词和所述交叉表示,确定当前时间步生成的词t
i
为所述词w
j
的初始概率p
generate
(t
i
=w
j
),基于所述最相关文档的编码表示,利用多层感知机,确定当所述词t
i
为所述词w
j
时直接从所述最相关文档中复制得到所述词t
i
的概率p
copy
(t
i
=w
j
);基于所述p
generate
(t
i
=w
j
),利用多层感知机,确定当所述词t
i
为所述词w
j
时直接从所述词表中复制得到所述词t
i
的概率p(copy);基于所述p
generate
(t
i
=w
j
)、所述p
copy
(t
i
=w
j
)以及所述p(copy),按照p(t
i
=w
j
)=(1-p(copy)
×
p
copy
(t
i
=w
j
)+p(copy)
×
p
generate
(t
i
=w
j
),确定所述t
i
为所述词w
j
的最终概率p(t
i
=w
j
);从所述词表中,选择所述最终概率最大的词,作为当前时间步生成的词t
i
;依次将所有所述时间步得到的词t
i
串接,得到所述响应初始文本;所述从所述最相关文档中,检索目标知识包括:利用所述文本编码器,对所述响应初始文本进行编码,得到所述响应初始文本的编码表示;
基于所述响应初始文本的编码表示和所述交叉表示,采用点积注意力机制,获得所述响应初始文本和所述交叉表示的交叉表示rad;基于所述交叉表示rad,利用多层感知机,对于所述最相关文档中的每个词,预测该词为目标知识的起点的概率以及为目标知识的终点的概率;将所述起点的概率最大的词作为所述目标知识的起点,将所述终点的概率最大的词作为所述目标知识的终点,基于所述目标知识的起点和终点,从所述最相关文档中,获取所述目标知识。8.根据权利要求7所述的方法,其特征在于,所述样本数据进一步包括每轮对话的响应信息的响应初始文本标签以及目标知识的起点标签和终点标签;所述计算损失函数值包括:基于所述最终概率、所述p
keep
、当前轮对话的正确文档标签和话题保持标签,利用交叉熵损失函数,计算第一损失函数值;所述第一损失函数值用于对所述文档选择网络的参数进行优化调整;基于所述词t
i
为所述词w
j
的最终概率、所述起点的概率和所述终点的概率、所述响应初始文本标签以及所述目标知识的起点标签和终点标签,利用交叉熵损失函数,计算第二损失函数值;所述第二损失函数值用于对所述响应生成网络的参数进行优化调整。9.一种对话响应生成方法,其特征在于,包括:在对话过程中,当需要生成对话响应时,利用对话响应生成模型,基于当前已产生的对话历史数据和预设的文档库,生成并输出所述对话响应;其中,所述对话响应生成模型基于权利要求1至9所述的任一所述训练方法训练得到。10.一种对话响应生成模型的训练装置,其特征在于,包括处理器和存储器;所述存储器中存储有可被所述处理器执行的应用程序,用于使得所述处理器执行如权利要求1至8中任一项所述对话响应生成模型的训练方法。

技术总结
本申请公开了一种对话响应生成模型的训练方法和装置及对话响应生成方法,其中训练方法包括:获取预设的样本数据和文档库,所述样本数据包括对话过程数据以及每轮对话的正确文档标签和话题保持标签;利用对话响应生成模型,遍历所述对话过程数据对应的每轮对话,基于在该轮对话的响应信息之前已产生的对话历史数据和所述文档库,生成该轮对话的响应信息,并基于所述样本数据中的相应标签,计算损失函数值,利用所述损失函数值,对所述对话响应生成模型的参数进行优化调整;其中,在进行所述生成时,采用二次相关方式,基于当前的话题保持状况,从所述文档库中选取用于生成所述响应信息的最相关文档。采用本申请,可以提高对话的回复质量。对话的回复质量。对话的回复质量。


技术研发人员:王金涛 王小捷 袁彩霞
受保护的技术使用者:北京邮电大学
技术研发日:2022.04.07
技术公布日:2022/7/5
转载请注明原文地址: https://www.8miu.com/read-13585.html

最新回复(0)