• CS224n笔记16 DMN与问答系统


      本文转自:http://www.hankcs.com/nlp/cs224n-dmn-question-answering.html/2

      hankcs.com 2017-07-12 上午10.52.33.pnghankcs.com 2017-07-12 上午11.22.45.pnghankcs.com 2017-07-12 下午4.35.36.png2017-07-12_16-49-43.pnghankcs.com 2017-07-12 下午4.55.26.pnghankcs.com 2017-07-12 下午5.09.55.png2017-07-12_17-14-50.png2017-07-12_17-17-53.png最有意思的一课,将所有NLP任务视作QA问题。模仿人类粗读文章和问题,再带着问题反复阅读文章的行为,利用DMN这个通用框架漂亮地解决了从词性标注、情感分析到机器翻译、QA等一系列任务。

    是否所有NLP任务都可视作QA?

    问答系统举例如下:

    hankcs.com 2017-07-12 上午10.08.22.png

      在old-school NLP系统中,必须手工整理一个“知识库”;然后在这个知识库上做规则推断。这节课介绍的DMN完全不同于这种小作坊,它能够直接从问答语料中学习所有必要的知识表达。

      DMN还可以在问答中做情感分析、词性标注和机器翻译。

      所以构建一个joint model用于通用QA成为终极目标。

      要实现这个目标,有两个障碍。

    前无古人

    没有任何已有研究探讨过如何让单个模型学会这么多的任务。每种任务都有独特的特点,适合不同的神经网络来做:

    hankcs.com 2017-07-12 上午10.25.05.png

    全才难得

      第二个障碍是,Fully joint multitask learning(同一个decoder/classifier,不仅仅共享词向量,而应该共享全部参数)非常困难。

      有些不成功的研究发现,只能在低层(词向量)共享参数、如果任务之间没有直接关联则会顾此失彼。

    Dynamic Memory Networks

      今天介绍的DMN仅仅解决了第一个问题。虽然有些超参数还是得因任务而异,但总算是个通用的架构了。

    回答难题

      假设有个阅读理解题目:

    hankcs.com 2017-07-12 上午10.36.56.png

    你无法记住全文,但看了问题之后,只要带着问题扫几眼原文,你就能找出答案。

    这种现象启发了DMN。

    Dynamic Memory Networks

    先来看big picture(接下来会对每个模块单独讲解):

    hankcs.com 2017-07-12 上午10.52.33.png

    左边输入input的每个句子每个单词的词向量,送入input module的GRU中。同样对于Question Module,也是一个GRU,两个GRU可以共享权值。

    Question Module计算出一个Question Vector qq,根据qq应用attention机制,回顾input的不同时刻。根据attention强度的不同,忽略了一些input,而注意到另一些input。这些input进入Episodic Memory Module,注意到问题是关于足球位置的,那么所有与足球及位置的input被送入该模块。该模块每个隐藏状态输入Answer module,softmax得到答案序列。

    有人问DMN能否学会新类型的问题,答案是否定的。Episodic Memory Module中有两条线,分别代表带着问题qq第一次阅读input的记忆,以及带着问题qq第二次阅读的记忆。

    The Modules: Input

    开始讲解每个模块的细节了。

    hankcs.com 2017-07-12 上午11.08.20.png

    hankcs.com 2017-07-12 上午11.22.45.png

    每个fact被表示为双向隐藏状态的拼接。

    The Modules: Question

    hankcs.com 2017-07-12 上午11.24.52.png

    The Modules: Episodic Memory

    hankcs.com 2017-07-12 上午11.29.57.png

      这里两条线代表两个GRU,阅读两遍。这也是个超参数。Richard说最开始多个pass的Memory也通过GRU合并,后来发现只留两个pass直接视作两层神经网络也能解决问题,能简单就不要复杂。

    The Modules: Answer

    相关工作

    有很多已有工作做了类似研究:

    • Sequence to Sequence (Sutskever et al. 2014)

    • Neural Turing Machines (Graves et al. 2014)

    • Teaching Machines to Read and Comprehend (Hermann et al. 2015)

    • Learning to Transduce with Unbounded Memory (Grefenstette 2015)

    • Structured Memory for Neural Turing Machines (Wei Zhang 2015)

    • Memory Networks (Weston et al. 2015)

    • End to end memory networks (Sukhbaatar et al. 2015) 

    Richard吐槽说他不觉得机器能像加粗的论文标题所说的,跟人一样阅读理解。也许这篇论文有点标题党了。与DMN联系密切的是后面两篇论文,都有Memory Component。

    与MemNets比较

    相同点

    • 都有input, scoring, attention and response模块

    不同点

    • MemNets主要使用词袋,然后有一些embedding去encode位置

    • MemNets迭代运行attention和response

    这些不同点都是由于MemNets是个非sequence模型造成的。而DMN是个血统纯正的neural sequence model,天然适合序列标注等任务,比MemNets应用范围更广。

    DMN的sequence能力来自GRU,虽然一开始用的是LSTM,后来发现GRU也能达到相同的效果,而且参数更少。(这回答了GRU和LSTM那节课有个学生的问题:哪个计算复杂度更低。Manning当时回答应该是一样的,还不太相信Richard的答案。说明在工程上,还是做实验的一线博士更有经验)

    结果

    QA

    hankcs.com 2017-07-12 下午4.21.01.png

    这是一个自动生成的QA语料库,里面都是一些简单的问答。部分NLP学者很厌恶机器生成的语料,但如果连机器生成的语料都无法解决,何谈解决真实的复杂问题。

    情感分析

    hankcs.com 2017-07-12 下午4.22.03.png

    依然拿到最高分数。

    此时问题永远是相同的,其向量是固定的。

    遗憾的是,对于不同的任务,超参数依然必须不同才能拿到最佳结果。

    Episodes数量

    hankcs.com 2017-07-12 下午4.26.15.png

    其中task3是三段论,理论只需要3个pass,但模型依然需要5个。考虑到这是个end to end训练,没有监督信号指示那些fact是重要的,所以这个表现还挺好。情感分析的NA是因为,计算复杂度实在太高了。分数已经在降低,所以干脆没跑。

    情感分析的一些例子

    hankcs.com 2017-07-12 下午4.35.36.png

    颜色越深代表模型的attention越强烈。如果只跑一个pass,则模型无法得到整个句子的全文,所以将过多的注意力放到无关紧要的贬义词上。

    另一些类似的例子:

    2017-07-12_16-39-20.png

    hankcs.com 2017-07-12 下午4.43.38.png

    hankcs.com 2017-07-12 下午4.44.27.png

    然后是PTB上的词性标注:

    hankcs.com 2017-07-12 下午4.46.14.png

    虽然0.06%的提升不算什么,但考虑到这是一个通用的模型,感觉是非常棒的。

    VQA

    任何任务都可视作QA任务,所以这个模型也适用于VQA,只需将处理文本的输入模块替换为处理图像的输入模块:

    2017-07-12_16-49-43.png

    输入模块

    由于卷积特征并不是序列的,所以输入模块的输出特征只是所有时刻隐藏状态向量的拼接。

    hankcs.com 2017-07-12 下午4.55.26.png

    结果

    然后就拿到了最高分:

    hankcs.com 2017-07-12 下午4.57.28.png

    这张表格有个有趣的地方,第二行Image代表只给图片,不给问题,预测答案,第三行则是只给问题不给图片。在缺失如此多的信息的情况下,基线模型依然能拿到不低的分数,说明数据集里面肯定有些奇怪的pattern,或说水分吧。

    attention可视化

    越亮代表越注意,可以发现模型的确在注意问题相关的部分:

    2017-07-12_17-02-40.png

    hankcs.com 2017-07-12 下午5.09.55.png

    hankcs.com 2017-07-12 下午5.10.49.png

    在一些较难的问题上也能较为满意地回答:

    2017-07-12_17-14-50.png

    比如模型认为女孩穿的是短裤,但问女孩的短裙是什么颜色,它也能知道是白色。这说明模型很健壮。虽然一些问题回答得不好,但Richard认为只是数据量不够的原因。

    总结

    • 大部分NLP任务都可视作QA

    • DMN可以解决多种QA任务

    • 还有可以在问题上也做attention的Dynamic Coattention Networks

    2017-07-12_17-17-53.png

    Life is short, but I have a cat.
  • 相关阅读:
    Anroid自定义RatingBar,显示半个(小数个)的stepSize时,变为整数个的问题
    浅谈Java对象回收的三种方式
    今天为火狐社区做了点小小的共享,开心一下~~
    解决mac的日历问题:服务器响应一个错误
    android.content.res.Resources$NotFoundException:String resource ID #ffffffff
    Android 读写文件的第一种方式(文件方式)
    ListView的性能提升
    C++中的回调函数实现,sink方式
    技巧:Activity收集器
    技巧:知晓当前在哪个Activity
  • 原文地址:https://www.cnblogs.com/koocn/p/7701822.html
Copyright © 2020-2023  润新知