前言
Question generation (QG)问题生成任务是根据给定的context和answer自动生成问题的任务,它有很多应用场景,比如教育系统、智能虚拟助理系统以及还可以作为增强 QA 系统的补充任务等等。之前很多QG任务都是去生成类似SQuAD的单跳问题即根据一个单独的输入句子生成相关问题,最近又有了很多关于多跳的问题生成任务即Multi-hop question generation (MQG) ,本篇就是一篇优化MQG的paper
论文链接:https://arxiv.org/pdf/2202.06538v1.pdf
idea来源
之前有关MQG的模型都是使用graph-based的网络,即将graph揉到Seq2Seq framework中,但是一些最近的工作(见论文中参考文献10、11)显示了graph并不是必须的,Transformers就可以很好的代替它,于是本篇的作者也采用了Transformers结构。
之前的所有模型都是关注P (Question|〈Answer, Context〉), 但是忽略了P (Answer|〈Question, Context〉),说的再直白点就是只进行了QG,但是QA任务对QG也是有帮助的,事实上QA和QG是一对互帮互助的任务,所以本篇paper在做QG的时候,同时考虑了QA。
框架
如上图,整体框架包括一个BART预训练模型和一个QA模块,大体上的逻辑就是QA模块将 context C和question Q作为输入,然后预测answer中每个token的概率,BART 模块就是专门做MQG任务,就是将context C和answer A作为输入,同时将QA模块输出的score一起揉到输入,然后产生 question Q。下面我们来细看其中的一些细节。
(1)BART
作者之所以选择BART作为backbone是因为其在很多生成任务上都比较好,关于BART模型细节不熟悉的小伙伴可以去看相关paper,很简单。
(2) Answer Relevance Attention
为了建模P(A|C, Q),作者这里提出了两种方法即soft方法和hard方法
(a)Soft attention
这里是假设ground truth question是可以事先拿到的,比如训练集中就存在,那么其具体的做法就是将C和Q作为输入,然后输出A开始和结束的token概率即
(b)Hard attention
这里是假设ground truth question是事先拿不到的,比如测试集中就没有,这个时候作者的做法是首先使用匹配,在context中匹配出answer出现的span,然后命中的span,作者就给一个人为预设的score即论文中的py,其余没有命中的也人为的给另外一个预设的分数即pn ,具体的py=1,pn=0。
(3) Enhanced Cross-Attention
这一步比较关键了,就是怎么将QA的分数揉进QG中,看下面公式吧:
可以看到之前的正常模型在做MultiHeadAttention这一步即softmax这一步的时候是没有+A这一步的,现在就是加了A,而A正是QA产生的分数,只不过这里如上面所讲有model产生的(soft)和强行给(hard)两种方式,说的再直白点就是QA模块当采用soft时就是一个model,当采用hard时其实就是一个正则匹配。
效果
在BLEU-4和ROUGE指标上分别提高了4和8个点,更多实验细节大家如果感兴趣可以去看原论文。
总结
(1)在笔者看来,其实这里模型之所以有效果本质上还是得益于我们以更加显示的方式告诉模型什么才是最重要的。简单粗暴的强行告诉你什么结果才是最重要的,就好像考试的时候直接画考试重点一样,所以大家以后可以试着做简单且最重要的事就好,只要你找到重点,方式的话即使最简单粗暴都可能有效果。
(2)通过这篇paper我们学到的另外一个trick就是逆向思维比如我们解决的是QG,但是可以利用其对偶问题QA。
(3)第三个学到的就是QG这个任务本身即其其实也可以催化出很多应用场景,大家可以试着给自己业务思考一些相关的应用