分享

适应的对话生成模型——解决数据不足的秘密武器

 黑马_御风 2017-03-16

             来这里找志同道合的小伙伴!   



背景介绍


对话生成模型是最近几年才被提出的模型,该模型从提出开始便迅速的成为了学术界和工业界的研究热点。


提到对话生成模型,我们不得不先提到Sutskever和Cho两个大神。其实这两个人没有一个是研究对话生成模型的。那我们为什么要提到这两个人呢?因为现在大多数对话生成模型的框架都是以这两个人的工作为基础的。这两个人到底是干什么的呢?他们是研究机器翻译的。他们两个人来自于不同的团队,但都在2014年发表了广受业界关注的文章。他们的文章中都提出了用RNN Encoder Decoder的框架去做机器翻译。这个框架刚一提出,瞬间就火了,为什么呢?因为它相比于传统的方法效果提升了很多。而且它是端到端的,就是说在这个框架下不需要过多的人工参与,只要将一句话输入到RNN Encoder-Decoder的网络中,就可以自动的生成一句话,省去了人工提取特征这个烦人的操作。


之后Cho大神又和Bahdanau合作提出了Attention based Encoder Decoder。这个模型把机器翻译的效果又提升了一大截,特别是对长句子的效果要比原有的RNN Encoder Decoder好很多。这下RNN一时间占领了自然语言处理领域,几乎所有研究自然语言处理任务的人都开始研究用RNN解决他们的问题。


对话生成模型也是在这个RNN的大潮下被提出的。对话生成和机器翻译的输入和输出都是句子。因此,人们很容易的想到了将Sutskever和Cho两个大神的思路直接套用到对话生成模型上,然后在此基础上再做一些改进。


2015年,有关对话生成模型的论文井喷似的产生。其中华为诺亚方舟实验室在这方面做了比较突出的贡献,他们在Attention based Encoder Decoder的基础上提出了Neural Response Machine。个人认为他们工作的主要贡献是给研究者们指明了一个新的研究方向——对话生成模型研究。同时他们给出了一个现在公认有效的评估方式——人工评测。


大多数研究对话生成模型的团队都是从互联网上收集了大规模的对话语料作为训练数据。在大数据的支撑下,对话生成模型的效果尚可。在我们的实际工作中,可能需要构建特定领域的对话生成模型。比如:微信有很多公众号,我们可以给每个公众号搭建一个聊天机器人,但是每个公众号都有他们特定的领域,而特定领域的聊天语料一般都是较为稀缺的,无法满足训练对话生成模型的需求。那么怎么办呢?难道对话生成模型就不能用到特定领域的聊天机器人中了吗?


对话生成模型那么好,我们怎么可能轻易放弃呢?数据量少就想办法呗,万一找出一个解决办法我们是不是也能像Sutskever和Cho两个大神一样火一次。上文提到了大多数研究对话生成模型的团队都是从互联网上收集了大规模的对话语料数据作为训练数据,这些数据虽然不是特定领域的对话数据,但起码也是对话数据啊,我们是不是可以想个办法利用这部分数据帮助特定领域的对话生成模型的训练呢。


在我们的冥思苦想之下,终于看到了一点曙光。我们发现了秘密武器——适应的对话生成模型。下面两章我们先介绍一下对话生成模型是怎么实现,之后介绍一下适应性对话生成模型的原理。


对话生成模型



如图一所示,对话生成模型一般采用RNN Encoder Decoder的框架。Encoder将输入的问题编码到一个隐向量中,Decoder负责对这个隐向量进行解码,得到最后输出的答案。RNN Encoder Decoder可以看做是最大化给定输入问题条件下输出答案的条件概率。假设我们有一个语料集,其中表示输入的问题,表示输出的答案, 表示语料中问题与答案对的个数,那么对话模型的目标函数就可以表示为: 

        

                                    


适应的对话生成模型


适应的对话生成模型利用了全领域的对话数据(即从互联网上可以直接收集到的大规模对话数据)帮助训练特定领域的对话生成模型。一提到利用全领域数据帮助训练特定领域的对话生成模型,我们最直接的可以想到两种方式。


第一种是将全领域数据和特定领域的对话数据集合在一起,共同训练特定领域的对话模型,这种方式可以有效的解决数据量不足的问题,但是由于全领域的对话数据量远超过特定领域的对话数据量,因此,特定领域的对话数据将被全领域的对话数据淹没,导致训练出来的对话生成模型生成答案的风格和全领域的答案风格比较接近,而和特定领域的答案风格先去甚远。


第二种是利用全领域的对话数据先训练一个对话模型,然后用该模型做为初始化模型,再用特定领域的对话数据fine-tune这个模型。这种方式往往会导致模型过拟合到特定领域对话数据上,即全领域的对话数据信息无法保留下来,最后的模型依然是只包含了特定领域的数据信息,由于特定领域数据的信息较少,该模型无法达到预期。


而我们提出的适应的对话生成模型相比于上述两种方式可以更有效的防止特定领域的数据被全领域的对话数据淹没,同时防止模型过拟合到特定领域的数据上。那么我们的模型是怎么实现的呢?请看图二。




和前面提到的第二种方式类似,我们的模型先利用全领域数据对模型进行预训练,然后利用预训练的模型参数对特定领域的对话模型进行初始化。


和第二种方式不同的是,我们的模型不是直接进行fine-tune的,而是将预训练模型的信息作为一个监督信息加入到了目标函数中,使得适应的对话生成模型保留着全领域的信息,防止了其过拟合到特定领域的对话数据上。这个监督信息是通过预训练模型与适应的对话生成模型的KL散度加到目标函数中的,其可以看做是一个正则项。适应的对话生成模型在保证最大化给定输入问题条件下输出答案的条件概率的同时,还要使模型与全领域数据训练出来的模型尽可能的接近,即两者的KL散度尽可能的小,以保证适应的对话生成模型中保留全领域数据的信息,防止模型过拟合到特定领域上,因此我们改进后的目标函数如下:







其中表示全领域中的数据分布,表示正则化权重,表示KL散度函数。 上式中的正则化权重的取值是从 0 到 1 的。当时,全领域数据的信息对 于适应的对话生成模型的训练没有任何影响,适应的对话生成模型和前文提到的 第二种直接fine-tune的模型相同。相反,当时,适应的对话生成模型完全 信赖全领域的数据信息,而忽略了特定领域对话数据的信息。该值的确定与特定 领域的对话数据量有关,如果特定领域对话数据较少,  应该取值较大,模型需要从全领域数据中提取较多的信息完成模型训练,反之亦然。 



总结与展望


特定领域的智能聊天机器人是目前国内外互联网公司关注的热点之一,我们的方法让对话生成模型向实际应用到智能聊天机器人中更近了一步。但是即使应用了我们的方法,特定领域对话生成模型仍然存在着生成回答与问句无关以及生成回答趋向于高频答案等问题。要解决上述问题,需要从改进对话生成模型以及更好的利用迁移学习将外部信息引入到对话生成模型的训练中两方面入手,这也是我们日后的两个重点研究方向。




参考文献

[1]Dzmitry Bahdanau, KyunghyunCho, and Yoshua Bengio. Neural machine translation by jointly learning to alignand translate. CoRR, abs/1409.0473, 2014.

[2]Kyunghyun Cho, Bart vanMerrienboer, C? aglar G¨ulc?ehre, Fethi Bougares, Holger Schwenk, and YoshuaBengio. Learning phrase representations using RNN encoder-decoder forstatistical machine translation. CoRR, abs/1406.1078, 2014.

[3]Ilya Sutskever, OriolVinyals, and Quoc V. Le. Sequence to sequence learning with neural networks.CoRR, abs/1409.3215, 2014.

[4]Lifeng Shang, Zhengdong Lu,and Hang Li. Neural responding machine for short-text conversation. CoRR,abs/1503.02364, 2015.




微信AI

人工智能,走进生活

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多