Learning to Ask: Neural Question Generation for Reading Comprehension笔记
感觉和 “Neural Question Generation from Text: A Preliminary Study” 这篇很像的工作,都是基于 Seq2Seq 的思想来做 Question Generation。
两者的区别在与 Encode 和 Decode 的设计吧。
Encode 和 Decode
Learning to ask 利用 Bi-LSTM 来编码,将状态拼接,在decode阶段还用于做attention。
这篇论文还对paragraph(包含答案的段落)做了encode,但是是利用了另外一个 Bi-LSTM。将最后一个状态拼接作为输出。
在Decode时使用了带attention的LSTM,几个公式如下:
其中 是encode-decode attention的context信息,由和encode阶段的状态计算得出。
论文的实现可以参考 github.com/xinyadu/nqg
NQG的 Encode 和 Decode
首先输入不同,NQG输入为一段paragraph,特征也不同,输入时会标注上答案所在的位置,以及文本的词法特征。下图是整个框架的说明:
Encode的结构是Bi-GRU
其次,其Decode的结构是带attention的GRU,和上篇也类似。具体的公式如下
其中,为Encode的输出,中间状态。是Decode的中间状态。在预测输出的token时,文中结合了上一单词、当前的context(与encode的attention结果)、当前状态,得到一个 readout state ,然后做了一个 maxout 的类pooling操作(没懂这一步),最后用softmax做predict。
最后,NQG使用了 Copy 机制来缓解 rare and unknown words 的问题。在decode阶段的时刻t, 文中根据当前状态 ,和当前的context ,来预测一个概率,是否将输入中的词copy到当前时刻,至于copy那个词,是根据attention的分数来决定。
论文的实现可以参考 github.com/magic282/NQ…
我觉着篇工作的效果应该是好于上一篇论文,但是他们之间没有对比。可能是同期的论文吧。
欢迎访问个人博客Alex Chiu的学习空间