CTRL: A conditional Transformer Language Model For Controllable Generation
任务:可控文本生成
源码:链接
原文:链接
Abstract
本文发布了CTRL,一个具有1.63亿参数的transformer条件语言模型,以给定的风格,内容以及针对任务行为的控制码为条件,来进行模型训练。控制码来自与原始文本自然共现的结构,从而保留了无监督学习的优势,同时为文本生成提供更明确的控制。给定一个序列,这些code还允许CTRL预测训练数据的哪些部分最有可能被赋予一个序列,这提供了一种通过基于模型的源属性分析大量数据的潜在方法。
Motivation
当前自然语言处理中对不局限于任何特定任务的生成的理解较少,通常由模型生成或由人类编写的提示只能用于为生成的文本提供粗略的指导或起点,因此,如何更加显式地控制文本的生成是一个问题。
Main idea and Model
核心思想:借鉴多任务学习,将文本标签(领域、风格控制码)作为输入的一部分(放在开头)控制文本生成。控制代码可以是主题、实体、关系、特定任务等等。从网络上爬取了140G包含广泛领域的数据训练要给语言模型,数据源如Wikipedia,OpenWebText等。部分控制码及其描述如下图所示。
Language Model with CTRL
CTRL是一个语言模型,以控制码 c c c为条件,学习概率分布 p ( x ∣ c ) p(x|c) p(x∣c)。
CTRL加入了条件 c c c,即文章的控制信息如类型,在计算概率的同时考虑条件 c c c。具体操作是在每一个序列的具体内容前加了入类型描述,使得在计算Attention的训练过程中,类型与序列中的所有元素建立联系。模型的整体结构和GPT差不多。
Sampling
为了实现贪婪搜索和防止重复无意义生成,文章提出一种新的sample方法,既能够近似贪婪sampling,又能够对重复进行惩罚。g表示先前生成的序列,核心思想即对先前生成过的单词进行惩罚。当 θ ≈ 1.2 θ≈1.2 θ≈1.2时取得还不错的平衡。该方法在训练中不使用。
Control Codes
-
Style by domain.
模型的大多数控制码通过指示训练数据中的特定领域来指定生成文本的整体风格。即使对于相同的提示,不同的控制码也能使模型生成不同风格的文本。
且模型能够根据控制码生成不同领域的文本,而无需任何提示。
-
More complex control codes.
通过在领域控制码上施加额外的控制码能够对模型生成的文本提供进一步的细粒度的控制。
使用URL作为控制码,将网页作为输入序列的开头。在训练过程中,CTRL学习这些URL的结构与其对应的文本之间的关系。
-
Triggering specific tasks.
一小部分控制代码通过触发特定任务的生成,最大限度地限制了生成过程。
-
Zero-shot code-mixing.
混合控制码以生成交叉行为的文本。即使是训练数据中不存在的组合,也能够生成对应的文本。