缺点模板 论文解读:基于动态词表的对话生成研究(3)
时间复杂度
|论文解读:基于动态词表的对话生成研究" TITLE="干货|论文解读:基于动态词表的对话生成研究" />
在介绍完词预测方法后,我们来看时间复杂度的计算,即以什么样的速度进行 decoding。
首先将 Seq2Seq 和本文的 decoding 方法进行对比,可以发现二者在 GRU 和 Attention上花费的时间完全一致,但是本文方法在 Projection 上花的时间会少很多。
原因在于 Seq2Seq 的 vocabulary size 通常都很大,比如 3 万这种级别乘出来的数。而本文这个 T可能只有几千,并且我们无需为每个词建立一个表,而是为每一句话建立一个表。因此,我们构建词典的时间开销要远小于从全局字典里进行词预测。
经实验证明,这种方法相比 Seq2Seq 能节省约 40% 的时间。
模型训练
|论文解读:基于动态词表的对话生成研究" TITLE="干货|论文解读:基于动态词表的对话生成研究" />
|论文解读:基于动态词表的对话生成研究" TITLE="干货|论文解读:基于动态词表的对话生成研究" />
|论文解读:基于动态词表的对话生成研究" TITLE="干货|论文解读:基于动态词表的对话生成研究" />
为了解决这个问题,我们在训练时选择将动态词典作为一个隐变量来处理。针对公式的详细推导,大家可以参考论文。
由于是隐变量,假设动态词典 T 是完全变例,即一个词有选或者不选这两种可能。如果有 3 万个词,那么 T 就有 2的三万次方这么大,因此这种方法是不可行的。那我们应该怎么做呢?
|论文解读:基于动态词表的对话生成研究" TITLE="干货|论文解读:基于动态词表的对话生成研究" />
由于这个损失是通过采样得出,因此它会和 RL 一样存在 variance。因此我们加了一个 baseline BK用于梯度更新,从而使训练更为稳定。
实验
|论文解读:基于动态词表的对话生成研究" TITLE="干货|论文解读:基于动态词表的对话生成研究" />
本文实验所用数据来自我们之前的一篇文章,这些词可以覆盖约 99% 的词。
|论文解读:基于动态词表的对话生成研究" />
|论文解读:基于动态词表的对话生成研究" TITLE="干货|论文解读:基于动态词表的对话生成研究" />
现有的方法可分为四类:
第二类方法是计算 embedding的距离,这类方法分三种情况:直接相加求平均、先取绝对值再求平均和贪婪匹配。
第三类方法是衡量多样性,主要取决于 distinct-ngram 的数量和 entropy 值的大小。
|论文解读:基于动态词表的对话生成研究" TITLE="干货|论文解读:基于动态词表的对话生成研究" />
表 1 中的前四行是 baseline,DVS2S 是将词预测和 Seq2Seq 的损失串在一起计算,S-DVS2S则是对这两个 loss 分别进行计算。从结果可以看出,DVS2S 的效果均优于其他方法。
表 2 是人工标注结果,数值 0 和 2 分别代表最差效果和最优效果,Kappa 则指三者的一致性。人工标注得到的 Kappa值通常较低,也就是说,即使让真人来进行评测,也很难得到一致性的评价。
|论文解读:基于动态词表的对话生成研究" />
|论文解读:基于动态词表的对话生成研究" />
总结
突然想到陌上人如玉公子世无双TAo的火热足以让冰雪融化