"A Diversity-Promoting Objective Function for Neural Conversation Models"阅读笔记

因为最近在做的chatbot实验效果不太好,总是会出现一些没有营养的回复,如我不知道等等。所以查了一些资料,发现李纪为大神的篇文章是提供了处理这个问题的方法,所以借鉴了一下,顺便写一下博客记录。

文章主要的贡献是使用了最大互信息MMI代替常用的最大后验概率MLE等作为目标函数。MLE这个目标函数最常用在机器翻译任务上,最大的优势在于可以产生最自然的语言,但是多样性不好。对话任务和翻译任务还是有区别的,对话任务的回复往往是开放性的,选择范围更广,这样是用MLE很容易在最高票上产生“我不知道”这种安全并且符合语法的回复。尽管使用MLE在decoding昌盛的大量的N-best list的话,也是有很多不错的回复,但都排名很靠后。
作者认为产生这种结果的原因在于,我们只考虑了输入对输出的影响,但是没有考虑输出对输入的影响,所以选择了使用MMI这个目标函数作为优化对象。

MMI指标

先看一下标准的seq2seq目标函数是对数似然函数,如下:
在这里插入图片描述
S是输入源语句,T是输出target语句。目标就是最大化两者之间的对数似然函数。

对于互信息:
在这里插入图片描述
上式进行简单的推导,可以化为:
在这里插入图片描述
p(T)其实是一个语言模型,为了在目标中控制reply的多样性,添加一个惩罚系数lambda,上式转化为下式:
在这里插入图片描述
然后利用贝叶斯公式:
在这里插入图片描述
将(10)化为:
在这里插入图片描述
从这个式子我们来看,MMI实际上是在给出S得出T和给出T得到S之间做权衡取舍。

对应式子(9)和(10)训练两种模型,分别是MMI-antiLM和MMI-bidi。下面的章节我们会介绍这两个模型以及如何实现。

实现

说一点关键的:
如何计算P(T)
首先应该意识到P(T)应该是一个语言模型学习出来的结果,而不简单的是联合概率的乘积。那么如何得到这个模型学习出来的结果呢?在实现时需要在decider的输入端输入一个全零的初始化状态,具体做法可以输入一句话长度的pad标志符,让decoder生成结果,得到P(T).

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值