Skip to content

R-Net (Gated Self-Matching Networks)

📅 发表于 2018/05/15
🔄 更新于 2018/05/15
👁️ 次访问
📝 0 字
0 分钟
机器阅读理解
#机器阅读
#论文笔记
#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=1mP={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(ut1Q,[etQ,ctQ])utP=BiRNN(ut1P,[etP,ctP])

Gated Attention-based RNN

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

1. Attention RNN

ptqj两个单词的相关性函数(能量函数)

sjt=vTtanh(WuQujQ+WuPutP+WvPvt1P),j=1,,m

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

αjt=softmax(sjt)

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

ct=i=1mαituiQ

实际上:ct=attn(UQ,[utP,vt1P])

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

vtP=RNN(vt1P,ct)

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

2. Match RNN

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

vtP=RNN(vt1P,[utP,ct])

3. Gated Attention-based RNN

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

gt=sigmoid(Wg[utP,ct])[utP,ct]=gt[utP,ct]vtP=RNN(vt1P,[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(ht1P,[vtP,ct])

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

Output Layer

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

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

初始hidden state是Question的attention-pooling vector

ht1Q=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+Whaht1a)αit=softmax(sjt)ct=i=1nαithiP

RNN前向计算

hta=RNN(ht1a,ct)

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

pt=argmaxi(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ϵ=1e6

效果

对比分析

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