关于自然语言处理:斯坦福NLP课程-第10讲-NLP中的问答系统

19次阅读

共计 7931 个字符,预计需要花费 20 分钟才能阅读完成。

  • 作者:韩信子 @ShowMeAI,路遥 @ShowMeAI,奇异果 @ShowMeAI
  • 教程地址:http://www.showmeai.tech/tutorials/36
  • 本文地址:http://www.showmeai.tech/article-detail/246
  • 申明:版权所有,转载请分割平台与作者并注明出处
  • 珍藏 ShowMeAI 查看更多精彩内容


ShowMeAI 为 斯坦福 CS224n《自然语言解决与深度学习 (Natural Language Processing with Deep Learning)》课程的全副课件,做了 中文翻译和正文,并制作成了 GIF 动图!


本讲内容的 深度总结教程 能够在 这里 查看。视频和课件等材料的获取形式见 文末


引言

授课打算

  • Final final project notes, etc. / 最终大我的项目要点
  • Motivation/History / 问答零碎动机与历史
  • The SQuADdataset / SQuAD 问答数据集
  • The Stanford Attentive Reader model / 斯坦福注意力浏览模型
  • BiDAF / BiDAF 模型
  • Recent, more advanced architectures / 近期前沿模型
  • ELMo and BERT preview / ELMo 与 BERT 预习与简略介绍

1. 最终大我的项目要点

1.1 自定义 Final Project

1.2 默认 Final Projec

timg10-4.png 默认 Final Project

1.3 Project 提交

1.4 我的项目顺利

1.5 谁是澳大利亚第三任总理

  • 在谷歌中检索谁是澳大利亚第三任总理,能够取得答案。

<!—->

  • 技术阐明 :这是从 web 页面中提取的 个性片段 答复,而不是应用 (结构化的) 谷歌常识图 (以前称为 Freebase) 答复的问题。
  • 咱们明天要议论的就是这样的问题,而不是基于结构化数据存储的问答。

2. 问答零碎动机与历史

2.1 动机:问答

  • 领有大量的全文文档汇合,例如网络,简略地返回相干文档的作用是无限的
  • 相同,咱们常常想要失去 问题的答案
  • 尤其是在挪动设施上
  • 或应用像 Alexa、Google assistant 这样的数字助理设施

<!—->

咱们能够把它分解成两局部:

  • 1.查找 (可能) 蕴含答案的文档

    • 能够通过传统的信息检索 /web 搜寻解决
    • (下个季度我将讲授 cs276,它将解决这个问题)
  • 2.在一段或一份文件中找到答案

    • 这个问题通常被称为浏览了解
    • 这就是咱们明天要关注的

2.2 浏览了解简史

  • 许多晚期的 NLP 工作尝试浏览了解

    • Schank, Abelson, Lehnert et al. c. 1977 – Yale A.I. Project

<!—->

  • 由 Lynette Hirschman 在 1999 年重提

    • NLP 零碎能答复三至六年级学生的人类浏览了解问题吗? 简略的办法尝试

<!—->

  • Chris Burges 于 2013 年通过 MCTest 又从新复活 RC

    • 再次通过简略的故事文本答复问题

<!—->

  • 2015/16 年,随着大型数据集的产生,闸门开启,能够建设监督神经系统

    • Hermann et al. (NIPS 2015) DeepMind CNN/DM dataset
    • Rajpurkaret al. (EMNLP 2016) SQuAD
    • MS MARCO, TriviaQA, RACE, NewsQA, NarrativeQA, …

2.3 机器了解(Burges 2013)

一台机器可能了解文本的段落,对于大多数母语使用者可能正确答复的对于文本的任何问题,该机器都能提供一个字符串,这些谈话者既能答复该问题,又不会蕴含与该问题无关的信息。

2.4 MCTest 浏览了解

  • P:Passage,文章
  • Q:Question,问题
  • A:Answer,答案

2.5 凋谢畛域问答的简史

  • Simmons et al. (1964) 首先摸索了如何基于匹配问题和答案的依赖关系解析,从说明性文本中答复问题
  • Murax (Kupiec1993) 旨在应用 IR 和浅层语言解决在在线百科全书上答复问题
  • NIST TREC QA track 始于 1999 年,首次严格考察了对大量文档的事实问题的答复
  • IBM 的冒险!System (DeepQA, 2011)提出了一个版本的问题; 它应用了许多办法的汇合
  • DrQA (Chen et al. 2016) 采纳 IR 联合神经浏览了解,将深度学习引入凋谢畛域的 QA

2.6 千年之交的残缺 NLP 问答

  • 简单的零碎,但他们在 事实 问题上做得相当好
    <!—->

补充解说

  • 非常复杂的多模块多组件的零碎

    • 首先对问题进行解析,应用手写的语义规范化规定,将其转化为更好的语义模式
    • 在通过问题类型分类器,找出问题在寻找的语义类型
    • 信息检索零碎找到可能蕴含答案的段落,排序后进行抉择
    • NER 辨认候选实体再进行判断
  • 这样的 QA 零碎在特定畛域很无效:Factoid Question Answering 针对实体的问答

3.SQuAD 问答数据集

3.1 斯坦福问答数据集 (SQuAD)

  • Passage 是来自维基百科的一段文本,零碎须要答复问题,在文章中找出答案

<!—->

  • \(1000k\) 个样本
  • 答案必须是文章中的一系列单词序列
  • 也就是提取式问答

3.2 SQuAD 评估,v1.1

  • 作者收集了 3 个参考答案
  • 零碎在两个指标上计算得分

    • 准确匹配:1/ 0 的准确度,你是否匹配三个答案中的一个
    • F1:将零碎和每个答案都视为词袋,并评估

$$
\text{Precision} =\frac{TP}{TP+FP}
$$

$$
\text {Recall}=\frac{TP}{TP+FN}
$$

$$
\text {harmonic mean} \mathrm{F} 1=\frac{2 PR}{P+R}
$$

  • Precision 和 Recall 的和谐平均值
  • 分数是 (宏观) 均匀每题 F1 分数

<!—->

  • F1 测量被视为更牢靠的指标,作为次要指标应用

    • 它不是基于抉择是否和人类抉择的跨度完全相同,人类抉择的跨度容易受到各种影响,包含换行
    • 在单次级别匹配不同的答案
  • 这两个指标漠视标点符号和冠词 (a, an, the only)

3.3 SQuAD 2.0

  • SQuAD1.0 的一个缺点是,段落中所有问题都有答案
  • 零碎 (隐式地) 排名候选答案并抉择最好的一个,这就变成了一种排名工作
  • 你不用判断一个段落区间是否答复了这个问题

<!—->

  • SQuAD2.0 中 \(1/3\) 的训练问题没有答复,大概 \(1/2\) 的开发 / 测试问题没有答复

    • 对于 No Answer examples,no answer 取得的得分为 \(1\),对于准确匹配和 F1,任何其余响应的得分都为 \(0\)
  • SQuAD2.0 最简略的零碎办法

    • 对于一个 span 是否答复了一个问题有一个阈值评分
  • 或者你能够有第二个确认答复的组件

    • 相似 自然语言推理 或者 答案验证

3.4 得分高的零碎并不能真正了解人类语言

  • 零碎没有真正理解所有,依然在做一种匹配问题

3.5 SQuAD 局限

  • SQuAD 也有其余一些要害限度

    • 只有 span-based 答案 (没有 yes / no,计数,隐式的为什么)
    • 问题是看着段落结构的

      • 通常不是真正的信息需要
      • 一般来说,问题和答案之间的词汇和句法匹配比 IRL 更大
    • 问题与文章高度重叠,无论是单词还是句法结构
    • 除了独特参照,简直没有任何多事实 / 句子推理

<!—->

  • 不过这是一个指标明确,构造良好的洁净的数据集

    • 它始终是 QA dataset 上最罕用和最具竞争力的数据集
    • 它也是构建行业零碎的一个有用的终点 (只管域内数据总是很有帮忙!)
    • 并且咱们正在应用它

3.6 Stanford Attentive Reader

  • 展现了一个最小的,十分胜利的浏览了解和问题答复架构
  • 起初被称为 the Stanford Attentive Reader

  • 首先将问题用向量示意

    • 对问题中的每个单词,查找其词嵌入
    • 输出到双向 LSTM 中并将最终的 hidden state 拼接

  • 再解决文章

    • 查找每个单词的词嵌入并输出到双向 LSTM 中

<!—->

  • 应用双线性注意力,将每个 LSTM 的示意 (LSTM 的两个暗藏状态的连贯) 与问题示意做运算,取得了不同地位的注意力,从而取得答案的开始地位,再以同样形式取得答案的完结地位
  • 为了在文章中找到答案,应用问题的向量示意,来解决答案在什么地位应用注意力

3.7 SQuAD v1.1 后果

4. 斯坦福注意力浏览模型

4.1 Stanford Attentive Reader++

  • 整个模型的所有参数都是端到端训练的,训练的指标是开始地位与完结为止的准确度,优化有两种形式

  • 问题局部

    • 不止是利用最终的暗藏层状态,而是应用所有隐层状态的加权和
    • 应用一个可学习的向量 \(w\) 与每个工夫步的隐层状态相乘
    • 深层 LSTM

  • 文章中每个 token 的向量示意 \(p_i\) 由一下局部连贯而成
  • 词嵌入 (GloVe 300 维)
  • 词的语言特点:POS &NER 标签,one-hot 向量
  • 词频率 (unigram 概率)
  • 准确匹配:这个词是否呈现在问题

    • 三个二进制的特色:exact, uncased, lemma
  • 对齐问题嵌入 ( 汽车 )

$$
f_{\text {align}}\left(p_{i}\right)=\sum_{j} a_{i, j} \mathbf{E}\left(q_{j}\right) \quad q_{i, j}=\frac{\exp \left(\alpha\left(\mathbf{E}\left(p_{i}\right)\right) \cdot \alpha\left(\mathbf{E}\left(q_{j}\right)\right)\right)}{\sum_{j^{\prime}} \exp \left(\alpha\left(\mathbf{E}\left(p_{i}\right)\right) \cdot \alpha\left(\mathbf{E}\left(q_{j}^{\prime}\right)\right)\right)}
$$

4.2 神经模型的突出成果

4.3 这些神经模型做什么?

5.BiDAF 模型

5.1 #论文解读# BiDAF

5.2 BiDAF

  • 多年来,BiDAF architecture 有许多变体和改良,但其核心思想是 the Attention Flow layer
  • 思路:attention 应该双向流动——从上下文到问题,从问题到上下文

<!—->

  • 令相似矩阵 (\(w\) 的维数为 \(6d\))

$$
\boldsymbol{S}_{i j}=\boldsymbol{w}_{\mathrm{sim}}^{T}\left[\boldsymbol{c}_{i} ; \boldsymbol{q}_{i} ; \boldsymbol{c}_{i} \circ \boldsymbol{q}_{j}\right] \in \mathbb{R}
$$

<!—->

  • Context-to-Question (C2Q) 注意力 (哪些查问词与每个上下文词最相干)

$$
\begin{aligned}
\alpha^{i} &=\operatorname{softmax}\left(\boldsymbol{S}_{i, :}\right) \in \mathbb{R}^{M} \quad \forall i \in\{1, \ldots, N\} \\
\boldsymbol{a}_{i} &=\sum_{j=1}^{M} \alpha_{j}^{i} \boldsymbol{q}_{j} \in \mathbb{R}^{2 h} \quad \forall i \in\{1, \ldots, N\}
\end{aligned}
$$

  • Question-to-Context (Q2C) 注意力 (上下文中最重要的单词绝对于查问的加权和——通过 max 略有不对称)

<!—->

  • 通过 max 获得上下文中的每个单词对于问题的相关度

$$
\begin{aligned}
\boldsymbol{m}_{i} &=\max _{j} \boldsymbol{S}_{i j} \in \mathbb{R} \quad \forall i \in\{1, \ldots, N\} \\
\beta &=\operatorname{softmax}(\boldsymbol{m}) \in \mathbb{R}^{N} \\
\boldsymbol{c}^{\prime} &=\sum_{i=1}^{N} \beta_{i} \boldsymbol{c}_{i} \in \mathbb{R}^{2 h}
\end{aligned}
$$

<!—->

  • 对于文章中的每个地位,BiDAF layer 的输入为

$$
\boldsymbol{b}_{i}=\left[\boldsymbol{c}_{i} ; \boldsymbol{a}_{i} ; \boldsymbol{c}_{i} \circ \boldsymbol{a}_{i} ; \boldsymbol{c}_{i} \circ \boldsymbol{c}^{\prime}\right] \in \mathbb{R}^{8 h} \quad \forall i \in\{1, \ldots, N\}
$$

  • 而后有 modelling

    • 文章通过另一个深 (双层) BiLSTM

<!—->

  • 而后答复跨度抉择更为简单

    • Start:通过 BiDAF 和 modelling 的输入层连贯到一个密集的全连贯层而后 softmax
    • End:把 modelling 的输入 \(M\) 通过另一个 BiLSTM 失去 \(M_2\),而后再与 BiDAF layer 连贯,并通过密集的全连贯层和 softmax

6. 近期前沿模型

6.1 最新的、更高级的体系结构

  • 2016 年、2017 年和 2018 年的大部分工作都采纳了越来越简单的架构,其中蕴含了多种注意力变体——通常能够取得很好的工作收益
  • 人们始终在尝试不同的 Attention

6.2 #论文解读# Dynamic CoattentionNetworks for Question Answering

(本网络频繁应用到 LSTM/GRU 构造,具体的 RNN 细节解说能够查看 ShowMeAI 的对吴恩达老师课程的总结文章深度学习教程 | 序列模型与 RNN 网络 ,也能够查看本系列的前序文章 NLP 教程(5) – 语言模型、RNN、GRU 与 LSTM

  • 缺点:问题具备独立于输出的示意模式
  • 一个全面的 QA 模型须要相互依赖

6.3 Coattention Encoder

6.4 Coattention layer

  • Coattention layer 再次提供了一个上下文之间的双向关注问题

<!—->

  • 然而,coattention 包含两级注意力计算:

    • 关注那些自身就是注意力输入的表象
  • 咱们应用 C2Q 注意力散布 \(\alpha _i\),求得 Q2C 注意力输入 \(\boldsymbol{b}_j\) 的加权和。这给了咱们第二级注意力输入 \(\boldsymbol{s}_{i}\)

$$
\boldsymbol{s}_{i}=\sum_{j=1}^{M+1} \alpha_{j}^{i} \boldsymbol{b}_{j} \in \mathbb{R}^{l} \quad \forall i \in\{1, \ldots, N\}
$$

6.5 Co-attention:SQUAD 比赛结果

https://rajpurkar.github.io/S…

6.6 #论文解读# FusionNet

注意力机制

  • MLP (Additive) 模式

$$
S_{i j}=s^{T} \tanh \left(W_{1} c_{i}+W_{2} q_{j}\right)
$$

  • 空间复杂度:\(O(mnk)\), W is kxd

<!—->

  • Bilinear (Product) form

$$
S_{i j}=c_{i}^{T} W q_{j}
$$

$$
S_{i j}=c_{i}^{T} U^{T} V q_{j}
$$

$$
S_{i j}=c_{i}^{T} W^{T} D W q_{j}
$$

$$
S_{i j}=\operatorname{Relu}\left(c_{i}^{T} W^{T}\right) \operatorname{DRelu}\left(W q_{j}\right)
$$

  • 空间复杂度:\(O((m+n)k)\)
  • 更小的空间耗费
  • 非线性表达能力

6.7 FusionNet 试图将多种形式的注意力联合起来

6.8 多层次的 inter-attention

  • 通过多层次的 inter-attention,应用 RNN、self-attention 和另一个 RNN 失去上下文的最终示意 \(\left{\boldsymbol{u}_{i}^{C}\right}\(

6.9 最近、更先进的构造

  • 2016 年、2017 年和 2018 年的大部分工作都采纳了越来越简单的体系结构,这些体系结构具备多种不同的关注形式,通常能够取得很好的工作收益

7.ELMo 与 BERT 预习与简略介绍

7.1 ELMO and BERT 预习

7.2 SQUAD 2.0 排行榜,2019-02-07

7.3 #论文解读

7.4 #论文解读# Documen Retriever

7.5 #论文解读# DrQA Demo

7.6 #论文解读# 一般性问题

8. 视频教程

能够点击 B 站 查看视频的【双语字幕】版本

9. 参考资料

  • 本讲带学的 在线阅翻页本
  • 《斯坦福 CS224n 深度学习与自然语言解决》课程学习指南
  • 《斯坦福 CS224n 深度学习与自然语言解决》课程大作业解析
  • 双语字幕视频】斯坦福 CS224n | 深度学习与自然语言解决(2019·全 20 讲)
  • Stanford 官网 | CS224n: Natural Language Processing with Deep Learning

ShowMeAI系列教程举荐

  • 大厂技术实现 | 举荐与广告计算解决方案
  • 大厂技术实现 | 计算机视觉解决方案
  • 大厂技术实现 | 自然语言解决行业解决方案
  • 图解 Python 编程:从入门到精通系列教程
  • 图解数据分析:从入门到精通系列教程
  • 图解 AI 数学根底:从入门到精通系列教程
  • 图解大数据技术:从入门到精通系列教程
  • 图解机器学习算法:从入门到精通系列教程
  • 机器学习实战:手把手教你玩转机器学习系列
  • 深度学习教程 | 吴恩达专项课程 · 全套笔记解读
  • 自然语言解决教程 | 斯坦福 CS224n 课程 · 课程带学与全套笔记解读

NLP 系列教程文章

  • NLP 教程(1)- 词向量、SVD 合成与 Word2vec
  • NLP 教程(2)- GloVe 及词向量的训练与评估
  • NLP 教程(3)- 神经网络与反向流传
  • NLP 教程(4)- 句法分析与依存解析
  • NLP 教程(5)- 语言模型、RNN、GRU 与 LSTM
  • NLP 教程(6)- 神经机器翻译、seq2seq 与注意力机制
  • NLP 教程(7)- 问答零碎
  • NLP 教程(8)- NLP 中的卷积神经网络
  • NLP 教程(9)- 句法分析与树形递归神经网络

斯坦福 CS224n 课程带学详解

  • 斯坦福 NLP 课程 | 第 1 讲 – NLP 介绍与词向量初步
  • 斯坦福 NLP 课程 | 第 2 讲 – 词向量进阶
  • 斯坦福 NLP 课程 | 第 3 讲 – 神经网络常识回顾
  • 斯坦福 NLP 课程 | 第 4 讲 – 神经网络反向流传与计算图
  • 斯坦福 NLP 课程 | 第 5 讲 – 句法分析与依存解析
  • 斯坦福 NLP 课程 | 第 6 讲 – 循环神经网络与语言模型
  • 斯坦福 NLP 课程 | 第 7 讲 – 梯度隐没问题与 RNN 变种
  • 斯坦福 NLP 课程 | 第 8 讲 – 机器翻译、seq2seq 与注意力机制
  • 斯坦福 NLP 课程 | 第 9 讲 – cs224n 课程大我的项目实用技巧与教训
  • 斯坦福 NLP 课程 | 第 10 讲 – NLP 中的问答零碎
  • 斯坦福 NLP 课程 | 第 11 讲 – NLP 中的卷积神经网络
  • 斯坦福 NLP 课程 | 第 12 讲 – 子词模型
  • 斯坦福 NLP 课程 | 第 13 讲 – 基于上下文的表征与 NLP 预训练模型
  • 斯坦福 NLP 课程 | 第 14 讲 – Transformers 自注意力与生成模型
  • 斯坦福 NLP 课程 | 第 15 讲 – NLP 文本生成工作
  • 斯坦福 NLP 课程 | 第 16 讲 – 指代消解问题与神经网络办法
  • 斯坦福 NLP 课程 | 第 17 讲 – 多任务学习(以问答零碎为例)
  • 斯坦福 NLP 课程 | 第 18 讲 – 句法分析与树形递归神经网络
  • 斯坦福 NLP 课程 | 第 19 讲 – AI 平安偏见与偏心
  • 斯坦福 NLP 课程 | 第 20 讲 – NLP 与深度学习的将来

正文完
 0