任务型对话模型预训练方法、装置、设备及存储介质与流程

文档序号:26050666发布日期:2021-07-27 15:25阅读:97来源:国知局
任务型对话模型预训练方法、装置、设备及存储介质与流程

本发明涉及人工智能领域,尤其涉及一种任务型对话模型预训练方法、装置、设备及存储介质。



背景技术:

具有自注意力编码结构的预训练模型已经被广泛的应用到许多nlp领域中。这些模型是基于大规模的通用文本语料库(如英语维基百科或书籍)进行自监督训练。预训练模型是一种迁移学习的应用,利用几乎无限的文本,学习输入句子的每一个成员的上下文相关的表示,它隐式地学习到了通用的语法语义知识。

目前已经提出的预训练模型有bert,roberta,xlnet等。这些模型大多采用自监督的方式在开放领域数据中进行预训练,包括两种预训练方法:一种是面向单句子任务(比如文本分类等)的masklanguagemodel自监督方式,另一种是基于句对任务(比如语义推论,句子匹配等)的nextsentenceprediction自监督方式,由于普通文本和任务型对话之间的语言模式的潜在差异,现有的预训练方法无法同任务型对话系统中变量有效结合而难以提取对话中的深层含义。



技术实现要素:

本发明的主要目的在于解决现有预训练方法无法同任务型对话系统中变量有效结合而难以提取到对话中深层含义的问题。

本发明第一方面提供了一种任务型对话模型预训练方法,包括:

获取历史对话记录中第一角色对话语句序列,以及所述历史对话记录中的第二角色对话语句序列,其中,所述第一角色对话语句序列包括第一角色在多轮对话中的对话语句,所述第二角色对话语句序列包括第二角色在多轮对话中的对话语句;

将所述第一角色对话语句序列中的所有对话语句与所述第二角色对话语句序列中的所有对话语句进行合并与重组,得到第一对话序列,并将所述第一对话序列中的所有对话语句进行随机排序,得到第二对话序列;

对所述第一对话序列的每一个单词和所述第二对话序列的每一个单词进行词向量叠加,得到所述第一对话序列的第一初始词表达向量序列和所述第二对话序列的第二初始词表达向量序列;

将所述第一初始词表达向量序列和所述第二初始词表达向量序列输入预置bert模型,进行预训练,其中,所述bert模型用于预测对话属于第一对话序列和第二对话序列的概率分布。

可选的,在本发明第一方面的第一种实现方式中,所述将所述第一角色对话语句序列中的所有对话语句与所述第二角色对话语句序列中的所有对话语句进行合并与重组,得到第一对话序列包括:

将所述第二角色对话语句序列中的所有对话语句合并到所述第一角色对话语句序列中,得到对话样本序列;

按照对话角色顺序、对话轮次顺序,对所述对话样本序列中的对话语句进行排列,并在各对话语句之间插入预置时间分割符,得到第一对话序列。

可选的,在本发明第一方面的第二种实现方式中,所述所述对所述第一对话序列的每一个单词和所述第二对话序列的每一个单词进行词向量叠加,得到所述第一对话序列的第一初始词表达向量序列和所述第二对话序列的第二初始词表达向量序列包括:

基于预置分词工具对所述第一对话序列中的语句和所述第二对话序列中的语句进行分词,得到所述第一对话序列对应的第一分词序列和所述第二对话序列对应的第二分词序列;

对所述第一分词序列中的任意分词和所述第二分词序列中的任意分词进行词向量叠加,得到所述第一分词序列的第一初始词表达向量序列和所述第二分词序列的第二初始词表达向量序列。

可选的,在本发明第一方面的第三种实现方式中,所述词向量叠加使用的叠加向量至少包括词嵌入向量、词类型嵌入向量、词的位置嵌入向量、词对应的语句所属角色的角色嵌入向量、词对应的语句所属轮次的轮次嵌入向量。

可选的,在本发明第一方面的第四种实现方式中,所述将所述第一初始词表达向量序列和所述第二初始词表达向量序列输入预置bert模型,进行预训练包括:

对预置bert模型进行初始化,并将所述第一初始词表达向量序列和所述第二初始词表达向量序列输入所述bert模型;

通过所述bert模型,对所述第一初始词表达向量序列和所述第二初始词表达向量序列进行自监督学习;

将预置对话语句输入所述bert模型,基于所述bert模型的预置第一隐节点预测所述对话语句所属对话序列,得到二分类概率分布;

基于预置损失函数计算所述二分类概率分布的损失值,并根据所述损失值对所述bert模型的参数进行调节,当所述损失值小于预置最小损失值时,保存所述损失值对应的模型参数。

可选的,在本发明第一方面的第五种实现方式中,在所述基于预置损失函数计算所述二分类概率分布的损失值,并根据所述损失值对所述bert模型的参数进行调节,当所述损失值小于预置最小损失值时,保存当前的模型参数之后,还包括:

基于所述bert模型的预置第二隐节点预测所述对话语句对的语句排列顺序,得到多分类排列概率分布;

基于预置损失函数计算所述多分类排列概率分布的损失值,并根据所述损失值对所述bert模型的参数进行调节,当所述损失值小于预置最小损失值时,保存所述损失值对应的模型参数。

本发明第二方面提供了一种任务型对话模型预训练装置,包括:

对话获取模块,用于获取历史对话记录中第一角色对话语句序列,以及所述历史对话记录中的第二角色对话语句序列,其中,所述第一角色对话语句序列包括第一角色在多轮对话中的对话语句,所述第二角色对话语句序列包括第二角色在多轮对话中的对话语句;

对话预处理模块,用于将所述第一角色对话语句序列中的所有对话语句与所述第二角色对话语句序列中的所有对话语句进行合并与重组,得到第一对话序列,并将所述第一对话序列中的所有对话语句进行随机排序,得到第二对话序列;

词向量叠加模块,用于对所述第一对话序列的每一个单词和所述第二对话序列的每一个单词进行词向量叠加,得到所述第一对话序列的第一初始词表达向量序列和所述第二对话序列的第二初始词表达向量序列;

预训练模块,用于将所述第一初始词表达向量序列和所述第二初始词表达向量序列输入预置bert模型,进行预训练,其中,所述bert模型用于预测对话属于第一对话序列和第二对话序列的概率分布。

可选的,在本发明第二方面的第一种实现方式中,所述对话预处理模块具体用于:

合并单元,用于将所述第二角色对话语句序列中的所有对话语句合并到所述第一角色对话语句序列中,得到对话样本序列;

第一生成单元,用于按照对话角色顺序、对话轮次顺序,对所述对话样本序列中的对话语句进行排列,并在各对话语句之间插入预置时间分割符,得到第一对话序列。

第二生成单元,用于对所述所述第一对话序列中的所有对话语句进行随机排序,得到第二对话序列。

可选的,在本发明第二方面的第二种实现方式中,所述词向量叠加模块具体用于:

分词单元,用于基于预置分词工具对所述第一对话序列中的语句和所述第二对话序列中的语句进行分词,得到所述第一对话序列对应的第一分词序列和所述第二对话序列对应的第二分词序列;

向量叠加单元,用于对所述第一分词序列中的任意分词和所述第二分词序列中的任意分词进行词向量叠加,得到所述第一分词序列的第一初始词表达向量序列和所述第二分词序列的第二初始词表达向量序列。

可选的,在本发明第二方面的第三种实现方式中,所述向量叠加单元具体用于:

所述词向量叠加使用的叠加向量至少包括词嵌入向量、词类型嵌入向量、词的位置嵌入向量、词对应的语句所属角色的角色嵌入向量、词对应的语句所属轮次的轮次嵌入向量。

可选的,在本发明第二方面的第四种实现方式中,所述预训练模块具体用于:

输入单元,用于对预置bert模型进行初始化,并将所述第一初始词表达向量序列和所述第二初始词表达向量序列输入所述bert模型;

自监督学习单元,用于通过所述bert模型,对所述第一初始词表达向量序列和所述第二初始词表达向量序列进行自监督学习;

第一训练单元,用于将预置对话语句输入所述bert模型,基于所述bert模型的预置第一隐节点预测所述对话语句所属对话序列,得到二分类概率分布;

第一微调单元,用于基于预置损失函数计算所述二分类概率分布的损失值,并根据所述损失值对所述bert模型的参数进行调节,当所述损失值小于预置最小损失值时,保存所述损失值对应的模型参数。

可选的,在本发明第二方面的第五种实现方式中,所述预训练模块具体还包括:

第二训练单元,用于基于所述bert模型的预置第二隐节点预测所述对话语句对的语句排列顺序,得到多分类排列概率分布;

第二微调单元,用于基于预置损失函数计算所述多分类排列概率分布的损失值,并根据所述损失值对所述bert模型的参数进行调节,当所述损失值小于预置最小损失值时,保存所述损失值对应的模型参数。

本发明第三方面提供了一种任务型对话模型预训练设备,包括:存储器和至少一个处理器,所述存储器中存储有指令;所述至少一个处理器调用所述存储器中的所述指令,以使得所述任务型对话模型预训练设备执行上述的任务型对话模型预训练方法。

本发明的第四方面提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述的任务型对话模型预训练方法。

本发明提供的技术方案中,通过获取对话序列并对对话序列进行合并与重组和随机排序,得到第一对话序列和第二对话序列,对所述第一对话序列和所述第二对话序列进行词向量叠加后输入bert模型进行包括预测第一对话序列和第二对话序列的概率分布在内的预训练任务,从而同任务型对话中的变量有效结合,提取到对话语句中的深层含义。

附图说明

图1为本发明实施例中任务型对话模型预训练方法的第一个实施例示意图;

图2为本发明实施例中任务型对话模型预训练方法的第二个实施例示意图;

图3为本发明实施例中任务型对话模型预训练方法的第三个实施例示意图;

图4为本发明实施例中任务型对话模型预训练方法的第四个实施例示意图;

图5为本发明实施例中任务型对话模型预训练装置的一个实施例示意图;

图6为本发明实施例中任务型对话模型预训练装置的另一个实施例示意图;

图7为本发明实施例中任务型对话模型预训练设备的一个实施例示意图。

具体实施方式

本发明实施例提供了一种任务型对话模型预训练方法、装置、设备及存储介质,可以对任务型对话模型进行预训练。

本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”、“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的实施例能够以除了在这里图示或描述的内容以外的顺序实施。此外,术语“包括”或“具有”及其任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。

为便于理解,下面对本发明实施例的具体流程进行描述,请参阅图1,本发明实施例中任务型对话模型预训练方法的一个实施例包括:

101、获取历史对话记录中第一角色对话语句序列,以及所述历史对话记录中的第二角色对话语句序列,其中,所述第一角色对话语句序列包括第一角色在多轮对话中的对话语句,所述第二角色对话语句序列包括第二角色在多轮对话中的对话语句;

本实施例中所提及的会话场景均为任务型会话,可以理解的是,对话双方通常分别属于不同的角色,例如,一方的角色为客服,另一方的角色为用户。历史对话记录对应于第一角色和第二角色的一次会话(session),例如,以客服和用户之间的对话为例,历史对话记录包括机器人客服与用户之间的多轮对话,以及在机器人客服无法达成预定目标时,人工客服与该用户之间的多轮对话。其中,一轮对话包括客服的语句和用户的语句,并以客服的语句开始,即客服为所述的第一角色,而用户为所述的第二角色。

可以理解的是,第一角色对话语句序列即由第一角色的所有语句构成的可拓展数据结构,第二角色对话语句序列即由第二角色的所有语句构成的可拓展数据结构,在一个较佳的实例中,第一角色对话语句序列w1=u11u21u31u41…,第二角色对话语句序列w2=u12u22u32u42…,其中u代表一句对话语句,u的上标代表对话语句所属的轮次,u的下标代表对话语句所属的角色,1为第一角色,2为第二角色,例如u11为第一角色第一轮对话中的语句,u11=“您好,有什么可以帮助您”,对应的u12为第二角色第一轮对话中的语句,u12=“请帮我查询一下二月份的账单情况”,u21为第一角色第二轮对话中的语句,u21=“正在查询,您请稍等”,u22为第二角色第二轮对话中的语句,u22=“好的,谢谢”。通过上述例子也可以看出,所述对话语句并不限定为一句话,以对话中的实际表达为准,可以为一个词、一句话或两句话等。上述语句为对话中各方的实际表达,因此也可以称为话术。

本实施例中,上述历史对话记录可以为智能外呼场景的历史对话记录,智能外呼场景,即机器人通过电话外呼形式,和用户进行交互,来完成外呼任务以及特定目标;上述历史对话记录也可以为用户呼入场景的历史对话记录,用户呼入场景即用户通过电话呼入形式,和机器人或人工客服进行交互,来完成特定问题的咨询。

102、将所述第一角色对话语句序列中的所有对话语句与所述第二角色对话语句序列中的所有对话语句进行合并与重组,得到第一对话序列,并将所述第一对话序列中的所有对话语句进行随机排序,得到第二对话序列;

合并与重组是实现数据整合的一种手段,在本实施例中,通过将所述第一角色对话语句序列和所述第二角色对话语句序列进行数据合并,其次对数据合并后的新序列进行排序,所述排序在这里可以分为两次排序,第一次排序针对新序列中对话语句的所属轮次进行排序,将属于同一轮次的对话语句相邻排列;第二次排序在第一次排序结果的基础上将对话语句的所属角色顺序进行排序,所属角色顺序为第一角色优先,第二角色其次。

完成新序列的排序后,通过在任意对话语句之间插入时间分隔符来区分不同时间段的对话语句,时间分隔符通常为[sep],当然也可以使用其他的分隔符号。在经过上述合并与重组操作后即会得到所述第一对话序列,所述第一对话序列完全按照正常的对话逻辑排列。所述随机排序即将所述第一对话序列中任意两个对话语句进行互换,将互换后的结果再次保存,得到所述第二对话序列,即不符合正常对话逻辑的对话序列。

本实施例中,所述102还包括以下步骤:

将所述第二角色对话语句序列中的所有对话语句合并到所述第一角色对话语句序列中,得到对话样本序列;

按照对话角色顺序、对话轮次顺序,对所述对话样本序列中的对话语句进行排列,并在各对话语句之间插入预置时间分割符,得到第一对话序列。

在本实施例中,第一角色对话语句序列为w1=u11u21u31u41,第二角色对话语句序列为w2=u12u22u32u42,两者进行数据合并,在本实施例中,对数据合并的方式并不做限定,可以将第一角色对话语句序列合并到第二角色对话语句序列中,在合并时默认将内容尾部追加数据,即得到的新序列为w=u12u22u32u42u11u21u31u41,也可以将第二角色对话语句序列合并到第一角色对话语句序列中,在合并时默认将内容尾部追加数据,即得到的新序列为w=u11u21u31u41u12u22u32u42。在将第一角色对话语句序列合并到第二角色对话语句序列后,对新序列基于对话语句的所述轮次进行第一次排序,排序结果为w=u12u11u22u21u32u31u42u41,根据对话语句的轮次将其分类;在第一次排序的基础上进行第二次排序,根据第一角色优先原则,排序结果由w=u12u22u32u42u11u21u31u41变化为w=u11u12u21u22u31u32u41u42,最后在对话语句之前插入分隔符[sep],得到最终的第一对话序列w=u11[sep]u12[sep]u21[sep]u22[sep]u31[sep]u32[sep]u41[sep]u42。

本实施例中对随机排序的方式并不做限定,在排序时并不考虑对话语句所属的轮次、对话角色顺序,例如将所述第一对话序列w=u11[sep]u12[sep]u21[sep]u22[sep]u31[sep]u32[sep]u41[sep]u42经过随机排序后转换为第二对话序列w`=u41[sep]u31[sep]u12[sep]u22[sep]u21[sep]u42[sep]u11[sep]u32[sep]。

103、对所述第一对话序列的每一个单词和所述第二对话序列的每一个单词进行词向量叠加,得到所述第一对话序列的第一初始词表达向量序列和所述第二对话序列的第二初始词表达向量序列;

所述第一对话序列和所述第二对话序列都是由多个对话语句构成的序列,对于这些对话语句,并不能直接输入至语言模型中进行特征的学习,一般是将语句转换为对应的词向量或者字向量后,在输入至bert预训练模型中学习对话语句中的深层含义,所述深层含义即语句表征向量(值),最后将深层含义用于下游任务。在本实施例中,首先基于现有的分词技术将所述第一对话序列和所述第二对话序列中的对话语句转化为多个分词。

目前有三大主流分词方法:基于字符串匹配的分词方法、基于理解的分词方法和基于统计的分词方法。所述基于字符串匹配的分词方法又根据算法原理被划分为正向最大匹配分词方法、逆向最大匹配分词方法、双向最大匹配分词方法,以正向最大匹配为例,该算法通过从左到右将待切分句子的m个字符作为匹配字符,其中m为初始词典中最长词条的长度,然后将字符与字典中元素进行匹配,若匹配成功,则将这个字符作为一个词切分出来,若匹配不成功,则将这个字符的最后一个字去掉,再进行匹配,重复上述过程,知道切分完整个文本为止。例如要切分的句子为“南京市长江大桥”,字典中最长的元素长度为5,则先取待切分句子的前5个字符“南京市长江”。字典中没有元素与之匹配,长度减一,则变成“南京市长”,匹配成功。对剩余三个字“江大桥”再次进行正向最大匹配,会切成“江”、“大桥”,整个句子切分完成为:南京市长、江、大桥;所述基于理解的分词方法的基本思想就是在分词的同时进行句法、语义分析,利用句法信息和语义信息来处理歧义现象。它通常包括三个部分:分词子系统、句法语义子系统、总控部分。由于汉语语言知识的笼统、复杂性,难以将各种语言信息组织成机器可直接读取的形式,因此目前基于理解的分词系统还处在试验阶段。最后一种基于统计的分词方法,其基本思想为每个字都是词的最小单元,如果相连的字在不同的文本中出现的频率越多,这就越有可能是一个词。因此可以用相邻字出现的频率来衡量组词的可能性,当频率高于某个阈值时,可以认为这些字可能会构成一个词。这种分词方法的优势在于实际运用中常常将字符串匹配分词和统计分词结合使用,这样既体现了匹配分词速度快、效率高的优点,同时又能运用统计分词识别生词、自动消除歧义等方面的特点。所述基于统计的分词方法需要对数据进行统计,一个优秀的统计模型是必不可缺的,例如n元文法模型(n-gram),隐马尔可夫模型(hiddenmarkovmodel,hmm),最大熵模型(me),条件随机场(conditionalrandomfields,crf)等。

基于上述的分词方法完成对话语句的分词后,将分词转化为对应的词向量,形成对应的词嵌入向量。所述词向量即是单词的一种分布式表示,将词表示成一个定长的连续的稠密向量。词向量的优势在于词之间存在“距离”概念,这对很多自然语言处理的任务非常有帮助,且能够包含更多信息,并且每一维都有特定的含义。分词转化为词向量的方法可以分为基于统计的方法和基于语言模型的方法,例如共现矩阵的降维,无论哪种方法,它们的思路都是“一个词的含义可以由周边词进行表示”。

向量的叠加可以将词的多层含义合并于一个词向量中,所述多层含义例如单词的类型,是名词还是动词、单词对应语句所属角色,属于第一角色对话语句中的词还是第二角色对话语句中的词、单词对应语句的轮次,属于哪一轮的对话语句.....这样在语言模型学习时,能够提取到叠加的词向量中更多语句深层含义,为下游的训练任务提供更多的学习参数。

104、将所述第一初始词表达向量序列和所述第二初始词表达向量序列输入预置bert模型,进行预训练,其中,所述bert模型用于预测对话属于第一对话序列和第二对话序列的概率分布。

预训练就是先在大量通用语料上训练模型,学习到通用的语言知识,然后再针对性地针对任务进行迁移训练。本实施例中,首先将所述第一对话序列的第一初始词表达向量序列中的向量和所述第二对话序列的第二初始词表达向量序列中的向量输入到bert模型中的多层transformer网络中,通过自注意力(self-attention)机制来学习词与词之间的关系,编码其上下文信息,再通过一个前馈网络经过非线性变化,输出综合了上下文特征的各个词的向量表示,然后网络会将所述向量表示输入到前馈网络层以计算非线性层次的特征。其中,每一层transformer网络主要由multi-headself-attention层(多头自注意力机制)和前馈网络层两个子层构成。multi-headself-attention会并行地执行多个不同参数的self-attention,并将各个self-attention的结果合并与重组作为后续网络的输入。

在每一层transformer网络中,会将残差连接(residualconnection)把自注意力机制前或者前馈神经网络之前的向量引入进来,以增强自注意力机制或者前馈网络的输出结果向量。并且还做一个layernormalization,也就是通过归一化把同层的各个节点的多维向量映射到一个区间里面,这样各层节点的向量在一个区间里面。这两个操作加入在每个子层后,可更加平滑地训练深层次网络。

在通过transformer完成编码后,通过bert模型的第一个隐节点进行第一任务的预训练,预测一个序列是第一对话序列和第二对话序列的概率,然后根据相应的损失函数计算预测结果的损失值,将损失值反向传播给bert模型,根据损失值对所述bert模型的网络参数进行微调,直至模型收敛,确定当前的网络参数为目标参数,并且在网络的[cls]位置输出二分类概率分布。

本实施例,通过获取对话序列并对对话序列进行合并与重组和随机排序,得到第一对话序列和第二对话序列,对所述第一对话序列和所述第二对话序列进行多个词向量叠加后输入bert模型,同任务型对话中的变量有效结合,进行预测第一对话序列和第二对话序列的概率分布的第一预训练任务和预测第一对话序列和第二对话序列的排列概率分布的第二预训练任务,从而在最后一层网络中的[cls]位置输出一个二分类概率分布和一个多分类排列概率分布,提取到对话语句中的深层含义。

参阅图2,本发明实施例中任务型对话模型预训练方法的另一个实施例包括:

201、获取历史对话记录中第一角色对话语句序列,以及所述历史对话记录中的第二角色对话语句序列,其中,所述第一角色对话语句序列包括第一角色在多轮对话中的对话语句,所述第二角色对话语句序列包括第二角色在多轮对话中的对话语句;

202、将所述第一角色对话语句序列中的所有对话语句与所述第二角色对话语句序列中的所有对话语句进行合并与重组,得到第一对话序列,并将所述第一对话序列中的所有对话语句进行随机排序,得到第二对话序列;

203、基于预置分词工具对所述第一对话序列中的语句和所述第二对话序列中的语句进行分词,得到所述第一对话序列对应的第一分词序列和所述第二对话序列对应的第二分词序列;

本实施例中,预置分词工具为中文分词工具,例如jieba。将所述第一对话序列中的对话语句和所述第二对话序列中的对话语句分别输入jieba工具,通过jieba分词工具的精确模式,将对话语句精确切分为多个分词,例如语句u=“北京欢迎您”,调用jieba分词工具的精确分割模式,jieba.cut(u,cut_all=false),该方法的第一个参数即待切分的语句,第二个参数为是否全模式切分。通过上述jieba工具完成对话语句的分词,得到所述第一对话序列对应的分词序列和所述第二对话序列对应的分词序列。

204、对所述第一分词序列中的任意分词和所述第二分词序列中的任意分词进行词向量叠加,得到所述第一分词序列的第一初始词表达向量序列和所述第二分词序列的第二初始词表达向量序列;

基于共现矩阵的降维对所述第一对话序列对应的分词序列中的分词和所述第二对话序列对应的分词序列中的分词进行词向量的转换,通过分词序列中的周边词对待转换词向量的分词进行表示,得到一个共现矩阵,但是该共现矩阵存在高维和数据稀疏的问题,通过对所述共现矩阵进行奇异值分解(svd),得到矩阵正交矩阵,对所述矩阵正交矩阵进行归一化得到一个稠密(dense)矩阵,所述稠密(dense)矩阵即该分词对应的词向量,也就是词嵌入向量。

通过类似的方法获得如词类型嵌入向量、词的位置嵌入向量等,将这些向量与所述词嵌入向量进行叠加,构成一个词的初始词表达向量,所述初始词表达向量即是一个包含了词的多种信息的向量表示,这些信息可能包括词的类型、词的所属位置等等。通过上述方法得到所述第一对话序列对应的分词序列的初始词表达向量序列和所述第二对话序列对应的分词序列的初始词表达向量序列。

本实施例中,所述词向量叠加使用的叠加向量至少包括词嵌入向量、词类型嵌入向量、词的位置嵌入向量、词对应的语句所属角色的角色嵌入向量、词对应的语句所属轮次的轮次嵌入向量。

值得一提的是,词嵌入向量、词类型嵌入向量、词的位置嵌入向量进行叠加,得到初始词表达向量,这是通常的bert模型采用的方法,而在本发明中,对于向量叠加引入了词对应的语句所属角色的角色嵌入向量及次词对应的语句所属轮次的轮次嵌入向量,通过所述角色嵌入向量来标识该词向量对应对话语句所属角色,通过所述轮次嵌入向量来标识该词向量对应对话所属轮次,在语言模型学习时能够提取到更多语句深层含义。

205、将所述第一初始词表达向量序列和所述第二初始词表达向量序列输入预置bert模型,进行预训练,其中,所述bert模型用于预测对话属于第一对话序列和第二对话序列的概率分布。

本实施例中,详细描述了对对话序列进行分词和词向量叠加的过程。通过对对话分词处理,提取到对话中的每一个分词,对每句话的分词进行多个词向量的叠加生成模型的输入样本,实现了语句更多深层含义的输入,让模型能够学习到更多深层次的语义特征。

参阅图3,本发明实施例中任务型对话模型预训练方法的第三个实施例包括:

301、获取历史对话记录中第一角色对话语句序列,以及所述历史对话记录中的第二角色对话语句序列,其中,所述第一角色对话语句序列包括第一角色在多轮对话中的对话语句,所述第二角色对话语句序列包括第二角色在多轮对话中的对话语句;

302、将所述第一角色对话语句序列中的所有对话语句与所述第二角色对话语句序列中的所有对话语句进行合并与重组,得到第一对话序列,并将所述第一对话序列中的所有对话语句进行随机排序,得到第二对话序列;

303、对所述第一对话序列的每一个单词和所述第二对话序列的每一个单词进行词向量叠加,得到所述第一对话序列的第一初始词表达向量序列和所述第二对话序列的第二初始词表达向量序列;

304、对预置bert模型进行初始化,并将所述第一初始词表达向量序列和所述第二初始词表达向量序列输入所述bert模型;

305、通过所述bert模型,对所述第一初始词表达向量序列和所述第二初始词表达向量序列进行自监督学习;

在本实施例中,预训练过程中的自监督学习即是一种自监督学习模式,ar(自回归)lm和ae(自动编码器)是最常用的自监督学习方法,其中,自回归lm旨在利用前面的词序列预测下个词的出现概率(语言模型)。自动编码器旨在对损坏的输入句子,比如遮掩了句子某个词、或者打乱了词序等,重建原始数据。通过这些自监督学习手段来学习单词的上下文相关表示。

306、将预置对话语句输入所述bert模型,基于所述bert模型的预置第一隐节点预测所述对话语句所属对话序列,得到二分类概率分布;

其中,由transformer对所述第一对话序列的第一初始词表达向量序列中的词向量和所述第二对话序列的第二初始词表达向量序列中的词向量实现编码,通过自动编码器来学习词向量的上下文表示,最后基于bert模型的第一个隐节点预测分类标记判断一个序列属于第一对话序列还是第二对话序列,并基于损失函数计算所述预测结果的损失值,将损失值反向传播给bert模型,根据损失值对所述bert模型的网络参数进行微调,直至模型收敛,确定当前的网络参数为目标参数,并且在网络的[cls]位置输出当前的二分类概率分布。

假设输入为:u,b是batchsize,l是对话窗口中单词个数,6是5个[sep]+1个[cls],de是wordembedding维度。u是包含第一对话序列和第二对话序列,将所述u分词并进行向量叠加后作为bert的输入后,在[cls]位置输出概率分布,这种方法和bert模型一致,对应的逻辑回归公式请参考以下公式:

logit=bert(u)

307、基于预置损失函数计算所述二分类概率分布的损失值,并根据所述损失值对所述bert模型的参数进行调节,当所述损失值小于预置最小损失值时,保存所述损失值对应的模型参数。

假设真序列label为1,伪序列label为0。使用交叉熵作为模型损失函数,记为l1。整体训练损失记为lm+l1,其中lm为masklanguagemodelloss。将整体训练损失lm+l1反向传播到bert模型中,根据所述整体训练损失对所述bert模型中的参数进行微调,例如采用随机梯度下降算法对所述bert模型中的网络参数进行迭代更新,当所述bert模型收敛后,完成预训练并在最后一层网络的[cls]位置输出当前的二分类概率分布,期望输出为第一对话序列概率高于第二序列的概率。

本实施例中,详细描述了模型进行第一任务训练的过程,通过执行第一任务的训练,并基于损失函数对训练结果进行微调,实现了模型的对话语句的真伪概率预测能力。

参阅图4,本发明实施例中任务型对话模型预训练方法的第四个实施例包括:

401、获取历史对话记录中第一角色对话语句序列,以及所述历史对话记录中的第二角色对话语句序列,其中,所述第一角色对话语句序列包括第一角色在多轮对话中的对话语句,所述第二角色对话语句序列包括第二角色在多轮对话中的对话语句;

402、将所述第一角色对话语句序列中的所有对话语句与所述第二角色对话语句序列中的所有对话语句进行合并与重组,得到第一对话序列,并将所述第一对话序列中的所有对话语句进行随机排序,得到第二对话序列;

403、对所述第一对话序列的每一个单词和所述第二对话序列的每一个单词进行词向量叠加,得到所述第一对话序列的第一初始词表达向量序列和所述第二对话序列的第二初始词表达向量序列;

404、对预置bert模型进行初始化,并将所述第一初始词表达向量序列和所述第二初始词表达向量序列输入所述bert模型;

405、通过所述bert模型,对所述第一初始词表达向量序列和所述第二初始词表达向量序列进行自监督学习;

406、将预置对话语句输入所述bert模型,基于所述bert模型的预置第一隐节点预测所述对话语句所属对话序列,得到二分类概率分布;

407、基于预置损失函数计算所述二分类概率分布的损失值,并根据所述损失值对所述bert模型的参数进行调节,当所述损失值小于预置最小损失值时,保存所述损失值对应的模型参数;

408、基于所述bert模型的预置第二隐节点预测所述对话语句对的语句排列顺序,得到多分类排列概率分布;

其中,由transformer对所述第一对话序列的第一初始词表达向量序列中的词向量和所述第二对话序列的第二初始词表达向量序列中的词向量实现编码,通过自动编码器来学习词向量的上下文表示,在执行第一任务的bert模型的原有网络参数基础上,额外加一个线性层和softmax计算得到多分类排列概率分布,并基于损失函数计算所述预测多分类排列概率分布的损失值,将损失值反向传播给bert模型,根据损失值对所述bert模型的网络参数进行微调,直至模型收敛,确定当前的网络参数为目标参数,并且在网络的[cls]位置输出当前的多分类排列概率分布。

假设输入为::u,b是batchsize,l是对话窗口中单词个数,6是5个[sep]+1个[cls],是wordembedding维度。u中包含第一对话序列和第二对话序列,将所述u分词并进行向量叠加后作为bert的输入后,在[sep]位置输出概率分布,每个概率分布的label指示该位置是否被替换位置。

409、基于预置损失函数计算所述多分类排列概率分布的损失值,并根据所述损失值对所述bert模型的参数进行调节,当所述损失值小于预置最小损失值时,保存所述损失值对应的模型参数。

该任务可以视为序列标注问题,使用序列标注的交叉熵作为损失函数,记为l2。整体训练loss记为lm+l2,其中lm为,其中lm为masklanguagemodelloss。将整体训练损失lm+l2反向传播到bert模型中,根据所述整体训练损失对所述bert模型中的参数进行微调,例如采用随机梯度下降算法对所述bert模型中的网络参数进行迭代更新,当所述bert模型收敛后,完成预训练并在最后一层网络的[cls]位置输出当前的多分类排列概率分布。

本实施例中,详细描述模型进行第一训练任务和第二训练任务之间的联合训练,通过分别执行第一任务和第二任务的训练,并基于损失函数对训练结果进行微调,实现了模型的真伪概率预测能力和对话序列排列预测能力。

上面对本发明实施例中任务型对话模型预训练方法进行了描述,下面对本发明实施例中任务型对话模型预训练装置进行描述,请参阅图5,本发明实施例中任务型对话模型预训练装置的一个实施例包括:

对话获取模块501,用于获取历史对话记录中第一角色对话语句序列,以及所述历史对话记录中的第二角色对话语句序列,其中,所述第一角色对话语句序列包括第一角色在多轮对话中的对话语句,所述第二角色对话语句序列包括第二角色在多轮对话中的对话语句;

对话预处理模块502,用于将所述第一角色对话语句序列中的所有对话语句与所述第二角色对话语句序列中的所有对话语句进行合并与重组,得到第一对话序列,并将所述第一对话序列中的所有对话语句进行随机排序,得到第二对话序列;

词向量叠加模块503,用于对所述第一对话序列的每一个单词和所述第二对话序列的每一个单词进行词向量叠加,得到所述第一对话序列的第一初始词表达向量序列和所述第二对话序列的第二初始词表达向量序列;

预训练模块504,用于将所述第一初始词表达向量序列和所述第二初始词表达向量序列输入预置bert模型,进行预训练,其中,所述bert模型用于预测对话属于第一对话序列和第二对话序列的概率分布。

本实施例,通过获取对话序列并对对话序列进行合并与重组和随机排序,得到第一对话序列和第二对话序列,对所述第一对话序列和所述第二对话序列进行多个词向量叠加后输入bert模型,同任务型对话中的变量有效结合,进行预测第一对话序列和第二对话序列的概率分布的第一预训练任务和预测第一对话序列和第二对话序列的排列概率分布的第二预训练任务,从而在最后一层网络中的[cls]位置输出一个二分类概率分布和一个多分类排列概率分布,提取到对话语句中的深层含义。

参阅图6,本发明实施例中任务型对话模型预训练装置的另一个实施例包括:

对话获取模块601,用于获取历史对话记录中第一角色对话语句序列,以及所述历史对话记录中的第二角色对话语句序列,其中,所述第一角色对话语句序列包括第一角色在多轮对话中的对话语句,所述第二角色对话语句序列包括第二角色在多轮对话中的对话语句;

对话预处理模块602,用于将所述第一角色对话语句序列中的所有对话语句与所述第二角色对话语句序列中的所有对话语句进行合并与重组,得到第一对话序列,并将所述第一对话序列中的所有对话语句进行随机排序,得到第二对话序列;

词向量叠加模块603,用于对所述第一对话序列的每一个单词和所述第二对话序列的每一个单词进行词向量叠加,得到所述第一对话序列的第一初始词表达向量序列和所述第二对话序列的第二初始词表达向量序列;

预训练模块604,用于将所述第一初始词表达向量序列和所述第二初始词表达向量序列输入预置bert模型,进行预训练,其中,所述bert模型用于预测对话属于第一对话序列和第二对话序列的概率分布。

其中,所述对话预处理模块602具体包括:

合并单元6021,用于将所述第二角色对话语句序列中的所有对话语句合并到所述第一角色对话语句序列中,得到对话样本序列;

第一生成单元6022,用于按照对话角色顺序、对话轮次顺序,对所述对话样本序列中的对话语句进行排列,并在各对话语句之间插入预置时间分割符,得到第一对话序列。

第二生成单元6023,用于对所述所述第一对话序列中的所有对话语句进行随机排序,得到第二对话序列。

其中,所述词向量叠加模块603具体包括:

分词单元6031,用于基于预置分词工具对所述第一对话序列中的语句和所述第二对话序列中的语句进行分词,得到所述第一对话序列对应的第一分词序列和所述第二对话序列对应的第二分词序列;

向量叠加单元6032,用于对所述第一分词序列中的任意分词和所述第二分词序列中的任意分词进行词向量叠加,得到所述第一分词序列的第一初始词表达向量序列和所述第二分词序列的第二初始词表达向量序列。

可选的,所述向量叠加单元6032具体用于:

所述词向量叠加使用的叠加向量至少包括词嵌入向量、词类型嵌入向量、词的位置嵌入向量、词对应的语句所属角色的角色嵌入向量、词对应的语句所属轮次的轮次嵌入向量。

其中,所述预训练模块604具体包括:

输入单元6041,用于对预置bert模型进行初始化,并将所述第一初始词表达向量序列和所述第二初始词表达向量序列输入所述bert模型;

自监督学习单元6042,用于通过所述bert模型,对所述第一初始词表达向量序列和所述第二初始词表达向量序列进行自监督学习;

第一训练单元6043,用于将预置对话语句输入所述bert模型,基于所述bert模型的预置第一隐节点预测所述对话语句所属对话序列,得到二分类概率分布;

第一微调单元6044,用于基于预置损失函数计算所述二分类概率分布的损失值,并根据所述损失值对所述bert模型的参数进行调节,当所述损失值小于预置最小损失值时,保存所述损失值对应的模型参数。

其中,所述预训练模块604还包括:

第二训练单元6045,用于基于所述bert模型的预置第二隐节点预测所述对话语句对的语句排列顺序,得到多分类排列概率分布;

第二微调单元6046,用于基于预置损失函数计算所述多分类排列概率分布的损失值,并根据所述损失值对所述bert模型的参数进行调节,当所述损失值小于预置最小损失值时,保存所述损失值对应的模型参数。

本发明实施例中,模块化的设计让任务型对话模型预训练装置各部位的硬件专注于某一功能的实现,最大化实现了硬件的性能,同时模块化的设计也降低了装置的模块之间的耦合性,更加方便维护。

上面图5和图6从模块化功能实体的角度对本发明实施例中的任务型对话模型预训练装置进行详细描述,下面从硬件处理的角度对本发明实施例中任务型对话模型预训练设备进行详细描述。

图7是本发明实施例提供的一种任务型对话模型预训练设备的结构示意图,该任务型对话模型预训练设备700可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上处理器(centralprocessingunits,cpu)710(例如,一个或一个以上处理器)和存储器720,一个或一个以上存储应用程序733或数据732的存储介质730(例如一个或一个以上海量存储设备)。其中,存储器720和存储介质730可以是短暂存储或持久存储。存储在存储介质730的程序可以包括一个或一个以上模块(图示没标出),每个模块可以包括对任务型对话模型预训练设备700中的一系列指令操作。更进一步地,处理器710可以设置为与存储介质730通信,在任务型对话模型预训练设备700上执行存储介质730中的一系列指令操作。

任务型对话模型预训练设备700还可以包括一个或一个以上电源740,一个或一个以上有线或无线网络接口750,一个或一个以上输入输出接口760,和/或,一个或一个以上操作系统731,例如windowsserve,macosx,unix,linux,freebsd等等。本领域技术人员可以理解,图7示出的任务型对话模型预训练设备结构并不构成对任务型对话模型预训练设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。

本发明还提供一种任务型对话模型预训练设备,所述任务型对话模型预训练设备包括存储器和处理器,存储器中存储有计算机可读指令,计算机可读指令被处理器执行时,使得处理器执行上述各实施例中的所述任务型对话模型预训练方法的步骤。

本发明还提供一种计算机可读存储介质,该计算机可读存储介质可以为非易失性计算机可读存储介质,该计算机可读存储介质也可以为易失性计算机可读存储介质,所述计算机可读存储介质中存储有指令,当所述指令在计算机上运行时,使得计算机执行所述任务型对话模型预训练方法的步骤。

所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。

所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(read-onlymemory,rom)、随机存取存储器(randomaccessmemory,ram)、磁碟或者光盘等各种可以存储程序代码的介质。

以上所述,以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。

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