Skip to content

Match-LSTM and Answer Pointer

📅 发表于 2018/05/09
🔄 更新于 2025/07/23
👁️ — 次访问
📝 661 字
⏳ 2 分钟
机器阅读理解
#机器阅读
#论文笔记
#Match-LSTM
#Pointer Net

最初的Match-LSTM阅读理解模型。

论文地址:Machine Comprehension Using Match-LSTM and Answer Pointer

背景 ​

阅读理解任务 ​

后面会详细补充。

传统解决问答的方法:语言分析、特征工程等,具体包括句法分析、命名实体识别、问题分类、语义分析等。

Squad数据集 ​

  • 答案是文章中出现的任意长度片段
  • Wiki文章为主
  • 众包人工标注产生
  • 每个问题3人标注,降低了人工标注误差
  • 数量较大:500多篇文章,2万多个段落,10万个问题
  • 鼓励用自己的语言提问

Match-LSTM ​

1. 文本蕴含任务

一个前提集合P,一个假设H。去预测P里是否能蕴含出H。

2. Match-LSTM

有K个前提{P1,⋯,PK},1个假设H。假设的长度为m。遍历假设的每一个词汇hi

  • 在hi处,利用注意力机制,综合K个前提,得到一个向量pi

  • 聚合匹配[hi,pi]一起,给到LSTM

其实类似于Attention-Based NMT的解码过程。

Pointer-Net ​

从一个输入序列中,选择一个位置作为输出。

  • 序列模型:选择多个位置,就组成一个序列
  • 边界模型:选择开始和结束位置,中间的片段是答案

模型 ​

段落P有m个单词,问题Q有n个单词。

LSTM编码层 ​

单向LSTM编码

Hp=LSTM(P),Hq=LSTM(Q)

取每一时刻的隐状态,得到对文章和问题的编码。Hp∈Rm×h,Hq∈Rn×h。h是编码的维度。

Match-LSTM层 ​

这一层实际上是一个LSTM,输入依次是P中的各个单词pi。每一时刻,利用注意力机制计算相对应的Q的编码。

问题--前提,段落--假设,看问题蕴含P的哪些部分。

先计算注意力权值

Gi→=tanh⁡(WqHq+(Wphip+Wrhi−1r→+bp)⊗eQ)αi→=softmax(wTGi→+b⊗eQ)

利用注意力机制,计算所有Q基于当前pi的注意力,把注意力和hip拼接起来

zi→=[hip,Hqαi→⏟attention]

把match后的结果,输入到LSTM,

hir→=LSTM(zi→,hi−1r→)

定义从右向左,得到hir←。最终,拼接两个方向的向量,得到

Hr=[Hr→,Hr←]∈Rm×2h

Answer-Pointer层 ​

输入Match-LSTM层对Passage的编码结果Hr,输出一个序列。

序列模型

不断生成一个序列a=(a1,a2,⋯),表示P中的位置。

在P的末尾设置一个停止标记,如果选择它,则停止迭代。新的H¯r∈R(m+1)×2h

1、计算注意力权值βk,βk,j表示,选pj作为ak的概率

Fk=tanh⁡(VH¯r+(Wahk−1a+ba)⊗e(m+1))βk=softmax(vTFk+c⊗e(m+1))

2、使用注意力机制得到当前时刻需要的Hr的信息,结合上一时刻的隐状态,输入到LSTM中

hka=LSTM→(H¯rβkT⏟attention,hk−1r)

答案的概率计算如下:

p(a∣Hr)=∏kp(ak∣a1,⋯,ak−1,Hr)p(ak=j∣a1,⋯,ak−1,Hr)=βk,j

目标函数:

−∑n=1Nlog⁡p(an∣Pn,Qn)

边界模型

不用预测完整的序列,只预测开始和结束位置就可以了。

p(a∣Hr)=p(as∣Hr)⋅p(ae∣as,Hr)
总访客数:— · 总访问量:—
PLM's Blog @ 2016 - 2026