NLP教程(7) - 问答系统

简介: 本文介绍 NLP 中的问答系统(Question Answering),包括 NLP 中的问答系统场景、动态记忆网络(Dynamic Memory Networks)、问答(QA)、对话、MemNN、DCN、VQA等。

ShowMeAI研究中心

作者:韩信子@ShowMeAI
教程地址http://www.showmeai.tech/tutorials/36
本文地址http://www.showmeai.tech/article-detail/245
声明:版权所有,转载请联系平台与作者并注明出处
收藏ShowMeAI查看更多精彩内容


问答系统
本系列为斯坦福CS224n《自然语言处理与深度学习(Natural Language Processing with Deep Learning)》的全套学习笔记,对应的课程视频可以在 这里 查看。

NLP中的问答系统
ShowMeAI为CS224n课程的全部课件,做了中文翻译和注释,并制作成了 GIF动图!点击 第10讲-NLP中的问答系统 查看的课件注释与带学解读。更多资料获取方式见文末。


引言

CS224n是顶级院校斯坦福出品的深度学习与自然语言处理方向专业课程,核心内容覆盖RNN、LSTM、CNN、transformer、bert、问答、摘要、文本生成、语言模型、阅读理解等前沿内容。

本篇笔记对应斯坦福CS224n自然语言处理专项课程的知识板块:问答系统。主要针对NLP中的问答系统场景,介绍了一些模型和思路。

笔记核心词

  • question answering
  • Dynamic Memory Networks \ 动态记忆网络
  • QA
  • 问答
  • 对话
  • MemNN
  • DCN
  • VQA

1.图文问答系统与动态记忆网络( DMN )

QA 系统的概念是直接从文档、对话、在线搜索等中提取信息(有时是段落,或是单词的范围),以满足用户的信息需求。 QA 系统不需要用户通读整个文档,而是倾向于给出一个简短的答案。

现在, QA 系统可以很容易地与其他 NLP 系统(如聊天机器人)结合起来,有些 QA 系统甚至超越了文本文档的搜索,可以从一组图片中提取信息。


有很多类型的问题,其中最简单的是 Factoid Question Answering 事实类问题回答。它包含的问题看起来像

  • The symbol for mercuric oxide is?(氧化汞的符号是什么?)
  • Which NFL team represented the AFC at Super Bowl 50?(哪支NFL球队代表AFC参加超级碗50赛?)

当然还有其他类型的问题,如数学问题( 公式 )、逻辑问题,这些问题需要广泛的推理(而且没有背景信息)。然而,我们可以说在人们的日常生活中,寻求信息的事实类问题回答是最常见的问题。


事实上,大多数 NLP 问题都可以看作是一个问答问题,其范式很简单:

  • 我们发出一个查询,然后机器提供一个响应。通过阅读文档或一组指令,智能系统应该能够回答各种各样的问题。
  • 我们可以要求句子的 POS 标签,我们可以要求系统用不同的语言来响应。

因此,很自然地,我们想设计一个可以用于一般 QA 的模型


为了实现这一目标,我们面临两大障碍

$$1$$. 许多NLP任务使用不同的架构,如TreeLSTM (Tai et al., 2015)用于情绪分析,Memory Network (Weston et al., 2015) 用于回答问题,以及双向LSTM-CRF (Huang et al., 2015) 用于词性标注。

$$2$$. 全面的多任务学习往往非常困难,迁移学习仍然是当前人工智能领域(计算机视觉、强化学习等)神经网络架构的主要障碍。


我们可以使用NLP的共享体系结构来解决第一个问题动态内存网络( DMN ),这是一种为一般 QA 任务设计的体系结构。 QA 很难,部分原因是阅读一段很长的文字很难。即使对于人类,我们也不能在你的工作记忆中存储一个很长的文档。

动态内存网络图示

1.1 输入模块

将 DMN 分为多个模块。首先我们来看输入模块

输入模块以单词序列 公式 作为输入,输出事实表示序列 公式

  • 如果输出是一个单词列表,我们有 公式
  • 如果输出是一个句子列表,我们有 公式 作为句子的数量, 公式 作为句子中的单词数量。

我们使用一个简单的 GRU 来读取其中的句子,即隐藏状态 公式,其中 公式公式 为嵌入矩阵, 公式公式 时刻的单词,我们使用 Bi- GRU 进一步改进,如下图所示。

动态内存网络图示

(本部分DMN网络频繁使用到GRU结构,具体的GRU细节讲解可以查看ShowMeAI的对吴恩达老师课程的总结文章深度学习教程 | 序列模型与RNN网络,也可以查看本系列的前序文章NLP教程(5) - 语言模型、RNN、GRU与LSTM

1.2 问题读取模块

我们也使用标准的 GRU 来读取问题(使用嵌入矩阵 公式 ),但是问题模块的输出是问题的编码表示。

1.3 情景记忆模块

动态记忆网络的一个显著特征是情景记忆模块,它在输入序列上运行多次,每次关注输入的不同事实子集。它使用 Bi- GRU 实现这一点, Bi- GRU 接收输入模块传入的句子级别表示的输入,并生成情景记忆表示。

我们将情景记忆表征表示为 公式,情景表征(由注意机制输出)表示为 公式。情景记忆表示使用 公式 初始化,然后继续使用 公式。使用来自输入模块的隐藏状态输出更新情景表征,如下所示,其中 公式 是注意机制。

公式


注意向量 公式 的计算方法有很多,但是在原始的 DMN 论文(Kumar et al. 2016)中,我们发现以下公式是最有效的

公式公式公式


这样,如果句子与问题或记忆有关,这个模块中的门就会被激活。在第 公式 遍中,如果总结不足以回答问题,我们可以在第 公式 遍中重复输入序列。

例如,考虑这样一个问题 Where is the football? 以及输入序列 John kicked the footballJohn was in the field。在这个例子中,John和football可以在一个pass中连接,然后John和field可以在第二个pass中连接,这样网络就可以根据这两个信息进行传递推断。

1.4 回答模块

回答模块是一个简单的 GRU 解码器,它接收问题模块、情景记忆模块的输出,并输出一个单词(或者通常是一个计算结果)。其工作原理如下:

公式

1.5 实验

通过实验可以看出, DMN 在 babl 问答任务中的表现优于 MemNN,在情绪分析和词性标注方面也优于其他体系结构。情景记忆需要多少个情景?答案是,任务越难,通过的次数就越多。多次传递还可以让网络真正理解句子,只关注最后一项任务的相关部分,而不是只对单词嵌入的信息做出反应。

关键思想是模块化系统,你可以通过更改输入模块来允许不同类型的输入。例如,如果我们用一个基于卷积神经网络的模块替换输入模块,那么这个架构就可以处理一个称为可视化问题回答(VQA)的任务。它也能够在这项任务中胜过其他模型。

1.6 总结

自2015年以来,寻找能够解决所有问题的通用体系结构的热情略有减退,但在一个领域进行训练并推广到其他领域的愿望有所增强。要理解更高级的问答模块,读者可以参考动态注意力网络(DCN)。

2.参考资料

ShowMeAI 系列教程推荐

NLP系列教程文章

斯坦福 CS224n 课程带学详解

ShowMeAI用知识加速每一次技术成长

目录
相关文章
|
26天前
|
机器学习/深度学习 人工智能 自然语言处理
【人工智能技术专题】「入门到精通系列教程」零基础带你进军人工智能领域的全流程技术体系和实战指南(NLP自然语言处理概念介绍)
【人工智能技术专题】「入门到精通系列教程」零基础带你进军人工智能领域的全流程技术体系和实战指南(NLP自然语言处理概念介绍)
45 0
|
8月前
|
机器学习/深度学习 自然语言处理 算法
深入NLTK:Python自然语言处理库高级教程
在前面的初级和中级教程中,我们了解了NLTK库中的基本和进阶功能,如词干提取、词形还原、n-gram模型和词云的绘制等。在本篇高级教程中,我们将深入探索NLTK的更多高级功能,包括句法解析、命名实体识别、情感分析以及文本分类。
|
8月前
|
自然语言处理 数据可视化 Python
掌握NLTK:Python自然语言处理库中级教程
在之前的初级教程中,我们已经了解了NLTK(Natural Language Toolkit)的基本用法,如进行文本分词、词性标注和停用词移除等。在本篇中级教程中,我们将进一步探索NLTK的更多功能,包括词干提取、词形还原、n-gram模型以及词云的绘制。
|
8月前
|
自然语言处理 Python
入门NLTK:Python自然语言处理库初级教程
NLTK(Natural Language Toolkit)是一个Python库,用于实现自然语言处理(NLP)的许多任务。NLTK包括一些有用的工具和资源,如文本语料库、词性标注器、语法分析器等。在这篇初级教程中,我们将了解NLTK的基础功能。
|
11月前
|
机器学习/深度学习 自然语言处理 算法
文档关键信息提取形成知识图谱:基于NLP算法提取文本内容的关键信息生成信息图谱教程及码源(含pyltp安装使用教程)
文档关键信息提取形成知识图谱:基于NLP算法提取文本内容的关键信息生成信息图谱教程及码源(含pyltp安装使用教程)
文档关键信息提取形成知识图谱:基于NLP算法提取文本内容的关键信息生成信息图谱教程及码源(含pyltp安装使用教程)
|
机器学习/深度学习 自然语言处理
NLP教程:什么是范数(norm)?以及L1,L2范数的简单介绍
NLP教程:什么是范数(norm)?以及L1,L2范数的简单介绍
628 0
NLP教程:什么是范数(norm)?以及L1,L2范数的简单介绍
|
自然语言处理
【NLP最佳实践】Huggingface Transformers实战教程
【NLP最佳实践】Huggingface Transformers实战教程
660 0
【NLP最佳实践】Huggingface Transformers实战教程
|
机器学习/深度学习 存储 人工智能
NLP教程(9) - 句法分析与树形递归神经网络
本文介绍了 NLP 句法分析与树形递归神经网络,主要讲解树形递归神经网络、句法分析 (Constituency Parsing )、Recursive Neural Networks (RNN)、成分句法分析、SU-RNN、MV-RNN、RNTN等。
678 1
NLP教程(9) - 句法分析与树形递归神经网络
|
机器学习/深度学习 人工智能 自然语言处理
斯坦福NLP课程 | 第17讲 - 多任务学习(以问答系统为例)
NLP课程第17讲介绍了问答系统(QA)、多任务学习、自然语言处理的十项全能(decaNLP)、多任务问答系统(MQAN)等。
474 1
斯坦福NLP课程 | 第17讲 - 多任务学习(以问答系统为例)
|
机器学习/深度学习 人工智能 自然语言处理
NLP教程(8) - NLP中的卷积神经网络
本文介绍 NLP 中的卷积神经网络(CNN),讲解卷积神经网络的卷积层、池化层、多卷积核、多通道、卷积核、N-gram、filter、k-max pooling、文本分类等。
537 1
NLP教程(8) - NLP中的卷积神经网络