美文网首页
2017 Gated Self-Matching Network

2017 Gated Self-Matching Network

作者: Eukaring | 来源:发表于2019-01-10 14:14 被阅读0次

    2017 Gated Self-Matching Networks for Reading Comprehension and Question Answering[1]

    摘要

    在本文中,作者提出用于阅读理解类型问答的门控自匹配网络 (the gated self-matching networks) ,目的是从一段给定的文章 (passage) 中进行问题回答。作者先使用基于注意力机制的门控循环神经网络 (gated attention-based recurrent networks) 对问题和文章进行匹配,来获取经过问题注意后的文章表示 (question-aware passage representation) 。然后,作者提出一种自匹配注意力机制 (self-matching attention mechanism) ,通过文章与自身进行匹配来精炼文章表示,它能够有效地根据整个文章来进行信息编码。最后,作者使用了指针网络 (the pointer networks) 从文章中定位答案的位置。他们在 SQuAD 数据集上进行了大量的实验。单模型在隐藏状态的测试集上,其评估指标的精确匹配达到 71.3% ,集成模型进一步提高结果到 75.9% 。在这篇文章提交时,他们的模型在 SQuAD 的排名榜上排名第一。

    他人的工作,作者受到的启发

    自 SQuAD 数据集发布以来,在该数据集上已经取得了快速进展。

    • Wang and Jiang(2016)[3] 使用 match-LSTM[2] 建立经过问题注意的文章表示 (question-aware passage representation)
    • inyals et al.(2015)[4] 使用 pointer networks 在文章中预测答案的范围
    • Seo et al. (2016)[5] 提出双向注意力流网络 (bi-directional attention flow networks) 在多层次粒度 (multiple levels of granularity) 上进行问题-文章对 (question-passage pairs) 建模
    • Xiong et al. (2016)[6] 提出动态互注意力网络 (dynamic co-attention network) ,在该网络中问题和文章同时参与,并通过迭代改善答案预测 (iteratively refine answer predictions)

    作者的模型是受到 Wang and Jiang[3] 的启发。
    作者的模型可以分为四个部分:

    1. 使用循环神经网络分别对问题和文章进行编码,建立问题表示 (question representation) 和文章表示 (passage representation) 。
    2. 使用门控匹配层 (the gated matching layer) 对问题和文章进行匹配。
    3. 自匹配层 (the self-matching layer) 用于对整个文章进行信息集成 (information aggregation) 。
    4. 基于 the pointer network 的答案范围预测层。

    为什么要使用 gated attention-based recurrent network

    作者提出一个基于注意力的门控循环神经网络 (a gated attention-based recurrent network) ,其在基于注意力机制的循环神经网络上增加了一个额外的门 (an additional gate) 。
    使用该结构的原因在于:在阅读理解和问题回答任务中,对于回答特定的问题,文章中的词拥有不同程度的重要性 (different importance) 。
    通过引进一个门控机制 (a gating mechanism) ,作者的基于注意力的门控循环神经网络可以根据与问题的相关程度给文章各部分赋予不同程度的权重,遮掩 (masking out) 文章的无关部分和强调重要的部分。

    为什么要使用 self-matching mechanism

    作者提出一种自匹配机制 (self-matching mechanism) ,该机制可以有效地从整个文章 (the whole passage) 中集成信息 (aggregate evidence) 来进行答案推理。
    在经过一个门控匹配层 (a gated matching layer) 后,产生基于问题注意的文章表示 (question-aware passage representation) 有效地结合问题信息对文章中的每个词进行编码。 但是,循环神经网络虽然具有推理能力,但在实际使用中只能记忆文章中有限长度的上下文。因此,一个候选答案经常没有注意到在文章其他部分的线索。
    为了解决上述问题,作者提出一个自匹配层,结合整个文章的信息,动态精炼文章表示 (dynamically refine passage representation) 。基于 问题注意的文章表示,作者在文章自身【这里是 问题注意的文章表示 】应用了基于注意力的门控循环神经网络 (gated attention-based recurrent networks) ,根据文章中的每个词与文章当前单词的关联进行信息集成。

    模型结构

    1. Question and Passage Encoder
      作者先把问题和文章中的单词转化为 词层次的嵌入向量(word-level embeddings) 和 字母层次的嵌入向量(character-level embeddings) 。
      字母层次的嵌入向量 是单词中每个字母的嵌入向量按顺序通过一个双向循环神经网络后产生的最终隐含层状态。【这个操作可以学习、借鉴】。
      作者认为使用字母层次的嵌入向量的好处是:有助于处理一些未登录词 (out-of-vocab(OOV))。
      接着,作者对问题和文章的全部词使用一个双向 RNN 来产生新的表示 u_1^Q, ..., u_m^Qu_1^P, ..., u_n^P ,具体实现公式如下:
      u_t^Q = {\rm BiRNN}_Q(u_{t-1}^Q, [e_t^Q, c_t^Q])
      u_t^P = {\rm BiRNN}_P(u_{t-1}^P, [e_t^P, c_t^P])
      在作者的实验中,他们选择使用了 GRU 。

    2. Gated Attention-based Recurrent Networks
      作者提出 基于注意力的门控循环网络 是为了将问题信息融合到文章表示中。这是基于注意力循环网络的一个变种,通过一个外加的门来决定文章中的信息对于一个问题的重要程度。
      给定问题表示 \{u_t^Q\}_{t=1}^m 和 文章表示 \{u_t^P\}_{t=1}^n :

      • Rockt¨aschel et al. (2015)[7] 提出通过在问题和文章中进行词的软对齐 (soft-alignment) ,从而产生句子对表示 (sentence-pair representation) \{v_t^P\}_{t=1}^n ,具体实现公式如下:
        v_t^P = {\rm RNN}(v_{t-1}^P, c_t)
        其中 c_t = att(u^Q, [u_t^P, v_{t-1}^P]) 是一个对整个问题信息 (whole question (u^Q)) 的注意力池化向量,其具体计算公式如下:
        s_j^t = v^{\mathsf{T}}{\rm tanh}(W_u^Qu_j^Q + W_u^Pu_t^P + W_v^Pv_{t-1}^P)
        a_i^t = {\rm exp}(s_i^t) / \sum_{j=1}^m{\rm exp}(s_j^t)
        c_t = \sum_{i=1}^ma_i^tu_i^Q
        从上面的公式可以看出, c_t 是通过对每个 u_i^Q 进行加权求和 (作者称之为注意力池化 attention-pooling ) 得到的。
        因此,每个文章表示 v_t^P 动态地整合 (incorporate) 整个问题的聚合匹配信息 (aggregated matching information)。
      • Wang and Jiang (2016)[2] 提出 match-LSTM,它将 u_t^P 作为循环网络的外加输入,具体实现公式如下:
        v_t^P = {\rm RNN}(v_{t-1}^P, [u_t^P, c_t])

      为了决定文章中的重要部分和关注与问题相关的部分,作者在 RNN 的输入 ([u_t^P, c_t]) 添加了一个额外的门,具体实现公式如下:
      g_t = {\rm sigmoid}(W_g[u_t^P, c_t])
      {[u_t^P, c_t]}^* = g_t \odot [u_t^P, c_t]
      从上面的公式可以看出,通过一个两层的神经网络来计算 [u_t^P, c_t] 的得分 g_t ,再使用 g_t[u_t^P, c_t] 进行加权 。 【这种做法,可以学习借鉴】
      不同于 LSTM 和 GRU 的门,外加的门是基于当前的文章单词和对应问题的注意力池化向量,它可以专注于问题和当前文章单词的关系。

    3. Self-Matching Attention
      通过 基于注意力门控循环网络 后,得到 question-aware passage representation \{v_t^P\}_{t=1}^n
      但是 \{v_t^P\}_{t=1}^n 存在一个问题:它只有非常局限的上下文知识 (very limited knowledge of context) 。一个候选答案经常忽略上下文窗口 (surrounding window) 外部的文章线索。此外,在 SQuAD 数据集的大部分样本中,问题和文章之间存在某些词汇 (lexical) 或者语法 (syntactic) 的差异。因此,文章上下文对于推理答案来说是十分重要的。
      为了解决这个问题,作者提出直接让 question-aware passage representation 与 自己进行匹配。它可以动态地针对文章的当前单词从整个文章中收集信息 (evidence) ,并将其 (evidence) 与 文章当前单词 和 它匹配的问题信息 编码成新的表示 h_t^P ,具体实现公式如下:
      h_t^P = {\rm BiRNN}(h_{t-1}^P, [v_t^P, c_t])
      其中 c_t = att(v^P, v_t^P) 是对整个文章 (whole passage v^P) 进行注意力池化的向量。 具体实现公式如下:
      s_j^t = {\rm v^{\mathsf{T}}tanh}(W_v^Pv_j^P + W_v^{\tilde{P}}v_t^P)
      a_i^t = {\rm exp}(s_i^t)/\sum_{j=1}^n{\rm exp}(s_j^t)
      c_t = \sum_{i=1}^na_i^tv_i^P
      【 Todo: 这个是自己对自己进行基于 attention 的 RNN 编码 =。= 可以学习这个操作。试着使用 keras 实现这种 RNN 】

    4. Output Layer
      作者在该层中模仿[3] 使用 the pointer networks[4] 来预测答案的起点和终点。 此外,作者在问题表示上使用注意力池化,生成一个用于初始化 the pointer network 的隐藏层向量。
      给定文章表示 \{h_t^P\}_{t=1}^n ,注意力机制被用作指针从文章中选择答案的起始位置 (p^1) 和 终止位置 (p^2) ,具体实现公式如下:
      s_j^t = {\rm v^{\mathsf{T}}tanh}(W_h^P h_j^P + W_h^a h_{t-1}^a)
      a_i^t = {\rm exp}(s_i^t)/\sum_{j=1}^n {\rm exp}(s_j^t)
      p^t = {\rm arg max}(a_1^t, ..., a_n^t)
      公式中的 h_{t-1}^a 表示答案循环网络 (pointer network) 的上一次 (t-1) 的隐藏层状态。 答案循环网络的输入是基于当前概率 (a^t) 的注意力池化向量:
      c_t = \sum_{i=1}^n a_i^t h_i^P
      h_t^a = {\rm RNN}(h_{t-1}^a, c_t)
      在预测起始位置, h_{t-1}^a 表示答案循环网络的初始预测层状态。作者利用问题向量 r^Q 用于初始化。
      r^Q = att(u^Q, V_r^Q) 是一个基于可训练参数 V_r^Q 的问题注意力池化向量。具体实现公式如下:
      s_j = {\rm v^{\mathsf{T}} tanh}(W_u^Qu_j^Q + W_v^QV_r^Q)
      a_i = {\rm exp}(s_i)/\sum_{j=1}^m{\rm exp}(s_j)
      r^Q = \sum_{i=1}^ma_iu_i^Q
      【这波操作可以学下, 使用一个可训练的参数 V_r^Q 结合 concat attention 来对问题进行 attention , 这个 r^Q 貌似 基于词的多注意力机制那篇文章 用到了】

    模型结果图

    实验设置细节

    • 使用斯坦福的 CoreNLP 分词器来预处理每个文章和问题
    • 使用 LSTM 的变种 the Gated Recurrent Unit (GRU)
    • 使用 GloVe 预训练词向量
    • 使用零向量表示未登录词
    • 使用单层的双向 GRU 来计算字母层次的嵌入向量
    • 使用3层的双向 GRU 来对问题和文章进行编码
    • the gated attention-base recurrent network 也是使用双向 GRU , 可能是单层的 GRU
    • 各层的隐藏层向量长度都是75
    • 计算注意力分数的隐藏层向量长度也是 75
    • 各层之间使用 dropout ,dropout 大小为 0.2
    • 模型使用 AdaDelta 进行优化,起始学习率为 1, AdaDelta 中 \rho=0.95\epsilon = 1e^{-6}

    实验结果

    Reference

    1. Wang W, Yang N, Wei F, et al. Gated self-matching networks for reading comprehension and question answering[C]//Proceedings of the 55th Annual Meeting of the Association for Computational Linguistics (Volume 1: Long Papers). 2017, 1: 189-198.
    2. ShuohangWang and Jing Jiang. Learning natural language inference with LSTM. In NAACL HLT 2016, The 2016 Conference of the North American Chapter of the Association for Computational Linguistics: Human Language Technologies, San Diego California, USA, June 12-17, 2016.
    3. Shuohang Wang and Jing Jiang. 2016b. Machine comprehension using match-lstm and answer pointer. arXiv preprint arXiv:1608.07905 .
    4. Oriol Vinyals, Meire Fortunato, and Navdeep Jaitly. 2015. Pointer networks. In Advances in Neural Information Processing Systems 28: Annual Conference on Neural Information Processing Systems 2015, December 7-12, 2015, Montreal, Quebec, Canada. pages 2692–2700.
    5. Minjoon Seo, Aniruddha Kembhavi, Ali Farhadi, and Hannaneh Hajishirzi. 2016. Bidirectional attention flow for machine comprehension. arXiv preprint arXiv:1611.01603 .
    6. Caiming Xiong, Victor Zhong, and Richard Socher. 2016. Dynamic coattention networks for question answering. arXiv preprint arXiv:1611.01604 .
    7. Tim Rockt¨aschel, Edward Grefenstette, Karl Moritz Hermann, Tom´as Kocisk´y, and Phil Blunsom. 2015. Reasoning about entailment with neural attention. CoRR .

    相关文章

      网友评论

          本文标题:2017 Gated Self-Matching Network

          本文链接:https://www.haomeiwen.com/subject/eeharqtx.html