2016 MACHINE COMPREHENSION USING MATCH-LSTM AND ANSWER POINTER

2016 MACHINE COMPREHENSION USING MATCH-LSTM AND ANSWER POINTER [1]

摘要

机器文本理解是自然语言处理的一个重要问题。一个最近发布的数据集: SQuAD ,提供了大量真实的问题,并且该数据集的答案是通过众包 (crowdsourcing) 人为创造的。 SQuAD 为评估机器理解算法提供了具有一定挑战性的测试,从某些部分来看,是因为 SQuAD 的答案不是来自一个小型的候选答案集合,它具有可变的长度。为了这个任务,作者提出一个端到端的神经架构。该架构是基于: (1) 一个是作者之前提出的用于文本蕴含任务 (textual entialment) 的模型:match-LSTM[2] 、 (2) 一个是序列到序列 (sequence-to-sequence) 模型: Pointer Net[3] 用于强迫输出字符是取自输入句子。对于 SQuAD 任务,作者提出两种使用 Pointer Net 的方式。作者通过实验验证了他们模型的性能比起使用对数几率回归 (logistic regression) 和手工特征要好。

match-LSTM 简介

在最近的学习自然语言推理的工作中,作者提出了一个 match-LSTM 模型用于预测文本蕴含 (textual entailment)。
在文本蕴含任务中, 会给出两个句子,其中一个是“前提 (premise) 句子”,另一个是“假设 (hypothesis) 句子”,然后预测“前提句子”是否蕴含该“假设句子”。
为了进行这样的预测,作者通过使用 match-LSTM 来顺序遍历“假设句子”中的每个单词。在“假设句子”的每个位置中,注意力机制被用于获取“前提句子”的一个加权向量表示。这个加权后的“前提句子”的向量表示会和“假设句子”的当前单词的向量表示进行结合,然后喂进一个 LSTM,这就是所谓的 match-LSTM。

Pointer Net 简介

[3]提出了一个 Pointer Network (Ptr-Net) 来解决一种特定的问题:模型生成的输出句子中的单词必须是来自输入句子。为了替代从固定的单词表中选择一个单词输出, Ptr-Net 使用注意力机制作为一个指针从输入句子中选择一个单词作为输出。
作者使用 Ptr-Net 是为了使用输入文本中的单词来构建答案。

模型框架

为了从文章 (passage) 中选择一段文本作为问题的答案,作者使用了 Ptr-Net 。
一种应用 Ptr-Net 的直接方法是将一个答案当做一个单词序列,序列中的单词都是来自于输入的文章,但是无视一个事实:这些单词在原文章中是连续,因为 Ptr-Net 并没有作出连续性 (consecutivity) 假设。【这里的意思,可能意味着使用 Ptr-Net 从输入文章中得到的单词序列,其各个单词可能在原文章中是不连续的】
另一种方式,如果想要确保连续性,可以使用 Ptr-Net 只预测答案的起点和终点。在这种情况下,Ptr-Net 只需要从输入文章中选择两个单词。
作者把使用上述的第一种应用方式构建的模型叫做 sequence model ;第二种应用方式构建的模型叫做 boundary model
sequence modelboundary model 都是由三层结构组成:(1) LSTM 预处理层,使用 LSTMs 对文章和问题进行预处理。 (2) match-LSTM 层,进行文章和问题之间的匹配。 (3) Answer Pointer 层,使用 Ptr-Net 从文章中选择单词集合作为答案。 两个模型的不同点在于第三层。

  1. LSTM 预处理层 (LSTM Preprocessing Layer)
    该层的主要目的是将上下文信息融合进文章或问题中每个单词的向量表示中。作者使用了一个标准的单向 LSTM 来分别处理文章和问题,具体实现公式如下:
    \boldsymbol{\rm{H}}^p = \overrightarrow{LSTM}(\boldsymbol{\rm{P}})
    \boldsymbol{\rm{H}}^q = \overrightarrow{LSTM}(\boldsymbol{\boldsymbol{\rm{Q}}})
    其中 \boldsymbol{\rm{H}}^p \in \mathbb{R}^{l \times P}\boldsymbol{\rm{H}}^q \in \mathbb{R}^{l \times Q} 是文章和问题经过 LSTM 后的隐藏层表示 (hidden representations) 。

  2. Match-LSTM Layer
    match-LSTM 循序地遍历整个文章。在文章的位置 i ,使用标准的逐字 (word-by-word) 注意力机制来获取注意力权重向量 \overrightarrow{a}_i \in \mathbb{R}^Q ,具体实现公式如下:
    \overrightarrow{{\boldsymbol{\rm{G}}}}_i = \rm{tanh}(\boldsymbol{\rm{W}}^q\boldsymbol{\rm{H}}^q + (\boldsymbol{\rm{W}}^p\boldsymbol{\rm{h}}_i^p + \boldsymbol{\rm{W}}^r\overrightarrow{\boldsymbol{\rm{h}}}_{i-1}^r + \boldsymbol{\rm{b}}^p) \otimes \boldsymbol{\rm{e}}_Q)
    \overrightarrow{a}_i = \rm{softmax}(\boldsymbol{\rm{w}}^\intercal\overrightarrow{{\boldsymbol{\rm{G}}}}_i + b \otimes \boldsymbol{\rm{e}}_Q))
    其中 \boldsymbol{\rm{W}}^q,\boldsymbol{\rm{W}}^p,\boldsymbol{\rm{W}}^r \in \mathbb{R}^{l \times l},\boldsymbol{\rm{w}}\in \mathbb{R}^l, b\in\mathbb{R}l 是 LSTM 的隐含层神经元个数(从后面可以看出,作者将所有用到的 LSTM 的隐含层神经元个数都设置为 l ), \overrightarrow{\boldsymbol{\rm{h}}}_{i-1}^r 是单向 match-LSTM 的上一个 (位置 i-1 ) 隐藏层状态, (\cdot \otimes \boldsymbol{\rm{e}}_Q) 表示通过重复复制 (repeat) 一个向量或者标量 Q 次,从而产生一个矩阵(复制后的 Q 个向量,在新的维度上进行堆叠 (stack))或者列向量。
    由此产生的注意力权重 \overrightarrow{a}_{i,j} 表示文章的第 i 个单词与问题的第 j 个单词之间的匹配度 (degree of matching)。接着,作者使用注意力权重向量 \overrightarrow{a}_i 对问题进行加权,并与文章的第 i 个单词的表示向量进行结合,具体实现公式如下:
    \overrightarrow{\boldsymbol{\rm{z}}}_i = \begin{bmatrix} \boldsymbol{\rm{h}}_i^p\\ \boldsymbol{\rm{H}}^q \overrightarrow{a}_i^{\intercal} \end{bmatrix}
    再将 \overrightarrow{\boldsymbol{\rm{z}}}_i 喂进一个标准的单向 LSTM 形成作者所谓的 match-LSTM 。
    \overrightarrow{\boldsymbol{\rm{h}}}_i^r = \overrightarrow{LSTM}(\overrightarrow{\boldsymbol{\rm{z}}}_i,\overrightarrow{\boldsymbol{\rm{h}}}_{i-1}^r)
    其中,\overrightarrow{\boldsymbol{\rm{h}}}_i^r \in \mathbb{R}^l
    作者还进一步建立了一个反方向的 match-LSTM。 目的是获取文章中各个单词在全部方向上的上下文编码表示。具体实现公式如下:
    \overleftarrow{{\boldsymbol{\rm{G}}}}_i = \rm{tanh}(\boldsymbol{\rm{W}}^q\boldsymbol{\rm{H}}^q + (\boldsymbol{\rm{W}}^p\boldsymbol{\rm{h}}_i^p + \boldsymbol{\rm{W}}^r\overleftarrow{\boldsymbol{\rm{h}}}_{i+1}^r + \boldsymbol{\rm{b}}^p) \otimes \boldsymbol{\rm{e}}_Q)
    \overleftarrow{a}_i = \rm{softmax}(\boldsymbol{\rm{w}}^\intercal\overleftarrow{{\boldsymbol{\rm{G}}}}_i + b \otimes \boldsymbol{\rm{e}}_Q))
    其他部分与正向的 match-LSTM 相似。
    最后再将两个方向的 match-LSTM 输出结果进行拼接,具体实现公式如下:
    \overrightarrow{\boldsymbol{\rm{H}}}^r = [\overrightarrow{\boldsymbol{\rm{h}}}_1^r,\overrightarrow{\boldsymbol{\rm{h}}}_2^r,...,\overrightarrow{\boldsymbol{\rm{h}}}_P^r]
    \overleftarrow{\boldsymbol{\rm{H}}}^r = [\overleftarrow{\boldsymbol{\rm{h}}}_1^r,\overleftarrow{\boldsymbol{\rm{h}}}_2^r,...,\overleftarrow{\boldsymbol{\rm{h}}}_P^r]
    \boldsymbol{\rm{H}}^r = \begin{bmatrix} \overrightarrow{\boldsymbol{\rm{H}}}^r\\ \overleftarrow{\boldsymbol{\rm{H}}}^r \end{bmatrix}

  3. Answer Pointer Layer
    最后一层, the Answer Pointer (Ans-Ptr) Layer ,受到 the Pointer Net 的启发。该层使用 \boldsymbol{\rm{H}}^r 作为输入。由于存在之前提到的 the sequence modelthe boundary model 两种模式,因此,下面分别讲述这两种模式的具体实现:

    • The Sequence Model
      the sequence model 中,答案通过一个整数 (integer) 序列 \boldsymbol{a}=(a_1, a_2, ..., a_k) 表示,各个整数分别代表所选择的单词在原文章中的位置。
      因为一个答案的长度是不固定的,为了在一个确定的时间点停止答案单词的生成,作者设置 a_k 的取值范围为 1P+1 , P+1 是一个特殊值,代表答案的结束。 当 a_k = P+1 时,停止答案生成。
      为了生成第 k 个答案单词,首先使用注意力机制来获取一个注意力权重向量 \beta_k \in \mathbb{R}^{P+1}\beta_{k,j}(1\leq j < P+1) 表示选择文章中第 j 个单词作为第 k 个答案单词的概率, \beta_{k,(P+1)} 表示在位置 k 停止答案生成的概率。 \beta_k 的具体计算公式如下:
      \boldsymbol{\rm{F}}_k = \rm{tanh}(\boldsymbol{\rm{V}}\tilde{\boldsymbol{\rm{H}}}^r + (\boldsymbol{\rm{W}}^a\boldsymbol{\rm{h}}_{k-1}^a + \boldsymbol{\rm{b}}^a) \otimes \boldsymbol{\rm{e}}_{(P+1)})
      \beta_k = \rm{softmax}(\boldsymbol{\rm{v}}^\intercal\boldsymbol{\rm{F}}_k + c \otimes \boldsymbol{\rm{e}}_{(P+1)})
      \tilde{\boldsymbol{\rm{H}}}^r \in \mathbb{R}^{2l \times (P+1)}\boldsymbol{\rm{H}}^r 与 一个零向量的拼接, \tilde{\boldsymbol{\rm{H}}}^r = [\boldsymbol{\rm{H}}^r; 0]\boldsymbol{\rm{h}}_{k-1}^a \in \mathbb{R}^l 是 answer LSTM 的上一个 (位置 k-1) 的隐藏层状态, answer LSTM 定义公式如下:
      \boldsymbol{\rm{h}}_{k}^a = \overrightarrow{LSTM}(\tilde{\boldsymbol{\rm{H}}}^r\beta_k^{\intercal}, \boldsymbol{\rm{h}}_{k-1}^a)
      【这个 answer LSTM 与 match-LSTM 十分相似】
      对答案序列的生成概率进行建模:
      p(\boldsymbol{\rm{a}}|\boldsymbol{\rm{H}}^r) = \prod_k p(a_k|a_1,a_2,...,a_{k-1}, \boldsymbol{\rm{H}}^r)
      p(a_k = j|a_1,a_2,...,a_{k-1}, \boldsymbol{\rm{H}}^r) = \beta_{k,j}
      在模型训练时,最小化下面定义的损失函数【对数似然函数?】:
      -\sum_{n-1}^N \log {p}(\boldsymbol{\rm{a}}_n| \boldsymbol{\rm{P}}_n, \boldsymbol{\rm{Q}}_n)
      【很好奇,这种模式生成的答案,人类是否可以读懂,可能答案中的单词是乱序的】
    • The Boundary Model
      The Boundary Model 的工作方式与 The Sequence Model 十分相似, 不同的是它只需要预测两个索引 a_sa_e 。因此,在 the Boundary Model 中,不需要特殊值 P+1 ,不需要对 \boldsymbol{\rm{H}}^r 进行零填充,答案生成的概率模型简化为:
      p(\boldsymbol{\rm{a}}|\boldsymbol{\rm{H}}^r) = p(a_s|\boldsymbol{\rm{H}}^r)p(a_e|a_s, \boldsymbol{\rm{H}}^r)
      【实际实现过程中是否需要满足 a_s < a_e
      作者还对 the boundary model 进行扩展:加入了一个查找机制 (search mechanism) 。在预测的过程中,作者尝试着限制范围的长度 (the length of the span) 和通过 由 p(a_s) \times p(a_e) 计算得到的最高概率 进行范围的全局搜索 (globally search the span)。此外,如果范围 (boundary) 是一个固定长度的序列,则可以创建双向 Ans-Ptr (类似于双向的 match-LSTM) 。
      【不是很懂那个搜索机制的具体实现,只知道限制了文章中单词搜索的范围 (boundary or the span),不再是 1P (这里的 P 是非固定的数值)。文章的实验部分也没有详细说明,只能后续从开源代码进行分析。】
      【这个搜索机制,貌似以后会用到,可以学一下】

模型结构图:

实验部分参数设置

  • 使用 GloVe 预训练词向量, 未登录词初始化为零向量。
  • LSTM 的隐含层维度 l 为 150 或者 300。
  • 使用 ADAMAX 优化器 , 其中 \beta_1 = 0.9\beta_2 = 0.999 来对模型进行优化。
  • 每次更新时, batch 大小为30。
  • 没有使用 L2 正则化约束。
  • 两个性能评估指标:
    • 基本真实答案的精确匹配百分比 (percentage of exact match with the ground truth answers)。
    • 词层次的F1分数 (word-level F1 score) ,对比预测的答案和基础真实答案的每个单词。

实验结果

作者提供的开源代码

https://github.com/shuohangwang/SeqMatchSeq

Reference

  1. Wang S, Jiang J. Machine comprehension using match-lstm and answer pointer[J]. arXiv preprint arXiv:1608.07905, 2016.
  2. Wang S, Jiang J. Learning natural language inference with LSTM[J]. arXiv preprint arXiv:1512.08849, 2015.
  3. Vinyals O, Fortunato M, Jaitly N. Pointer networks[C]//Advances in Neural Information Processing Systems. 2015: 2692-2700.
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,390评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,821评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,632评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,170评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,033评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,098评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,511评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,204评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,479评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,572评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,341评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,213评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,576评论 3 298
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,893评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,171评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,486评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,676评论 2 335

推荐阅读更多精彩内容

  • 简介 抽取式QA是要在文档中定位问题的答案。模型输入是【Passage,Question】,模型输出是【start...
    冰源阅读 7,081评论 0 4
  • 最近在研究问答系统,但是在查找资料的过程中一直处于懵逼状态,因为问答系统分类比较多,根据不同的依据可以分为不同种类...
    hiyoung阅读 3,546评论 0 3
  • 写作理由:产品经理的含金量在下降? 有人会问产品经理的含金量下降?是的,在下降。 这几天有很多人的通过QQ、微信等...
    光痕阅读 685评论 2 2
  • 作者:【英】爱德华.德博诺 笔记作者:木可sky(个人微信:daimooc) 2018年09月17日于西安 字数...
    木可sky阅读 698评论 0 1
  • “ 卷珠帘·品好味 ”红鼎国际在重庆是私房菜的代名词,而在B座的他好似私房菜系列的一眼清泉,静静的流淌在寂静的山谷...
    食游集阅读 277评论 0 0