这个暑假做了个QG的调研和复现了模型,做一个总结。

文中涉及的文章详细介绍可见论文阅读 Question Generation

  • 背景:
    为什么要研究QG?
    从人的经验看,好的学习者一定是擅长提问的。机器知识库作为“学习者”,也许可以利用主动提问来高效构建或者补充知识库,扩充数据集等等。
    现在的一些应用场景:在教育领域,帮助学生来提问;在对话领域,作为冷启动来开始一个话题或者通过提问来获得反馈;在医药领域,可以用于自动问诊系统,作为一种辅助工具等等,可以看到应用场景还是比较多的
  • 问题定义:
    从传统来说,QG的定义是给定一篇文章,里面包含一些事实,根据这些事实,从不同角度提问题。
    简单来看,QG问题可以定义为一个优化问题,在给定答案的前提下,最大化生成问题的概率。
  • 相关研究:
    seq2seq模型自从2014年google brain和yoshua分别提出后成为了机器翻译,文本生成领域一个非常热门的模型。同年,bahdanau等人提出了attention机制用来解决长距离依赖不强的问题,16年 ACL上提出了pointer softmax和copynet解决了OOV的问题,17年 ACL上Abigail See等人提出coverage机制解决了句子中重复生成的问题。
  • 将深度学习用于QG:
    之前的做法主要是基于规则的,从知识库中提取知识填入模板中。Learning to ask是第一篇提出用端对端的seq2seq模型来做QG的,是cornell大学claire老师组的工作。模型是一个基础的加attention的seq2seq模型,encoder时同时考虑了段落和句子的信息,在SQuAD测试集上取得了比baseline稍好一些的结果。可以看到加了attention后提升很大,段落的背景信息提升较小。

    第二篇是18年北京大学yanrui老师组的工作是基于之前这篇做的改进,没有考虑段落的信息,考虑了关键词的信息,对问句根据疑问词归类成了八类,对生成的问句做了一个限制,只能以疑问词开头。在Amazon的数据集上取得了一定的提升。

    还有一些其它的工作,Microsoft和蒙特利尔大学有一篇合作的用RL的方法做QG的文章,Reward定义为两个部分,第一个部分是奖励,将生成的回答喂给另一个已经训练好的QA模型,如果answer较好,给一个正rewards,第二个部分是ppl,即句子流畅度。

    微软的周明老师组将QA和QG视为一个对偶任务,认为QA和QG是两个相同重要的生成任务。从MARCO,SQuAD的测试集结果来看MRR和MAP评分只略微提高了一点点,并且没有放BLEU的评分,这个评价标准得分应该更低。