Learning to Ask Neural Question Generation for Reading Comprehension

bTchi8.png

Learning to Ask: Neural Question Generation for Reading Comprehension

学会提问:阅读理解的神经性问题生成

1 Abstract

本文提出了一个基于注意力的序列学习模型,研究了对句子级信息和段落信息进行编码的效果。

tfcode

1 Introduction

问题生成QG的目的是从给定的句子或段落中产生自然的问题。如图1所示:

bTc4JS.png

自然的问题通常压缩其句子,使用段落中术语的同义词(question2的“form”代替原文的"produce"),或者应用来自前面的句子或从句的实体

2 Model

2.1 Task Definition

给定一个输入句子 x \mathrm{x} x,目标是生成一个与句子中的信息相关的自然问题 y y y y y y可以是任意长度的序列: [ y 1 , . . . , y ∣ y ∣ ] [y_1,...,y_{|y|}] [y1,...,yy]。若输入句子的长度为M,则 x \mathrm{x} x可以表示为tokens的序列 x 1 , . . . , x M x_1,...,x_M x1,...,xM。QG任务被定义为finding y − \overset{-}{y} y
y − = a r g m a x y P ( y ∣ x ) (1) \overset{-}{y}=\underset{y}{argmax}P(y|\mathrm{x})\tag{1} y=yargmaxP(yx)(1)
其中 P ( y ∣ x ) P(y|\mathrm{x}) P(yx)是给定输入 x \mathrm{x} x的预测问题序列 y y y的条件对数似然。

2.2 Overview

为了提出一个问题,人们首先会注意到输入句子的某些部分,以及与段落中的上下文信息相关联,本文的模型就是基于这种方法。首先使用RNN编码器架构对条件概率进行建模,然后采用全局注意力机制使模型在解码过程中生成每个单词时专注于输入的某些元素。

本文对context进行了两种编码:1.只编码句子;2.同时编码句子和段级信息。

2.3 Decoder

将公式1中的条件因式分解为词级预测的乘积:
P ( y ∣ x ) = ∏ t = 1 ∣ y ∣ ( y t ∣ x , y < t ) (2) P(y|\mathrm{x})=\prod_{t=1}^{|y|}(y_t|\mathrm{x},y_{< t})\tag{2} P(yx)=t=1y(ytx,y<t)(2)
基于先前生成的所有单词(y<t(生成的问题))和输入句子 x \mathrm{x} x来预测每个 y t y_t yt的概率。
P ( y t ∣ x , y < t ) = s o f t m a x ( W s t a n h ( W t [ h t ; c t ] ) ) (3) P(y_t|\mathrm{x},y_{<t})=softmax(W_stanh(W_t[h_t;c_t]))\tag{3} P(ytx,y<t)=softmax(Wstanh(Wt[ht;ct]))(3)
其中 h t h_t ht是在时间步t的递归神经网络的状态变量, c t c_t ct是在解码时间步 t t t x \mathrm{x} x的基于注意力的编码。
h t = L S T M 1 ( y t − 1 , h t − 1 ) (4) h_t=LSTM_1(y_{t-1},h_{t-1})\tag{4} ht=LSTM1(yt1,ht1)(4)
将先前生成的单词 y t − 1 y_{t-1} yt1的表示和先前状态 h t − 1 h_{t-1} ht1作为LSTM的输入,获得新的隐状态 h t h_t ht

2.4 Encoder

Attention-based sentence encoder
b t → = L S T M 2 → ( x t , b t − 1 → ) b t ← = L S T M 2 ← ( x t , b t + 1 ← ) \overset{\rightarrow}{b_t}=\overset{\rightarrow}{LSTM_2}(x_t,\overset{\rightarrow}{b_{t-1}})\\ \overset{\leftarrow}{b_t}=\overset{\leftarrow}{LSTM_2}(x_t,\overset{\leftarrow}{b_{t+1}}) bt=LSTM2(xt,bt1)bt=LSTM2(xt,bt+1)

c t = ∑ i = 1 , . . . , ∣ x ∣ a i , t b i c_t=\sum_{i=1,...,|\mathrm{x}|}a_{i,t}b_i\\ ct=i=1,...,xai,tbi

通过双线性评分函数和softmax归一化计算注意力权重:
a i , t = e x p ( h t T W b b i ) ∑ j e x p ( h t T W b b j ) a_{i,t}=\frac{exp(h^T_tW_bb_i)}{\sum_{j}exp(h^T_tW_bb_j)} ai,t=jexp(htTWbbj)exp(htTWbbi)
Paragraph encoder

给定句子 x \mathrm{x} x,对包含 x \mathrm{x} x的段落进行编码。对较长的段落进行硬截断,截断后的段落也叫段落,将段落表示为 z z z,然后用BiLSTM进行编码:
d t → = L S T M 3 → ( z t , d t − 1 → ) d t ← = L S T M 3 ← ( z t , d t + 1 ← ) \overset{\rightarrow}{d_t}=\overset{\rightarrow}{LSTM_3}(z_t,\overset{\rightarrow}{d_{t-1}})\\ \overset{\leftarrow}{d_t}=\overset{\leftarrow}{LSTM_3}(z_t,\overset{\leftarrow}{d_{t+1}}) dt=LSTM3(zt,dt1)dt=LSTM3(zt,dt+1)

2.5 Training

给出sentence-question对的训练语料库:
S = { ( x ( i ) ) , y ( i ) } i = 1 S S=\{(x^{(i)}),y^{(i)}\}^{S}_{i=1} S={(x(i)),y(i)}i=1S
对目标函数进行最小化负对数似然:
L = − ∑ i = 1 S l o g P ( y ( i ) ∣ x ( i ) ; θ ) = − ∑ i = 1 S ∑ j = 1 ∣ y ( i ) ∣ l o g P ( y j ( i ) ∣ x ( i ) , y < j ( i ) ; θ ) L=-\sum^{S}_{i=1}logP(y^{(i)}|\mathrm{x}^{(i)};\theta)\\ =-\sum^{S}_{i=1}\sum^{|y^{(i)}|}_{j=1}logP(y_j^{(i)}|x^{(i)},y^{(i)}_{<j};\theta) L=i=1SlogP(y(i)x(i);θ)=i=1Sj=1y(i)logP(yj(i)x(i),y<j(i);θ)
使用波束搜索进行推理。

由于输入句子中可能有许多不在目标端词典中的生词,在解码过程中将输出许多 U N K UNK UNK标记。对于在时间步t处解码 U N K UNK UNK token,,本文将其替换为具有最高注意力分数的输入句子中的token,其索引为 a r g m a x   x i a i , t argmax\ \mathrm{x}_ia_{i,t} argmax xiai,t

3 启示

  1. 代码写的太拉胯了,一点不想看
  2. 感觉文章讲的不清不楚
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

「已注销」

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值