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


本文插图

可以看到 , 无法直接使用该目标函数来生成回复 。 因为第二项需要在完成T的生成后才能够计算出来 , 由于T的搜索空间是庞大的 , 探索所有的可能性是不现实的 。 所以在实际使用中 , 将该模型分为两个步骤来看 , 先生成第一项下概率最大的一些回复 , 形成一个大小为N的列表 , 再对列表中的回复用第二项进行重排序 。 因为第一项即普通的Seq2seq模型生成的结果 , 其较为符合语法结构 , 再使用第二项进行重拍后 , 得到的结果是比较好的 。
在实际使用时 , 这两个模型都引入了其他因子来综合考虑生成句子的长度 。 最终结果也表明这两个模型相比于标准的Seq2seq模型都能取得更好的结果 , 但这二者在不同的数据集上的效果存在一定的差异 。
2.2 TA-Seq2seq(Topic Aware Seq2seq)[7]
除了像上文一样对目标函数进行修改外 , 也有学者对Seq2seq模型的结构进行了一些改进 , TA-Seq2seq是其中之一 。 其模型示意图如下:
【深度学习】Neural Response Generation——关于回复生成工作的一些总结
本文插图

图6:TA-Seq2seq模型结构
与之前提到的Seq2seq+Attention相比 , 作者引入了新的Topic Attention来强化主题的作用 。 从图中可以看到 , 这一Attention是作用在Topic Words上的 。 而这些Topic Words则是使用Twitter-LDA[8]训练得到的 。 通过预训练主题模型 , 能够得到每个上文对应的主题信息 , 以及包含的一定数量的主题词 。 在进行回复生成时 , 同时考虑主题词的作用 , 从而使生成的回复更加有趣 , 内容更加丰富 。 此外 , 右侧部分可以看到 , 作者对Decoder端生成词的概率进行了一定调整 , 这里的想法是 , 我们自然的认为生成的句子中这些主题词出现的概率应当大一些 , 正如图中所示 , 上文在说自己皮肤干燥的问题 , 主题词是一些皮肤、干燥、脸等相关词汇 , 当这些词汇出现在回复中时 , 既与上文息息相关 , 又增加了回复的信息量 , 所以对这些词进行概率加成会取得一定的效果 。 实验结果表明 , 这种在Encoder端和Decoder端同时考虑主题词的方法能够生成更加有趣、更有具有内容的回复 。
2.3 Seq2BF(Sequence to Backward and Forward Sequences)[9]
在修改模型结构方面 , COLING16上提出的Seq2BF也是非常棒的一种想法 。 其模型结构如下:
【深度学习】Neural Response Generation——关于回复生成工作的一些总结
本文插图

图7:Seq2BF模型结构
从图中可以看出 , 这一模型具有三个模块 。 第一个模块是关键词预测模块 , 作者使用PMI这一共现频率作为关键词选择的依据 。 PMI是在整个数据集上计算得到的每个词和一些关键词的共现频率 。 通过这种方法 , 给定一个上文时 , 就可以得到与其最相关的关键词了 。 与之前的模型不同 , 该模型希望显式的控制生成 , 保证关键词出现在回复中 。 背后的想法是很直观的 , 只要保证了该关键词一定在回复中出现 , 该回复的信息量就得到了保证 。 具体的做法是 , 分两步生成回复 , 先以该关键词为首词反向生成该关键词之前的一些词 , 再将这生成的半个句子 , 倒过来送入另一个模型中 , 继续生成后续的词 , 最终得到一个完整的句子 。 实验表明 , 这种方法生成的句子内容的丰富度得到了提高 。 这种方法与上述的引入主题的方法形成了一个很好的对比 , 一个是通过隐式的引入主题词控制生成的内容 , 一个通过显式的加入关键词来控制生成的回复 , 两种方法都取得了很好的效果 。
3、古诗生成与多轮对话
这一部分将会介绍一篇百度自动写诗的论文与几篇多轮对话的论文 , 其都是与对话生成息息相关的工作 , 使用的方法对解决单轮对话生成也具有一定的借鉴意义 。


推荐阅读