背景技术
近年来,人机对话受到了学术界和工业界的广泛重视,其主要分为自然语言理解,对话管理和自然语言生成三大模块。在研究上,自然语言理解技术逐渐从序列标注向深度学习的方向发展,对话管理经历了由规则到有指导学习再到强化学习的发展过程,自然语言生成则从模板生成、句子规划,发展到端到端的深度学习模型。在应用上,基于人机对话技术的产品也层出不穷,如苹果公司、亚马逊、微软、脸书以及谷歌等都有自己的智能音箱或者语音助手。
人机对话主要包括开放域对话和任务型对话两大场景。任务型对话旨在与用户对话的过程中尽快完成用户所提出的任务型需求而非随意的娱乐性闲聊,其中端到端对话生成技术可以直接利用对话两端的源数据,构建稳健的对话系统,减少了数据标注和人工设计模块的工作。但现有的端到端面向任务型多轮对话系统问题在于很难动态地跟踪长期对话状态,同时很难有效地将外部知识库信息融入到对话生成过程,而这两点恰恰是生成上下文连贯且信息丰富的回应语句的关键。
与开放域对话不同的是,任务型对话在与用户对话的过程中需要尽快完成用户所提出的任务型需求而非随意的娱乐性闲聊。同时由于任务型对话系统需要满足用户的实时性需求,因此系统必须从外部的知识库中获取相应的额外知识才能够准确的完成用户需求。任务型对话系统旨在采用自然语言来帮助用户完成某个具体的目标,例如天气查询或者餐厅预订。与传统的流水线方法(自然语言理解模块—对话管理模块—自然语言生成模块)相比,端到端的方法最近获得了更多关注,因为这种方式将任务型对话系统从手工设计流水线模块的方法中解放出来了,并且能够使系统自动扩展到新域的数据集上。
在现有技术中,任务型对话系统主要采用两种方法,分别是基于流水线的方法和基于端到端的方法。基于流水线的模型拥有很好的稳定性,但是需要具体域的知识信息和人工设计的标签。而端到端的方法最近逐渐展示出可观的实验结果,并且因为其能够简单地适应新域信息的特性,也吸引了更多的关注。
具体而言,一些端到端方法采用循环神经网络,将对话历史作为一段序列,但是这种方法也迫使知识库中的元组信息保持和对话上下文语句相同的模式,导致很难在这些元组信息中进行推理。近年来,序列到序列(Seq2Seq)模型在端到端的面向任务的对话系统的研究中有着举足轻重的地位。然而,与用于开放域对话系统的典型序列到序列模型不同,面向任务的对话系统中要想产生成功的多轮对话,必须严重依赖对话历史和知识库信息。
因此,为了使序列到序列模型有效地融入知识库信息并执行基于知识的推理,基于记忆网络的架构及其各种变体逐渐被提出,这些方案将对话历史和知识库信息以平铺排列的方式作为一袋单词以进行表征,并且取得了很好的效果。例如,记忆到序列模型(Mem2Seq)和全局到局部记忆指针模型(GLMP)两个模型在基于记忆网络的基础上进一步融入了复制机制(copy mechanism),复制机制的融入使得模型在生成对话回复时,能够从过去的对话语句或者知识库中直接复制单词。然而,现有的这些端到端的任务型对话模型都保持着一个假设,就是仅采用一种策略来同时表征知识库元组和对话语句,即将二者存储到一个相同的一个记忆网络中,但是这样的做法会使得模型对对话的推理能力显著下降。
最近,采用分离的记忆网络来建模对话上下文和知识库信息的方法也逐渐被探索出来,并且提高了模型产生高质量回复的能力。例如,语言知识分离模型(BossNet)隐式地将语言模型与知识库信息的融合过程进行分离,因此加强了模型复制未见过的知识库实体的能力。多层次记忆网络模型(MLMM)并没有采用传统的三元组形式来表示知识库中的信息,而是使用了一个多层次的记忆网络来进行表征。此外,工作记忆模型(WMM2Seq)进一步采用了一个工作记忆网络来与分离的两个记忆网络进行交互。
经分析,目前基于记忆网络的端到端多轮任务型对话系统具有以下缺陷:
1)、现有的面向任务的多轮对话系统只是将所有的历史对话语句进行简单的拼接,然后作为当前轮对话的输入和上下文。然而,这种做法将给本轮对话引入很多的噪声信息,因为随着当前对话轮数的增加,这样的上下文会变得越来越长,及其冗余并且包含很多本轮对话不需要的信息。
2)、现有方法都忽略了模型在之前轮对话时的推理信息,一旦当前轮回复产生之后,模型就会立刻丢弃本轮的推理信息,导致之前轮的推理信息不能够传递给下一轮对话。
3)、现有方法不能够动态地追踪长期的对话状态,因此限制了它们在复杂域数据集中完成任务的能力,因为这些数据集往往需要和用户进行多轮的交互才能够完成一个用户指定的需求性任务。
4)、目前研究都倾向于将对话历史与知识库信息绑定在一起,将二者拼接储存在一个的记忆网络中。共享的记忆网络使用单一的策略来编码对话上下文和知识库信息,因此这种做法将使记忆网络很难有效地在这两种不同类型的数据上进行有效的推理,尤其是当本轮对话的数据量特别大的时候。
总的来说,现有技术要么在生成过程中实现了一个很好的语言模型,要么能够有效地对知识库进行建模以完成用户提出的需求性任务,但是还没有能够同时完成这两个目标的技术方案。
具体实施方式
现在将参照附图来详细描述本发明的各种示例性实施例。应注意到:除非另外具体说明,否则在这些实施例中阐述的部件和步骤的相对布置、数字表达式和数值不限制本发明的范围。
以下对至少一个示例性实施例的描述实际上仅仅是说明性的,决不作为对本发明及其应用或使用的任何限制。
对于相关领域普通技术人员已知的技术、方法和设备可能不作详细讨论,但在适当情况下,所述技术、方法和设备应当被视为说明书的一部分。
在这里示出和讨论的所有例子中,任何具体值应被解释为仅仅是示例性的,而不是作为限制。因此,示例性实施例的其它例子可以具有不同的值。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步讨论。
为了克服动态地跟踪长期对话状态,同时很难有效地将外部知识库信息融入到进入对话生成过程中的技术问题,本发明提出了一种“两个教师一个学生”(TTOS)的学习框架,来进行任务型多轮对话的生成,即该框架由三个网络组成:一个面向知识库的教师网络(TKB)擅于用于从知识库中检索实体词;一个面向对话模式的教师网络(TDP)擅于从对话数据中学习语言模式;一个学生网络(S)用于学习提取准确的实体词并生成高质量的回复语句。这种框架可以融合来自两个教师网络的知识,一起给学生网络提供综合的指导,从而构造一个高质量的任务型对话系统(学生网络)。其中,每个教师网络都有一个特定的目标,分别是从知识库中检索精确的实体和生成对话中合适的语言模式。
该框架的学习过程主要包含两个阶段的训练。在第一阶段,三个网络采用不同的训练策略进行独立的预训练。例如,学生网络采用监督学习的方式进行训练,而两个教师网络则根据各自目标的奖励分值(实体分值和布勒分值),通过强化学习的方式进行训练。因此,能够将两个教师网络看成是针对于各自目标的专家。在第二阶段的训练过程,采用生成对抗网络来进一步训练学生网络,学生网络在生成对抗网络中扮演生成器的角色,以产生对话回复语句,并且生成对抗网络中设置两个判别器,用于区分来自于学生网络和教师网络的输出表征。利用两个判别器的输出作为反馈,生成对抗网络可以从每个教师网络中迁移出有用的目标知识给学生网络,使得学生网络能够同时做到从知识库中检索出更为精确的实体词和生成更高质量的自然语句。
给定M个单词的对话上下文x={x1,x2,…,xM})和T个单词的系统回复语句y={y1,y2,…,yT},对话系统旨在基于x优化生成y的条件概率,即p(y|x)。以下结合图1具体介绍本发明所提出的学习框架。
一)、学生网络
学生网络是一个任务型对话系统,旨在同时能够查询外部知识库并且生成人类化的回复语句。在该实施例中,基于序列到序列的模型被作为基础骨架来实现学生网络,整体上包括编码器、对话记忆模块、知识库记忆模块和解码器,其中对话记忆模块和知识库记忆模块分别用来存储来自对话上下文和检索到的知识库实体词中的信息。
在学生网络的编码器中,对话上下文中每个输入的词汇都会通过一个嵌入层被转化成一个固定长度的向量。然后输入的嵌入序列经过双向门控循环单元层(BiGRU),以学习对话上下文的表征,最后该表征将会被传入对话记忆模块中。
不同于记忆到序列模型,对话记忆模块使用一个基于动态键值对的记忆网络来实现,它维护着一个随着时间不断更新的键记忆网络,以保持追踪注意力历史;同时还维持着一个固定不变的值记忆网络,来存储整个生成过程中的对话上下文特征。通过这种方式,任务型对话系统就能够很好地沿着解码器隐层状态的更新链来追踪注意力历史,因此产生上下文一致且自然的回复语句。此外,还采用一个独立的知识库记忆模块,它采用端到端的记忆神经网络用来存储知识库中的元组。
对于解码器,基于序列到序列的模型将会逐词地去生成回复语句。在每个解码时间步骤t,目标的词汇要么从词表中生成,要么会从对话记忆或者知识库记忆中复制。形式化来说,分别使用
来表示模型直接从词表中生成或者从两个记忆网络中复制生成第t个目标单词的概率。接着,一个软门控单元g
1控制着一个单词是从词表中生成还是从两个记忆网络中进行复制;同时另外一个门控单元g
2决定着两个记忆网络中将使用哪一个从中进行复制。因此,针对于第t个目标单词的最终输出分布P
t将会被计算表示成:
在预训练过程中,可以采用监督学习方式优化学生网络,例如计算输出分布
和真实的目标词汇y
t之间的交叉熵,并将其作为学生网络的损失函数L
S:
其中,T是输出回复语句的长度。
二、两个教师网络
两个教师网络和上述学生网络共享相同的序列到序列网络架构,但是不同于学生网络通过有监督的学习方式进行训练,两个教师网络TDP和TKB根据各自目标的奖励分值(实体分值和布勒分值),通过强化学习的方式进行训练。因此,能够将两个教师网络看成是针对于各自目标的专家。
对于面向对话模式的教师网络T
DP,专门设计用于学习对话模式,以生成自然的回复语句。为了达到这个目的,采用了强化学习的技术,即自我批判序列训练算法(SCST),并利用布勒分值作为模型的奖励函数来训练教师网络T
DP。布勒分值可以用来判断模型精确地生成训练数据中对话模式的能力。具体来说,在训练中的每个迭代过程中,模型都将会生成两个分离的输出序列:(1)随机采样的输出y
s:它在每个解码时间步,从模型输出分布
中进行随机采样获得。(2)基线(baseline)输出
例如使用贪心搜索的方法,每个解码时间步从模型输出分布中获得概率最大的词。
采用自我批判序列训练算法进行训练时,教师网络TDP的损失函数可以被推导为:
对于面向知识库的教师网络TKB,是专门设计用于从知识库中检索精确的实体词来完成本次需求性任务。
在一个实施例中,同样采用自我批判训练算法来优化教师网络TKB,但是不再采用布勒分值作为奖励函数,而是采用实体F1分值来作为奖励函数,因为实体F1分值可以很好地评估模型从底层知识库中生成相关实体词的能力。类似于教师网络TDP,采用自我批判序列训练算法进行训练时,教师网络TKB的损失函数可以被推导为:
三、采用生成对抗网络改进学生网络
在预训练三个网络之后,进一步训练优化学生网络,以使学生网络能够融合来自于两个教师网络的专家知识。不同于现有技术的教师-学生学习方法强制学生网络的输出去精确地模仿教师网络产生的软标签,在本发明实施例中,额外的引入两个判别器作为生成对抗网络的一部分,进而从教师网络迁移知识给学生网络。两个判别器被训练用来区分学习到的输出表征是来自于学生网络(生成器)还是教师网络。与此同时,学生网络(生成器)将被对抗式地训练用来产生对话回复语句,以骗过两个判别器。更具体来说,一个判别器DDP是采用门控循环单元实现的二分类器,被用来区分学生网络(S)和教师网络(TDP)产生的输出分布。类似的,另外一个二分类器判别器DKB用来区分输出分布是来自学生网络(S)还是教师网络(TKB)。
在对抗式的流程中交替地更新学生网络和两个判别器,从判别器中迁移出的专家知识最终可以指导学生网络产生类似于两个教师网络生成的回复语句。
(1)判别器更新
两个判别器和学生网络(生成器)在基于生成对抗网络的方法中进行交替式的更新。首先介绍判别器的更新过程,判别器是两个二分类器,将被训练用来区分学生网络和教师网络产生的输出语句。对于每个判别器,采用一个门控循环单元来编码输出分布P
o,因为它在文本分类的任务中展示出了很强的有效性。门控循环单元的最后一个隐藏层状态(h
T)被传递给输出层(一个二分类激活函数sigmoid),它的输出代表着真实的概率值。形式化的来说,在每个时间步t考虑当前的输出分布
时,二分类器(判别器)D将会被定义为:
D(Po)=sigmoid(WhT) (6)
其中W是一个可学习的参数,ht是在第t个时间步的隐藏层状态。通过这种方式,获得的判别器DDP能够预测输入序列是否由教师TDP生成,判别器DKB能够预测输入序列是否由教师TKB生成。
在训练判别器时,固定住学生网络(生成器)的参数不变。两个判别器被训练用于最小化分配错误标签给学生网络和教师网络的输出分布的概率,即LDP和LKB:
LDP=-log(1-DDP(Ps))-log(DDP(Pdp)) (7)
LKB=-log(1-DKB(Ps))-log(DKB(Pkb)) (8)
LD=LDP+LKB (9)
其中,Ps,Pdp,Pkb分别是学生网络S和两个教师网络TDP,TKB产生的输出分布,LD是最终用于更新判别器的目标函数。
(2)学生网络更新
在每次迭代过程中,在更新完两个判别器网络之后,再更新学生网络(生成器)。当更新学生网络时,目标是尽量的去骗过两个判别器,同时最小化对抗损失函数LG,表示为:
LG=-log(DDP(Ps))-log(DKB(Ps)) (10)
其中α是一个标量,用于决定在学生网络中对抗损失LG的重要程度。
为进一步理解本发明的过程,概括而言,所提供的基于对抗训练的端到端任务型对话学习方法包括以下步骤:
步骤S210,预训练学生网络、第一教师网络和第二教师网络,其中,第一教师网络用于从知识库中检索实体词;第二教师网络用于从对话数据中学习语言模式,学生网络用于学习提取实体词并生成回复语句;
步骤S220,训练生成对抗网络以从第一教师网络和第二教师网络向学生网络迁移知识,该生成对抗网络包含第一判别器、第二判别器和生成器,其中学生网络作为生成器,经对抗式训练产生对话回复语句,第一判别器用于区分学生网络和第一教师网络产生的输出分布,第二判别器用于区分学生网络和第二教师网络产生的输出分布;
步骤S230,将经对抗式训练的学生网络用于任务型对话。
需说明的是,在不影响本发明的精神和范围的前提下,本领域技术人员可对上述实施例进行变型或改变,例如,基于长短时记忆网络(LSTM)或双向长短时记忆网络(BiLSTM)实现学生网络和两个教师网络,又如采用其他的损失函数进行训练。此外,在本文描述中,网络、模型和框架具有相同的含义,除非根据上下文另有所指,例如,学生网络等同于学生模型。
进一步地,为了验证本发明的有效性和先进性,在广泛使用的车载助手数据集(In-Car Assistant)和餐馆预定数据集(CamRest)上进行了大量实验,并与目前先进的端到端任务型对话生成模型进行了比较。实验采用了自动评估指标(布勒分值、实体F1分值)以及人工评测指标(信息量大小、人性化程度)等。实验结果表明,本发明的方法在自动和人工评估指标方面均优于目前最好的端到端任务型对话生成模型。
此外,还进行了只有一个教师网络和没有教师网络的对比实验以及采用传统知识蒸馏方法迁移知识的对比实验。在缺少某个教师网络的条件下,模型对应的指标明显下降,这说明每个教师网络在各自的目标范围内都成功地向学生传递了更为先进的知识以提高学生网络该方面的能力。同时,采用生成对抗网络来迁移知识的效果明显优于传统的知识蒸馏的方法,这说明通过设置判别器很好地解放了学生网络和教师网络之间的刚性耦合,使得学生网络能够更有效地学习到来自教师的知识,以生成更高质量的回复。
最后,实验结果还表明,随着对话轮数的增加,与其他现有基准模型相比,本发明的方法能够保持更加稳定且强健的性能。
综上所述,本发明通过引入“两个教师一个学生”的学习框架进行任务型多轮对话的生成,其中的学生网络可以从两个教师网络产生的补充目标中进一步优化受益,并且能够同时做到从知识库中检索精确的实体词和生成高质量的自然语句回复两件事情。并且,本发明基于生成对抗网络,利用两个判别器,分别从两个教师网络中迁移知识给学生网络,利用判别器解放了学生网络和教师网络之间的刚性耦合,使得学生网络能够更有效地学习到来自教师网络的知识,以生成更高质量的回复。此外,本发明所提出的方法不仅局限在端到端任务型对话领域,其核心思想是采用多专项教师-单综合学生的学习框架,并采用基于生成对抗网络的知识迁移手段,在面对不同的生成任务和不同的数据集时,利于本发明的思想,只需要简单地修改其中的基础网络架构,便可以进行使用,因而本发明具有广阔的应用前景。
本发明可以是系统、方法和/或计算机程序产品。计算机程序产品可以包括计算机可读存储介质,其上载有用于使处理器实现本发明的各个方面的计算机可读程序指令。
计算机可读存储介质可以是可以保持和存储由指令执行设备使用的指令的有形设备。计算机可读存储介质例如可以是――但不限于――电存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或者上述的任意合适的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、静态随机存取存储器(SRAM)、便携式压缩盘只读存储器(CD-ROM)、数字多功能盘(DVD)、记忆棒、软盘、机械编码设备、例如其上存储有指令的打孔卡或凹槽内凸起结构、以及上述的任意合适的组合。这里所使用的计算机可读存储介质不被解释为瞬时信号本身,诸如无线电波或者其他自由传播的电磁波、通过波导或其他传输媒介传播的电磁波(例如,通过光纤电缆的光脉冲)、或者通过电线传输的电信号。
这里所描述的计算机可读程序指令可以从计算机可读存储介质下载到各个计算/处理设备,或者通过网络、例如因特网、局域网、广域网和/或无线网下载到外部计算机或外部存储设备。网络可以包括铜传输电缆、光纤传输、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配卡或者网络接口从网络接收计算机可读程序指令,并转发该计算机可读程序指令,以供存储在各个计算/处理设备中的计算机可读存储介质中。
用于执行本发明操作的计算机程序指令可以是汇编指令、指令集架构(ISA)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据、或者以一种或多种编程语言的任意组合编写的源代码或目标代码,所述编程语言包括面向对象的编程语言—诸如Smalltalk、C++等,以及常规的过程式编程语言—诸如“C”语言或类似的编程语言。计算机可读程序指令可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络—包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。在一些实施例中,通过利用计算机可读程序指令的状态信息来个性化定制电子电路,例如可编程逻辑电路、现场可编程门阵列(FPGA)或可编程逻辑阵列(PLA),该电子电路可以执行计算机可读程序指令,从而实现本发明的各个方面。
这里参照根据本发明实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述了本发明的各个方面。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机可读程序指令实现。
这些计算机可读程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,使得这些指令在通过计算机或其它可编程数据处理装置的处理器执行时,产生了实现流程图和/或框图中的一个或多个方框中规定的功能/动作的装置。也可以把这些计算机可读程序指令存储在计算机可读存储介质中,这些指令使得计算机、可编程数据处理装置和/或其他设备以特定方式工作,从而,存储有指令的计算机可读介质则包括一个制造品,其包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的各个方面的指令。
也可以把计算机可读程序指令加载到计算机、其它可编程数据处理装置、或其它设备上,使得在计算机、其它可编程数据处理装置或其它设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机、其它可编程数据处理装置、或其它设备上执行的指令实现流程图和/或框图中的一个或多个方框中规定的功能/动作。
附图中的流程图和框图显示了根据本发明的多个实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或指令的一部分,所述模块、程序段或指令的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。对于本领域技术人员来说公知的是,通过硬件方式实现、通过软件方式实现以及通过软件和硬件结合的方式实现都是等价的。
以上已经描述了本发明的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术改进,或者使本技术领域的其它普通技术人员能理解本文披露的各实施例。本发明的范围由所附权利要求来限定。