作者|Sachin Joglekar
译者|郝毅
编辑|Emily
首先来看一下 R-Net 需要解决的问题:
对于给定的段落 P
“Tesla was born on 10 July [O.S. 28 June] 1856 into a Serb family in the village of Smiljan, Austrian Empire (modern-day Croatia). His father, Milutin Tesla, was a Serbian Orthodox priest. Tesla’s mother, Đuka Tesla (née Mandić), whose father was also an Orthodox priest,:10 had a talent for making home craft tools, mechanical appliances, and the ability to memorize Serbian epic poems. Đuka had never received a formal education. Nikola credited his eidetic memory and creative abilities to his mother’s genetics and influence. Tesla’s progenitors were from western Serbia, near Montenegro.:12”
和问题 Q
“What were Tesla’s mother’s special abilities?”
提供"一段"文本作为答案 A
“making home craft tools, mechanical appliances, and the ability to memorize Serbian epic poems”
斯坦福问答数据集 (SQuAD) 包含了近 500 篇文章和 1000 对问答 (上面的例子就出自该数据集)。在介绍微软的 R-Net 之前,我们先了解一下他们使用到的两个重要概念:
1. 递归神经网络
递归神经网络 (RNN) 是一类特殊的神经网络,它可以用于分析时间 (时序) 数据。标准的前馈神经网络是没有“记忆”这个概念的,但是 RNN 使用上下文信息模拟了一个“反馈”的过程:
本质上讲,就是任何时间步 (time step)t 的输出都是上文和当前输入文本的函数。
有一种特殊的 RNN 叫双向 RNN(BiRNN)。标准的 RNN 只“记住”在当前时刻之前的文本信息,即“上文”,而 BiRNN 则通过两个反向框架结合了“上文”和“下文”的信息:
理论上来讲,RNN 可以记住任意长度的文本信息,但是通常使用短时文本会比长时文本 (大于 20-30 个时间步) 获得更好的性能。
R-Net 主要使用了 RNN(准确地说是门限递归单元) 来模拟“阅读”一段文本的行文。
2. 注意力机制(attenstion)
当人们在处理信息的时候,通常会将注意力集中在一些特定的子集上,然后过滤掉其他的部分,神经网络中的注意力机制就是模仿这一过程。
在完成某项特定任务时,采集到的数据点集合中可能存在一些与任务不相关的数据点,注意力机制可以有效应对这种情况。此时,注意力被表示为整个集合中所有点的 softmax 加权平均值,而权重则被计算成一些非线性的向量集和上下文信息。
在上下文中,R-Net 使用注意力机制来突出一部分的文字,即赋予他们更高的权值。
R-Net
从直观方面来讲,R-Net 以一种与人类非常相似的方法进行阅读理解:在每个迭代中通过多次 (准确说是 3 次)“阅读”(使用 RNN) 文本,以及“微调”(使用注意力) 每一项的向量特征,使得网络的表现效果在每次迭代中越来越好。
第一次阅读:匆匆一瞥
首先需要对文本做向量化表示,将单词转化为特征向量,也叫词向量或项向量,一般使用 GloVe 模型的词嵌入方法获得。然而,人类通常能够通过周围的上下文明确地知道单词的准确含义,但是对文本做向量化表示是无法做到这点的。
考虑一下这个例子:在“May happen”和“the fourth of May”中,“may”的意思是由它周围的词决定的。很明显,周围的词既可以是“上文”的信息也可以是“下文”的信息。因此,我们使用 BiRNN 而不是标准的词嵌入方法来得到更好的向量。
问题的向量化和段落的向量化都使用了这种方法。
第二次阅读:基于问题的分析
然后网络会使用问题的上下文信息调整段落的词向量表示。
对于段落中高亮的这个词:
“…had a talent for making home craft tools, mechanical appliances, and the ability to memorize Serbian epic poems. Đuka had never received a formal education…”
如果对问题使用了注意力机制的话,abilities 这个词会获得更高的权重:
“What were Tesla’s mother’s special abilities?”
网络正是通过这样的方法不断调整“making”的词向量,使其在语义上更加接近“ablities”。
本质上讲,R-Net 使用段落的词向量表示,将问题的需求与段落中相关部分联系起来。论文中将这一过程称为“Gated Attention-based RNNs”。
第三遍阅读:自感知,完整段落的理解
第一次阅读,通过上下文,我们明白了词向量的基本意思。
第二次阅读,我们提高了对问题含义的理解。
现在,我们需要对整个段落有一个全文的理解,以确定那些真正有助于回答问题的部分。因此,只有短时的上下文是不够的,比如说这种情况:
Tesla’s mother, Đuka Tesla (née Mandić), whose father was also an Orthodox priest,:10 had a talent for making home craft tools, mechanical appliances, and the ability to memorize Serbian epic poems. Đuka had never received a formal education. Nikola credited his eidetic memory and creative abilities to his mother’s genetics and influence.
两个加粗的词都是指 Tesla 母亲的能力。但是通过上下文的描述可以得出前者是特斯拉母亲的能力,而后者则是特斯拉本身的能力,即前者是我们期望的回答,而后者则不是。
为了能够找出更好的上下文起始点与结束点(在下一部分会详细说明),我们需要比较段落中不同的近义词,并估计它们之间的差异。由于两个关键词在段落中离得比较远,因此一般的 RNN 很难做到这点。
为了解决这个问题,R-Net 使用了“自匹配的注意力机制”。
那么什么是自匹配?
在使用注意力机制时,我们通常会用一些数据(比如段落项)对一组向量(比如问题项)进行加权。然而在这次迭代中,我们将使用现有段落项来对段落自己的特征加权。这有助于我们区分当前项与段落中其他的同义项。为了进一步增强这点,我们在这一阶段使用 BiRNN 来完成。
使用自匹配的注意力机制,是 R-Net 背后的“魔力”:用注意力机制来比较段落中的远距项。
最后一步:给出答案
在最后,R-Net 使用 Pointer Network 的一个变种指出答案起点和终点的位置。
我们首先计算问题文本中的另一个带有注意力信息的向量,该向量被用作这次迭代中的“起始上下文”,并利用该向量对段落的每一项计算一组起始索引权重,权重的最高项将被看成是答案的“起点”。
除了权重之外,RNN 还能够返回答案起点的编码信息。
通过重复上面的步骤,然后使用新的上下文信息而不是基于问题的信息,可以计算出答案终点的权重。
这样,R-Net 就给出了最终的答案!事实上,开头例子中的答案便是 R-Net 给出的。
查看英文原文:
https://codeburst.io/understanding-r-net-microsofts-superhuman-reading-ai-23ff7ededd96
如果觉得内容不错,记得给我们「留言」和「点赞」,给编辑鼓励一下!
领取专属 10元无门槛券
私享最新 技术干货