「每周一起读」是由 PaperWeekly 发起的协同阅读小组。我们每周精选一篇优质好文,利用在线协同工具进行精读并发起讨论,在碎片化时代坚持深度阅读。目前已成立的专题小组有:Chatbot、机器翻译、知识图谱、GAN、推荐系统、QA、增强学习、多模态、自动文摘和统计学习。
Sequence to Backward and Forward Sequences: A Content-Introducing Approach to Generative Short-Text Conversation
https://arxiv.org/pdf/1607.00970.pdf
用一般的 seq2seq 框架来直接生成对话,经常会有类似“哈哈”、“我不知道”的话产生,虽然很连贯,但信息量太少,没有实际意义。那么,如何根据上文来生成相关的、有信息量的、甚至包括某个关键词的对话?本文或许会给出一些启发。
xwzhong
paper 依旧是想就生成式对话中解决通用性回复的问题,思路比较简单,在 decoder 时,预选确定一个有意义的“词”,在一定出现该词的情况下进行扩充从而得到完整的回复,关键部分如下:
1. train:对于一个完整的 post-resp 对,将“resp”随机选取一个 word 分割,前后部分设为 head 和 tail,对 head 部分 reverse,得到 post-rehead,post-tail 对,用两个不同的 seq2seq 模型进行训练;
2. test/eval:使用 petrain 得到的 PMI 信息,计算出当前 post 出现情况下,最“适合”出现的 word(“词”级别),再依次使用反向和正向 seq2seq 模型得到完整的回复;
3. paper 提出的 idea 降低通用性回复,主要因为预先使用 PMI 挑出了相对“有意义”的词;
4. 如果只是想进行实验,复现模型相对简单,可以直接套用 seq2seq 的 translate 代码,再额外写一个 PMI 相关计算;
5. 就此模型而言,效果的好坏主要应该在于 keywords 词表以及 test/eval 部分 keyword 的选取;
6. 在 train 部分,不知道在选取 word 进行 split 部分,使用 test/eval 一样的选取方式效果会不会更好?
Miao
本文提出的模型有三部分(看 Figure 1): a. keyword prediction, b. backward seq2seq model c. forward seq2seq model 关于 a 大家讨论了不少了;b 和 c 是两个 seq2seq model,本文使用的是将 encoder 得到的内容通过 hidden state 传递给 decoder 的 seq2seq 模型,没有使用 attention 机制,属于比较简单的模型;c 是一个标准的 seq2seq 模型,在训练过程中都不需要考虑 keyword 的问题,比较简单;我感觉本文最大的关注点和亮点在 b,有几点思考:
1. 传统 seq2seq 模型中 decoder 产生的第一个词对于整个句子的生成是比较重要的,会影响内容的质量,也会影响多样性;而 backward seq2seq 可以使得 reply 的第一个词的多样性提升,从而提升 reply 的多样性;从 table 2 中的例子可以看到,传统的 seq2seq 模型的回答大部分是“我怎么怎么”,这种回答看上去质量也比较差,更像 general reply,而本文模型的回答第一个词多样性大,显得质量较高,我感觉这个非常有趣;
2. 因此,backward seq2seq 的好坏对于 reply 的生成是非常关键的;
3. 而 backward seq2seq 需要的能力是比较强大的:需要给定一个 post,以及 reply 任意一个位置的词,然后向前生成 reply,这个能力和传统的 seq2seq model 需要的能力是有一些微妙的区别的。我感觉这个能力用本文这样的 seq2seq model 来实现有些别扭,如果能有更好的 backward seq2seq model,会不会能显著的提升 reply 的质量。
weijinfeng
本文所解决的问题跟上周的论文基本是一致的,都是通过引入先验知识到生成过程中,所不同的是,本文只是引入一个词,并且限定是名词,而且还将应用场景定位为短句对话。 模型本身相对比较简单,就只对前面这几个限定说一下个人的理解。
首先是,1)为什么选取一个词,这应该是基于短句概念提取的一个假设,就是一个短句是以一个词(应该包括复合词)为核心,辅以描述或限定性成分以及其他成分组成。当核心概念词提取出来后,又因为open domain对话的内容开放性的特点(比如,只要回复说的是这个事,至于说什么不重要),再扩展出其他成分来就可以了。
其次是,2)为什么是名词,有同学的批注也提到了这个问题,看到没有人回复,说下自己的看法。根据1,一个短句需要映射到唯一的词作为整句的概念抽象或者核心表达词,那么词的词性就需要斟酌一下了。用排除法来做,很显然除了主谓宾的其他成分在一个句子中起核心作用的时候相对是比较少的。有同学也提到了核心词选取的重要性,所以一旦选了非主要成分作为核心词,后面再生成好回复的概率也比较小了。另外,从语法结构上来说,主语一般是名词或者代词,谓语一般是动词,宾语一般是名词或者代词。从概率角度来讲也是选名词覆盖范围更大一些。
最后,3)为什么从一开始就定位为短对话生成,我觉得主要原因是因为reply的产生是由用PMI方式选出来的key word为中心扩展出来的,这种扩展虽然可以无限延长,但是随着跟key word距离的增加,关联性也会逐渐降低,难免会出现句子不通畅的情况,所以定位为短句的回复更为有效一些。