大家好,这里是NewBeeNLP。近年来,基于 Transformer 和自监督学习的预训练语言模型具有良好的泛化能力,在长文本生成和可控文本生成方面取得了较好的效果,引起学术界和工业界越来越多的关注。本报告将重点介绍这一领域取得的一些进展和面临的主要挑战,并介绍澜舟在可控文本生成方面的一些探索。今天的介绍会围绕下面四点展开:
- 可控文本生成背景
- 可控文本生成研究进展
- 澜舟可控文本生成应用实践
- 总结与展望
1.『可控文本生成背景』
首先介绍一下可控文本生成的背景。
1. 文本生成任务及应用
2. 可控文本生成任务示例
可控文本生成是在一般的文本生成基础上的延伸。我们希望可以添加一些控制因素,使生成文本满足一定的约束,比如上面的这些例子我们希望通过“关键词”、“知识图谱”等信息控制生成的文本内容。
可控文本生成一个比较显著的特点是输入的信息是相对比较少的,但生成的内容是比较多的,这就要求模型具有一定的发散能力。我们有时候将其称为“想象力”,这也使得文本生成区别于其他的任务, 在建模上有更大的难度。
3. 面向文本生成任务的预训练语言模型
在深度学习之前,我们想要实现文本生成其实是很难的,特别是一些长文本的生成,大多数都采用基于模板的方法。用人工得到各种各样的模板,在使用的时候把相关的信息填进去,从而生成对应的文本。
近年来,随着深度学习技术的发展,特别是预训练语言模型的发展,文本生成取得了较大的进步。最近也提出了很多面向文本生成的预训练语言模型,比如 GPT、BART、T5等。这类模型通常是基于 Transformer 神经网络的,语言特征提取能力强。同时也采用自监督学习目标,可以利用大量无标注的数据学习生成能力。像 T5 这种模型可以进行序列到序列的多任务联合建模,甚至可以引入跨语言的联合建模。这么做的好处是我们可以整合多种任务一起来训练模型,使模型具有较好的泛化能力。
4. 文本生成当下一些挑战
尽管预训练语言模型取得了极大的进展,推动了文本生成的研究和落地。但同时我们也看到了很多挑战。
比如,内容逻辑有误、内容发散、语句重复等,如下图所示。这些问题其实在当下并没有很好的解决办法。
2.『可控文本生成研究进展』
前面主要介绍了可控文本生成的背景,接下来介绍可控文本生成研究工作的一些进展。
我们回顾一下可控文本生成的常用方法
1. 可控文本生成实现的一般方法
第一种就是“调整解码策略”。比如在解码端加入一些限制词,增加目标词汇的概率。
第二种方法是“调整训练目标函数”。比如可以学习面向情感分类任务的目标,这样可以使得模型学习到情感信息。
最近最主流的就是基于提示学习的方法。这种方法主要是在模型输入的时候添加一些可控的因素,通过这些因素影响生成结果。
2. GPT-based 的可控文本生成
我们也可以看到像 GPT 这一类的文本生成模型,它的主要优点是可以利用大量文本进行预训练,模型具有比较强的文本生成能力。
其实它还有很多可以改进的空间,比如利用 Prompting 的方法去控制整个生成目标文本,可以发现文本生成的长度越来越大,后面很难使用一个 Prompting 控制整个文本的生成。
同时还包括一些细粒度的控制,比如要生成多段的时候,第一段想生成一个情感积极的句子,第二段想生成一个情感消极的句子。如果只用一个提示是很难实现的。
近年来,也有一些研究工作是针对细粒度的可控文本生成。包括在神经网络上做出一些修改。这里展示的是一个基于 GPT 的细粒度可控文本生成模型。
之前的方法是在 GPT 前面加入提示信息,这种方法很难做一些长文本的生成或者是更加细粒度的控制。
这篇论文的工作首先是单独对提示进行编码(上图红色部分),右侧是解码模块,主要是对历史文本进行建模,采用非残差注意力机制,同时关注 Prompting 信息和文本信息。这样做的好处是在不同生成时刻都可以替换 Prompting,实现更加细粒度的控制。
我们可以采用自监督的方法实现细粒度可控文本生成模型训练。首先是用语言模型初始化 Prompting,然后再经过自监督训练,主要分为两个阶段,最后如果我们有一些下游任务的训练数据,可以再做一个比较好的精调。
尽管 GPT 能够生成一些长文本,但还存在一些生成挑战。主要的问题是长文本需要的显存更大,硬件难以支持。同时计算复杂度更高,不利于模型训练和推理。
另一个比较好的方法是基于记忆网络的模型。
它会把历史生成信息存到一个记忆单元,这个记忆单元是个向量矩阵的形式。在生成新段落的时候会基于当前的一些提示信息结合记忆单元的历史信息去做一个生成。
这样做的好处是我们对历史生成信息做了一个压缩,就不必再用到每个历史的Token 信息,从而实现长本文的生成。
下面我们再来看一下模型训练方面的问题。
第一个是可持续学习。
为什么需要可持续学习呢?因为现实世界中需要学习的新任务总是不断出现的,当学习新任务时,模型容易忘记原先已经学习到的知识,而且面对多个任务时,需要多个不同模型,训练和部署代价高昂,所以需要有效的学习机制,实现跨任务知识的有效迁移。最近的一些工作主要是引入自适应的组合模块,保证模型的持续学习能力和知识迁移能力,同时采用轻量化微调技术。三种典型的新任务学习方法是:
- 完全的参数共享,在预训练模型的基础上做一次重新的训练;
- 插入一些特定任务的参数;
- 在新任务的任务时选择性插入一些历史任务参数。
这样的可持续学习模型训练可以看成两个阶段:
- 第一个阶段是模型选择阶段,选择哪些参数复用,哪些参数新增;
- 第二个阶段是训练阶段,利用新任务数据去训练模型。根据概率选择模型决定参数利用方法,实现轻量化参数模块的持续学习。
另外一个方向是如何提高长文本模型的训练。因为随着生成长度的增加,容易出现重复生成、前后不连贯等问题。一般采用基于最大似然估计训练学习到的词向量表示具有各向异性分布(向量驻留在整个空间的一个狭窄子集中)。下面两幅图是举得一个例子,左边是传统 GPT 生成一句话之后,最后把每个 Token 的向量表示取出来,做一个相似度,可以发现他们非常的接近。在生成时容易出现重复生成的问题。右边是改进之后的效果,主要采用了对比学习的方法。在训练阶段,采用对比学习更好地进行表示学习,在解码阶段,采用对比搜索生成多样和连贯的文本。
下面是对比学习的训练方法:
加入 Token 级的对比学习损失函数,采用最大间隔的优化方法,使不同的Token 尽可能的不一致。同时也对解码阶段做了一定的限制,保持上下文向量稀疏性。
另外一个问题是文本的事实正确性。因为我们希望模型具有一定的泛化性,生成时具有一定的发散能力,但有一定的概率生成的是错误的知识。
针对这个问题,主要的改进方法有两点:增强模型对知识的学习能力和生成时融入一定的知识。
比如左图的这种方法,把结构化的知识图谱转化为无结构化的文本,再用这样的文本去训练预训练语言模型,增强对知识的理解。
右边这种方法是在生成时融入外部知识。比如给定一些上下文,得到一些关键词,在外部知识库检索这些关键词,得到一些外部知识指导生成。
3.澜舟可控文本生成应用实践
接下来分享一些澜舟科技在可控文本生成上的应用实践。
首先,我们基于孟子预训练语言模型开发了文本生成应用,采用了很多轻量化的技术,在最底层大规模基础数据支持下,得到一个孟子轻量级神经网络生成模型。在此基础之上,我们持续去做很多垂直领域的研发,构建垂直领域的生成引擎。
包括大规模训练数据自动构建,从一些原始的文本得到大规模的标注数据;再基于孟子预训练模型针对特定领域数据进行微调;最后做一些自动测评、筛选和矫正。
同时我们也开发了一系列面向文学辅助写作的系统。如上图中的实体渲染和自定义模板生成,在这两种生成下,我们可以选择不同文体风格。在智能文案生成方面,通常分为三个步骤:选择对应模板,输入关键词,一键生成文案。下面是一个例子:
4.『总结与展望』
基于预训练语言模型的文本生成技术水平日益提高,从研究逐渐走向落地,在各行各业中得到广泛应用,如营销领域、文学辅助写作领域、研报写作领域等。未来需要重点关注的方向主要包括:
- 长文本生成的神经网络模型、篇章一致性、事实正确性、自动评测等还需技术上的突破;
- 面向工业落地,还需研究轻量化模型、快速领域适配算法、小样本学习等技术,降低落地成本。
5.『问答环节』
Q1:长文本的训练数据是如何获取的?
A1:长文本的训练数据,像段落生成,我们通常找一些篇章的数据,分好几段的这种,拿来训练模型。但存在一些挑战,比如说模型最长生成 512 个词或 1024 个词,为了实现长文本的生成,我们通常引入一些额外的方法,比如基于大纲的生成还有记忆网络的机制去实现长文本的生成。
Q2:文章级别的营销文章是怎么保证逻辑连贯性的?
A2:我们说长本文生成的输入信息比较少,生成比较多,容易出现一些发散,为了保障连贯性,我们通常会利用关键词,同时加入一些知识图谱对生成的文本进行一些引导和约束,从而让其生成的内容更加符合用户的期望。