基于情绪分析和生成式对抗网络的对话生成方法及系统

文档序号:30064814发布日期:2022-05-18 00:39阅读:169来源:国知局
基于情绪分析和生成式对抗网络的对话生成方法及系统

1.本发明涉及对话生成技术领域,尤其基于情绪分析和生成式对抗网络的对话生成方法及系统。


背景技术:

2.对话生成技术是深度学习应用的一个重要方向,目前的研究中,对话生成领域主要使用的技术方案可以分为两种,一种是检索式对话,检索式的对话根据用户输入的句子,计算并匹配语料库中相似的问题,并进行排序打分,选用候选集中得分最高的作为对话系统的回复。另一种是生成式对话,根据用户输入的句子,将句子分词,规格化后送入提前训练好的对话模型中,根据语料库中的词语生成一段对话。两种主流技术方案选取的最终回复对于使用者的体验产生了较大的差异,检索式回复由于其回复内容源于预设好的固定语句,便于用户理解,缺点在于缺乏回复多样性,仅限于对预设好的问句可以达到较好的效果。生成式回复内容来源于对话模型对数据集的学习人类对话后根据语料库中的词语生成的句子,多样性丰富,但生成式的对话系统更加倾向于生成安全性回复,缺乏具体有效的信息,不会根据用户输入的变化做出适应性的调整。
3.生成式的对话系统是当下研究内容的热点内容,如何让生成式的对话系统生成更加富有人类情感的有价值的语句成为当下急需解决的重要问题。


技术实现要素:

4.本发明提供了基于情绪分析和生成式对抗网络的对话生成方法及系统,用于解决现有的生成式对话系统生成的回复缺乏情感,安全性回复过多的技术问题。
5.为解决上述技术问题,本发明提出的技术方案为:
6.一种基于情绪分析和生成式对抗网络的对话生成方法,包括以下步骤:
7.构建基础对话模型,并获取多组已标注真实回答的对话样本数据训练所述基础对话模型;
8.构建对话情绪分类器,并获取多组已标注情绪类别的对话样本数据训练所述对话情绪分类器;
9.使用所述基础对话模型以及所述对话情绪分类器构建生成式对抗网络,所述生成式对抗网络基于所述基础对话模型生成生成器,基于所述对话情绪分类器生成判别器,所述判别器用于判别生成器输出回答与真实回答之间的情绪异同,并将根据所述情绪异同优化生成器的网络参数,使所述生成器的输出回答的情绪趋近于真实回答的情绪;
10.训练所述生成式对抗网络,并使用训练好的所述生成式对抗网络生成对话。
11.优选的,所述生成式对抗网络的生成器包括两个基础对话模型,分别为第一基础对话模型和第二基础对话模型;所述第一基础对话模型的输出端分别与所述第二基础对话模型的输入端、生成器的输入端连接;所述第二基础对话模型的输出端分别与所述第一基础对话模型的输入端、生成器的输入端连接;训练所述生成式对抗网络,包括以下步骤:
12.将外界真实对话数据作为初始激励输入到所述第一基础对话模型中,迭代开始;
13.在每轮迭代中:
14.所述第一基础对话模型生成本轮迭代的输入量的第一回答数据;并将所述第一回答数据输入到所述第二基础对话模型中,作为所述第二基础对话模型在本轮迭代的输入量;还将所述第一回答数据输入到所述判别器中;
15.所述第二基础对话模型生成所述第一回答数据的第二回答数据,并将所述第二回答数据输入到所述第一基础对话模型中作为第一基础对话模型的下轮迭代的输入量;还将所述第二回答数据输入到所述判别器中;
16.所述判别器使用所述对话情绪分类器计算所述第一回答数据的第一情绪向量作为真实回答情绪,计算所述第二回答数据的第二情绪向量作为生成器输出回答的情绪,并根据所述第一情绪向量和第二情绪向量计算第二基础对话模型的输出损失,并使用所述输出损失更新所述第二基础对话模型的网络参数。
17.优选的,根据所述第一情绪向量和第二情绪向量计算第二基础对话模型的输出损失,并使用所述输出损失更新所述第二基础对话模型的网络参数,具体为:
18.将所述第一情绪向量和第二情绪向量输入交叉熵损失计算公式中,计算所述第二基础对话模型的输出损失;并将所述输出损失反向传播至所述第二基础对话模型中更新所述第二基础对话模型的梯度参数。
19.优选的,所述生成式对抗网络迭代训练的终止条件为:
20.第一基础对话模型与第二基础对话模型在连续三轮迭代中产生相同情绪或相同的对话。
21.优选的,所述基础对话模型为基于门循环控制单元的seq2seq模型;所述基础对话模型的编码器为双向门循环控制网络;所述基础对话模型的解码器为基于注意力机制的单向门循环控制网络;所述单向门循环控制网络的解码公式如下:
22.e
t

t
=a(s
t
′‑1,h
t
)
[0023][0024][0025]st

=gru(y
t
′‑1,s
t
′‑1,c
t

)
[0026]
其中,t

为解码器的解码时刻,t为编码器的编码时刻,s
t
′‑1为t
′‑
1的解码器隐状态;h
t
为t编码时刻的编码器中间状态;e
t

t
为t
′‑
1解码时刻的解码器隐状态与t编码时刻的编码器中间状态之间的注意力的重要程度;a
t

t
为t

解码时刻下的解码器对t编码时刻下的编码器的隐藏状态的注意力权重,t为总时间步;c
t

为解码器在t

解码时刻的上下文变量。
[0027]
优选的,使用训练好的所述生成式对抗网络生成对话,具体包括以下步骤:
[0028]
将目标问题输入至所述第二基础对话模型中,得到所述目标问题的回答。
[0029]
优选的,所述基础对话模型的输入量的模态类型包括:语音、文字、视频中一种或任意几种的组合;所述基础对话模型的输出量的模态类型包括:语音、文字、视频中一种或任意几种的组合;所述基础对话模型的对话样本数据的模态类型包括:语音、文字、视频中
一种或任意几种的组合;所述对话情绪分类器的输入量的模态类型包括:语音、文字、视频中一种或任意几种的组合;所述对话分类器的对话样本数据的模态类型包括:语音、文字、视频中一种或任意几种的组合。
[0030]
优选的,在训练时,所述第一基础对话模型的初始输入为多种不同模态的对话数据;所述第一基础对话模型的输出量的模态为文本;所述第二基础对话模型的输出量的模态为文本。
[0031]
优选的所述第一基础对话模型的初始输入为多种不同模态的对话数据其中,x表示对话数据,上标数字表示对应对话数据的序号,n表示输入的对话数据个数;下标字母表示对应对话数据的类别;所述第一基础对话模型包括模态转换单元以及对话生成单元;所述模态转换单元用于将初始输入的多种不同模态的对话数据统一转化为预设的单模态数据所述对话生成单元用于生成所述单模态数据的第一回答数据其中,y表示第一回答数据;所述第二基础对话模型用于生成所述第一回答数据的第二回答数据z表示第二回答数据;所述对话情绪分类器用于输出所述第一回答数据的第一情绪向量其中,α表示第一情绪向量;所述对话情绪分类器用于输出所述第二回答数据的第二情绪向量β表示第二情绪向量。
[0032]
优选的,所述第一基础对话模型的输入量和输出量均为多模态形式;所述第二基础对话模型的输入量和输出量均为多模态形式;所述对话情绪分类器包括多个不同种类的单模态情绪分类单元以及情绪融合单元;所述对话情绪分类器用于将多模态形式的第一回答数据或第二回答数据中的各个单模态数据分发给对应模态的情绪分类单元,各个情绪分类单元输出各个单模态数据的情绪给所述情绪融合单元,所述情绪融合单元采用决策融合的方式将所述第一回答数据或第二回答数据中的各个单模态数据的情绪进行融合,得到第一回答数据或第二回答数据的综合情绪向量。
[0033]
一种计算机系统,包括存储器、处理器以及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述方法的步骤。
[0034]
本发明具有以下有益效果:
[0035]
1、本发明中的基于情绪分析和生成式对抗网络的对话生成方法及系统,通过构建并训练基础对话模型、对话情绪分类器;使用基础对话模型以及对话情绪分类器构建生成式对抗网络,生成式对抗网络基于基础对话模型生成生成器,基于对话情绪分类器生成判别器,判别器用于判别生成器输出回答与真实回答之间的情绪异同,并将根据情绪异同优化生成器的网络参数,使生成器的输出回答的情绪趋近于真实回答的情绪;训练生成式对抗网络,并使用训练好的生成式对抗网络生成对话。本发明使用基础对话模型以及对话情绪分类器构建生成式对抗网络;使训练完成的生成式对抗网络模型拥有配合用户情绪的能力,可根据用户使用时的情绪调整生成的语句,更加贴近真实对话。
[0036]
2、在优选方案中,本发明结合了多模态输入情绪判别的对话生成模型,模型训练
完成后,可接收多模态的用户输入,使模型拥有通过多模态识别用户使用时刻情绪的变化的能力,模型可应用于更多的场景以适应面对不同领域的系统。
[0037]
除了上面所描述的目的、特征和优点之外,本发明还有其它的目的、特征和优点。下面将参照附图,对本发明作进一步详细的说明。
附图说明
[0038]
构成本技术的一部分的附图用来提供对本发明的进一步理解,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
[0039]
图1是本发明优选实施例中的对话情绪判别器模型训练的流程图。
[0040]
图2是本发明优选实施例中的基础对话生成模型预训练的流程图。
[0041]
图3是本发明优选实施例中的生成式对抗网络的训练流程图;
[0042]
图4是使用本发明优选实施例中的基于情绪分析和生成式对抗网络的对话生成方法的流程图。
具体实施方式
[0043]
以下结合附图对本发明的实施例进行详细说明,但是本发明可以由权利要求限定和覆盖的多种不同方式实施。
[0044]
实施例一:
[0045]
如图4所示,本实施中公开了一种基于情绪分析和生成式对抗网络的对话生成方法,包括以下步骤:
[0046]
构建基础对话模型,并获取多组已标注真实回答的对话样本数据训练所述基础对话模型;
[0047]
构建对话情绪分类器,并获取多组已标注情绪类别的对话样本数据训练所述对话情绪分类器;
[0048]
使用所述基础对话模型以及所述对话情绪分类器构建生成式对抗网络,所述生成式对抗网络基于所述基础对话模型生成生成器,基于所述对话情绪分类器生成判别器,所述判别器用于判别生成器输出回答与真实回答之间的情绪异同,并将根据所述情绪异同优化生成器的网络参数,使所述生成器的输出回答的情绪趋近于真实回答的情绪;
[0049]
训练所述生成式对抗网络,并使用训练好的所述生成式对抗网络生成对话。
[0050]
此外,在本实施例中,还公开了一种计算机系统,包括存储器、处理器以及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述方法的步骤。
[0051]
本发明使用基础对话模型以及对话情绪分类器构建生成式对抗网络;使训练完成的生成式对抗网络模型拥有配合用户情绪的能力,可根据用户使用时的情绪调整生成的语句,更加贴近真实对话。
[0052]
实施例二:
[0053]
实施例二是实施例一的优选实施例,其与实施例一的不同之处,对基于情绪分析和生成式对抗网络的对话生成方法的具体步骤进行了介绍:
[0054]
在本实施例中,公开了一种基于情绪分析和生成式对抗网络的对话生成方法,包
括以下步骤:
[0055]
s1、获取多组情绪分类样本数据,每组样本数据中,包括至少音频、视频,与该组数据匹配的情绪标注;
[0056]
s2、利用神经网络训练情绪分类器,得到的模型可根据多模态的对话输入,识别输入对话对应的情绪;
[0057]
s3、获取多组对话样本数据,包括真实问题、与所述真实问题匹配的真实答案;
[0058]
s4、利用神经网络训练端到端的基础对话生成模型,得到的模型可根据输入的编码数据,生成一段基于输入问题的回复;
[0059]
s5、使用两个基础对话生成模型作为对话生成器,结合以情绪分类模型作为判别器组合成为基于生成式对抗网络的训练模型,取对抗模型训练后的生成器的部分作为最终模型;
[0060]
s6、使用训练好的最终模型生成对话。
[0061]
其中,如图2所示,基础对话生成模型预训练的训练过程如下:
[0062]
将所获取的数据预处理为易于识别的分词形式x=(x1,x2,x3,...,xn),其中每个x都为全部数据的不重复分词集合的最小非空子集,全部数据的不重复分词集合的子集作为本模型用于对话生成的语料库。
[0063]
基础对话生成模型通过seq2seq模型训练,seq2seq模型包括编码器encoder和解码器decoder,encoder用于编码序列的信息,将任意长度的序列信息编码到一个向量h=(h1,h2,h3,...,hm)里。而decoder是解码器,解码器得到上下文信息向量h之后可以将信息解码,并输出为序列y=(y1,y2,y3,...,yk)中,并通过分词过程的编码规则翻译成最终生成的语句。
[0064]
sea2seq模型的实现方式有多种,本实施例通过门循环控制单元(gru)实现,在实际中可以通过双向门循环控制单元处理,以控制输入序列中当前时刻完整的过去和未来的上下文信息。
[0065]
门循环控制单元的更新门和重置门计算过程如下:
[0066]
z=σ(wzx
t
+u
zht-1
)
[0067]
r=σ(wrx
t
+u
rht-1
)
[0068]
其中,x
t
为第t个时间步的输入向量,即输入序列x的第t个分量,h
t-1
保存的是前一个时间步t-1的信息。
[0069]
门循环控制网络通过重置门捕捉时间序列中的短期依赖关系,通过更新门捕捉时间序列中的长期以来关系,门循环网络在解决长短距依赖拥有优异的性能而作为seq2seq模型的编码器encoder和解码器decoder的实现网络。
[0070]
为解决解码器在不同时刻的关注度问题引入注意力机制(attention mechanism),解码器decoder在进行t时刻计算的时候,除了t-1时刻的隐状态,当前时刻的输入,注意力机制还可以参考编码器encoder所有时刻的输入。常见的注意力是一种soft的注意力,即一种概率合为1的注意力计算,假设输入为五个单词,注意力将以概率的形式表现为一个注意力向量,如(0.4,0.1,0.2,0.2,0.1),此形状的向量即表示对于当前输入,注意力机制要求解码器关注与第一个单词。
[0071]
值得注意的,编码器encoder在编码过程可以将一整个序列输入而得到中间向量
h,但是解码器decoder在t时刻的计算时输入为t-1时刻的输出,因此每一次只可以处理当前时刻的数据,所以编码器encoder在设计时可从希望考虑过去与将来的上下文的角度使用双向门循环控制网络,而解码器仅可以使用单向门循环控制网络,引入注意力机制的解码器计算过程如下所示:
[0072]et

t
=a(s
t
′‑1,h
t
)
[0073][0074][0075]st

=gru(y
t
′‑1,s
t
′‑1,c
t

)
[0076]
其中t

为解码器的不同时刻,t为编码器的不同时刻,e
t

t
即为上一个时刻的解码器隐状态s
t
′‑1在不同时刻t与编码器中间状态h
t
计算得到的注意力的重要程度,a
t

t
为给定解码器当前时间步t

,对编码器不同时间步t的隐藏状态加权平均即注意力权重,t为总时间步,c
t

为解码器在时间步t

的上下文变量。
[0077]
经过预训练后的基础对话生成模型保留下来,并使用相同参数复制另一个相同的智能体,在未来的对抗训练中,其中一个智能体保持现状不变,另一个智能体根据情绪判别的结果不断优化,其中一个智能体的对话以较为随机的机制生成对话的可避免在对抗学习中两个模型同时学习到如趋向于生成同类情绪表达的对话取巧策略以达到目的。
[0078]
如图1所示,情绪分类模型的训练过程如下:
[0079]
情绪分类模型以多模态情绪识别为主体,数据获取需有多模态来源,实验证明多模态的情绪识别准确率要远大于单一模态情绪识别的准确率。本实施例通过对音频、视频、文本三种模态进行简单讲解,技术人员在具体实现时,可根据具体业务要求修改所使用的内容。
[0080]
对于视频源数据,使用开源工具如ffmpeg从每个视频抽取一定数量的图片以进行后续特征提取操作。图像识别领域有许多优秀的网络可对人面部表情特征进行提取,本实施例采用vgg16和densenet网络对人脸特征进行提取。
[0081]
对于音频源数据使用opensmile(open speech and music interpretation by large space extraction)是一个能够用于大批量提取离线数据特征的特征提取工具,也支持实时的在线特征提取,具有高速、高效率、高度模块化和灵活性等特点。
[0082]
对于文本源数据,基于现阶段大量的文本情绪识别数据集,训练了一个长短期记忆网络得到了一个基础的基于文本单模态的情绪识别网络。
[0083]
提取出图像、语音、文本三中模态特征之后,使用前面步骤提取的特征训练针对于图像、音频、文本三种模态的两种情绪分类器,针对多模态的情绪识别方法一般有特征融合与决策融合两种策略,由于特征融合的方式具有不同模态的特征融合之后会导致特征向量的维度变得很大以及不同模态的特征之间会互相影响等缺点。因此决定采用决策融合的方式进行多模态的融合,决策融合就是将多个单模态的分类器输出的置信分数通过某种方法进行叠加融合得到最后的置信分数,即模态融合之后每种情感类别的概率。
[0084]
传统决策融合阶段采用多数融合、平均融合、加权融合或者全连接层融合等方式。
这些融合方式有的是采用集成学习的思想,根据多个单模态情感识别的结果进行投票,将投票过程中的多数派支持的结果作为最后模态融合的结果,这样的缺点在于不能充分利用单模态情感识别输出的置信分数,导致那些容易被误分类的类别被分错。本实施例中使用se-block(squeeze and excitation block)实现通道注意力机制,然后使用1*1的卷积核的卷积层代替全连接层进行结果的融合。se-block是通道注意力机制的一种实现方式,它聚焦于通道维度,可以根据不同通道之间的信息关联进行建模,通过训练的方式能够学习到为每个通道分配多少权重是当前最优解,然后去调整各通道之间的权重。se模块的操作可以分为三步。第一步是squeeze操作,对每个通道在空间维度上进行压缩,压缩之后的数表示该通道。该步操作的输出的维度与输入的通道数一致。第二步是excitation操作,该操作是基于各个通道之间的依赖性,为每个特征通道生成一个权重,用于代表该特征通道的重要性。第三步就是将第二步输出的权重乘到原始的特征上,完成在通道维度上对原始特征的改变。带有1*1卷积核的卷积层在这里的作用是将各个特征通道进行叠加融合,能够实现多个特征通道的降维和跨通道的数据融合,并且保证空间信息不受影响,在结果上能达到和全连接层相当的效果。
[0085]
本实施例将多模态融合情感识别的结果分为愤怒、尴尬、害怕、开心、悲伤、惊讶、中性的七个分类,经过决策融合之后的多模态融合模型的精确度相比于单模态的情绪识别模型有较大的性能提升,是后续对抗训练中针对两个独立智能体(即agent1、agent2)生成的对话情绪识别过程的判别器。
[0086]
如图3所示,对话生成对抗模型的训练过程如下:
[0087]
经过基础对话生成模型预训练后,可得到一个基于seq2seq模型的生成式对话神经网络模型,它由一个基于双向gru的encoder和一个基于单向gru的decoder组成,我们为其加入了注意力机制解决了其在解码过程中不同时刻的关注度问题,本发明最终阶段将使用两个上述过程生成的基础对话模型,在本实施例中分别命名为agent1(即第一基础对话模型)和angent2(即第二基础对话模型),首先读取预训练阶段保存的基础模型,将两个agent组成一个模型,agent1的初始输入为外界真实多模态输入,后续的输入为agent2的单模态输出即文字输入,而agent2的输入为agent1的每一次对话的输出,两个agent相互不断进行对话并经过情绪分析器模型不断优化对话模型。
[0088]
其中两个agent的agent1作为基础生成器不根据情绪分析结果进行优化,目的是避免两个agent为获取更高的评价而倾向于产生某种固定且统一的对话内容,由于agent1仅通过最基础的对话训练方式训练而成,同时也就保证了agent1生成内容的随机性。训练阶段agent2作为最终的目标模型,根据情绪判别器对两个agent的对话结果进行判断,并反向更新agent2的参数,目标是可以让其产生更加富有情感的语句。
[0089]
在训练过程中的情绪判别模型使用的方法是:
[0090]
除第一轮对话对agent1的第一个输入为外界真实输入外,后续的每一轮对话都为两个agent之间以生成式方式生成的对话内容,取其每一个agent在每一轮对话中的输出,将其按照情绪判别器中文本情绪判别器部分进行基础的情绪判别,本实施例中规定以agent2生成的语句情绪与agent1生成的语句情绪相同为目标,如生成的语句情绪不同,说明agent2可能按照某种安全回复的形式回复了agent1上一轮的对话,每轮对话情绪向量对作为output与target进行交叉熵计算损失,对agent2进行反向传播更新梯度参数。
[0091]
即将外界真实对话数据作为初始激励输入到agent1中,迭代开始,并在每轮迭代中:
[0092]
agent1生成本轮迭代的输入量的第一回答数据;并将第一回答数据输入到agent2中,作为agent2在本轮迭代的输入量;还将第一回答数据输入到判别器中;
[0093]
agent2生成第一回答数据的第二回答数据,并将第二回答数据输入到第一基础对话模型中作为agent1的下轮迭代的输入量;还将第二回答数据输入到判别器中;
[0094]
判别器使用对话情绪分类器计算第一回答数据的第一情绪向量作为真实回答情绪,计算第二回答数据的第二情绪向量作为生成器输出回答的情绪,将第一情绪向量和第二情绪向量输入交叉熵损失计算公式中,计算第二基础对话模型的输出损失;并将输出损失反向传播至第二基础对话模型中更新第二基础对话模型的梯度参数。
[0095]
值得说明的是,训练过程中,最终agent1与agent2在某个阶段会倾向于产生相同的语句来逃避情绪判别器的判断,一般认为当agent2与agent1在训练的某个阶段中连续三轮产生相同情绪或相同的对话即结束本轮次的训练。
[0096]
经过多轮次的对抗训练后,agent2会更加倾向于生成以agent1的对话情感为基础的语句,至此训练结束,保存agent2的模型即可用于各类场景下生成式对话seq2seq模型的基础模型,在实际系统中应用。
[0097]
可选的,以情感判断为依据的判别器可在训练中进行细节上的调整,在实际应用中愤怒、尴尬、害怕、开心、悲伤、惊讶、中性的七个分类并不一定要一一对应,如在某些场景下,用户愤怒的情绪可能希望得到悲伤、中性的回复,用户尴尬的输入可能得到安慰性质的回复,因此在实际应用中,技术人员可选择性的控制不同情绪对应的情感生成目标种类,以适应不同场景下的应用。
[0098]
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1