Language Models are Unsupervised Multitask Learners
回顾一下第一代 GPT-1 :
- 设计思路是 “海量无标记文本进行无监督预训练+少量有标签文本有监督微调” 范式;
- 模型架构是基于 Transformer 的叠加解码器(掩码自注意力机制、残差、Layernorm);
- 下游各种具体任务的适应是通过在模型架构的输出后增加线性权重 W y W_{y} Wy 实现,且微调过程解码器架构也会进行参数微调,迁移的解码器模块越多效果越好;
- 针对不同具体任务对应的数据集采用遍历式方法将数据集增加若干 token 作为输入;
- 微调过程考虑到文本数据集较大时会额外增加预训练型的损失函数;
- 字节对编码。
文章目录
- Language Models are Unsupervised Multitask Learners
- Abstract
- 1. Introduction
- 2. Approach
- 2.1. Training Dataset
- 2.2. Input Representation
- 2.3. Model
- 3. Experiments
- 3.1. Language Modeling
- 3.2. Children’s Book Test
- 3.3. LAMBADA
- 3.4. Winograd Schema Challenge
- 3.5. Reading Comprehension
- 3.6. Summarization
- 3.7. Translation
- 3.8. Question Answering
- 4. Generalization vs Memorization
- 5. Related Work
- 6. Discussion
- 7. Conclusion
Abstract
自然语言处理任务,例如问答、机器翻译、阅读理解和文章总结,通常是通过对任务特定数据集进行监督学习来完成的。当在包含数百万个网页(称为 WebText)的新数据集上进行训练时,语言模型能在没有任何显式监督的情况下学习这些任务。当用文档和问题的组合输入模型的时候,在不使用 127000+ 个训练样本的情况下,语言模型生成的答案能在 CoQA 数据集上达到 55 F1,匹配或超过了 4 个基线模型中的 3 个的性能。
进一步地发现,语言模型的容量对于零样本任务迁移(zero-shot task transfer)的成功至关重要,增加语言模型的容量可以以对数线性方式提高跨任务的性能。因此,Open AI 训练了他们自己最大的模型 GPT-2 ,这是一个基于 Transformer 架构的 1.5B 参数数量的语言模型,它在 zero-shot 场景下的 8 个测试语言模型的数据集中有 7 个上取得了当时的 SOTA ,即使在对 WebText 训练中还是处于欠拟合的情况下。
作者在实验中提取了一些 GPT-2 生成的样本,看到了 生成内容质量的提升 以及 文章段落的语义一致性 。
这些发现为构建 NLP 系统提供了一条道路,即 NLP 系统能从演示中学习并执行任务。
1. Introduction
We would like to move towards more general systems which can perform many tasks – eventually without the need to manually create and label a training dataset for each one. ---- this paper.
创建机器学习系统的主要方法是收集训练样本数据集,数据集中展示所需任务的正确行为;训练一个参数系统来模仿这些行为,并在独立同分布(Independent Identical Distribution, IID)的测试集上测试其性能。这对于生产 “狭隘” 专家(仅仅只在特定任务上表现出色的模型/系统)方面很有帮助。但是,字幕建模、阅读理解和图像分类等在输入和输出具有多样性的系统上,经常表现出不稳定的行为,这也凸显了传统机器学习系统的了的缺点。
作者认为: 单个数据集上进行单任务训练 的流行范式是当前系统中缺乏泛化性的主要原因。使用当前深度学习神经网络架构实现系统的持续进步,可能需要在 广泛的数据集和各种任务 上进行模型训练和测试。已经提出了几个基准,例如 GLUE 和 decaNLP 已经研究了这方面内容。
多任务学习(Multitask learning)是提高模型总体性能的一种范式。2019年左右,NLP 中的多任务训练范式仍处于萌芽阶段。已经有工作实现了模型在多任务学习下适当的性能改进,并且也有两项工作分别尝试了在总共 10 个和 17 个 “(数据集-目标)对” 上进行了多任务训练,在当时属于极大的工作量。
从元学习的角度来看,每个 “(数据集-目标)对” 对都是从数据集和目标的联合分布中抽取的单个训练样本。当前的机器学习系统需要数百到数千个样本 “(数据集-目标)对” 来引导出具有良好泛化能力的模型,这表明多任务学习与传统监督学习一样,需要多的、有效的训练对来保证当前方法泛化。多任务需要非常多的数据集和目标设置,但是现有技术难以快速地生成数据集并进一步生成特定任务,这就导致纯粹的多任务学习在 NLP 中不太合适,需要探索多任务学习意愿下额外的设置。
2019年在语言任务上表现最好的 NLP 系统使用了 预训练+监督微调 的学习范式。这种方法很早就有实践,且具有向更灵活的迁移形式发展的趋势。首先,当时已有工作 训练得到的词向量 用作下游特定任务模型的 输入 ,然后循环神经网络的 上下文表征能力 进一步被迁移到特定任务。此外,还有工作发展了任务无关型架构,迁移多个自注意力机制模块(也就是 GPT-1)就足够了。这些方法仍然需要监督训练来执行一项下游特定任务。当只有很少,或没有监督数据时,其他工作证明了(纯粹的预训练)语言模型在常识推理和情绪分析任务上存在优势。
在本文中,作者将这两条工作线(预训练微调学习范式 + zero-shot 多任务处理能力)联系起来,并进一步延续了更能通用的模型迁移方法(在 GPT-1 基础上继续改进)。作者设计了 GPT-2 模型,并证明语言模型可以 zero-shot 地执行下游任务——无需任何参数调整或模型架构修改。GPT-2 在不同任务上取得突出的甚至 SOTA 的成果。
整个 introduction 读起来有亿点点吃力,就是作者在多任务学习上延申一部分,思路被所表述的 “数据集-任务” 以及元学习相关的表述带飞了。感觉行文思路就是常规多任务学习在 NLP 强泛化的愿景中不合适,不合适的原因在于数据集和任务目标需求量太大。这是合理的,在之前元强化学习部分确实是这样的,需要很多的任务采样,只不过采样出来的任务对应的数据集可以通过 agent 自己生成。。。
2. Approach
作者提出的方法的核心是语言模型。语言模型通常被表述成来自一组样本
(
x
1
,
x
2
,
⋯
,
x
n
)
(x_1, x_2, \cdots, x_n)
(x1,x2,⋯,xn) 的无监督分布估计,每个样本由可变长度的符号序列
(
s
1
,
s
2
,
⋯
,
s
n
x
i
)
(s_1, s_2, \cdots, s_{n_{x_{i}}})
(s1,s2,⋯,snxi) 组成,
n
x
i
n_{x_{i}}
nxi 就是每个样本的符号序列长度。由于语言具有自然的序列顺序,因此通常将符号序列的联合概率分解为条件概率的乘积。
{
p
(
x
)
=
∏
i
=
1
n
p
(
s
n
∣
s
n
−
1
,
⋯
,
s
1
)
=
p
(
s
1
∣
s
0
)
⋅
p
(
s
2
∣
s
1
,
s
0
)
⋯
p
(
s
n
∣
s
n
−
1
,
⋯
,
s
1
)
(1)
\begin{cases} p(x)&=\prod\limits_{i=1}^{n}p(s_{n}|s_{n-1},\cdots, s_{1}) \\ &=p(s_{1}|s_{0})\cdot p(s_{2}|s_{1},s_{0})\cdots p(s_{n}|s_{n-1},\cdots, s_{1}) \end{cases} \tag{1}
⎩
⎨
⎧p(x)=i=1∏np(sn∣sn−1,⋯,s1)=p(s1∣s0)⋅p(s2∣s1,s0)⋯p(sn∣sn−1,⋯,s1)(1)
这种方法允许对
p
(
x
)
p(x)
p(x) 从前面一段字符序列预测后面一个字符形式,以及
p
(
s
n
−
k
,
⋯
,
s
n
∣
s
1
,
⋯
,
s
n
−
k
−
1
)
p(s_{n−k}, \cdots, s_n|s_1, \cdots, s_{n−k−1})
p(sn−k,⋯,sn∣s1,⋯,sn−k−1) 这种从前面一段字符序列预测后面一段字符序列形式,进行易于处理的采样和估计。 Transformer 等基于完全注意力机制的架构可以显著提高计算这些条件概率的能力(并行地计算以及预测式的训练)。
学习执行单个任务(单个语言模型预测任务)可以在概率统计学中表示为估计条件分布 p ( o u t p u t ∣ i n p u t ) p(output|input) p(output∣input) 。由于通用 NLP 系统应该能够执行许多不同的任务,即使对于相同的输入,它不仅应该以输入为条件,还应该以要执行的任务为条件。也就是说,它应该对 p ( o u t p u t ∣ i n p u t , t a s k ) p(output|input,task) p(output∣input,task) 进行语言建模。这在多任务学习和元学习背景下得到了不同的具体表达。任务条件(task conditioning,亦或者是任务级别的表征)通常在1. 架构级别实现,例如任务有关的编码器和解码器;2. 或在算法级别实现,例如元学习 MAML 的内循环(inner-loop)和外循环(outer-loop)优化框架。但语言提供了一种灵活的方式来将任务、输入和输出都指定为一个符号序列。也有研究表明,通过训练一个单一的语言模型能在这种格式的示例下进行推断,并执行许多不同的任务。
翻译任务。
(translate to french, <english text>, <french text>)
阅读理解任务。
(answer the question, <document>, <question>, <answer>)
原则上,语言模型也能够在不需要明确监督或标记哪些符号是要预测的输出下学习任务。由于监督目标与无监督目标相同(都是要根据当前字符序列预测下一个字符/字符序列),但监督目标仅在序列的子集上进行评估,因此监督目标的全局最小值也是无监督目标的全局最小值。那么问题变成了:在实践中是否能够优化无监督目标以实现收敛。初步实验证实,足够大的语言模型能够在无监督目标下执行多任务学习,但学习速度比显式监督方法慢得多。
作者又论证了其他方法:在对话的背景下,能够开发出直接从自然语言学习的系统并演示了概念验证——通过使用教师输出的前向预测来学习没有奖励信号的问答任务。虽然对话是一种有吸引力的方法,但作者认为它的学习形式过于严格:必须要有对话上下文的存在才能学到知识,但是很多场景下,并没有那么多的对话。
互联网包含大量无需交互式通讯即可被获取的信息。作者的推测是,具有足够容量的语言模型能学习推断和执行 用自然语言序列阐述的任务 ,以便更好地基于前序序列进行预测,在不考虑其他为构建和支持AI系统所需的资源下。如果一个语言模型能够做到这一点,那么它实际上就是在执行无监督的多任务学习。通过分析语言模型在 zero-shot 设置下在各种任务上的性能来测试这种情况。
2.1. Training Dataset
大多数之前的研究工作都是针对单一文本领域训练语言模型,如新闻文章、维基百科或小说书籍。
本文的方法需要构建尽可能大和多样化的数据集,以便在尽可能多的领域和上下文中收集任务的自然语言演示样本。一个突出的多样化和几乎无限的文本来源是网络爬虫,如 Common Crawl 数据集。这些数据集比当前的语言建模数据集大很多个数量级,但它们存在重大的数据质量问题。包括作者在内的多个学者都出现了这样的问题。一种办法是选取只包含与目标数据集最相似的文档,但是这样相当于将数据集与特定任务对齐了;虽然这是一种提高特定任务性能的实用方法,但作者希望避免提前对要执行的任务做出假设。
作者放弃使用 Common Crawl 数据集,创建了一个新的网络爬虫数据集,强调文本质量。为了做到这一点,作者只爬取了经过人类筛选/过滤的网页。手动筛选/过滤一个完整的网络爬虫数据集将是非常耗时耗力,所以作为一个起点,从社交媒体平台 Reddit 收集了所有的出站链接,每个出站连接至少收到 3 个 karma 。这可以被认为是一个启发式指标来评判其他用户认为链接是否有趣、是否具有教育意义,还是只是有趣。
在 Reddit 这个社交媒体平台上,“karma” 指的是用户收到的积分,这些积分基于其他用户对他们帖子或评论的赞成(upvote)和反对(downvote)投票。如果一个帖子或评论获得的赞成票多于反对票,那么发布该帖子或评论的用户将获得正面 karma;反之,则可能获得负面 karma。所以,这里提到的 “至少 3 karma” 意味着只有那些至少获得了 3 点正面积分的外部链接被爬取。这通常表示那些链接是社区成员认为有价值或者有趣的内容。
生成的数据集 WebText 包含了 4500 万个链接的文本数据集。为了从 HTML 响应中提取文本,使用了 Dragnet 和报纸内容提取器(Newspaper content extractor)的组合。本文给出的所有结果都使用了 WebText 的初步版本,其中不包括 2017 年 12 月之后创建的链接,经过重复数据删除和一些基于启发式的清理,该链接包含超过 800 万份文档,总共 40 GB文本。从 WebText 中删除了所有的维基百科文档,因为它是其他数据集的通用数据源,并且可能会由于过度重合与测试数据集而使分析复杂化。
2.2. Input Representation
通用语言模型应该能够计算(生成)任何字符串的概率。当前的大规模语言模型包括预处理步骤,例如小写、tokenization和OOV token,这些步骤限制了可建模字符串的空间。
虽然将 Unicode 编码的字符串处理为 UTF-8 字节序列可以优雅地满足此要求,在大规模数据集(例如 One Billion Word 基准)上,当前的字节级(byte-level)语言模型与字级(word-level)语言模型不具有竞争力。
在 WebText 数据集上训练标准字节级(byte-level)语言模型的尝试中也观察到了类似的性能差距。
字节对编码(BPE)是字符级(与字节级同等概念,byte-level)和字级(word-level)语言建模之间的一个实用的中间过渡方法,它有效地在频繁符号序列的字级输入和不频繁符号序列的字符级输入之间进行插值。
BPE 通常用在操作 Unicode 编码,而不是数据意义上的字节序列。实现 BPE 将需要包括 Unicode 符号的全部元素,以建模所有的 Unicode 编码的字符串。这将导致在添加任何多符号 token 之前,有超过 13 万的基本词汇量。与 BPE 中经常使用的 32000 到 64000 个 token 词汇表相比,这是非常大的。相比之下,BPE 的字节级版本只需要一个大小为 256 的基本词汇表。然而,由于将 BPE 直接应用于字节序列,会导致BPE使用基于贪婪频率的启发式来构建 token 词汇表。例如,dog
会存在许多变体: dog.
, dog!
和 dog?
。这就导致了有限的词汇表变得 ”狭窄“ (dog
会存在许多变体占用词汇表)和模型容量的次优分配(很多编码分配给了 dog
)。为了避免这种情况,阻止 BPE 合并任何字节序列的跨字符类别。作者为空格添加了一个例外,它显著提高了压缩效率,同时在多个词汇表 token 中只添加了最小的单词片段。
这种输入表征允许将字级(word-level)语言模型的经验优势与字节级(byte-level)方法的通用性结合起来。由于提出的方法可以为任何 Unicode 编码的字符串分配一个概率,这允许在任何数据集上评估提出的语言模型,无论预处理、tokenization 或大小写如何处理。
2.3. Model
最小的模型(1.17亿参数)相当于原始的 GPT-1 ,第二小的模型(3.45亿参数)相当于 BERT 中的最大模型。最大的模型(15.42亿参数)称之为 GPT-2,比GPT 多一个数量级。模型的数量与模型的参数数量近似对数线性关系。
每个模型的学习率手动调整到满足于最佳的困惑指标,在 5% 的 WebText 验证集中。所有的模型欠拟合 WebText 数据集中,并保持一定程度的困惑度,这个将在更多的训练时间中得以改进。
使用了基于 transformer 的架构。该模型在很大程度上遵循了 OpenAI GPT-1 模型的细节,并做了一些调整。
- 将层归一化(Layer normalization)移动到每个子块的输入端,类似于预激活(pre-activation)残差网络,并在最终的自注意力机制块后添加一个额外的层归一化。
- 采用一种改进的初始化,将初始化时的残差层的权重乘以 1 N \frac{1}{\sqrt{N}} N1 ,其中 N N N 是残差层的数量。
- 词汇量扩大到 50257 个。
- 将上下文大小从 512 增加到 1024 个 token ,并使用了更大的批处理 batch_size 大小 512 。
3. Experiments
3.1. Language Modeling
作为第一步,需要评测 GPT-2 模型在 zero-shot 任务迁移前如何在训练时期存在的语言建模任务上表现。
由于 GPT-2 在字节级(byte-level)上运行,并且不需要有损的预处理或 tokenization,因此可以在任何语言模型基准测试上评估 GPT-2 。
评估方法:在语言建模数据集上的结果通常以一个数值,这是每个规范预测单元的平均负对数概率的缩放或指数版本——通常是一个字符、一个字节或一个单词。通过根据 GPT-2s 模型计算一个数据集的生成规范单元的对数概率,并除以规范单位的数量来计算,相当于计算几何平均值。对于许多此类数据集, GPT-2s 模型将被大量测试来预测渐近的标准化文本,诸如断开连接的标点符号、缩句和打乱的句子,甚至在 WebText 中极为罕见的 <UKN>
词汇。
在表中报告了使用可逆的去标记化器(de-tokenizer)的主要结果,它尽可能多地删除 tokenization /预处理时出现的组件。由于这些 de-tokenizer 是可逆的,仍然可以计算数据集的对数概率,它们可以被认为是域适应的一种简单形式。结果显示:这些 de-tokenizer 对 GPT-2 存在 2.5 到 5 困惑度。
detokenize 是 tokenize 方法的逆过程,可以用来从一组 token 中重构字符串。
分析:WebText 语言模型跨领域任务数据集迁移良好,提高了在 zero-shot 背景中 8 个数据集中的 7 个的 SOTA 成绩。在 Penn Treebank 和 WikiText-2 等 小数据集 上发现了很大的进步,这些数据集只有 100 到 200 万训练 token 。在用于评估长距依赖关系的数据集上也发现了巨大的改进,如 LAMBADA 数据集和 Children’s Book Test 数据集。模型仍然明显低于之前 One Billion Word Benchmark 数据集测试的工作。这可能是由于它既是最大的数据集,又有一些最具破坏性的预处理——句子级打乱,以及删除显著的长距离结构。
3.2. Children’s Book Test
Children’s Book Test(CBT)数据集是为了检验语言模型在不同类别的单词上的表现:命名实体、名词、动词和介词。CBT 数据集不是报告困惑度作为评估指标,而是在自动构建的完形填空中报告准确性,其中完形填空任务是预测 1 个省略单词在 10 个可能选项中哪一个是正确的。作者的计算方式是:根据原论文中引入的语言模型方法,作者根据语言模型计算每个选项的概率,并使用该选项以概率最高的方式预测句子的其余部分。
结论:随着模型尺寸的增加,性能稳步提高,并缩小了该测试中与人类性能的大部分差距。因为这个评估 benchmark 里面有部分内容与 WebText 内容重叠,因此在验证部分进行了去重叠处理,避免显著的重复度。 GPT-2 在普通名词(Common Nouns)上取得了 93.3% 的结果,在命名实体(Named Entities)识别上达到了 89.1% 。
3.3. LAMBADA
LAMBADA 数据集用以测试 NLP 系统在文本中建模长距离关系的能力。这项任务是预测句子的最终单词,这对于人类而言需要至少 50 个上下文 token 才能成功预测。
结论: GPT-2 将 SOTA 的困惑度指标从 99.8% 降低到 8.6%,并将语言模型在该测试中的准确性从 19% 提高到 52.66% 。
对 GPT-2 错误之处的调查表明,大多数预测都是句子的有效延续,但不是有效的最终单词。这表明语言模型没有使用额外的 “单词必须是句子的末一个” 有用约束。添加一个停止字过滤器后准确率进一步提高到 63.24% ,将这项任务的总体 SOTA 提高了 4% 。之前的 SOTA 使用了一个不同的受限预测设置,其中模型的输出被限制在只出现在上下文中的单词,但是这样的限制对 GPT-2s 而言是有害的,因为有 19% 的答案不在上下文文本里。
3.4. Winograd Schema Challenge
Winograd Schema Challenge 的构建是为了通过衡量 NLP 系统解决文本中的歧义的能力,来衡量 NLP 系统执行常识性推理的能力。先前的 SOTA 以更高的概率预测歧义分辨率取得了很好的成果。这里基于先前的 SOTA 提出的问题公式,并使用完整和部分评分技术来可视化模型的性能。结论:只有最大和次大的语言模型的准确率提高了 7% ,达到 70.70% 。该数据集非常小,只有273个样本。
3.5. Reading Comprehension
Conversation Question Answering (CoQA)数据集由来自 7 个不同领域的文档组成,以及一个提问者和一个关于该文档的问题回答者之间的自然语言对话。CoQA 测试阅读理解能力,以及测试模型依赖对话历史回答问题能力。结论:当以文档、相关对话的历史和最终令牌 A:
为条件输入模型时,GPT-2 在使用贪婪解码情况下:在开发集上达到 F1 55 分的指标。这匹配或超过了 4 个基线系统中的 3 个,且在没有使用基线训练的 127000+ 个手动收集的问题答案对。虽然 GPT-2 在没有任何监督训练条件下取得良好性能,但对其答案和错误的一些检查表明,GPT-2 经常使用简单的基于启发式方法的检索,比如 answer with a name from the document in response to a who question
。
3.6. Summarization
在 CNN 数据集和 Daily Mail 的数据集上执行总结表现,在文章之后,使用 k = 2 k = 2 k=2 的 Top- k k k 随机抽样生成 100 个 token ,相比于贪婪生成,这样做能减少重复,并鼓励生成更抽象的摘要。结论:GPT-2 经常关注 文章中最近的内容 ,或者 混淆具体细节 ,比如 “有多少车卷入了车祸” ,或者 “帽子或衬衫上有没有标志” 。在论文经常汇报的ROUGE 1,2、L 指标上,生成的摘要仅接近经典神经基线的性能,并且仅略优于从文章中随机选择的 3 个句子。当任务提示被删除时,GPT-2 的性能在聚合度量上下降了 6.4 分,这显示了在使用自然语言的语言模型中调用任务特定行为的能力,也就是说明自然语言能知道现在做的是什么任务。
3.7. Translation
这部分测试了 GPT-2 是否已经能学习如何从一种语言翻译到另一种语言。为了帮助 GPT-2 推断这是需要的翻译任务,这里条件语言模型的上下文的例子格式是:English sentence = French sentence
,然后最终提示:English sentence =
,接着使用贪婪解码来采样模型并使用生成的句子作为翻译。
结果显示:在 WMT-14 英语法语测试集上,GPT-2 得到 5 个 BLEU 指标,比之前在无监督单词-单词翻译工作中的双语词汇逐字替换方法略差。在 WMT-14 法语英语测试集中,GPT-2 能够利用其非常强大的英语语言模型来表现显著地更好,达到 11.5 BLEU。这将优于一些无监督的机器翻译基线,但是还是比最好的基线差。
分析:作者故意从 WebText 数据集中删除了非英语网页作为一个过滤步骤,而还能表现出外语之间的翻译,令人震惊。为了证实这一点,在 WebText 上运行了一个字节级语言检测器,它只检测到 10MB 的法语数据,比之前的无监督机器翻译研究中常见的单语法语语料库大约小约500倍。
3.8. Question Answering
测试语言模型中包含哪些信息的一种潜在方法是评估它生成关于事实问题的正确答案的频率。之前的工作论证, 在神经网络中所有信息都存储在参数中 ,但是这样的结论是在缺乏高质量的评估数据集上产生的,且只报告了定性结果。最近引入的 Natural Questions 数据集是一个很好的资源来更定量地测试这个问题。与翻译类似,语言模型的上下文中植入了样本 “问题-答案” 对,这有助于模型推断数据集的简短回答风格。
结论:经过一个 SQUAD 阅读理解数据集进行了评估, GPT-2 正确回答了 4.1% 的问题。最小的 GPT-2 模型没有超过一个简单的 1.0% 的准确率基线,该基线是返回每个问题类型的最常见的答案。最大型号的 GPT-2 正确回答了 5.3 倍以上的问题数量,这表明模型容量一直是导致神经模型在这类任务中表现不佳的一个主要因素。定性上,语言模型的知识确实都存在了神经网络的参数之中;但是作者的实验在定量上证明语言模型的知识存储与神经网络的参数数量有正相关关系。GPT-2 分配给其生成的答案的概率经过了很好的校准,GPT-2 对其最自信的 1% 的问题的准确率为 63.1% 。GPT-2 的性能仍然比具有 30-50% 的开放领域问题 QA 系统差,该 QA 系统将信息检索与提取文档问题回答混合。
4. Generalization vs Memorization
这部分主要分析在训练数据中存在多少测试数据重叠。
为了研究这一点,作者创建了 8-gram 级别的 WebText 训练集 token 过滤器 Bloom 。为了提高查全率,字符串被规范化,只包含具有单个空格的小大写字母数字单词作为分隔符。Bloom 滤波器的构造设置假阳性率的上限为 1 1 0 8 \frac{1}{10^{8}} 1081 。通过生成 1M 个字符串,进一步验证了较低的假阳性率,其中被 Bloom 过滤器发现的次数是 0 。
Bloom 过滤器可以计算在 WebText 训练集中找到的 8-gram 的百分比。表格显示,普通语言模型数据集的测试集与 WebText 训练有 0.88% 到 6.31% 的重叠,平均重叠为 3.2% 。此外,许多数据集与它们自己的分割训练子集有更大的重叠,平均重叠率为 5.9% 。作者还评论了一下 1BW 数据集,因为数据集进行了一些处理,导致训练集和测试集之间存在较大的重叠部分,这就能导致数据集在测试集的指标略高,因为部分信息已经在训练集里面训练了。
对于 CoQA 数据集,新闻领域中大约 15% 的文档已经在 WebText 数据集中,该模型在这些文档上的性能约为 3 F1 。CoQA 的开发集指标报告了在 5 个不同领域上的平均性能,由于不同领域之间的重叠,结果增益约为 0.5-1.0 F1 。由于 CoQA 数据集是在 WebText 链接的截止日期之后发布的,所以在 WebText 中并没有实际的训练问题或答案。
在 LAMBADA 数据集中,平均重叠率为 1.2% 。GPT-2 在重叠度大于 15% 的例子上表现出大约 2 困惑度。当排除所有有重叠偏移的例子时,重新计算指标会增加到 8.6 到 8.7 困惑度,且精度将从 63.2% 降低到 62.9% 。总体结果的非常小的变化,很可能是因为每 200 个例子中只有 1 个有显著的重叠。
总之,WebText 训练数据和特定任务的评估数据集之间的数据重叠为报告的结果提供了一个小但一致的好处。但是其他数据集并没有考虑到训练集和验证集的重叠部分,这就导致不能很好地测试这个模型是 “真的能够泛化” 还是 “调用了先前训练的潜在记忆” 。
理解和量化高度相似的文本如何影响模型性能是一个重要的研究问题。更好的重复数据消除技术,如可伸缩的模糊匹配,也可以帮助更好地回答这些问题。目前,作者建议在为新的 NLP 数据集创建训练和测试分割时,使用基于 n-gram 级别的重复数据消除过程作为一个重要的验证步骤和完整性检查。
另一种确定 WebText 语言模型的性能是否可归因于潜在的记忆是:在它们自己的预留数据集上检查它们的性能。在 WebText 的训练集和测试集上的性能是相似的,并且随着模型大小的增加而共同减小困惑度。这表明,即使是模型容量最大的 GPT-2 也在许多方面对 WebText 仍然欠拟合。
5. Related Work
本文工作的很大一部分测量了在较大数据集上训练的较大语言模型的性能。这与 Jozefowicz 等人的工作类似,他们在 1 Billion Word Benchmark 上扩展了基于循环神经网络的语言模型。Bajgar 等人之前还通过 Project Gutenberg 创建更大的训练数据集来补充标准训练数据集,从而改进了 Children’s Book Test 数据集的结果。Hestness 等人对各种深度学习模型的性能如何随着模型容量和数据集大小的变化而变化进行了全面分析。作者的实验虽然跨任务的噪音更大,不确定性更强,但表明子任务也存在类似的趋势(模型容量和数据集大小变大时模型的性能更好),并可以扩展到 10 亿参数。
Hestness 的论文提出了泛化误差和模型大小随训练集增长而增长的大规模经验表达。作者引入了这种测量的方法,并测试了四个机器学习领域:机器翻译、语言建模、图像处理和语音识别。作者的实证结果表明,幂律泛化误差在多种因素中进行缩放,从而产生幂律指数——学习曲线的“陡度”——尚有待理论工作来解释。此外,模型改进只会改变误差,但似乎不会影响幂律指数。作者还表明模型大小与数据大小呈次线性缩放。这些尺度关系对深度学习研究、实践和系统具有重大影响。它们可以协助模型调试、设置准确目标以及有关数据集增长的决策。
启发论文研究的工作发现:一个经过训练用于生成维基百科文章的模型也学会了在语言之间翻译名称。此外,之前的工作已经探索了过滤和构建基于网页的大型文本语料库的替代方法。
6. Discussion
许多研究都致力于学习、理解和批判性评估有监督和无监督预训练的表征方法。研究结果表明,无监督任务学习是另一个有前途的研究领域。这些发现可能有助于解释预训练技术对下游 NLP 任务的广泛成功,因为论文工作表明,在极限下,这些预训练技术能直接学习执行任务,而不需要监督适应调整或修改。
在阅读理解方面,GPT-2 在 zero-shot 背景下与监督基线竞争强烈。然而,在其他任务上,如文本总结任务,虽然它是在定性地执行任务,但根据定量指标,它的性能仍然只是基本(低)的。虽然作为研究结果是可以的,但是在实际应用方面,GPT-2 的 zero-shot 性能仍远未使用。
作者已经研究了 WebText 语言模型在许多规范的 NLP 任务上的 zero-shot 性能,但还有许多额外的任务可以进行评估。毫无疑问,有许多实际任务中,GPT-2 的性能仍然不比随机好。即使在评估的常见任务上,如问题回答和翻译,语言模型也只有在它们有足够的能力时才会开始优于简单的基线。
虽然 zero-shot 性能为 GPT-2 在许多任务上的潜在性能建立了一个基线,但目前还不清楚通过微调实现的上限在哪里。在一些任务上,GPT-2 的完全抽象输出与基于提取指针网络的输出有显著的不同,后者目前在许多问题回答和阅读理解数据集上是最先进的。鉴于之前的 GPT -1 微调成功,作者计划研究诸如 decaNLP 和 GLUE 等基准测试的微调,因为不清楚是否有额外的训练数据和能力足以克服 BERT 所证明的 GPT 的单向表示的低效率。
7. Conclusion
当一个大型语言模型在一个足够大和多样化的数据集上进行训练时,它能够在许多领域和数据集上表现良好。GPT-2 的 zero-shot 背景在 8 个测试语言建模数据集中的 7 个上达到 SOTA 。该模型在 zero-shot 背景下能够执行的任务的多样性表明,训练到最大限度的文本语料库的高容量模型能学习如何在不需要明确监督的情况下执行惊人数量的任务。