CTRL

主要贡献

提出了一个预训练的可以控制样式、内容和特定任务的条件转换语言模型。控制代码源自与原始文本自然共存的结构,从而保留了无监督学习的优势,同时提供了对文本生成的更明确控制。

因为所有的控制代码都可以追溯到训练数据的一个特定子集,所以CTRL可以用来预测最有可能给定一个序列的训练数据子集。CTRL和它的训练数据之间的这种显式关系可以用来分析语言模型从各个领域中学习到的相关性,它提供了一种通过语言模型研究大量文本的方法。这些控制代码还允许直接包含特定任务的数据,从而在不损害模型通用性的情况下提高重要的技能。问题回答和机器翻译的控制代码使这些技能很容易使用CTRL进行访问。这些代码可以在生成过程中与代码组合,从而在特定于任务的控制代码与与域和内容相关的控制代码之间创建新的交叉。

CTRL条件语言模型

Control code: c
x = (x1, . . . , xn)
Goal: p(x|c)
在这里插入图片描述
CTRL从控制代码中学习原始文本生成的序列。通过minimal preprocessing后,每个句子由n个对应的向量组成,每个向量都是像Transformer一样的token embedding和sinusoidal positional embedding组成,这些向量组成一个矩阵X0(n*d),然后可以通过n个attention层处理,每一层由两个block组成。
第一个block的核心是一个multi-head attention, 有k个头,使用一个因果mask去阻止注意到接下来的tokens.
在这里插入图片描述
第二个block是一个带有ReLU激活的前馈网络,将输入投射到内部维度f,U、V是参数。在这里插入图片描述
在这里插入图片描述每个block都在核心功能块之前进行layer normalization,并在后面加上一个residual connection,即:
在这里插入图片描述
在这里插入图片描述词汇表中的每个token的score都是从上一层的输出得到的:
在这里插入图片描述
在训练中,这些输入的score都是交叉熵损失函数的输入。在生成时,最后一个token对应的score使用softmax进行标准化,从而得到一个新token的采样分布。

实验设置

数据在编码的时候使用BPE算法进行数据压缩。
数据被视为单个的流,并在适当的地方插入了非域控制代码(经常在文档边界),流被分成连续的token序列,每个序列源于一个域,它由相应的域控制代码(domain control codes)作为序列中的第一个标记。这样,域控制代码就得到了特殊处理。它们作为第一个token传播到域中的所有文本。这类似于在多任务设置中使用代码和自然语言序列去控制条件语言模型。所有其他的control codes并没有这样的处理。训练句子长度在256到512之间。

条件生成:

1.SAMPLING

通常温度控制的随机抽样方法用于从预训练好的语言模型中生成文本。通常将抽样限制在前K个备选上。对于词汇表中的每个token i,给定温度T>0与每个token i的score xi(d维),第i个token的预测概率:
在这里插入图片描述
然后从概率为pi的多项式分布取出来的top-k个token中选择下一个token,T趋近0近似于一个贪婪分布,放大了概率分布中的峰值,T趋近于无穷更近似于一个均匀分布。k在实践中通常不是取一个固定值,而是启发式的调节k.核采样方法选择概率阈值pt,并且将k设置为最小值,在这里插入图片描述
如果模型对下一个值有信心,那么k的值就会降低,反之亦然。尽管使用这种启发式方法可以改进模型的生成能力,但是根据生成的目标,这些参数之间仍然存在权衡。

两个缺点:
1.虽然模型预测正确,但是下一个词的选取是从概率空间选的,所以不相信模型的选择。
2.即使是训练好的大型模型,也只能生成重复的短语或者句子。
改进就是添加了一个惩罚项,penalized sampling。工作原理呢就是对之前生成的单词分数进行折扣。这个动机跟保险机制很相似。其他的损失是在鼓励重复,但是penalized sampling在训练的时候并不使用。给定一个生成的token list g,下一个单词的概率pi被定义为:
在这里插入图片描述
θ \theta θ约等于1.2的时候是一个真实生成与缺少重复的很好的平衡。这种方法只有模型学会了足够可靠的分布才会成功。

2.CONTROL CODES

Style by domain:模型的大多数控制代码通过指示特定的训练数据域来指定生成文本的整体样式,控制代码允许可预测的变化,丙炔可以在没有任何提示的前提下生成特定域的文本。
More complex control codes:可以将附加的控制代码添加到域代码中,以增加对生成的约束。
Triggering specific tasks:少数控制代码与特定的任务有关,如回答问题和翻译。这些代码通过触发特定于任务的生成来最大限度地约束生成过程。比如问答与机器翻译
Zero-shot code-mixing:一些代码可以混合生成新的具有交叉行为的文本

Source Attribution源属性

域控制代码能够用于将训练集自动变为互斥集。这支持一种简单的方法,用于确定语言模型认为给定序列最有可能的训练数据子集。给定p©的优先控制域码,计算域排列:
在这里插入图片描述
使用上述公式得到的训练数据的经验先验对数据量大的区域权重过大,相反,作者在与控制码上使用同意的先验。
作者在探查序列和域之间的学习相关性实验发现对提示符中的小更改非常敏感。属性实验采用长度为256的序列训练模型;它训练的时间更长,提供了更好的估计来源。源属性不能被认为是对准确性的度量,而只能是对每个域标记对给定序列影响程度的度量。
我们注意到,用于训练这个模型的数据并没有普遍覆盖,并且包含了原始来源中存在的文化关联。该模型的所有应用本质上都依赖于这些原始关联进行预测。事实上,这种源归因方法依赖于利用原始关联来建立语言模型与其训练数据之间的关系

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值