人工智能论文GPT-2(2):2019.2 Language Models are Unsupervised Multitask Learners;方法;训练数据集;输入表示

文章探讨了语言建模在多任务学习中的应用,特别是GPTv2模型如何通过无监督学习处理多种任务,如翻译和阅读理解。它使用改进的BPE输入表示和Transformer架构,以增强模型的通用性和适应性。
摘要由CSDN通过智能技术生成

2. Approach 方法

我们方法的核心是语言建模。语言建模通常被定义为从一组示例(x1, x2, ..., xn)中无监督地估计分布,每个示例都由可变长度的符号序列(s1, s2, ..., sn)组成。由于语言具有自然的顺序性,因此通常将符号的联合概率分解为条件概率的乘积。

这种方法允许从p(x)中进行可处理的采样和估计,以及任何形式为p(sn−k, ..., sn|s1, ..., sn−k−1)的条件概率。近年来,能够计算这些条件概率的模型的表达能力有了显著提高,例如自注意力架构(如Transformer)。

学习执行单一任务可以在概率框架下表达为估计条件分布p(output|input)。由于一个通用的系统应该能够执行许多不同的任务,即使是对于相同的输入,它也应该不仅依赖于输入,还依赖于要执行的任务。也就是说,它应该建模p(output|input, task)。这在多任务学习和元学习设置中已被以各种方式形式化。任务条件通常是在架构级别实现的,例如在Kaiser等人(2017)中的特定任务的编码器和解码器,或者在算法级别实现,如MAML的内循环和外循环优化框架。但正如McCann等人(2018)所例证的那样,语言提供了一种灵活的方式来指定任务、输入和输出,所有这些都作为符号序列。例如,一个翻译训练示例可以写为序列(翻译成法语,英文文本,法语文本)。同样,一个阅读理解训练示例可以写为(回答问题,文档,问题,答案)。McCann等人(2018)证明了可以训练一个单一的模型,即MQAN,以推断并执行这种类型的格式示例中的许多不同任务。

语言建模在原则上也能够学习McCann等人(2018)的任务,而无需明确监督哪些符号是要预测的输出。由于监督目标与无监督目标相同,但仅在序列的一个子集上进行评估,因此无监督目标的全局最小值也是监督目标的全局最小值。在这个稍微有些简单的设置中,我们绕过了在(Sutskever等人,2015)中讨论的作为原则性训练目标的密度估计所带来的问题。问题反而变成了我们是否能够在实践中将无监督目标优化到收敛。初步实验证实,足够大的语言模型能够在这种玩具式的设置中执行多任务学习,但学习速度远低于显式监督方法。

虽然从上述定义良好的设置到“野生语言”的混乱状态还有很大的差距,但Weston(2016)在对话的背景下主张需要开发能够直接从自然语言学习的系统,并证明了一个概念验证——通过使用对教师输出的前向预测,在没有奖励信号的情况下学习一个问答任务。虽然对话是一种有吸引力的方法,但我们担心它过于限制。互联网包含大量被动可用的信息,无需交互式通信。我们推测,具有足够容量的语言模型将开始学习推断和执行在自然语言序列中展示的任务,以便更好地预测它们,无论其获取方式如何。如果语言模型能够做到这一点,那么它实际上将执行无监督的多任务学习。我们通过分析语言模型在多种任务上的零样本设置中的性能来测试这是否成立。

2.1 训练数据集Training Dataset

大多数先前的工作都是在单个文本领域上训练语言模型,例如新闻文章(Jozefowicz等人,2016年)、维基百科(Merity等人,2016年)或小说书籍(Kiros等人,2015年)。我们的方法激励我们尽可能构建庞大且多样的数据集,以便在尽可能多的领域和上下文中收集自然语言的任务演示。

一个充满前景的、多样且几乎无限的文本来源是网页抓取数据,例如Common Crawl。虽然这些存档比当前的语言建模数据集大几个数量级,但它们存在严重的数据质量问题。Trinh & Le(2018年)在他们的常识推理工作中使用了Common Crawl,但注意到有大量文档“其内容大多难以理解”。我们在使用Common Crawl的初步实验中也观察到了类似的数据问题。Trinh & Le(2018年)取得的最好结果来自Common Crawl的一个小子样本,其中只包括与其目标数据集(Winograd Schema Challenge)最相似的文档。虽然这是一种务实的做法,旨在提高特定任务的性能,但我们希望避免提前对要执行的任务做出假设。

相反,我们创建了一个新的网页抓取数据,强调文档质量。为此,我们只抓取经过人类整理/过滤的网页。手动过滤整个网页抓取数据将非常昂贵,因此作为起点,我们抓取了Reddit(一个社交媒体平台)上至少获得3个karma的所有出站链接。这可以视为一个启发式指标,用于判断其他用户是否认为该链接有趣、有教育意义或只是有趣。

最终生成的数据集WebText包含这4500万个链接的文本子集。为了从HTML响应中提取文本,我们结合了Dragnet(Peters & Lecocq,2013)和Newspaper内容提取器。本文中展示的所有结果都使用了WebText的初步版本,该版本不包括2017年12月之后创建的链接,并且在去重和一些基于启发式的清理后,包含略微超过800万个文档,总计40GB的文本。我们从WebText中移除了所有维基百科文档,因为它是一个常见的数据源,可能会因训练数据与测试评估任务重叠而复杂化分析。

2.2 输入表示Input Representation

通用的语言模型(LM)应该能够计算(并生成)任何字符串的概率。当前的大规模语言模型包括预处理步骤,如小写转换、分词和处理词汇表之外的标记,这些步骤限制了模型能够处理的字符串空间。虽然将Unicode字符串作为UTF-8字节序列进行处理可以优雅地满足这一要求,如Gillick等人(2015年)的工作所示,但当前的 字节级 语言模型在大型数据集上与 词级 语言模型相比并不具备竞争力。在我们自己尝试在WebText上训练标准字节级语言模型的过程中,我们也观察到了类似的性能差距。

Byte Pair Encoding字节对编码(BPE)(Sennrich等人,2015年)是字符级和词级语言建模之间的一个实用折中方案,它有效地在频繁符号序列的词级输入和不频繁符号序列的字符级输入之间进行插值。尽管名字如此,但参考的BPE实现通常操作于Unicode码点,而非字节序列。这些实现需要包含完整的Unicode符号空间,以便对所有Unicode字符串进行建模。这将在添加任何多符号标记之前导致一个超过130,000个基础词汇表,与BPE中常用的32,000到64,000个标记词汇表相比,这显得过于庞大。相比之下,字节级版本的BPE只需要一个大小为256的基础词汇表。然而,直接将BPE应用于字节序列会导致次优合并,因为BPE使用基于频率的贪婪启发式方法来构建标记词汇表。我们观察到BPE包括了许多常见单词的多个版本,如dog,因为它们以许多变体形式出现,如dog. dog! dog? 。这导致有限的词汇表槽位和模型容量分配不佳。为了避免这种情况,我们防止BPE跨任何字节序列的字符类别进行合并。我们为空格添加了一个例外,这大大提高了压缩效率,同时只增加了跨多个词汇表标记的单词的微小碎片化。

这种输入表示方法使我们能够将 词级 语言模型的实证优势与 字节级 方法的通用性结合起来。由于我们的方法可以为任何Unicode字符串分配概率,这使我们能够在任何数据集上评估我们的语言模型,无论是否进行预处理、分词或词汇表大小设置。

2.3 模型Model

我们的语言模型采用了基于Transformer的架构。该模型在很大程度上遵循了OpenAI GPT模型的细节,但做了一些修改。层归一化Layer normalization 被移动到了每个子块的输入处,类似于预激活残差网络,并且在最后的自注意力块之后添加了一个额外的层归一化。我们使用了改进的初始化方法,该方法考虑了模型深度在残差路径上的累积。我们在初始化时将残差层的权重按1/√N的比例缩放,其中N是残差层的数量。词汇表被扩展到了50,257个词。我们还将上下文大小从512个标记增加到1024个标记,并使用了更大的批量大小512。

Ankie的评论:

1,在GPT v1的架构里面,3.2 有监督微调和 3.3 针对特定任务的输入转换 特别介绍了针对不同应用做不同的微调。而在GPT v2希望避免这类工作,让模型可以更加通用。因此直接准备了更大的数据集,这些数据集已经包含了各种应用,比如 英法翻译,阅读理解等等。让模型自行无监督学习,实现通用语言理解能力。

2,在输入表示方面,GPT v2使用了介于单词和字节之间的,改进的Byte Pair Encoding字节对编码(BPE)。

3,改进了transformer的结构,来适配GPT v2

人工智能论文GPT v1(2):Improving Language Understanding by Generative Pre-Training 2018.6;架构;实验-CSDN博客icon-default.png?t=N7T8https://blog.csdn.net/ank1983/article/details/137658329

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Ankie(资深技术项目经理)

打赏就是赞赏,感谢你的认可!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值