【Reference】
1. Multi-Style Generative Reading Comprehension
2. 论文笔记–Multi-Style Generative Reading Comprehension (Masque)
截止2020年8月21日,本文提出的Masque模型是在MS MARCO和NarrativeQA数据集上表现最好的模型。
RC研究领域多使用范围抽取式方法,生成式方法面临开放领域训练数据匮乏。本文提出多风格问答阅读理解摘要模型,从问句和多个段落生成指定风格的summary作为答案。
-
多源摘要: 使用指针生成器机制从问句、多段落中生成多样化风格的答案,并扩展至Transformer,允许生成器从词表,或从问句、段落原文中以复制方式生成答案;
-
多风格学习: 控制答案输出样式,满足RC所有形式输出,引入风格化的人工token扩展指针生成器为条件解码器,给定风格下,每一步解码控制三个分布占解码输出的权重;

问题形式化
给定含J个单词的问句xq={x1q,⋯,xJq},K个段落,其中第k个段落包含L个单词,表示为xpk={x1pk,⋯,xLpk},风格标签s,RC模型输出答案y={y1,⋯,yT}。
模型简化为:给定三元组(xq,{xpk},s),模型预测输出P(y)。训练数据具有6个三元组:(xq,{xpk},s,y,a,{rpk}),其中a和{rpk}可选,a=1表示问句可以回答,rpk=1表示段落对回答问句有效。
提出的模型

多风格问答摘要模型 Masque,直接建模条件概率p(y∣xq,{xpk},s),模型结构如上,包含:
-
问句-段落阅读器,建模问句和段落之间的交互;
-
段落排序,找到与问句相关的段落;
-
可问答二分类器,识别问句是否可回答;
-
答案句编码器,输出给定风格下的答案;
模型基于多任务学习:段落排序、可回答二分类器、NLG,NLG的学习具有风格独立性,并可将其输出转化为目标风格。
问句-段落阅读器(Question-Passages Reader)
词向量层
分别得到问句和段落中各词的预训练Glove词向量和具有上下文表示的ELMo词向量,使用两层Highway Network(问句和段落参数共享)融合两种词向量。
共享编码层
使用问句和段落各词在堆叠Transformer的顶层输出作为各单词的词向量表示,首层是将词向量线性变换d维,编码器共享层输出段落词向量Epk∈Rd×L和问句词向量Eq∈Rd×J。
编码器块由两个子层构成:多头自注意力层和位置感知前馈网络层。
与GPT模型一致,前馈网络由使用GELU**函数连接的两层线性网络构成。每个子层内部使用残差连接(所有子层网络输出维度均为d维)和层标准化,如给定输入x和子层网络函数f,则子层网络输出LN(f(x)+x)。
由于词向量使用ELMo词向量,本身具有位置信息,因此本文模型中不使用位置嵌入。
双重注意力
使用双重注意力,融合问句表示和段落表示的彼此信息。
首先计算问句和每个段落的相似度矩阵Upk∈RL×J,其中第k个段落的第l个单词与问句的第j个单词的相似度为
Uijpk=wq⊤[Elpk;Ejq;Elpk⊙Ejq]
参数wa∈R3d,⊙表示Hadamard product(对应元素相乘),;表示按行拼接。接着按行标准化(段落不同单词对问句同一单词的注意力)相似矩阵、按列标准化(问句不同单词对段落同一单词的注意力)相似矩阵:
Apk=softmaxj(Upk⊤),Bpk=softmaxl(Upk)
使用Dynamic Coattention Networks, DCN,获取段落词向量的双重注意力表示Gq→pk∈R5d×L,问句词向量的双重注意力表示Gp→q∈R5d×J:
Gq→pkGp→q=[Epk;Aˉpk;A^pk;Epk⊙Aˉpk;Epk⊙A^pk]=[Eq;Bˉ;B^;Eq⊙Bˉ;Eq⊙B^]
以下各矩阵列向量的含义:
-
Epk,段落各位置词向量;
-
Aˉpk=EqApk,段落各位置attention的问句词向量;
-
Bˉpk=EpkBpk,问句各位置attention的段落词向量;
-
A^pk=BˉpkApk,段落各位置attention的段落词向量,即根据问句信息融入上下文信息的段落词向量;
-
B^pk=AˉpkBpk,问句各位置attention的问句词向量,即根据段落信息融入上下文信息的问句词向量;
-
Bˉ=maxkBˉpk,问句各位置的最大池化不同段落的段落词向量;
-
B^=maxkB^pk;问句各位置的最大池化不同段落的问句词向量;
建模编码层
使用堆叠的5层和2层的Transformer编码块分别作为段落、问句编码器,编码段落词向量表示Mpk∈Rd×L,问句词向量表示Mq∈Rd×J。Mq和Mpk用于答案解码,{Mpk}用于段落排序和可问答分类。
段落排序(Passage Ranker)
各段落词向量表示为{Mpk},使用各分段的第一个单词词向量M1pk作为分段词向量表示,引入参数向量wr∈Rd,计算各段落与问句的相关性:
βpk=sigmoid(wr⊤M1pk)
可问答分类器(Answer Possibility Classifier)
同样使用M1pk作为各分段词向量表示,拼接各分段词向量表示作为分类器输入,引入参数向量wc⊤∈RKd,计算可问答概率:
P(a)=sigmoid(wc⊤[M1p1;⋯;M1pK])
答案句解码器(Answer Sentence Decoder)
解码器以自回归形式,使用上一步结果产生当前步输出。
词向量层
除使用单向ELMo之外(对未来位置信息位置),解码器词向量层与阅读器词向量层具有相同结构。
为满足生成不同风格答案,解码器使用与风格有关的token作为初始输入,产生对应风格输出,此外,解码器引入初始风格化标记,可避免阅读器依赖于风格化答案。
注意力解码器层
使用堆叠Transformer解码器块作为解码器层,首先将输入线性变换至d维,输出d维序列{s1,⋯,sT}。
除编码器块中的两个子层之外,解码器块在两个子层之间,额外引入第二、三子层。自注意力层使用后向序列mask避免解码时看见未来信息,第二、三子层为多头注意力层,分别使用Mq和Mpall作为输入,其中:
Mpall=[Mp1,⋯,MpK]∈Rd×KL
多源指针生成器

扩展生成机制,使得可从词典或从问句、多段落原文复制生成单词,我们希望复制机制能够共享答案风格。
多元分布生成简述:解码器顶层输出隐状态作为查询向量,输入至段落和问句注意力层,产生两个上下文向量和注意力权重,注意力权重作为复制分布输出概率,上下文向量用于计算复制分布在混合分布的权重。
扩展词典分布
将词典中常见单词,以及输入问句和段落原文单词,组合为扩展词典Vext,则问答句第t单词概率:
Pv(yt)=softmax(W2⊤(W1st+b1))
式中输出嵌入矩阵W2∈Rdword×Vext是输入词向量矩阵的子集,参数W1∈Rdword×d,b1∈Rdword。当yt为OOB时,输出概率为0。
复制分布
基于Transformer的Ptr-Net任意选择注意力头产生复制分布,对摘要无显著改进,我们向解码器顶层的复制分布添加注意力层,如对于所有段落,将解码器输出st作为注意力查询向量,输出注意力权重αtp∈RKL,上下文向量ct∈Rd:
elpkαtpctp=wp⊤tanh(WpmMlpk+Wpsst+bp)=softmax([ep1;⋯;epK])=l∑αtlpMlpall,l=1,⋯,KL
式中,参数wp,bp∈Rd,Wpm,Wps∈Rd×d。
对于问句,使用同样结构的注意力层输出αt∈RJ,ctq∈Rd,从而得到在扩展词汇的两个分布:
Pq(yt)=j:xjq=yt∑αtjq,Pp(yt)=l:xlpk(l)=yt∑αtlp
式中,k(l)表示拼接所有段落得到的序列的第l个单词。
最终分布
使用三个分布的混合作为最终分布:
P(yt)=λvPv(yt)+λqPq(yt)+λpPp(yt),λv,q,p=softmax(Wm[st;ctq;ctp]+bm)
式中,参数Wm∈R3×3d,bm∈R3。
联合注意力
为使得不对不相关片段产生注意力,我们对段落单词注意力重新定义:
αtlp=∑l′αtl′pβpk(l′)αtlpβpk(l)
损失函数
训练损失
L(θ)=Ldec+γrankLrank+γclsLcls
式中,θ是所有参数,γrank,γcls是平衡参数。解码损失Ldec使用所有可回答样本的平均负对数似然:
Ldec=−Nable1(a,y)∈D∑Tat∑logP(yt)
分段排序和可回答二分类器损失使用所有样本真实值和预测值的交叉熵:
LrankLcls=−NK1k∑rpk∈D∑(rpklogβpk+(1−rpklog(1−βpk)))=−N1a∈D∑(alogP(a)+(1−a)log(1−P(a)))
附录:实验数据
- batch_size:80;
- hidden_size d: 304;
- num_heads: 8;
- ffn_inner_state_size: 256;
- num_layers: shared encoding blocks, modeling blocks for a question, modeling blocks for passages, and decoder blocks were 3, 2, 5, and 8;
- embedding_size: Glove 300, ELMo 512 lowercased;
- Vext: 5000;
- seq_len: passages and question 100;
- optiimizer: Adam beta1 0.9, beta2 0.008 eps 1e-8, learning rate 0 -> 2.5e-4 (2,000 steps) -> 0, exponential moving average decay rate 0.9995;
- initializer: N(0, 0.02) for kernel, Zeros for bias;
- regularization: dropout rate 0.3, L2 w 0.01, smoothed positve labels to 0.9;
8块P100 GPU在MS MARCO数据集上跑8个epochs大概6天。