Learning to Ask: Neural Question Generation for Reading Comprehension 笔记

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,几个公式如下:

\mathbf { h }_{ t } = \mathbf { L S T M } _ { 1 } \left( y _ { t - 1 } , \mathbf { h }_{ t - 1 } \right)
P \left( y _ { t } | \mathbf { x } , y _ { < t } \right) = \operatorname { softmax } \left( \mathbf { W } _ { s } \tanh \left( \mathbf { W } _ { t } \left[ \mathbf { h } _ { t } ; \mathbf { c } _ { t } \right] \right) \right)

其中c_t 是encode-decode attention的context信息,由h_t和encode阶段的状态计算得出。

论文的实现可以参考 github.com/xinyadu/nqg

NQG的 Encode 和 Decode

首先输入不同,NQG输入为一段paragraph,特征也不同,输入时会标注上答案所在的位置,以及文本的词法特征。下图是整个框架的说明:

Encode的结构是Bi-GRU

其次,其Decode的结构是带attention的GRU,和上篇也类似。具体的公式如下

\begin{aligned} s _ { t } & = \mathrm { GRU } \left( w _ { t - 1 } , c _ { t - 1 } , s _ { t - 1 } \right) \\ s _ { 0 } & = \tanh \left( \mathbf { W } _ { d } \overline { h } _ { 1 } + b \right) \\ e _ { t , i } & = v _ { a } ^ { \top } \tanh \left( \mathbf { W } _ { a } s _ { t - 1 } + \mathbf { U } _ { a } h _ { i } \right) \\ \alpha _ { t , i } & = \frac { \exp \left( e _ { t , i } \right) } { \sum _ { i = 1 } ^ { n } \exp \left( e _ { t , i } \right) } \\ c _ { t } & = \sum _ { i = 1 } ^ { n } \alpha _ { t , i } h _ { i } \end{aligned}

其中,h为Encode的输出,中间状态。s是Decode的中间状态。在预测输出的token时,文中结合了上一单词、当前的context(与encode的attention结果)、当前状态,得到一个 readout state r,然后做了一个 maxout 的类pooling操作(没懂这一步),最后用softmax做predict。

\begin{aligned} r _ { t } & = \mathbf { W } _ { r } w _ { t - 1 } + \mathbf { U } _ { r } c _ { t } + \mathbf { V } _ { r } s _ { t } \\ m _ { t } & = \left[ \max \left\{ r _ { t , 2 j - 1 } , r _ { t , 2 j } \right\} \right] _ { j = 1 , \ldots , d } ^ { \top } \\  p \left( y _ { t } | y _ { 1 } , \ldots , y _ { t - 1 } \right) = & \operatorname { softmax } \left( \mathbf { W } _ { o } m _ { t } \right) \end{aligned}

最后,NQG使用了 Copy 机制来缓解 rare and unknown words 的问题。在decode阶段的时刻t, 文中根据当前状态 s_t,和当前的context c_t,来预测一个概率,是否将输入中的词copy到当前时刻,至于copy那个词,是根据attention的分数来决定。

p = \sigma \left( \mathbf { W } s _ { t } + \mathbf { U } c _ { t } + b \right)

论文的实现可以参考 github.com/magic282/NQ…

我觉着篇工作的效果应该是好于上一篇论文,但是他们之间没有对比。可能是同期的论文吧。


欢迎访问个人博客Alex Chiu的学习空间

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值