0%

cs224n-12.自然语言生成

内容回顾

Beam Search:不同K的区别

  1. 小K值可能导致生成序列效果较差(语法上、语义上、流畅度上)
  2. 大K值虽然能够解决以上问题,但是会带来更多的计算成本,一定程度上减低NMT任务中的BLUE分数
    • 开放式问答任务中,更大的K可能导致 回答更加的宽泛(与原问题的关联度更低)

其他的解决方案

  1. Sampling-based decoding(与Beam search不同在于decoder每一步只需要追踪一个词)
    • Pure Sampling:每次随机选择概率分布中的某一个词,作为decoder输出词
    • Top-n Sampling:每次从前N个概率大小词语中选择某一个词,作为decoder输出词

Softmax temperature: 带温度系数的Softmax方法

$\tau$解释

在原始的Softmax函数中添加 temperature hyperparameter: $\tau$ .

  1. $\tau$ 起到一种平滑作用, $\tau$ 越大softmax计算得到的概率分布越平滑,t越小分布越不均匀
  2. 在训练开始将 $\tau$ 值设置较大,概率分布较为平滑,loss较大可以避免模型落入局部最优解,随着训练的进行,不断增大 $\tau$ 值,从而提升模型的效果。(某一个 $\tau$ 值并不影响模型的结果)

总结

NLG

NLG主要解决的问题就是,给定输入文本,对文本进行分析和抽取,输出我们需要的指定文本信息(summary或者再创作)

  1. 输入可以是单个文档,也可以是多个文档(多个文档通常内容是相关的)

目前NLG任务领域的主要数据集有

  1. single-document任务

  2. 句子简化(sentence simplification)

NLG任务的两种主要实现方式

  1. 抽取性(extractive)摘要
  2. 生成式(abstractive)摘要

神经网络之前的NLG

一般的单文本摘要流程如下

  1. 首先从原文中选取特定的句子,作为摘要的句子组成内容(content selecting)
  2. 对选取的句子进行排序(Information Ordering)
  3. 对句子进行调整和修改(Sentence realization)

重点在于如何选择句子

  1. 基于算法对句子评分,选取评分高的句子作为候选摘要内容
    • 根据关键词出现频率,如tf-idf
    • 句子在文章中出现的位置
  2. 基于图算法(句子视为节点,句子之间的相似度视为边)

摘要评价-ROUGE

ROUGE(Recall-Oriented Understudy for Gisting Evaluation)与BLUE类似,均基于n-gram共现评估生成文本与目标摘要文本的差距

  1. ROUGE在计算的过程中引入了召回率的概念,相较于NMT任务,摘要任务对召回率的重视程度更高

一种ROUGE评分只针对一种n-gram语法

  1. ROUGE-1: unigram overlap
  2. ROUGE-2: bigram overlap
  3. ROUGE-L: LCS overlap

Neural Summarization (2015-)发展历史

  1. 第一次使用seq2seq + attention实现单文档摘要

  2. 2015后出现的一系列解决方案

Copy Mechanisms:解决seq2seq局限于特征

由于seq2seq机制中decoder基于encoder输出特征进行生成,无法满足保留源语句中某些关键词的要求(虽然fluent,但不够imformative),通过Copy Mechanisms解决这个问题。

Copy Mechanisms 通过attention机制,将input中的某些词或者某些句子,直接作为output中的内容输出,通过与seq2seq结合,更好的适应文档摘要问题

几个复制机制的实现

存在的问题(单词级别的复制机制)

  1. 复制的度难以把握,容易退化成抽取算法
  2. 复制时难以考虑整篇文章的信息,当文章过长时,复制效果不理想
  3. 如何选择,没有一个确定的策略

Bottom up summarization

解决单词级别复制问题,将摘要过程分为两个阶段

  1. 内容选择阶段: 使用标注模型,对原文章中的词进行标记是否需要
  2. 摘要阶段:同样的seq2seq+attention摘要模型,只是对上一步标记的不需要词语进行掩码覆盖,不参与预测

Dialogue 对话生成任务

对话生成任务的范围较为广泛,从日常对话、智能客服到辩论等,主要包括任务型对话和社会对话两种

pre-neural

由于开放式文档问题难度较高,神经网络应用之前的系统往往使用模板式回答或者从一系列语料中寻找回答的方式,实现对话。

seq2seq-based dialogue

虽然很会人们就发现seq2seq模型可以应用于解决对话生成任务,但是目前随着应用的开展,发现存在一系列的问题

  1. 回答宽泛(虽然给了答案,但是答案没什么用) Genericness
  2. 回答与上下文不相关 Irrelevant
  3. 不断地重复 Repetition
  4. 缺乏上下文信息 (对话的上下文,对话的人等)

解决irrelevant问题

  1. 生成的一般回答,而不是想要的回答 (i don’t know)
  2. 回答的主题与问题不相关

传统NN模型的优化目标往往是最大化 $p(Target|Source)$ ,即给定目前问题下得到对应答案的条件概率;当前解决方案采用互信息MMI作为优化目标\

在公式上体现为原条件概率减去了当前回答出现的概率(形式上理解为减去回答概率,对在预料中出现频率较高的通用回答进行了惩罚)

解决genericness问题

解决repetition问题

简单解决方案: 对于decoder输出的n-gram,禁止n-gram句子中存在相同词语。(简单而粗暴)

复杂方案

  1. 避免注意力机制计算时重复的计算相同背景词(从源头铲除相同词语)
  2. 设置训练目标,减少重复出现

NLG Evaluation

传统基于词覆盖的评价方式,例如BLUE、ROGUE等,并不适用于NLG任务(或者说无法真正反映一个NLG解决方案的好坏),既然无法找到一种衡量NLG任务好坏的方式,我们不如聚焦于生成结果的某一个方面

  • 流利性
  • 正确的风格
  • 多样性
  • 相关输入
  • 简单的长度和重复
  • 特定于任务的指标,如摘要的压缩率

人类评估(省略)

NLG发展方向

  • 将离散潜在变量纳入NLG(不同任务可能有不同的潜在特征)
    • 可以帮助在真正需要它的任务中建模结构,例如讲故事,任务导向对话等
  • 严格的从左到右生成的替代方案
    • 并行生成,迭代细化,自上而下生成较长的文本
  • 替代teacher forcing的模型训练方法
    • 更全面的句子级别的目标函数(而不是单词级别)

目前NLG发展

  • 在NLP+深度学习的早期,社区主要将成功的机器翻译方法转移到NLG任务中。
  • 现在,越来越多的创新NLG技术出现,针对非NMT生成环境。
  • 越来越多(神经)NLG研讨会和竞赛,特别关注开放式NLG
    • NeuralGen workshop
    • Storytelling workshop
    • Alexa challenge
    • ConvAI2 NeurIPS challenge
  • 这些对于组织社区提高再现性、标准化评估特别有用
  • 最大障碍是评估