Skip to content

R-Net (Gated Self-Matching Networks)

📅 发表于 2018/05/15
🔄 更新于 2025/07/23
👁️ — 次访问
📝 969 字
⏳ 4 分钟
机器阅读理解
#机器阅读
#论文笔记
#Gated Attention RNN
#Self-Matching
#RNet
#Pointer Network

微软亚研院和北大的阅读理解模型R-Net。

  1. Gated Attention-based RNN 来获得question-aware passage representation,即编码P
  2. Self-matching Attention来修正编码P,即P与自己做match,有效从全文中编码信息
  3. Pointer Network预测开始和结束位置

论文地址:

Introduction ​

经典模型 ​

1. Match-LSTM

Match-LSTM and Answer Pointer笔记

2. Dynamic Coatteion Network

DCN笔记。Coattention同时处理P和Q,动态迭代预测答案的位置。

3. Bi-Directional Attention Flow Network

本文模型概要 ​

1. BiRNN 分别编码P和Q

分别编码Question和Passage

2. gated matching layer 编码Q-Aware的Passage

Gated Attention-based RNN。在Match-LSTM上添加了门机制。

  • 段落有多个部分,根据与Q的相关程度,分配重要性权值
  • 忽略不重要的,强调重要的部分

3. self-matching layer

再次从整个Passage中提取信息。它的缺点:

  • RNN只能存储少部分上下文内容
  • 一个候选答案不知道其他部分的线索

解决方法:对P做self-match。使用Gated Attention-based RNN对P和P自己做match。

4. pointer-network

模型 ​

BiRNN,GARNN(P+Q),GARNN-Selfmatch(P+P),Pointer Network

BiRNN编码Q和P ​

Q={wtQ}t=1m,P={wtP}t=1n。 P是n个单词,Q是m个单词。

词向量和字符向量

词向量:{etQ}t=1m、{etP}t=1n

字符向量:{ctQ}t=1m、{ctP}t=1n

字符向量,使用RNN,用每个单词的最后时刻的隐状态,作为字符向量。有助于处理OOV词汇。

编码Question和Passage

utQ=BiRNN(ut−1Q,[etQ,ctQ])utP=BiRNN(ut−1P,[etP,ctP])

Gated Attention-based RNN ​

要基于U(UQ)去编码P(UP) ,得到Question-Aware的Passage编码,VP。

1. Attention RNN

pt与qj两个单词的相关性函数(能量函数)

sjt=vTtanh⁡(WuQujQ+WuPutP+WvPvt−1P),j=1,⋯,m

pt与所有Q单词的注意力权值αt doc 2 query attention

αjt=softmax(sjt)

pt基于αt对Q的信息汇总(注意力)attention pooling vector of the whole question

ct=∑i=1mαituiQ

实际上:ct=attn(UQ,[utP,vt−1P])​。

注意力$\mathbf c_t $和上一时刻隐状态 vt−1P,输入RNN,计算当前的信息

vtP=RNN(vt−1P,ct)

每个vtP动态地合并了来自整个Q的匹配信息。

2. Match RNN

Match-LSTM。在输入RNN计算时,把当前utP也输入进去,带上Passage的信息。输入是**input=[utP,ct]**。

vtP=RNN(vt−1P,[utP,ct])

3. Gated Attention-based RNN

用门机制去控制每个pt的重要程度。

gt=sigmoid(Wg⋅[utP,ct])[utP,ct]∗=gt⊙[utP,ct]vtP=RNN(vt−1P,[utP,ct]∗)

GARNN的门机制

  • 与GRU和LSTM不同
  • 门机制是基于当前pt和它的对应的Q的注意力向量ct(包含当前pt和Q的关系)
  • 模拟了阅读理解中,只有P的一部分才与问题相关的特点

最终得到了question-aware passage representation :{vtP}t=1n。它的缺点如下:

  • 对Passage的上下文感知太少
  • 候选答案对它窗口之外的线索未知
  • Question和Passage在词法、句法上有区别

Self-Matching Attention ​

为了充分利用Passage的上下文信息。{vtP}t=1n

对P做self-match。使用Gated Attention-based RNN对P和P自己做match。

注意力计算

sjt=vTtanh⁡(WvPvjP+WvP¯vtP),j=1,⋯,nαjt=softmax(sjt)ct=∑i=1nαitviP

RNN计算

htP=BiRNN(ht−1P,[vtP,ct]∗)

Self-Matching根据当前p单词、Q,从整个Passage中提取信息。最终得到Passage的表达HP。

Output Layer ​

其实就是个Pointer Network的边界模型,预测起始位置p1和结束位置p2。用RNN计算两次。

1. 基于Q计算初始隐状态

初始hidden state是Question的attention-pooling vector

ht−1Q=rQ

基于Q的编码和一组参数VrQ,利用注意力机制计算rQ

rQ=attn(UQ,VrQ)sj=vTtanh⁡(WuQujQ+WvQVrQ),j=1,⋯,mαi=softmax(si)=exp⁡(si)∑j=1mexp⁡(sj)rQ=∑i=1mαiuiQ

2. RNN计算开始位置和结束位置

计算t时刻的attention-pooling passage (注意力ct)

sjt=vTtanh⁡(WhPhjP+Whaht−1a)αit=softmax(sjt)ct=∑i=1nαithiP

RNN前向计算

hta=RNN(ht−1a,ct)

基于注意力权值去选择位置

pt=arg⁡maxi(ait)

实验 ​

实现细节 ​

数据集

训练集80%,验证集10%,测试10%

分词

斯坦福的CoreNLP中的tokenizer

词向量

预训练好的Glove Vectors。训练中保持不变。

字符向量

单层的双向GRU,末尾隐状态作为该单词的字符向量

BiRNN编码Question和Passage

3层的双向GRU

Hidden Size大小

所有都是75

Dropout

每层之间的DropOut比例是0.2

优化器

AdaDelta。初始学习率为1,衰减率β=0.95,ϵ=1e−6

效果 ​

对比分析 ​

总访客数:— · 总访问量:—
PLM's Blog @ 2016 - 2026