资源链接:https://www.bilibili.com/video/BV1r4411
这节课讲的是文本生成(是一个超级超级广的概念,几乎各个地方都可以牵扯到),NLG甚至每个方面都可以开创一个讲座
正课内容
Natural Language Generation (NLG)/文本生成
自然语言生成指的是我们生成(即写入)新文本的任何设置
NLG 包括以下成员:
- 机器翻译
- 摘要
- 对话(闲聊和基于任务)
- 创意写作:讲故事,诗歌创作
- 自由形式问答(即生成答案,从文本或知识库中提取)
- 图像字幕
之前内容重述
之前我们所说的机器问答并不是NLG,因为他只是提取答案
一些疑问回答:语言模型/LM是根据目前已有的文本生成下一个词的模型,如果这么模型是使用RNN完成的,则称为RNN-LM。
件语言建模 是给定之前的单词以及一些其他输入 [公式] ,预测下一个单词的任务:
条件语言建模任务的例子
机器翻译 x=source sentence, y=target sentence
摘要 x=input text, y=summarized text
对话 x=dialogue history, y=next utterance
Recap: training a (conditional) RNN-LM
这是神经机器翻译中的例子,在训练期间,我们将正确的/我们想要的得到的目标句子输入解码器,而不考虑解码器预测的。这种培训方法称为Teacher Forcing(Teacher Forcing, 它是一种网络训练方法,对于开发用于机器翻译,文本摘要,图像字幕的深度学习语言模型以及许多其他应用程序至关重要。它每次不使用上一个state的输出作为下一个state的输入,而是直接使用训练数据的标准答案(ground truth)的对应上一项作为下一个state的输入),这就是如何训练有条件的RNN语言模型
Recap: decoding algorithms
问题:当我们有训练好的条件语言模型后,如何使用它生成文本?
答案:我们需要一个解码算法,解码算法是一种算法,用于从语言模型生成文本
几个星期前我们了解了两种解码算法:贪婪解码+束搜索
贪婪解码
一个简单的算法,在每一步中,取根据语言模型生成的最可能的单词(即argmax),将其用作下一个单词,并在下一步中将其作为输入提供,继续前进,直到您产生<END> 或达到某个最大长度
由于缺乏回溯,输出可能很差,例如,不合语法,不自然,荒谬。
束搜索
一种旨在通过一次跟踪多个可能的序列,找到高概率序列(不一定是最佳序列)的搜索算法
核心思想:在解码器的每一步,跟踪 k 个最可能的部分序列(我们称之为假设),k是光束大小(是一个超参数),达到某个停止标准后,选择概率最高的序列(考虑一些长度调整),样例如下(k=2,绿的的最终结果):
电视上也开始使用束搜索了
改变光束大小k有什么影响?
小的 k 与贪心解码有类似的问题(k = 1时就是贪心解码),不符合语法,不自然,荒谬,不正确
更大的 k 意味着您考虑更多假设,增加k可以减少上述一些问题,但是更大的k在计算上更昂贵,而且增加 k 可能会引入其他问题:
- 对于NMT,增加 k 太多会降低BLEU评分(Tu et al, Koehnet al),可能和我们认为的有所不同,我们认为k越大应该可以找到更好的结果,但是实际上,beam size 和 BLEU 之间存在最优性之间的区别,高概率序列和高的 BLEU 得分是两件独立的事情,这主要是因为大 k 光束搜索产生太短的翻译(即使得分归一化)
- 在闲聊话等开放式任务中,大的 k 会输出非常通用的句子(见下一张幻灯片)
聊天对话中光束大小的影响
低beam size/k
- 更关于话题但是有些重复和经常是没有意义的回答
- 语法差,重复的
高beam size/k
- 安全的反应
- “正确”的反应
- 但它是通用的,不太相关
学生问题:可以自适应的调整k吗?没有明确解答,但是说论文中好像看到过相关介绍,认为是有可能的~
基于采样的解码
介绍的一个全新的解码方式 ,也称为纯采样,在每个步骤t,从概率分布Pt中随机抽样以获取你的下一个单词。
像贪婪的解码,但是是采样而不是argmax。(之所以称为纯采样的原因是将其和top-n采样区分开来)
Top-n 采样
在每个步骤 t ,从Pt的前 n 个最可能的单词中,进行随机采样(即若V = 10, n = 2,就相当于把选择范围限定在了概率排名前两个的单词,再在这两者之间做采样得到一个单词)
与纯采样类似,但截断我们的概率分布
此时,n = 1 是贪婪搜索,n = V 是纯采样,增加n以获得更多样化/风险的输出,减少n以获得更通用/安全的输出,这两者都更多比束搜索更有效率,不用跟踪多个假设
Softmax temperature/Softmax温度
回顾:在时间步 t ,语言模型通过对分数向量使用 softmax 函数计算出概率分布Pt
你可以对 softmax 函数时候用温度超参数
提高温度τ: Pt变得更均匀
因此输出更多样化(概率分布在词汇中)
降低温度 τ : Pt变得更尖锐
因此输出的多样性较少(概率集中在顶层词汇上)
注意:softmax温度不是解码算法!
这是一种可以在测试时结合解码算法(如波束搜索或采样)应用的技术
解码算法:摘要
贪心解码 是一种简单的译码方法;给低质量输出
束搜索 (特别是高beam大小)通过大量不同假设的高概率输出,往往比贪婪搜索提供更好的质量,但是如果 Beam 尺寸太大,可能会返回高概率但不合适的输出(如通用的或是短的)
抽样方法 来获得更多的多样性和随机性,适合开放式/创意代(诗歌,故事),Top-n个抽样允许您控制多样性
Softmax温度控制的另一种方式多样性,它不是一个解码算法!这种技术可以应用在任何解码算法。
NLG
(这个内容太大了,只会讲一部分)
摘要:任务定义
任务:给定输入文本x,写出更短的摘要 y 并包含 x 的主要信息
摘要可以是单文档,也可以是多文档
- 单文档意味着我们写一个文档 x 的摘要 y
- 多文档意味着我们写一个多个文档x1、x2、...、x3的摘要 y,通常x1、x2、...、x3有重叠的内容:如对同一事件的新闻文章
在单文档摘要,有许多不同的但是是真正的数据集,他们可能源文档具有不同长度和风格
Gigaword数据集: 新闻文章的前一两句->标题(即句子压缩)
LCSTS (中文微博)数据集:段落->句子摘要
NYT, CNN/DailyMail数据集: 新闻文章->(多个)句子摘要
Wikihow (new!)数据集: 完整的 how-to 文章->摘要句子
句子简化 是一个不同但相关的任务:将源文本改写为更简单(有时是更短)的版本,相关数据集如下:
Simple Wikipedia数据集:标准维基百科句子 [公式] 简单版本
Newsela数据集:新闻文章 [公式] 为儿童写的版本
Summarization: two main strategies/摘要:两大策略
抽取式摘要/提取摘要/Extractive summarization
- 选择部分(通常是句子)的原始文本来形成摘要(类似于我们用荧光笔画出部分笔记)
- 更简单
- 限定性的(无需解释)
抽象式摘要/抽象概括/Abstractive summarization
- 使用自然语言生成技术生成新的文本(类似我们用钢笔自己写出来)
- 更困难
- 更多变(更人性化)
前神经摘要/Pre-neural summarization
Pre-neural摘要系统大多是抽取式的
类似Pre-neural MT,他们通常有一个通道(通常包括三部分,如下:)
- 1、内容选择 Content selection:选择一些句子
- 2、信息排序 Information ordering:为选择的句子排序
- 3、句子实现 Sentence realization:编辑并输出句子序列例如,简化、删除部分、修复连续性问题)
Pre-neural内容选择算法
我们需要一些句子评分功能来完成这个任务,句子得分函数可以根据
主题关键词,通过计算如tf-idf等和例如这句话出现在文档的哪里(例如高考作文,龙头凤尾猪肚,中间的可能重要性差一点)
图算法 将文档为一组句子(节点),每对句子之间存在边,边的权重与句子相似度成正比,使用图算法来识别图中最重要的句子
Summarization evaluation: ROUGE/摘要的评价:ROUGE
ROUGE (Recall-Oriented Understudy for Gisting Evaluation)
(详细内容可以通过该链接去查询,ROUGE: A Package for Automatic Evaluation of Summaries, Lin, 2004 http://www.aclweb.org/anthology/W04-1013)
类似于 BLEU,是基于 n-gram 覆盖的算法,不同之处在于:
- 没有简洁惩罚
- 基于召回率 recall,BLEU 是基于准确率的。我们可能会想:准确率对于MT来说是更重要的(通过添加简洁惩罚来修正翻译过短),召回率对于摘要来说是更重要的(假设有一个最大长度限制,因为我们希望所包含所有信息的位置不能太长),因为需要抓住更重要的信息。但是,通常使用 F1(结合了准确率和召回率),可能是因为显式最大长度约束导致的(讲解的也不知道为啥使用F1,只说了个可能)
BLEU是一个单一的数字,通常是n=1,2,3,4
通常会为每个n-gram单独得出ROUGE得分,最常使用的是ROUGE-1(基于单子节重叠)、ROUGE-2(基于二元重叠)、ROUGE-L(基于最长公共子序列重叠)
(更多详细信息可以阅读刚刚推荐的文章)
现在有一个python实现的ROUGE,如果做需要这个的项目,可以使用它,会节约一些时间的,地址如下:
Python implementation of ROUGE: https://github.com/google-research/google-research/tree/master/rouge
神经(网络)方法的摘要(2015-至今)
2015: Rush et al. publish the first seq2seq summarization paper,Rush发布了这个论文,形容单文档摘要摘要是一项翻译任务!,因此我们可以使用标准的seq2seq + attention NMT方法来完成,下图是它们做的和使用的,一个标准注意力模型(有点像句子压缩):
(详细内容可以查看:A Neural Attention Model for Abstractive Sentence Summarization, Rush et al, 2015 https://arxiv.org/pdf/1509.00685.pdf)
自2015年以来,有了更多的发展,使其/主题更容易复制,为了防止太多的复制,人们开始研究分层/多层次的注意力机制、更多的全局/高级 的内容选择(如何还记得管道前神经摘要,他们有不同内容的选择算法,可能注意力并不是选择的最好算法,我们需要一种更全面的全局战略,来选择什么是更重要的)、使用RL/强化学习直接最大化 ROUGE 或者其他离散目标(关系内容可能是摘要的长度)、复兴pre-neural 想法(例如图算法的内容选择),把它们变成神经系统
(上述说的很多方法,在NLG的其他领域或者说NLP深度学习其他领域也是实际可用的)
Neural summarization: copy mechanisms/神经摘要:复制机制
Seq2seq+attention systems 善于生成流畅的输出,但是不擅长正确的复制细节(例如罕见字)
复制机制使用注意力机制,使seq2seq系统很容易从输入复制单词和短语到输出,显然这是非常有用的摘要,也允许复制和创造给了我们一个混合了抽取/抽象式的方法
有几篇论文提出了复制机制的变体:
- Language as a Latent Variable: Discrete Generative Models for Sentence Compression, Miao et al, 2016
- Abstractive Text Summarization using Sequence-to-sequence RNNs and Beyond, Nallapati et al, 2016
- Incorporating Copying Mechanism in Sequence-to-Sequence Learning
etc
如何执行复制机制的一个示例:
在每个解码器步骤中,计算这个概率Pgen(生成下一个字,而不是复制它的概率),并且想法是根据我们当前的上下文类型来计算的当前解码器的状态。一旦完成了上述内容,我们就想着要分配注意力了,然后将Pgen和分配的注意力的概率结合,最终分布是生成(又称“词汇表”)分布和复制(即注意)分布的混合(有一篇论文中注意力分配有两个方面,一个用于复制,一个用于参与),如下公式:
(其他内容可以参考:Get To The Point: Summarization with Pointer-Generator Networks, See et al, 2017 https://arxiv.org/pdf/1704.04368.pdf)
复制机制似乎是一个明智的想法,但是复制机制有不少大问题,首先汇总时他们复制太多,主要是长短语,有时甚至整个句子,一个原本应该是抽象的摘要系统,会坍塌为一个主要是抽取/挖掘的系统
另一个问题,他们不善于整体内容的选择,特别是如果输入文档很长的情况下,没有选择内容总体的战略
Neural summarization: better content selection/神经摘要:更好的内容选择
回忆:pre-neural摘要是不同阶段的内容选择和表面实现(即文本生成),标准seq2seq + attention 的摘要系统,这两个阶段是混合在一起的,每一步的译码器(即表面实现),我们也能进行词级别的内容选择(注意力),但是这是不好的:没有全局内容选择策略,一个解决办法:自下而上的汇总/摘要
Bottom-up summarization/自下而上总结/摘要
首先我们有一个内容选择阶段:使用一个神经序列标注模型来将单词标注为 include / don’t-include
自下而上的注意力阶段:seq2seq + attention 系统不能处理 don’t-include 的单词(使用 mask )
简单但是非常有效!
更好的整体内容选择策略
减少长序列的复制(即更摘要的输出)
因为长序列中包含了很多 don’t-include 的单词,所以模型必须学会跳过这些单词并将那些 include 的单词进行摘要与组合
Neural summarization via Reinforcement Learning/基于强化学习的神经摘要
(两年前/2017年的一片论文)
使用 RL 直接优化 ROUGE-L,相比之下,标准的最大似然(ML)训练不能直接优化ROUGE-L,因为它是一个不可微函数
有趣的发现,使用RL代替ML取得更高的ROUGE分数,但是人类判断的得分越低(绿色红色箭头内容)。
论文中的一句话:“我们观察到,ROUGE得分最高的模型也生成了几乎不可读的摘要。”(指标虽然优化了,但是对于真正的任务并没有优化)(就像我们知道,BLEU并不是一个完美的类比,实际的翻译质量也是ROUGE也不说一个完美的类比)
混合模型最好(图中ML+RL,可以获得高分数和人类判别分数)
Dialogue/对话
“对话”包括各种各样的设置
面向任务的对话
- 辅助 (如客户服务、给予建议,回答问题,帮助用户完成任务,如购买或预订)
- 合作 (两个代理通过对话在一起解决一个任务)
- 对抗 (两个代理通过对话完成一个任务)
社会对话
- 闲聊 (为了好玩或公司)
- 治疗/精神健康/心理交流
Pre- and post-neural dialogue/前后神经对话
由于开放式自由NLG的难度,pre-neural对话系统经常使用预定义的模板,或从语料库中检索一个适当的反应的反应
摘要过去的研究,自2015年以来有很多论文将seq2seq方法应用到对话,从而导致自由对话系统兴趣重燃
一些早期seq2seq对话文章包括
- A Neural Conversational Model, Vinyals et al, 2015
- Neural Responding Machine for Short-Text Conversation, Shang et al, 2015
Seq2seq-based dialogue/基于Seq2seq的对话
然而,很快他们就明白简单的应用标准seq2seq +attention的方法在对话(闲聊)任务中有严重的普遍缺陷,例子如下:
- 一般性/无聊的反应
- 无关的反应(与上下文不够相关)
- 话语中重复
- 缺乏上下文(不记得谈话历史)
- 缺乏一致的角色人格
(下面将基于这些缺点进行说明)
Irrelevant response problem/无关响应问题
问题:seq2seq经常产生与用户无关的话语
要么因为它是通用的(例如,“我不知道”)或者与主题无关
一个解决方案:不是去优化输入 S 到回答 T 的映射来最大化给定 S 的 T 的条件概率,而是去优化输入S 和回复 T 之间的最大互信息Maximum Mutual Information (MMI),从而抑制模型去选择那些本来就很大概率的通用句子(其实就是最好尝试改变训练目标而不是企图去优化当前目标下的算法),详细内容请查看:A Diversity-Promoting Objective Function for Neural Conversation Models, Li et al, 2016 https://arxiv.org/pdf/1510.03055.pdf
Genericness / boring response problem/一般性/无聊的反应问题
简单的测试时修复
- 直接在束搜索中直接升级/增大罕见字的概率,这样在搜索过程中更容易产生罕见字
- 使用抽样解码算法(例如softmax温度)而不是Beam搜索
条件修复(类似于后期干预,这是一种非常好的方法,可以从采样中获得细粒度的细节,然后编辑它以适应当前情况)
- 用一些额外的内容训练解码器(如抽样一些内容词并处理)
- 训练 retrieve-and-refine/检索和优化模型而不是 generate-from-scratch/从头开始生成模型,检索和优化模型即从语料库采样人类话语并编辑以适应当前的场景,这通常产生更加多样化/人类/有趣的话语!
Repetition problem/重复问题
简单解决方案,直接在 Beam 搜索中禁止重复n-grams,通常非常有效
更复杂的解决方案,在seq2seq中训练一个覆盖机制,这是客观的,灵感来自于机器翻译的设置,可以防止注意力机制多次注意相同的单词,定义训练目标以阻止重复,如果这是一个不可微函数生成的输出,然后将需要一些技术例如RL来训练
Lack of consistent persona problem/缺乏一致的人物角色问题
2016年,李等人提出了一个seq2seq对话模式,学会将两个对话伙伴的角色编码为嵌,生成的话语是以嵌入为条件的
最近有一个闲聊的数据集称为PersonaChat,包括每一次会话的角色(描述个人特质的5个句子的集合),这提供了一种简单的方式,让研究人员构建 persona-conditional 对话代理
相关论文:
A Persona-Based Neural Conversation Model, Li et al 2016
Personalizing Dialogue Agents: I have a dog, do you have pets too?, Zhang et al, 2018
(下面内容,直到图片生成老师都没讲,这里只放课件内容了)
Negotiation dialogue/谈判对话
2017年,Lewis et al收集谈判对话数据集
- 两个代理协商谈判对话(通过自然语言)如何分配一组项目
- 代理对项目有不同的估值函数
- 代理人会一直交谈直到达成协议
详细内容请了解:Deal or No Deal? End-to-End Learning for Negotiation Dialogues, Lewis et al, 2017 https://arxiv.org/pdf/1706.05125.pdf
他们发现用标准的最大似然(ML)来训练seq2seq系统的产生了流利但是缺乏策略的对话代理,和Paulus等的摘要论文一样,他们使用强化学习来优化离散奖励(代理自己在训练自己),RL 的基于目的的目标函数与 ML 目标函数相结合
但是存在潜在的陷阱:如果两两对话时,代理优化的只是RL目标,他们可能会偏离英语
详细内容请了解:
- This observation led to an unfortunate media over-reaction: https://www.skynettoday.com/briefs/facebook-chatbot-language/
- Deal or No Deal? End-to-End Learning for Negotiation Dialogues, Lewis et al, 2017 https://arxiv.org/pdf/1706.05125.pdf
在测试时,该模型通过计算展开在可能的响应之间进行选择:模拟对话的其余部分和预期的回报。
2018年,Yarats等人针对谈判任务提出了另一种对话模型,将策略层次与NLG层面分开
?每个话语xt都有一个对应的离散潜在变量zt
?zt学习成为一个很好的预测对话中的未来事件的预测器(未来的消息,策略的最终收获),但不是xt本身的预测器
?这意味着zt学会了表达xt对对话的影响,而不是 xt的话
?因此,zt将任务的策略层次与NLG方面分开。
?这对于可控性、可解释性、更容易学习的策略等都很有用。
详细内容请查阅:Hierarchical Text Generation and Planning for Strategic Dialogue, Yarats et al, 2018 https://arxiv.org/pdf/1712.05846.pdf
(这个图可以自己了解了解...因为没讲,我也不懂...)
Conversational question answering: CoQA/会话式问答:CoQA
一个来自斯坦福NLP的新数据集
任务:回答关于以一段对话为上下文的文本的问题
答案必须写摘要地(不是复制)
QA / 阅读理解任务,和对话任务
详细内容请了解:CoQA: a Conversational Question Answering Challenge, Reddy et al, 2018 https://arxiv.org/pdf/1808.07042.pdf
Storytelling/讲故事
(差不多开始回归正课内容了)
神经讲故事的大部分工作使用某种提示来写故事
- 给定图像生成的故事情节段落
- 给定一个简短的写作提示生成一个故事
- 给定迄今为止的故事,生成故事的下一个句子(故事续写)
这和前两个不同,因为我们不关心系统在几个生成的句子上的性能
神经故事飞速发展:第一个故事研讨会于2018年举行,它举行比赛(使用五张图片的序列生成一个故事)
Generating a story from an image/从图像生成故事
有趣的是,这不是简单的有监督的图像字幕。没有可供学习的配对数据。
问题:如何解决缺乏并行数据的问题
回答:使用一个通用的 sentence-encoding space
Skip-thought 向量是一种通用的句子嵌入方法,想法类似于我们如何学通过预测周围的文字来学习单词的嵌入,使用 COCO (图片标题数据集),学习从图像到其标题的 Skip-thought 编码的映射,使用目标样式语料库(Taylor Swift lyrics),训练RNN-LM, 将Skip-thought向量解码为原文,把两个放到在一起
Generating a story from a writing prompt/根据写作提示生成故事
- 2018年,Fan 等发布了一个新故事生成数据集 collected from Reddit’s WritingPrompts subreddit.
- 每个故事都有一个相关的简短写作提示
Fan 等也提出了一个复杂的 seq2seq prompt-to-story 模型
convolutional-based,这使它的速度比RNN-based seq2seq更快
封闭的多头多尺度的self-attention
- self-attention 对于捕获远程上下文而言十分重要
- 门控允许更有选择性的注意机制
- 不同的注意力头在不同的尺度上注意不同的东西——这意味着有不同的注意机制用于检索细粒度和粗粒度的信息
模型融合
- 预训练一个seq2seq模型,然后训练第二个 seq2seq 模型访问的第一个 model 的隐状态
- 想法是,第一seq2seq模型学习通用LM,第二个model学习基于提示的条件
细节老师没过多解释,想了解最新的文本生成的可以自己了解下~
结果令人印象深刻
- 与提示相关
- 多样化,并不普通
- 在文体上戏剧性
但是
- 主要是氛围/描述性/场景设定,很少是事件/情节
- 生成更长时,大多数停留在同样的想法并没有产生新的想法——一致性问题
(剩下课件大部分内容都是略过了,直接进行NLG评估部分)
NLG evaluation/NLG评估
NLG的自动评估指标
基于词重叠的指标(BLEU,ROUGE,METROR,F1,等等),我们知道他们不适合机器翻译,对于摘要而言是更差的评价标准,因为摘要比机器翻译更开放
不幸的是,与抽象摘要系统相比,提取摘要系统更受ROUGE青睐,对于对话甚至更糟,这比摘要更开放,类似的例子还有故事生成
Word overlap metrics are not good for dialogue/单词重叠度量不利于对话
橙色部分想我们展示:对话类和BLEU-2上人类得分之间相关性的一些图,但是我们根本没看到多少相关性,也就是 BLEU-2、Embedding average 和人类评价的相关性都不高,很不幸的是,还有一些其他论文表明了同样的事情,如下图:
Automatic evaluation metrics for NLG/NLG的自动评估指标
困惑度怎么样?
困惑度捕捉到我们的LM有多强大?但是不会告诉你关于生成的任何事情(例如,如果你的困惑度是未改变的,解码算法是不好的)
简单说困惑度会告诉我们模型有多强,但是不会告诉我们模型有多好~
词嵌入基础指标?
主要思想:比较词嵌入的相似度(或词嵌入的均值),而不仅仅是重叠的单词。以更灵活的方式捕获语义。
不幸的是,仍然没有与类似对话的开放式任务的人类判断,产生很好的联系
(图中橙色部分显示了人类之间的相关性、判断以及基于词嵌入度量的某种平均值,看起来并不好,没有很大的相关性)
我们没有自动指标充分捕捉整体质量(即代表人类的质量判断),我们能做什么呢?
通常策略是:我们可以定义更多的集中自动度量来捕捉生成文本的特定方面,如下:(不会告诉我们模型多么准确,但是会告诉我们多么流利、风格是否正确等等)
- 流利性(使用训练好的LM计算概率)
- 正确的风格(使用目标语料库上训练好的LM的概率)
- 多样性(罕见的用词,n-grams 的独特性)
- 相关输入(语义相似性度量)
- 简单的长度和重复
- 特定于任务的指标,如摘要的压缩率
虽然这些不衡量整体质量,他们可以帮助我们跟踪一些我们关心的重要品质
Human evaluation/人类评估
人类的判断被认为是黄金标准,当然,我们知道人类评价是缓慢而昂贵的
但是仅这些问题吗?还有金钱时间等因素
假如我们获得无限的人类的评估:实际上解决你所有的问题吗?
不!
因为进行人类有效评估非常困难,存在许多问题,例如:
- 人类评估是不一致的
- 人类评估可能是不合逻辑的
- 人类评估失去注意力
- 人类评估误解了你的问题
- 人类评估不能总是解释为什么他们会这样做
Detailed human eval of controllable chatbots/可控聊天机器人的详细人类评估
这个博士生在聊天机器人项目上工作的个人经验(PersonaChat),她们研究了可控性(特别是控制所产生的话语,如重复,特异性,回应相关性和问题询问)
详细资料:What makes a good conversation? How controllable attributes affect human judgments, See et al, 2019 https://arxiv.org/pdf/1902.08654.pdf
如何要求人的质量判断?
我们尝试了简单的整体质量(多项选择)问题,例如:
- 这次对话有多好?
- 这个用户有多吸引人?
- 这些用户中哪一个给出了更好的响应?
- 您想再次与该用户交谈吗?
- 您认为该用户是人还是机器人?
主要问题:
- 必然非常主观
- 回答者有不同的期望;这会影响他们的判断
- 对问题的灾难性误解(例如“聊天机器人非常吸引人,因为它总是回写”)
- 总体质量取决于许多潜在因素;他们应该如何被称重和/或比较?
最后,我们设计了一个详细的人的评估系统,该系统将影响聊天机器人整体质量的重要因素分离出来:
发现:
- 控制重复对于所有人类判断都非常重要
- 提出更多问题可以提高参与度
- 控制特异性(较少的通用话语)提高了聊天机器人的吸引力,趣味性和感知的听力能力。
- 但是,人类评估人员对风险的容忍度较低(例如无意义或非流利的输出)与较不通用的机器人相关联
- 总体度量“吸引力”(即享受)很容易最大化 - 我们的机器人达到了近乎人性化的表现
- 整体度量“人性化”(即图灵测试)根本不容易最大化 - 所有机器人远远低于人类表现
- 人性化与会话质量不一样!
- 人类是次优的会话主义者:他们在有趣,流利,倾听上得分很低,并且问的问题太少
Possible new avenues for NLG eval?
- 语料库级别的评价指标
- 度量应独立应用于测试集的每个示例,或整个语料库的函数
- 例如,如果对话模型对测试集中的每一个例子回答相同的通用答案,它应该被惩罚
- 评估衡量多样性安全权衡的评估指标
- 免费的人类评估
- 游戏化:使任务(例如与聊天机器人交谈)变得有趣,这样人类就可以为免费提供监督和隐式评估,作为评估指标
- 对抗性鉴别器作为评估指标
- 测试NLG系统是否能愚弄经过训练能够区分人类文本和AI生成的文本的识别器
Thoughts on NLG research, current trends, and the future/关于NLG研究、当前趋势和未来的思考
目前有三个令人兴奋的发展趋势(我看不懂55555)
- 将离散潜在变量纳入NLG,可以帮助在真正需要它的任务中建模结构,例如讲故事,任务导向对话等
- 严格的从左到右生成的替代方案,并行生成,迭代细化,自上而下生成较长的文本
- 替代teacher forcing的最大可能性培训,更全面的句子级别的目标函数(而不是单词级别)
5年前,NLP+深度学习研究像一个狂野的西部,一切都是新的,充满了不确定性
现在(2019年),已经没有那么狂野了…但NLG似乎是剩下最疯狂的部分之一
Neural NLG community is rapidly maturing/神经NLG社区正在迅速成熟
在NLP+深度学习的早期,社区主要将成功的非机动车交通方法转移到NLG任务中。
现在,越来越多的创新NLG技术出现,针对非NMT生成环境。
越来越多(神经)NLG研讨会和竞赛,特别关注开放式NLG,例如:
- NeuralGen workshop
- Storytelling workshop
- Alexa challenge
- ConvAI2 NeurIPS challenge
这些对于组织社区提高再现性、标准化评估特别有用,进步的最大障碍仍然是评估
8 things I’ve learnt from working in NLG/我在NLG工作学到的8件事
1、任务越开放,一切就越困难(评估变得困难,定义正在做的事情变得困难,告诉我们什么时候做的好了变得困难)
- 约束有时是受欢迎的
2、针对具体的改进目标可以更容易管理,而不是为了提高整体生成质量(例如为模型增加多样性,可能更容易实现和衡量,而不是因为评估问题而提高整体生成质量)
3、如果你使用一个LM作为NLG:改进LM(即困惑)最有可能提高生成质量(但也不是唯一提高生成质量的方法)
- 但这并不是提高生成质量的唯一途径
4、多看看我们的输出(一部分原因是没有任何单一指标可以告诉我们发生了什么,所以看看自己的输出以形成自己的意见,虽然比较耗时间,但是值得我们这么做)
5、你需要一个自动度量,即使它是不受影响的
- 您可能需要几个自动度量(之前也说过:越开放,可能需要越多的指标,例如流畅度、多样性等等)
6、如果我们做了人工评估,让问题尽可能的集中(如果开放性问题定义的非常模糊,可能别人也没法很好的评价)
7、在今天的NLP + 深度学习和 NLG中,再现性是一个巨大的问题。(NLG中更大)
- 请公开发布所有生成的输出以及您的论文(多分享,可能就是别人突变性成就的参考)
8、在NLG工作可能很令人沮丧(可能不知道怎么取得进步),但也很有趣
最后来一个主讲者聊天机器人的一些奇怪对话