本文主要讲解自然语言生成的神经方法(NLG)的一般性应用和发展概况。

一.概述:LMs和解码算法

     NLG  自然语言生成(NLG)指的是我们生成(即写入)新文本的任何设置。包括:机器翻译、文本摘要、对话、创意写作(讲故事、诗歌创作)、问答系统、图形字幕等等。

    语言建模: 是给定之前的单词,预测下一个单词的任务。一个产生这一概率分布的系统叫做 语言模型。如果系统使用 RNN,则被称为 RNN-LM

 

OpenNLP 自然语言生成 自然语言生成算法_OpenNLP 自然语言生成

    条件语言建模 是给定之前的单词以及一些其他输入 x ,预测下一个单词的任务。

OpenNLP 自然语言生成 自然语言生成算法_OpenNLP 自然语言生成_02

        RNN-LM神经机器翻译中的例子

OpenNLP 自然语言生成 自然语言生成算法_OpenNLP 自然语言生成_03

  • 在训练期间,我们将正确的(又名引用)目标句子输入解码器,而不考虑 解码器预测的。这种培训方法称为 Teacher Forcing

   解码算法

  • 贪心解码greedy decoding

       在每一步中,取最可能的单词(即argmax),将其用作下一个单词,并在下一步中将其作为输入提供继续前进,直到您产生 <END>或达到某个最大长度。缺乏回溯,输出可能很差

  • Beam搜索 (特别是高beam大小)搜索高概率输出

      一种旨在通过一次跟踪多个可能的序列,找到高概率序列(不一定是最佳序列)的搜索算法。核心思想:在解码器的每一步,跟踪 k 个最可能的部分序列(我们称之为假设),k是光束大小,达到某个停止标准后,选择概率最高的序列(考虑一些长度调整)。比贪婪提供更好的质量,但是如果 Beam 尺寸太大,可能会返回高概率但不合适的输出(如通用的或是短的),且计算量更大。

  • 抽样方法 来获得更多的多样性和随机性

     纯采样:在每个步骤t,从概率分布 Pt中随机抽样以获取你的下一个单词。像贪婪的解码,但是是采样而不是argmax。

     Top-n 采样:在每个步骤 t ,从 Pt的前 n 个最可能的单词中,进行随机采样,与纯采样类似,但截断概率分布。增加n以获得更多样化/风险的输出;减少n以获得更通用/安全的输出。这两者都更多比光束搜索更有效率,不用跟踪多个假设

 

  • Softmax 温度控制 的另一种方式多样性
  • 它不是一个解码算法!这种技术可以应用在任何解码算法。

OpenNLP 自然语言生成 自然语言生成算法_搜索_04

二.NLG tasks and neural approaches to them

   2.1 文本摘要

        1)文本摘要分成两种策略:

          抽取式摘要 选择部分(通常是句子)的原始文本来形成摘要。更简单,限定性的(无需解释)

          抽象式摘要 :使用自然语言生成技术 生成新的文本。更困难,更多变(更人性化)

          评估方法ROUGE

OpenNLP 自然语言生成 自然语言生成算法_搜索_05

           类似于 BLEU,是基于 n-gram 覆盖的算法,不同之处在于:

           没有简洁惩罚,基于召回率 recall,BLEU 是基于准确率的。 可以说,准确率对于MT 来说是更重要的(通过添加简洁惩罚来修正翻译过短),召回率对于摘要来说是更重要的(假设你有一个最大长度限制),因为需要抓住重要的信息。但是,通常使用 F1(结合了准确率和召回率)

       2)Pre-neural summarization

OpenNLP 自然语言生成 自然语言生成算法_召回率_06


         Pre-neural摘要系统大多是抽取式的,他们通常有一个流水线

            内容选择 Content selection:选择一些句子

            信息排序 Information ordering:为选择的句子排序

            句子实现 Sentence realization:编辑并输出句子序列例如,简化、删除部分、修复连续性问题)

        Pre-neural 内容选择 算法

          句子得分函数: 可以根据主题关键词,通过计算如tf-idf等特性,例如这句话出现在文档的哪里

          图算法: 将文档为一组句子(节点),每对句子之间存在边边的权重与句子相似度成正比,使用图算法来识别图中最重要的句子。

    3)Neural summarization (2015 - present)

        自2015年以来,基于神经网络的文本摘要有了更多的发展

  • 使其更容易复制,也防止太多的复制
  • 分层/多层次的注意力机制
  • 更多的 全局/高级 的内容选择
  • 使用 RL 直接最大化 ROUGE 或者其他离散目标(例如长度)
  • 复兴 pre-neural 想法(例如图算法的内容选择),把它们变成神经系统

    复制机制

       复制机制使用注意力机制,使seq2seq系统很容易从输入复制单词和短语到输出。

OpenNLP 自然语言生成 自然语言生成算法_OpenNLP 自然语言生成_07

  • 复制机制的问题,他们有时复制得太多,比如长短语甚至是整个句子,这就会崩溃成为一个主要是抽取的摘要系统。
  • 另一个问题他们不善于整体内容的选择,特别是如果输入文档很长的情况下没有选择内容的总体战略

   自下而上摘要

  • 内容选择阶段:使用一个神经序列标注模型来将单词标注为 include / don’t-include
  • 自下而上的注意力阶段:seq2seq + attention 系统不能处理 don’t-include 的单词(使用 mask )

OpenNLP 自然语言生成 自然语言生成算法_OpenNLP 自然语言生成_08

   通过强化学习的神经摘要

  • 使用 RL 直接优化 ROUGE-L
  • 相比之下,标准的最大似然(ML)训练不能直接优化ROUGE-L,因为它是一个不可微函数
  • 有趣的发现
  • 使用RL代替ML取得更高的ROUGE分数,但是人类判断的得分越低
  • 混合模型最好

  2.2 对话系统

      “对话”包括各种各样的设置

  • 面向任务的对话
  • 辅助 (如客户服务、给予建议,回答问题,帮助用户完成任务,如购买或预订)
  • 合作 (两个代理通过对话在一起解决一个任务)
  • 对抗 (两个代理通过对话完成一个任务)
  • 社会对话
  • 闲聊 (为了好玩或公司)
  • 治疗/精神健康

      1)Pre- and post-neural dialogue     

  • 由于开放式自由NLG的难度,pre-neural对话系统经常使用预定义的模板,或从语料库中检索一个适当的反应的反应
  • 摘要过去的研究,自2015年以来有很多论文将seq2seq方法应用到对话,从而导致自由对话系统兴趣重燃
  • 一些早期seq2seq对话文章包括

     2)Seq2seq-based dialogue

      然而,很快他们就明白简单的应用标准seq2seq +attention 的方法在对话(闲聊)任务中有严重的普遍缺陷

  • 一般性/无聊的反应
  • 无关的反应(与上下文不够相关)
  • 重复
  • 缺乏上下文(不记得谈话历史)
  • 缺乏一致的角色人格

    无关紧要的反应问题

  • 问题:seq2seq经常产生与用户无关的话语
  • 要么因为它是通用的(例如,“我不知道”)
  • 或因为改变话题为无关的一些事情
  • 一个解决方案:不是去优化输入 S 到回答 T 的映射来最大化给定 S 的 T 的条件概率,而是去优化输入S 和回复 T 之间的最大互信息Maximum Mutual Information (MMI),从而抑制模型去选择那些本来就很大概率的通用句子

        

OpenNLP 自然语言生成 自然语言生成算法_搜索_09

     一般性/无聊的响应问题

  • 简单的测试时修复
  • 直接在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

OpenNLP 自然语言生成 自然语言生成算法_对话系统_10

Hierarchical Text Generation and Planning for Strategic Dialogue, Yarats et al, 2018

OpenNLP 自然语言生成 自然语言生成算法_搜索_11

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

OpenNLP 自然语言生成 自然语言生成算法_OpenNLP 自然语言生成_12

Strategies for Structuring Story Generation, Fan et al, 2019

OpenNLP 自然语言生成 自然语言生成算法_召回率_13

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

  1. 任务越开放,一切就越困难。约束有时是受欢迎的
  2. 针对特定改进的目标比旨在提高整体生成质量更易于管理
  3. 如果你使用一个LM作为NLG:改进LM(即困惑)最有可能提高生成质量,但这并不是提高生成质量的唯一途径
  4. 多看看你的输出
  5. 你需要一个自动度量,即使它是不受影响的,您可能需要几个自动度量
  6. 如果你做了人工评估,让问题尽可能的集中
  7. 在今天的NLP + 深度学习和 NLG中,再现性是一个巨大的问题。
  8. 在NLG工作可能很令人沮丧,但也很有趣