本文主要讲解自然语言生成的神经方法(NLG)的一般性应用和发展概况。
一.概述:LMs和解码算法
NLG: 自然语言生成(NLG)指的是我们生成(即写入)新文本的任何设置。包括:机器翻译、文本摘要、对话、创意写作(讲故事、诗歌创作)、问答系统、图形字幕等等。
语言建模: 是给定之前的单词,预测下一个单词的任务。一个产生这一概率分布的系统叫做 语言模型。如果系统使用 RNN,则被称为 RNN-LM
条件语言建模: 是给定之前的单词以及一些其他输入 x ,预测下一个单词的任务。
RNN-LM:神经机器翻译中的例子
- 在训练期间,我们将正确的(又名引用)目标句子输入解码器,而不考虑 解码器预测的。这种培训方法称为 Teacher Forcing
解码算法:
- 贪心解码(greedy decoding)
在每一步中,取最可能的单词(即argmax),将其用作下一个单词,并在下一步中将其作为输入提供继续前进,直到您产生 <END>或达到某个最大长度。缺乏回溯,输出可能很差
- Beam搜索 (特别是高beam大小)搜索高概率输出
一种旨在通过一次跟踪多个可能的序列,找到高概率序列(不一定是最佳序列)的搜索算法。核心思想:在解码器的每一步,跟踪 k 个最可能的部分序列(我们称之为假设),k是光束大小,达到某个停止标准后,选择概率最高的序列(考虑一些长度调整)。比贪婪提供更好的质量,但是如果 Beam 尺寸太大,可能会返回高概率但不合适的输出(如通用的或是短的),且计算量更大。
- 抽样方法 来获得更多的多样性和随机性
纯采样:在每个步骤t,从概率分布 Pt中随机抽样以获取你的下一个单词。像贪婪的解码,但是是采样而不是argmax。
Top-n 采样:在每个步骤 t ,从 Pt的前 n 个最可能的单词中,进行随机采样,与纯采样类似,但截断概率分布。增加n以获得更多样化/风险的输出;减少n以获得更通用/安全的输出。这两者都更多比光束搜索更有效率,不用跟踪多个假设
- Softmax 温度控制 的另一种方式多样性
- 它不是一个解码算法!这种技术可以应用在任何解码算法。
二.NLG tasks and neural approaches to them
2.1 文本摘要
1)文本摘要分成两种策略:
抽取式摘要 :选择部分(通常是句子)的原始文本来形成摘要。更简单,限定性的(无需解释)
抽象式摘要 :使用自然语言生成技术 生成新的文本。更困难,更多变(更人性化)
评估方法:ROUGE
类似于 BLEU,是基于 n-gram 覆盖的算法,不同之处在于:
没有简洁惩罚,基于召回率 recall,BLEU 是基于准确率的。 可以说,准确率对于MT 来说是更重要的(通过添加简洁惩罚来修正翻译过短),召回率对于摘要来说是更重要的(假设你有一个最大长度限制),因为需要抓住重要的信息。但是,通常使用 F1(结合了准确率和召回率)
2)Pre-neural summarization
Pre-neural摘要系统大多是抽取式的,他们通常有一个流水线
内容选择 Content selection:选择一些句子
信息排序 Information ordering:为选择的句子排序
句子实现 Sentence realization:编辑并输出句子序列例如,简化、删除部分、修复连续性问题)
Pre-neural 内容选择 算法
句子得分函数: 可以根据主题关键词,通过计算如tf-idf等特性,例如这句话出现在文档的哪里
图算法: 将文档为一组句子(节点),每对句子之间存在边边的权重与句子相似度成正比,使用图算法来识别图中最重要的句子。
3)Neural summarization (2015 - present)
自2015年以来,基于神经网络的文本摘要有了更多的发展
- 使其更容易复制,也防止太多的复制
- 分层/多层次的注意力机制
- 更多的 全局/高级 的内容选择
- 使用 RL 直接最大化 ROUGE 或者其他离散目标(例如长度)
- 复兴 pre-neural 想法(例如图算法的内容选择),把它们变成神经系统
复制机制
复制机制使用注意力机制,使seq2seq系统很容易从输入复制单词和短语到输出。
- 复制机制的问题,他们有时复制得太多,比如长短语甚至是整个句子,这就会崩溃成为一个主要是抽取的摘要系统。
- 另一个问题他们不善于整体内容的选择,特别是如果输入文档很长的情况下没有选择内容的总体战略
自下而上摘要
- 内容选择阶段:使用一个神经序列标注模型来将单词标注为 include / don’t-include
- 自下而上的注意力阶段:seq2seq + attention 系统不能处理 don’t-include 的单词(使用 mask )
通过强化学习的神经摘要
- 使用 RL 直接优化 ROUGE-L
- 相比之下,标准的最大似然(ML)训练不能直接优化ROUGE-L,因为它是一个不可微函数
- 有趣的发现
- 使用RL代替ML取得更高的ROUGE分数,但是人类判断的得分越低
- 混合模型最好
2.2 对话系统
“对话”包括各种各样的设置
- 面向任务的对话
- 辅助 (如客户服务、给予建议,回答问题,帮助用户完成任务,如购买或预订)
- 合作 (两个代理通过对话在一起解决一个任务)
- 对抗 (两个代理通过对话完成一个任务)
- 社会对话
- 闲聊 (为了好玩或公司)
- 治疗/精神健康
1)Pre- and post-neural dialogue
- 由于开放式自由NLG的难度,pre-neural对话系统经常使用预定义的模板,或从语料库中检索一个适当的反应的反应
- 摘要过去的研究,自2015年以来有很多论文将seq2seq方法应用到对话,从而导致自由对话系统兴趣重燃
- 一些早期seq2seq对话文章包括
- A Neural Conversational Model, Vinyals et al, 2015
https://arxiv.org/pdf/1506.05869.pdf - Neural Responding Machine for Short-Text Conversation, Shang et al, 2015
https://www.aclweb.org/anthology/P15-1152
2)Seq2seq-based dialogue
然而,很快他们就明白简单的应用标准seq2seq +attention 的方法在对话(闲聊)任务中有严重的普遍缺陷
- 一般性/无聊的反应
- 无关的反应(与上下文不够相关)
- 重复
- 缺乏上下文(不记得谈话历史)
- 缺乏一致的角色人格
无关紧要的反应问题
- 问题:seq2seq经常产生与用户无关的话语
- 要么因为它是通用的(例如,“我不知道”)
- 或因为改变话题为无关的一些事情
- 一个解决方案:不是去优化输入 S 到回答 T 的映射来最大化给定 S 的 T 的条件概率,而是去优化输入S 和回复 T 之间的最大互信息Maximum Mutual Information (MMI),从而抑制模型去选择那些本来就很大概率的通用句子
一般性/无聊的响应问题
- 简单的测试时修复
- 直接在Beam搜索中增大罕见字的概率
- 使用抽样解码算法而不是Beam搜索
- 条件修复
- 用一些额外的内容训练解码器(如抽样一些内容词并处理)
- 训练 retrieve-and-refine 模型而不是 generate-from-scratch 模型
- 即从语料库采样人类话语并编辑以适应当前的场景
- 这通常产生更加多样化/人类/有趣的话语!
重复的问题
- 直接在 Beam 搜索中禁止重复n-grams
- 通常非常有效
- 更复杂的解决方案
- 在seq2seq中训练一个覆盖机制,这是客观的,可以防止注意力机制多次注意相同的单词
- 定义训练目标以阻止重复
- 如果这是一个不可微函数生成的输出,然后将需要一些技术例如RL来训练
缺乏一致的人物角色问题
- 2016年,李等人提出了一个seq2seq对话模式,学会将两个对话伙伴的角色编码为嵌
- 生成的话语是以嵌入为条件的
- 最近有一个闲聊的数据集称为PersonaChat,包括每一次会话的角色(描述个人特质的5个句子的集合)
- 这提供了一种简单的方式,让研究人员构建 persona-conditional 对话代理
3)Negotiation dialogue
Deal or No Deal? End-to-End Learning for Negotiation Dialogues, Lewis et al, 2017
Hierarchical Text Generation and Planning for Strategic Dialogue, Yarats et al, 2018
2.4 故事生成
神经讲故事的大部分工作使用某种提示
- 给定图像生成的故事情节段落
- 给定一个简短的写作提示生成一个故事
- 给定迄今为止的故事,生成故事的下一个句子(故事续写)
讲故事的挑战:
- 事件和它们之间的因果关系结构
- 人物,他们的个性、动机、历史、和其他人物之间的关系
- 世界(谁、是什么和为什么)
- 叙事结构(如说明 →冲突 →解决)
- 良好的叙事原则(不要引入一个故事元素然后从未使用它)
发展进程:
Generating Stories about Image
类似于我们如何学通过预测周围的文字来学习单词的嵌入,使用 COCO (图片标题数据集),学习从图像到其标题的 Skip-thought 编码的映射,使用目标样式语料库(Taylor Swift lyrics),训练RNN-LM, 将Skip-thought向量解码为原文。
Hierarchical Neural Story Generation, Fan et al, 2018
1) convolutional-based,这使它的速度比RNN-based seq2seq
- 2)封闭的多头多尺度的self-attention
- self-attention 对于捕获远程上下文而言十分重要
- 门控允许更有选择性的注意机制
- 不同的注意力头在不同的尺度上注意不同的东西——这意味着有不同的注意机制用于检索细粒度和粗粒度的信息
- 3)模型融合
- 预训练一个seq2seq模型,然后训练第二个 seq2seq 模型访问的第一个 model 的隐状态
- 想法是,第一seq2seq模型学习通用LM,第二个model学习基于提示的条件
Event Representations for Automated Story Generation with Deep Neural Nets, Martin et al, 2018
Strategies for Structuring Story Generation, Fan et al, 2019
2.5 诗歌生成
Generating Topical Poetry, Ghazvininejad et al, 2016
使用一个有限状态受体(FSA)来定义所有可能的序列,服从希望满足的节奏约束,然后使用FSA约束RNN-LM的输出。
Hafez: an Interactive Poetry Generation System, Ghazvininejad et al, 2017
作者制作了系统交互和用户可控。控制方法很简单:在Beam搜索中,增大具有期望特征的单词的分数
Deep-speare: A joint neural model of poetic language, meter and rhyme, Lau et al, 2018
三个组件:语言模型、pentameter model、rhyme model 韵律模型;作为一个多任务学习问题共同学习。
2.6 翻译系统
Non-Autoregressive Neural Machine Translation, Gu et al, 2018
它不是根据之前的每个单词,从左到右产生翻译,它并行生成翻译,这具有明显的效率优势,但从文本生成的角度来看也很有趣;架构是基于Transformer 的;最大的区别是,解码器可以运行在测试时并行。
三. NLG evaluation
3.1 基于词重叠的指标(BLEU,ROUGE,METROR,F1,等等)
- 不适用于开放性NLG任务,如生成式摘要、开发式对话系统,机器翻译等。
3.2 困惑度
- 捕捉你的LM有多强大,但是不会告诉你关于生成的任何事情(例如,如果你的困惑度是未改变的,解码算法是不好的)
3.3 词嵌入基础指标
- 主要思想:比较词嵌入的相似度(或词嵌入的均值),而不仅仅是重叠的单词。以更灵活的方式捕获语义。
- 不幸的是,仍然没有与类似对话的开放式任务的人类判断,产生很好的联系
3.4 人类评估
- 问题与困难:缓慢且成本很高。还会存在一下问题:是不一致的、可能是不合逻辑的、失去注意力、误解了你的问题、不能总是解释为什么他们会这样做
3.5 可能存在的新的方式
- 语料库级别的评价指标
- 度量应独立应用于测试集的每个示例,或整个语料库的函数
- 例如,如果对话模型对测试集中的每一个例子回答相同的通用答案,它应该被惩罚
- 评估衡量多样性安全权衡的评估指标
- 免费的人类评估
- 游戏化:使任务(例如与聊天机器人交谈)变得有趣,这样人类就可以为免费提供监督和隐式评估,作为评估指标
- 对抗性鉴别器作为评估指标
- 测试NLG系统是否能愚弄经过训练能够区分人类文本和AI生成的文本的识别器
四.Thoughts on NLG research, current trends, and the future
- 任务越开放,一切就越困难。约束有时是受欢迎的
- 针对特定改进的目标比旨在提高整体生成质量更易于管理
- 如果你使用一个LM作为NLG:改进LM(即困惑)最有可能提高生成质量,但这并不是提高生成质量的唯一途径
- 多看看你的输出
- 你需要一个自动度量,即使它是不受影响的,您可能需要几个自动度量
- 如果你做了人工评估,让问题尽可能的集中
- 在今天的NLP + 深度学习和 NLG中,再现性是一个巨大的问题。
- 在NLG工作可能很令人沮丧,但也很有趣