欢迎光临 x-algo
关注算法在工业界应用
Hi, 这是一个关注大数据算法在工业界应用的网站

机器阅读理解

终于还是入坑了,时间有限,能刷几篇是几篇...

机器阅读理解任务的语料一般是一个三元组:

\(\{(P_n,Q_n,a_n)\}_n^N\)

其中,P为段落,Q为问题,a为答案.连起来就是:在给定问题Q,在可能存在答案的段落P中找到答案a, Q和P为已知,a为预测内容

百度语料库DuReader

Point-Net

很早之前听说过这个论文一直没有看

  • 传统的seq2seq模型output的字典是确定的,例如翻译问题, 如果output维度和输入有关系,原始seq2seq模型就不work了
  • 在attention上做了轻微的修改,将原来计算attention权重的softmax作为输出

论文:https://arxiv.org/abs/1506.03134

Match-LSTM + Answer Pointer

这个一篇解决阅读理解问题的论文: <MACHINE COMPREHENSION USING MATCH-LSTM AND ANSWER POINTER>

Match-LSTM

其中Match-LSTM原始论文是解决NLI问题,论文为:Learning Natural Language Inference with LSTM.

NLI问题是给你一个前提query1,和一个假设query2,判断query2是不是可以使用query1推理出来,具体任务链接:NLI Stanford

和传统的Attention不一样的地方在于,计算attention权重的时候会使用信息为:[当前节点输入] + [前一个节点输出] + [encoder输出];  多了一个[当前节点输入] ,这里要仔细体会~

Answer Pointer

Answer Pointer的方法是对Pointer Net的应用,在预测答案的时候, 使用Pointer Net提出了两种用法,一种是预测不连续的答案序列,一种是预测一个连续的片段.
第二种预测答案片段的时候,加入了搜索机制, 因为两步贪心的概率最大的开始和结束,不一定相乘之后是全局最大的.

整个流程如下图:

13.2.73

BiDAF

  • 考虑到输入的颗粒度,进行不同级别的embedding,然后一起输入到上层.
  • 对attention进行改进,这里attention有两个方向,除了传统的attention向量,还有一个反方向的,每次输入都一样的复制T次的query2context向量,具体计算方式看论文吧
  • 提出memory-less attention, 将每次attention和前一次解耦,原始attention会使用前一次的隐层输出作为输入.这么做是想让分工更加明确,attention用来学query和context之间的attention权重矩阵.使用Model Layer学习query对context的某个词是否"激发"
  • 输出内容为开始和结束位置,具体结构如下图, 开始位置是一个Dense层加softmax, 结束位为一个LSTM加softmax.
  • 最终通过动态规划在线性时间搜索得到一个max概率的span= \(P_{start} * P_{end}\)

13.2.74

r-net

加入了一个门,用来衡量attention向量和输入向量的相似度

13.2.78

SELF-MATCHING ATTENTION这个操作的解释是当前词是不是答案和当前词的上下文是有关系的, 如果答案有歧义的时候这个上下文就更重要, 但是rnn本身肯定会丢掉一些上下文信息的,所以就来一个对自己的attention,每一个词都可以"看到"段落中的所有词(很简单粗暴)

输出层通过pointer netwok,但是使用question的attention pooling生成初始的隐层输入;

未经允许不得转载:大数据算法 » 机器阅读理解

分享到:更多 ()

评论 抢沙发

*

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

关注大数据算法在工业界应用

本站的GitHub关于本站