赞
踩
ShowMeAI为斯坦福CS224n《自然语言处理与深度学习(Natural Language Processing with Deep Learning)》课程的全部课件,做了中文翻译和注释,并制作成了GIF动图!视频和课件等资料的获取方式见文末。
自然语言生成指的是我们生成 (即写入) 新文本的任何任务
NLG 包括以下内容:
(语言模型相关内容也可以参考ShowMeAI对吴恩达老师课程的总结文章深度学习教程 | 序列模型与RNN网络)
P ( y t ∣ y 1 , … , y t − 1 ) P\left(y_{t} \mid y_{1}, \ldots, y_{t-1}\right) P(yt∣y1,…,yt−1)
P ( y t ∣ y 1 , … , y t − 1 , x ) P\left(y_{t} \mid y_{1}, \dots, y_{t-1}, x\right) P(yt∣y1,…,yt−1,x)
训练一个(条件)RNN语言模型
解码算法
问题:训练条件语言模型后,如何使用它生成文本?
答案:解码算法是一种算法,用于从语言模型生成文本
我们了解了两种解码算法
贪婪解码
一个简单的算法
在每一步中,取最可能的单词 (即 argmax)
将其用作下一个单词,并在下一步中将其作为输入提供
继续前进,直到产生 < END > <\text{END}> <END> 或达到某个最大长度
由于缺乏回溯,输出可能很差 (例如,不合语法,不自然,荒谬)
集束搜索解码
一种旨在通过一次跟踪多个可能的序列,找到高概率序列 (不一定是最佳序列) 的搜索算法
核心思路:在解码器的每一步,跟踪 k k k 个最可能的部分序列 (我们称之为假设)
达到某个停止标准后,选择概率最高的序列 (考虑一些长度调整)
束搜索解码
小的 k k k 与贪心解码有类似的问题 ( k = 1 k = 1 k=1 时就是贪心解码)
更大的 k k k 意味着考虑更多假设
低 beam size
高 beam size
正确
纯采样
像贪婪的解码,但是,是采样而不是 argmax
Top-n 采样
这两者都比光束搜索更有效率,不用关注多个假设
P t ( w ) = exp ( s w ) ∑ w ′ ∈ V exp ( s w ′ ) P_{t}(w)=\frac{\exp \left(s_{w}\right)}{\sum_{w^{\prime} \in V} \exp \left(s_{w^{\prime}}\right)} Pt(w)=∑w′∈Vexp(sw′)exp(sw)
P t ( w ) = exp ( s w / τ ) ∑ w ′ ∈ V exp ( s w ′ / τ ) P_{t}(w)=\frac{\exp \left(s_{w} / \tau\right)}{\sum_{w^{\prime} \in V} \exp \left(s_{w^{\prime}} / \tau\right)} Pt(w)=∑w′∈Vexp(sw′/τ)exp(sw/τ)
贪心解码是一种简单的译码方法;给低质量输出
Beam搜索(特别是高beam大小) 搜索高概率输出
抽样方法来获得更多的多样性和随机性
Softmax 温度控制的另一种方式多样性
任务:给定输入文本 x x x,写出更短的摘要 y y y 并包含 x x x 的主要信息
摘要可以是单文档,也可以是多文档
在单文档摘要,数据集中的源文档具有不同长度和风格
句子简化是一个不同但相关的任务:将源文本改写为更简单 (有时是更短) 的版本
抽取式摘要 Extractive summarization
生成式摘要 Abstractive summarization
前深度学习时期摘要系统大多是抽取式的
类似统计机器翻译系统,他们通常有一个流水线
Diagram credit: Speech and Language Processing, Jurafsky and Martin
前神经网络时代的内容选择算法
图算法将文档为一组句子(节点),每对句子之间存在边
类似于 BLEU,是基于 n-gram 覆盖的算法,不同之处在于:
没有简洁惩罚
基于召回率 recall,BLEU 是基于准确率的
ROUGE: A Package for Automatic Evaluation of Summaries, Lin, 2004
http://www.aclweb.org/anthology/W04-1013
BLEU 是一个单一的数字,它是 n = 1 , 2 , 3 , 4 n − g r a m s n=1,2,3,4n-grams n=1,2,3,4n−grams 的精度的组合
每 n-gram 的 ROUGE 得分分别报告
最常见的报告ROUGE得分是
现在有了一个方便的 ROUGE 的 Python 实现
2015:Rush et al. publish the first seq2seq summarization paper
单文档摘要摘要是一项翻译任务!
因此我们可以使用标准的 seq2seq + attention 神经机器翻译方法
A Neural Attention Model for Abstractive Sentence Summarization, Rush et al, 2015
https://arxiv.org/pdf/1509.00685.pdf
在每一步上,计算生成下一个词汇的概率 P g e n P_{gen} Pgen,最后的分布是生成 (词汇表) 分布和copying (注意力) 分布的一个混合分布
Get To The Point: Summarization with Pointer-Generator Networks, See et al, 2017
https://arxiv.org/pdf/1704.04368.pdf
复制机制的大问题
一个原本应该是抽象的摘要系统,会崩溃为一个主要是抽取的系统
另一个问题
回忆:前深度学习时代摘要生成是不同阶段的内容选择和表面实现 (即文本生成)
标准 seq2seq + attention 的摘要系统,这两个阶段是混合在一起的
一个解决办法:自下而上的汇总
内容选择阶段:使用一个神经序列标注模型来将单词标注为 include
/ don’t-include
自下而上的注意力阶段:seq2seq + attention 系统不能处理 don’t-include
的单词 (使用 mask)
简单但是非常有效!
don’t-include
的单词,所以模型必须学会跳过这些单词并将那些 include
的单词进行摘要与组合核心思路:使用 RL 直接优化 ROUGE-L
有趣的发现
混合模型最好!
对话
包括各种各样的设置
面向任务的对话
社会对话
由于开放式自由 NLG 的难度,前深度学习时代的对话系统经常使用预定义的模板,或从语料库中检索一个适当的反应的反应
摘要过去的研究,自2015年以来有很多论文将seq2seq方法应用到对话,从而导致自由对话系统兴趣重燃
一些早期 seq2seq 对话文章包括
(seq2seq相关内容也可以参考ShowMeAI的NLP教程NLP教程(6) - 神经机器翻译、seq2seq与注意力机制,以及对吴恩达老师课程的总结文章深度学习教程 | Seq2Seq序列模型和注意力机制)
问题:seq2seq 经常产生与用户无关的话语
我不知道
)一个解决方案:不是去优化输入 S S S 到回答 T T T 的映射来最大化给定 S S S 的 T T T 的条件概率,而是去优化输入 S S S 和回复 T T T 之间的最大互信息Maximum Mutual Information (MMI),从而抑制模型去选择那些本来就很大概率的通用句子
log p ( S , T ) p ( S ) p ( T ) \log \frac{p(S, T)}{p(S) p(T)} logp(S)p(T)p(S,T)
T ^ = arg max T { log p ( T ∣ S ) − log p ( T ) } \hat{T}=\underset{T}{\arg \max }\{\log p(T | S)-\log p(T)\} T^=Targmax{logp(T∣S)−logp(T)}
简单的测试修复
条件修复
简单的解决方案
更复杂的解决方案
一个来自斯坦福 NLP 的新数据集
任务:回答关于以一段对话为上下文的文本的问题
答案必须写摘要地(不是复制)
QA / 阅读理解任务,和对话任务
神经网络讲故事的大部分工作使用某种提示
神经故事飞速发展
问题:如何解决缺乏并行数据的问题
回答:使用一个通用的 sentence-encoding space
Skip-thought 向量是一种通用的句子嵌入方法
使用 COCO (图片标题数据集),学习从图像到其标题的 Skip-thought 编码的映射
使用目标样式语料库(Taylor Swift lyrics),训练RNN-LM, 将Skip-thought向量解码为原文
把两个放在一起
Fan 等也提出了一个复杂的 seq2seq prompt-to-story 模型
基于卷积的模型
封闭的多头多尺度的自注意力
结果令人印象深刻
但是
缺失的是什么?
旁注:在神经 NLU (自然语言理解) 领域,已经有大量关于跟踪事件 / 实体 / 状态的工作
将这些方法应用到 NLG是更加困难的
Hafez:Ghazvininejad et al 的诗歌系统
主要思路:使用一个有限状态受体 (FSA) 来定义所有可能的序列,服从希望满足的韵律 (节拍) 约束
例如
更多的诗歌生成的端到端方法 (lau等)
三个组件
作为一个多任务学习问题共同学习
作者发现 meter 和押韵是相对容易的,但生成的诗歌上有些缺乏 情感和可读性
2018年,顾等发表了 Non-autoregressive 神经机器翻译
模型
它并行生成翻译
这具有明显的效率优势,但从文本生成的角度来看也很有趣
架构是基于Transformer 的;最大的区别是,解码器可以运行在测试时并行
基于词重叠的指标 (BLEU,ROUGE,METROR,F1,等等)
Perplexity / 困惑度?
词嵌入基础指标?
没有自动指标充分捕捉整体质量 (即代表人类的质量判断)
但可定义更多的集中自动度量来捕捉生成文本的特定方面
虽然这些不衡量整体质量,他们可以帮助我们跟踪一些我们关心的重要品质
人类的判断被认为是黄金标准
当然,我们知道人类评价是缓慢而昂贵的
但这些问题?
假如获得人类的评估:人类评估解决所有的问题吗?
没有!进行人类有效评估非常困难:
如何要求人的质量判断?
我们尝试了简单的整体质量 (多项选择) 问题,例如:
主要问题:
聊天机器人非常吸引人,因为它总是回写
)发现
语料库级别的评价指标
评估衡量多样性安全权衡的评估指标
免费的人类评估
对抗性鉴别器作为评估指标
将离散潜在变量纳入 NLG
严格的从左到右生成的替代方案
替代 teacher forcing 的最大可能性训练
在NLP+深度学习的早期,社区主要将成功的非机动车交通方法迁移到NLG任务中。
现在,越来越多的创新 NLG 技术出现,针对非 NMT 生成环境。
越来越多 (神经) NLG 研讨会和竞赛,特别关注开放式 NLG
这些对于组织社区提高再现性、标准化评估特别有用
最大障碍是评估!
可以点击 B站 查看视频的【双语字幕】版本
【双语字幕+资料下载】斯坦福CS224n | 深度学习与自然语言处理(2019·全20讲)
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。