美文网首页
teaching machines to read and co

teaching machines to read and co

作者: 0_oHuanyu | 来源:发表于2020-05-27 14:50 被阅读0次

1. 介绍

本篇论文主要解决了两个问题:

  1. 机器理解语言一直是一个难题,并且评估机器理解文字的能力可以用问答的形式来检验。
  2. 现在还没有大规模的数据集可以支持大家的训练和测试。
    这篇论文就是提出了一种基于attention的神经网络模型来完成完形填空的任务(以证明模型的理解能力),还提供了制造大量的标注数据的方法,来解决以上两个问题。并且用实验结果证明了attention的LSTM确实有良好的理解能力。

2. 制造标注数据

训练模型的理解能力离不开大量的训练语料,而人工标注的方式费时费力,目前还没有很好的数据集。之前的研究数据集数量级在百这个级别。所以大部分都用于测试,所以之前的研究方法大都利用关系抽取+知识图谱的方式进行。而之前有人用生成的方式来生成一部分训练语料,但是把训好的模型放到真实环境中,实验结果表明模型的泛化能力不足,毕竟真实世界的语料内容更丰富,更复杂,噪声也更多。因此要在这一问题上提高表现,一定要先解决语料来源的问题。
作者说他们的方法是从报纸(CNN和Daily Mail)上爬取语料,利用新闻标题、摘要和新闻内容作为训练语料。摘要作为query,把其中的实体作为完形填空的目标answer,文章作为document,这就是一个query-answer-context三元组。有了实体识别技术的帮助,就可以获取大量的语料用于训练。
利用这种方法,作者爬取了CNN和Daily Mail 2007年~2015年的新闻,并且划分了训练集和数据集,统计一下,实体、文章、摘要的数量如下图所示:


image.png

可以看到这个数据集的量级远超之前方法得到的数据集。

3. 机器理解实验设计

3.0 实验目标:完形填空(Cloze)检验机器理解能力

作者认为,完形填空这种任务可以检验机器学习模型的理解能力。考虑条件概率: p(a|c, q) 其中a代表answer,c代表context,q代表query。
有些情况下,模型仅仅利用共现就可以完成一部分完形填空,比如说:
a) The hi-tech bra that helps you beat breast X;
b) Could Saccharin help beat X ?;
c) Can fish oils help fight prostate X ?
因为cancer这个实体经常出现在Daily Mail的报纸上,模型可以利用单词对的共现推断出X=cancer。为了排除这种共现带来的影响,作者做了匿名化和随机化:

  1. 建立共指系统(大概意思就是把指向同一含义的短句或者单词标注为同一个实体,这样就有了一个实体表),建立每个数据点的共指。
  2. 根据实体对应,把文中的单词替换为实体编号。
  3. 拿到一条数据时,随机更换实体的顺序。(这个不太懂,大概指实体在实体表中的index吧)
    比如把一个关于诉讼问题的文章中的实体进行处理,如下图所示。


    image.png

利用上述方法构造的三元组,answer(完形填空的目标词)出现在context中前N词频的概率是多少呢?统计结果如下图所示:


image.png

也就是说,如果单纯利用统计信息猜一个出现频率最高的单词,正确的概率大概是25%~30%。如果模型的表现高于这个结果,说明模型具备一定的阅读理解能力。

3.1 Baseline设计:传统方法实现完形填空

为了对比神经网络和传统机器学习方法的性能,作者设计了三种传统机器学习做完形填空的模型:

1. Frame-Semantic Parsing(主谓宾解析)

因为主谓宾包含了“谁对谁做了什么”这样的信息,所以主谓宾解析的方法天然就适合拿来做实体的完形填空。


image.png

利用以上的6种策略,在query中提取的主谓宾和context中提取的主谓宾做一个对应,就可以预测完型填空的结果。如果context中的主谓宾有多个跟query中的匹配,那就随机选一个。

2. 单词距离

这个方法很有意思,就是把query中的单词词向量拿出来,比如说query的空缺 之前有3个单词,之后有10个单词,那就以14为window size 去context中逐个匹配,找到一个长度为14,WMD最小的span,其中对应空缺的那个单词就是该query的answer。
感觉这个方法还是挺神奇的思路。最后实验结果也表明它还是很有效的。比较词向量也是语言模型比较先进的方法了。

3.2 论文的实验模型设计

1. BI-LSTM方法

image.png

正统的双向LSTM模型,作者把query和context连接起来,中间加一个分隔符,放入到神经网络中,模型还得自己判断到底哪个是需要补全的单词,那些是实体,那些只是单纯的token。
本LSTM模型(记为模型A)的中各个门和输入输出的计算如下:


image.png

其中t代表时刻,k代表隐层,ifo就是那些门。可以看到论文给出的还是同一时刻,不同层之间的递推关系。我们拿来和经典的LSTM(记为模型B)定义比较一下:


image.png

模型A中的x’(t)跟模型B中的zt比较接近。模型A中的y’指的是本时刻,上一层的输出(或者下一层的输出),这种写法是按照代码的逻辑来编写的,外面套一个循环语句就可以形成时刻t的多重隐层了。不过模型A并没有给出时刻之间的递推关系,只能认为是跟经典的LSTM(模型B)一致吧。
这种经典的结构,最后的输出g可能存在长序依赖的问题。

2. attentive方法(带有attention机制的LSTM)

image.png

context的表示方法R向量跟正常的LSTM相同,而query的表示向量U跟正常的LSTM相比略有不同,如下图所示,是将双向LSTM的一个方向最后的输出和另一个方向最后的输出拼接起来:


image.png

众所周知attention是需要计算注意力score的,计算score的方式有很多,本文采用的是最简单的向量相乘的方式。


image.png

其中S(t) 就是分数,每个单词的向量yd最后跟分数相乘,得到句子表示R。R再跟query的向量表示U过一个非线性层,得到最终输出G:


image.png

3. impatient方法(改造attention机制的LSTM)

image.png

这里对attentive reader做一个改造,让query向量u去对r做多次attention,计算表示如下:


image.png

经过几层叠加之后,再由r和u 得到g:


image.png

4. 实验结果

image.png

可以看到,就像我们之前说的,选词频最高的那个单词作为answer的准确率是25%/30%,而去掉跟query重合的最高词频单词准确率是32%/36%。用主谓宾来找的话。准确率相差不多。而用带有语言模型的word distance来做的话,准确率达到了50%/56%。
而用深度学习模型进行建模的话,准确率更高一些。经典LSTM的准确率是55/63, 加入attention机制的模型达到了61/70 。
另外作者对attention的权重进行可视化,发现attention确实挺神奇的:

image.png

5. 结论

  1. 作者提供了一种可以大量标注数据集的方法,这种方式也会有利于后续的研究。
  2. 作者提供了一种深度神经网络(LSTM+attention)用于机器阅读理解的方法,并且在大数据集上取得了良好的效果。
  3. 这种相对来说简单的LSTM+attention可以取得非常好的效果,考虑到深度学习模型具有不随着数据集线性增大的特点,它还是很值得深入研究的。后续可以考虑如何把常识知识和多query查询融合进来。

相关文章

网友评论

      本文标题:teaching machines to read and co

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