Chapter7-11_Deep Learning for Question Answering (2/2)

文章目录

  • 1 Simple Question: Match & Extract
  • 2 Complex Question: Reasoning
  • 3 Dialogue QA

本文为李弘毅老师【Deep Learning for Question Answering (2/2)】的课程笔记,课程视频youtube地址,点这里👈(需翻墙)。

下文中用到的图片均来自于李宏毅老师的PPT,若有侵权,必定删除。

文章索引:

上篇 - 7-10 Deep Learning for Question Answering (1/2)

下篇 - 7-12 Controllable Chatbot

总目录

1 Simple Question: Match & Extract

Simple Question指的就是可以从给定的source中通过Match和Extract的方法找到答案的问题。比如SQuAD中的问题就是Simple Question。下图中的第一个问题,我们可以通过"precipitation"和"fall"这两个关键词定位到答案在source中的第一句话中(Match),然后从中抽取出答案"gravity"(Extract)。
7-11-1

解决这样的问题的模型架构如下图所示,通常被称为"Query-to-context Attention"。我们自底向上来看,首先我们会把source输入到"module for source"中,然后输出每个token对应的embedding,这里每个token会输出两个embedding,一个相当于attention中的key,另一个相当于attention中的value。同时,也会把问题输入到"module for answer"中,得到一个embedding,这个就相当于attention中的query。我们会把右下角得到的黄色的query和左下角得到的蓝色的key进行match,归一化后,每个绿色的value会得到一个权重。加权求和得到上方深蓝色的特征向量,将其输入到"module for answer"当中,得到最终的结果。如果答案只有一个token,就是一个分类问题;如果答案是其中的一串span,那就预测头尾token的位置。
7-11-2
这种架构最经典的模型就是2015年的End-To-End Memory Networks。

上面的架构可以做一个变形。就是当"module for question"输出的embedding有多个的时候,也就是有多个query的时候,我们该怎么办?我们可以把每个query和key去做一个match,那样每个value就会得到多个权重,我们取其中最大的那个就可以了。
7-11-3
这种方法的一个典型例子就是2016年的Ask, Attend and Answer: Exploring Question-Guided
Spatial Attention for Visual Question Answering。

还有一种架构,叫做"context-to-query attention"。这种attention是把source每个token对应的embedding当作query,question每个token对应的embedding当作key,然后这两者做attention。最后会得到一个向量,再把这个向量和query时的attention结合,变成下图中绿色的向量,每个蓝色的token都会得到一个绿色的向量,然后把所有绿色的向量输入"module for answer"中,得到答案。
7-11-4
上图的架构在实际操作时,可能还会对context做self-attention,比较经典的有Gated Self-Matching Networks for Reading Comprehension and Question Answering

那么query-to-context和context-to-query这两者到底是谁好呢?既然分不清楚,我们不妨两者都用。Bidirectional Attention Flow for Machine Comprehension, Dynamic Coattention Networks
For Question Answerin,QANet: Combining Local Convolution
with Global Self-Attention for Reading Comprehension这几篇文章都是两者都用的。

不过在今天看来,上面讲到的一切,BERT里都有了,这也是BERT强大的原因,我们只要一个BERT就够了。
7-11-5

2 Complex Question: Reasoning

complex question的问题在今天看来也是一个尚未找到合适的办法的问题,所以这里只是大概介绍一下什么是complex question以及现有的解决办法。

complex question和simple question的区别在于,simple question的答案必然在source的某一段话中可以直接找到,而complex question需要在多个source之间反复跳跃,综合多个信息来得出答案。Qangaroo就是一个complex question的数据集。比如下面图中的这个问题是问"Hanging gardens of Mumbai"在哪个国家,根据第一个source只能知道在"Arabian Sea",但Arabian Sea并不是国家,我们还要再根据后面的source才能知道在India。
7-11-6

属于complex question的数据集还有Hoppot QA,DROP等等。其中的一些问题甚至需要机器根据source的内容去做加减乘除的操作。

这种在source之间跳来跳去的做法可以表示成下图这样。先根据问题match到一句话,然后根据extract的内容更新query,再进行一次match和extract以及更新,直到找到我们需要的答案为止。一般跳几次是人为预先设定好的超参数。
7-11-7

在网络架构中,就可以表示成下图这样。source中的每个token可以变成两个embedding(蓝和橙),分别表示key和value。用query的embedding去做attention,结合之前的query得到新的query。如此反复,反复次数由人预先设定。
7-11-8

当然也有让模型自己去学习要跳多少次的模型,可参见ReasoNet。

这种跳跃的方式非常适合用图网络来做,于是也有人做了用图网络来解决complex question的尝试,可参见 Dynamically Fused Graph Network for Multi-hop Reasoning。但也有人发现,当在训练时,把BERT也进行finetune时,用不用图网络的效果时差不多的,因为BERT里的self-attention就是一个密集的图网络,可参见Is Graph Structure Necessary for Multi-hop Reasoning?。
7-11-9

3 Dialogue QA

Dialogue QA与之前两类问题的区别在于,Dialogue QA会会有多个连续的问题,当前问的问题会需要用到之前问的问题的信息,比较典型的有CoQA。答案必然是在source当中的。
7-11-10
也有问问题的人完全没有看过source的情况,这种情况下,可能就会问到一些没有答案的问题,可参见QuAC。

解这类问题的时候,问题的embedding通常需要对之前的问题的embedding也做attention。
7-11-11
目前针对Dialogue QA各个模型在SQuAD上的效果如下图所示,最上面一行时人类的表现,下面的时排名前5的模型的表现,可以看见前5的模型都超过了人类。但是,模型真的已经这么厉害了吗?
7-11-12
事实并非如此,模型的泛化能力非常差,在SQuAD上训练的模型,在bAbI上的表现非常差。
7-11-13

甚至有人发现,当把问题从"What did Tesla spend Astor’s money on"缩减为"did"时,模型竟然也能答对,而且置信度还变高了。可见模型并不是真正学到了语义,只是训练集和验证集的分布很像,模型学到了某个分布而已。
7-11-14

当有人把训练集和验证集的分布改了一下之后,模型就惨败了。
7-11-15
看来在研究QA的地方,人类还有很长的路要走。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/470593.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

十一、PHP框架Laravel学习笔记——构造器的查询.分块.聚合

一.构造器查询 table()方法引入相应的表,get()方法可以查询当前表的所有数据; //获取全部结果 $users DB::table(users)->get(); first()方法,可以获取到第一条数据; //获取第一条数据 $users DB::table(user…

mac 批量清空文件夹文件_【XSS 聚宝瓶】文件及文件夹批量改名工具

置顶公众号,否则不能及时收到新文章推荐给朋友,让朋友也能收到免费文章在公众号发送函数或应用的关键字,即可免费获取对应教程一、功能说明我们在日常办公的时候,经常会碰到文件名不规范,想要整理很不方便,…

论文阅读 - Beat Tracking by Dynamic Programming

文章目录1 概述2 总体框架3. 计算Onset Strength Envelope4 计算全局的Tempo5 基于动态规划计算beats6 参考文献1 概述 有背景音乐的短视频拼接时,如果两个视频的拼接点刚好在背景音乐的某个节拍点上,那么合成的视频看起来,听起来&#xff0…

十二、PHP框架Laravel学习笔记——构造器的查询表达式

一.select 查询 select()方法可以制定你想要的列,而不是所有列; //设置显示的列,设置列别名 $users DB::table(users)->select(username as name, email)->get(); addSelect()方法,可以在你基础的查询构造器…

python解释器的工作原理_Python GIL全局解释器锁详解(深度剖析)

通过前面的学习,我们了解了 Pyton 并发编程的特性以及什么是多线程编程。其实除此之外,Python 多线程还有一个很重要的知识点,就是本节要讲的 GIL。 GIL,中文译为全局解释器锁。在讲解 GIL 之前,首先通过一个例子来直观…

Chapter7-12_Controllable Chatbot

文章目录1 Chatbot面临的问题2 控制Chatbot的输出2.1 直接Finetune2.2 输入添加控制特征2.3 只有独白3 展望本文为李弘毅老师【Controllable Chatbot】的课程笔记,课程视频youtube地址,点这里👈(需翻墙)。 下文中用到的图片均来自于李宏毅老…

十三、PHP框架Laravel学习笔记——构造器的 where 派生查询

一.where 派生查询 orWhere()方法,可以通过连缀实现两个或以上的 or 条件查询; //where() orWhere 实现 or 条件查询 $users DB::table(users) ->where(price, >, 95) ->orWhere(gender, 女) ->toSql(); 通过闭包&#xff0…

Chapter7-13_Dialogue State Tracking (as Question Answering)

文章目录1 什么是Dialogue State Tracking2 数据集3 两个挑战4 经典模型本文为李弘毅老师【Dialogue State Tracking (as Question Answering)】的课程笔记,课程视频youtube地址,点这里👈(需翻墙)。 下文中用到的图片均来自于李宏毅老师的PP…

Migrate Instance 操作详解 - 每天5分钟玩转 OpenStack(40)

Migrate 操作的作用是将 instance 从当前的计算节点迁移到其他节点上。 Migrate 不要求源和目标节点必须共享存储,当然共享存储也是可以的。 Migrate 前必须满足一个条件:计算节点间需要配置 nova 用户无密码访问。 下面是 Migrate instance 的流程图 …

十四、PHP框架Laravel学习笔记——构造器的排序分组、子查询

一.排序分组 使用 whereColumn()方法实现两个字段相等的查询结果; //判断两个相等的字段,同样支持 orWhereColumn() //支持符号create_time,>, update_time //支持符号支持数组多个字段格式[create_time,>, update_time] $users …

python找不到文件怎么办_python open找不到文件怎么办?

推荐教程:《python视频教程》 python open找不到文件怎么办? python open找不到文件的解决办法: 在python和很多程序语言中"\"转义符号,要想输出\有两种方法,一是多加一个\写成\\ ,一是在字符串前加一个r,提…

css:蓝环章鱼

css&#xff1a;蓝环章鱼 许多海洋生物色彩艳丽&#xff0c;这次用css仿制一下蓝环章鱼的蓝环 <script type"text/javascript" src"http://cdn.bootcss.com/jquery/1.11.2/jquery.min.js"></script> <script type"text/javascript&quo…

论文阅读 - Jukebox: A Generative Model for Music

文章目录1 概述2 什么是VQ-VAE2.1 Auto-encoder(AE)2.2 Variational AutoEncoder(VAE)2.3 Vector-Quantized Variational AutoEncoder(VQ-VAE)2.4 VQ-VAE-23 Music VQ-VAE4 Prior and upsamplers5 Lyrics Conditioning参考文献By learning to produce the data, we can learn t…

十五、PHP框架Laravel学习笔记——构造器的 join 查询

一&#xff0e;join 查询 使用 join 实现内联接的多表查询&#xff0c;比如三张表进行 inner join 查询&#xff1b; $users DB::table(users) ->join(books, users.id, , books.user_id) ->join(profiles, users.id, , profiles.user_id) ->select(users.id, user…

论文阅读 - Group Normalization

文章目录1 概述2 几种normalization的方法2.1 Batch Norm2.2 Layer Norm2.3 Instance Norm2.4 Group Norm3 效果对比参考文献1 概述 Group Nomralization的提出是为了解决一张GPU上能容纳的batch_size很小&#xff0c;导致模型训练效果显著变差的问题。随着深度学习的快速发展…

十六、PHP框架Laravel学习笔记——构造器的增删改

一&#xff0e;增删改操作 使用 insert()方法可以新增一条或多条记录&#xff1b; //新增一条记录 DB::table(users)->insert([ username > 李白, password > 123456, email > libai163.com, details > 123 ]); //新增多条记录 DB::table(users)->insert…

git如何切换分支_拜托,不要再问我Git分支如何使用

今天来讲讲我使用Git分支的一些经验&#xff0c;记录一下&#xff0c;希望对大家有帮助。阐述在平常开发中&#xff0c;一般都会对应三种环境&#xff0c;本地环境、测试环境、线上环境。开发的基本流程都是先在本地环境开发好,再把代码发布到测试环境测试&#xff0c;最后再发…

搞懂HMM

文章目录1 概述2 符号说明3 两点假设4 Evaluation4.1 前向算法&#xff08;forward algorithm&#xff09;4.2 后向算法&#xff08;backward algorithm&#xff09;5 Learning6 Decoding参考资料1 概述 本文是B站上机器学习-白板推导系列(十四)-隐马尔可夫模型HMM的学习笔记&…

书店售书最低价格问题

书店针对《哈利波特》系列书籍进行促销活动&#xff0c;一共5卷&#xff0c;用编号0、1、2、3、4表示&#xff0c;单独一卷售价8元&#xff0c; 具体折扣如下所示&#xff1a;本数 折扣 2 5% 3 10% 4 …

十七、PHP框架Laravel学习笔记——模型的定义

一&#xff0e;默认设置 框架可以使用 Eloquent ORM 进行数据库交互&#xff0c;也就是关系对象模型&#xff1b; 在数据库入门阶段&#xff0c;我们已经创建了一个 User.php 模型&#xff0c;如下&#xff1a; php artisan make:model Http/Models/User //默认在 app 目录 …