【深度学习】Neural Response Generation——关于回复生成工作的一些总结( 三 )


2、如何生成更有质量的回复
如果你使用过Seq2seq模型 , 会发现生成得到句子中 , 有很多都是非常泛化性的句子 , 这些句子虽然可以勉强作为上文的一个回复 , 但实在是没有什么实质性信息 。 这也是该模型面临的一个很大的问题 , 即无法生成富含内容的、有趣的回复 。 针对这个问题 , 以下几个模型分别从多个角度对Seq2seq模型进行了改进 , 分别取得了一定的效果 。
2.1 MMI-antiLM和MMI-bidi[6]
该模型是李纪为老师在HLT-NAACL16上提出的 。 与其他模型不同 , 他认为解决回复过于泛化的问题应当着力于目标函数 。 从标准的Seq2seq模型的目标函数来看 , 其实际上是在找以上文为条件下最大概率的下文 , 写成数学形式即为
【深度学习】Neural Response Generation——关于回复生成工作的一些总结
本文插图

其中S为上文序列 , T为下文序列 。 从这个式子本身就可以看出其无法过滤一些高频率的下文T 。 于是这里引入最大交互信息(MMI) , 即:
【深度学习】Neural Response Generation——关于回复生成工作的一些总结
本文插图

直观的来看 , 这个式子对上一式子做出了一定的惩罚 , 即减去了一项 。 而被减去的这一项恰好是T本身的概率 , 乍一看这个模型非常的好 , 同时考虑了生成最大概率的下文以及该下文本身出现的概率 。 这里引入一个参数稍稍将式子进行变形 , 得到:
【深度学习】Neural Response Generation——关于回复生成工作的一些总结
本文插图

即通过这个参数我们可以人为控制对T概率的惩罚力度 , 我们将使用该式子作为目标函数的模型记为MMI-antiLM 。 有过概率论基础的同学也不难发现 , 如果我们引入条件概率公式:
【深度学习】Neural Response Generation——关于回复生成工作的一些总结
本文插图

可以将上式变形为:
【深度学习】Neural Response Generation——关于回复生成工作的一些总结
本文插图

使用该式子作为目标函数的模型记为MMI-bidi 。
这里我们首先看第一个模型 , MMI-antiLM 。 其名是因为式子看起来是对语言模型进行了一个惩罚 , 有点逆-语言模型的意思 。 这个式子看起来非常好 , 但第二项的引入既保留了低概率的回复也保留了错误的(不符合语法的)回复 。 理论上如果引入的参数值小于1 , 错误的回复应当被第一项所惩罚 , 但实际使用时发现 , 还是会有错误的回复逃过了惩罚 。 针对这个问题 , 作者提出 , 对第二项作一些修改 , 将
【深度学习】Neural Response Generation——关于回复生成工作的一些总结
本文插图

调整为:
【深度学习】Neural Response Generation——关于回复生成工作的一些总结
本文插图

而其中
【深度学习】Neural Response Generation——关于回复生成工作的一些总结
本文插图

背后的想法是 , 对语言模型而言 , 在前面生成的词会极大的影响后面生成的词(条件概率) , 所以前面生成的词应当获得准确的惩罚 , 以保证句子的多样性 , 而后面的句子相对来说影响力会小一些 , 应当更多的让条件概率发挥作用以保持其正确性 。 事实上我们也发现 , 错误的回复往往是在靠后的位置出现语法错误 , 特别是长句子 。 于是这一模型最终变化为使用如下的式子作为目标函数:
【深度学习】Neural Response Generation——关于回复生成工作的一些总结
本文插图

其次我们来看MMI-bidi模型 。 这里稍微回顾一下其目标函数:
【深度学习】Neural Response Generation——关于回复生成工作的一些总结


推荐阅读