速通GPT-2:Language Models are Unsupervised Multitask Learners全文解读

文章目录

  • 总览GPT和GPT-2区别
  • Abstract
    • [1. 概括](#1. 概括)
    • [2. 具体分析](#2. 具体分析)
  • Introduction
  • Approach
    • [1. 概括与要点](#1. 概括与要点)
    • [2. 原文阅读翻译](#2. 原文阅读翻译)
    • [3. 具体分析](#3. 具体分析)
      • 论文核心
      • [Training Dataset](#Training Dataset)
      • [Input Representation](#Input Representation)
      • Model
    • [3. BPE](#3. BPE)
      • [BPE 的背景](#BPE 的背景)
      • [BPE 解决了什么问题?](#BPE 解决了什么问题?)
      • [BPE 的工作原理](#BPE 的工作原理)
      • 论文中的解释
      • [BPE 的优点](#BPE 的优点)
      • 小结
  • Experiments
      • [Language Modeling](#Language Modeling)
      • [Children's Book Test (CBT)](#Children's Book Test (CBT))
      • LAMBADA
      • [Winograd Schema Challenge](#Winograd Schema Challenge)
      • [Reading Comprehension](#Reading Comprehension)
      • Summarization
      • Translation
      • 什么是贪婪解码
      • [Question Answering](#Question Answering)
      • [Generalization vs Memorization](#Generalization vs Memorization)
  • [Related Work](#Related Work)
  • Discussion
  • 架构总结
    • [1. GPT-2的架构](#1. GPT-2的架构)
    • [2. 公式的解读](#2. 公式的解读)
    • [3. 公式如何应用于模型](#3. 公式如何应用于模型)
    • [4. 如何实现无监督学习的出色表现](#4. 如何实现无监督学习的出色表现)
    • [5. 如何实现泛化性](#5. 如何实现泛化性)
    • [6. 总结](#6. 总结)

🍃作者介绍:双非本科大四网络工程专业在读,阿里云专家博主,专注于Java领域学习,擅长web应用开发,目前开始人工智能领域相关知识的学习

🦅个人主页:@逐梦苍穹

📕所属专栏:人工智能

🌻gitee地址:xzl的人工智能代码仓库

✈ 您的一键三连,是我创作的最大动力🌹

在正式开始本篇文章之前,先介绍一下这篇文章总体结构。

首先是阐述一下GPT跟GPT-2之间的区别,然后就是往下按照论文原文的各级标题进行分析理解,

其中会包括一些论文原文,帮助我们快速定位回论文内容,

最后会对整个的GPT-2架构做一个总结,总结一下GPT-2到底是如何实现了通用模型效果。


下面开始文章内容!

总览GPT和GPT-2区别

论文提到:

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.

我们希望朝着更通用的系统发展,它可以执行许多任务------最终不需要为每个任务手动创建和标记训练数据集。

👇

这句话揭示了GPT和GPT-2 之间的关键区别,即从任务专门化到通用性增强的过渡。

GPT和GPT-2的主要区别:

  1. 任务处理方式的变化
    • GPT(Generative Pre-trained Transformer) :GPT在设计上主要是为了通过预训练语言模型,并在特定任务(如文本分类、问答等)上进行微调。这意味着GPT虽然具备一定的任务迁移能力,但需要针对具体任务进行 有监督微调
    • GPT-2 :GPT-2则进一步推动了 通用模型的概念,强调模型通过无监督训练学习广泛的语言表示,不再局限于某个特定任务。GPT-2可以在零样本(zero-shot)少样本(few-shot)甚至多任务学习中表现出色,减少了对人为标注训练数据的依赖,展示了更强的通用能力。这也是这句话"eventually without the need to manually create and label a training dataset for each one"的含义,表明GPT-2朝向一个不依赖标注数据的通用系统发展。
  2. 规模和能力的提升
    • GPT-2显著扩大了模型的规模(从1.17亿参数扩展到15亿参数),通过更大规模的训练数据和模型容量,增强了其处理不同任务的能力。这种扩展使得GPT-2在处理任务时无需专门的任务微调,便能执行多任务推理。这种提升直接支持了开发"更通用的系统"的目标。

总结:

GPT强调的是通过生成式预训练后在特定任务上的微调,而GPT-2则更加关注构建无需为每个任务单独微调的通用模型 ,并实现了更强的多任务适应能力。这句话体现了GPT-2所追求的愿景,即让模型更通用、更自主,最终能够不依赖人为标注数据集处理广泛的任务。

Abstract

1. 概括

论文的摘要主要描述了 语言模型 自然语言处理任务(如问答、机器翻译、阅读理解和摘要生成)中的应用。

传统上,这些任务通过监督学习在特定的数据集上进行训练。

然而,本文提出了通过无监督学习来解决这些任务的可能性,尤其是在训练语言模型时,无需明确的监督数据。

论文原文:

"Natural language processing tasks, such as question answering, machine translation, reading comprehension, and summarization, are typically approached with supervised learning on taskspecific datasets. We demonstrate that language models begin to learn these tasks without any explicit supervision when trained on a new dataset of millions of webpages called WebText."

自然语言处理任务,如问答、机器翻译、阅读理解和摘要,通常在任务特定的数据集上使用监督学习来处理。

我们证明了语言模型在没有任何明确监督的情况下开始学习这些任务,当在一个名为WebText的数百万网页的新数据集上训练时。

2. 具体分析

  1. 该部分讲述实验结果,提出了GPT-2模型能够在多个自然语言任务上实现无监督的多任务学习。在CoQA问答任务上,模型的性能达到了55 F1分数,与基准系统相媲美。

论文原文:

"When conditioned on a document plus questions, the answers generated by the language model reach 55 F1 on the CoQA dataset - matching or exceeding the performance of 3 out of 4 baseline systems without using the 127,000+ training examples."

当以文档和问题为条件时,语言模型生成的答案在CoQA数据集上达到55 F1 -在不使用127,000多个训练示例的情况下,匹配或超过4个基线系统中的3个的性能。

  1. 作者指出,模型的规模对于实现无监督任务转移的成功至关重要,模型越大,任务性能提升越显著。GPT-2模型拥有15亿参数,并在多个语言任务中取得了先进的成果。

论文原文:

"The capacity of the language model is essential to the success of zero-shot task transfer and increasing it improves performance in a log-linear fashion across tasks. Our largest model, GPT-2, is a 1.5B parameter Transformer that achieves state of the art results on 7 out of 8 tested language modeling datasets in a zero-shot setting but still underfits WebText."

语言模型的能力对于零样本任务迁移的成功至关重要,增加它可以跨任务以对数线性方式提高性能。

我们最大的模型GPT-2是一个1.5B参数的Transformer,它在8个测试语言建模数据集中的7个上实现了最先进的结果,但仍然不适合WebText。

  1. 作者推测,通过提高模型的容量,语言模型可以更好地从自然发生的任务演示中学习,而不需要明确的监督数据。这为构建能够从自然语言学习的系统提供了新的方向。

论文原文:

"These findings suggest a promising path towards building language processing systems which learn to perform tasks from their naturally occurring demonstrations."

这些发现为构建语言处理系统提供了一条很有希望的途径,该系统可以从自然发生的演示中学习执行任务。

还有就是:

First, word vectors were learned and used as inputs to task-specific architectures (Mikolov et al., 2013) (Collobert et al., 2011), then the contextual representations of recurrent networks were transferred (Dai & Le, 2015) (Peters et al., 2018), and recent work suggests that task-specific architectures are no longer necessary and transferring many self-attention blocks is sufficient (Radford et al., 2018) (Devlin et al., 2018).

首先,词向量被学习并作为特定任务架构的输入 (Mikolov 等, 2013) (Collobert 等, 2011),随后循环网络的上下文表示被转移 (Dai & Le, 2015) (Peters 等, 2018),而最近的研究表明,任务特定的架构不再是必需的,转移多个自注意力块就已足够 (Radford 等, 2018) (Devlin 等, 2018)。

👇

这段话描述了自然语言处理(NLP)领域中模型的发展历程,从早期的词向量 (word vectors)到当前的自注意力机制(self-attention blocks)模型,它展示了模型如何在不同任务中进行知识传递和泛化。

详细解释:

  1. 早期阶段:词向量(Word Vectors)
    • 早期的NLP方法,如Mikolov等人(2013)提出的Word2Vec ,以及Collobert等人(2011)的方法,主要是通过学习词向量(word vectors),即将每个词表示为一个固定的向量。
    • 词向量学习:这些词向量是通过无监督方法从大规模文本中学到的,能够捕捉到词与词之间的相似性和关系。
    • 应用 :这些词向量被用作输入到任务特定的架构中,即每个任务(例如文本分类或命名实体识别)都有特定的模型结构。
  2. 递归网络的上下文表示(Contextual Representations of Recurrent Networks)
    • 随后,研究者们发现可以通过递归神经网络(RNN) 长短期记忆网络(LSTM)来捕捉上下文信息。例如,Dai & Le(2015)和Peters等人(2018)的工作展示了如何将上下文表示(contextual representations)传递给任务特定的模型。
    • 递归网络的优势:这些模型能够处理序列数据,逐步捕获每个词语的上下文信息,使得表示不仅依赖于单个词,还包括了它在整个句子或段落中的位置和意义。
  3. 当前阶段:自注意力机制(Self-Attention Blocks)
    • 最近的工作,如Radford等人(2018)提出的GPT模型 ,以及Devlin等人(2018)提出的BERT模型 ,表明不再需要为每个任务设计特定的架构,自注意力机制(self-attention)就足以实现任务间的迁移和泛化。
    • 自注意力机制的优势 :通过多层的自注意力块(self-attention blocks),模型能够捕捉到序列中远距离词语之间的依赖关系,而不是像递归网络那样依赖逐词传递的信息。自注意力机制允许模型同时关注到整个序列的不同部分,从而提供更丰富的上下文信息。
    • 任务无关性 :这些自注意力机制的模型,如GPT和BERT,已经显示出在多个任务间的迁移能力,不再需要为每个任务设计专门的模型结构,只需简单地将这些模型应用到不同任务中即可。

总结:

这段话展示了NLP模型的发展历程,从早期依赖词向量和任务特定模型 ,到使用递归网络捕捉上下文 ,再到如今的自注意力机制模型 ,可以通过多个自注意力块的迁移来实现强大的任务适应性,不再需要任务专门化的架构设计。这是现代NLP模型,如GPT和BERT等,成功实现多任务学习和强泛化能力的关键。


关于上面提到的: recent work suggests that task-specific architectures are no longer necessary and transferring many self-attention blocks is sufficient

这句话的意思是,最新的研究表明,不再需要为每个任务设计特定的模型架构 ,而通过简单地传递多个自注意力机制块(self-attention blocks) 就足够了。也就是说,任务专属的复杂模型架构已经不再必要,而统一的模型结构能够在多个任务上表现良好。

Introduction

1. 概括

论文的Introduction部分主要讨论了当前机器学习系统在特定任务上的卓越表现是通过大型数据集、高容量模型以及监督学习的结合来实现的。然而,这些系统在面对数据分布或任务规范的轻微变化时表现出脆弱性。论文认为,现有系统更像是"狭窄的专家",而不是"通用型的专家"。作者希望通过无监督学习,使模型能够执行更多的任务,而无需为每个任务手动创建和标记训练数据集。

2. 具体分析

当前机器学习系统的局限性

论文开篇提到,尽管机器学习系统在许多任务上表现优异,但这些系统存在局限性,

特别是当面对数据分布或任务规范的轻微变化时表现出脆弱。这说明现有的系统更像是"狭窄专家",只能处理特定的任务,而非"通用型专家",即可以处理多种任务的系统。

举例来说,图片分类器、阅读理解系统等,在面对多样化的输入时,通常表现不稳定或有误差。

论文原文:

"Yet these systems are brittle and sensitive to slight changes in the data distribution (Recht et al., 2018)

and task specification (Kirkpatrick et al., 2017). Current systems are better characterized as narrow experts rather than competent generalists."

然而,这些系统非常脆弱,容易受到数据分布(Recht et al., 2018)和任务规格(Kirkpatrick et al., 2017)微小变化的影响。当前的系统更像是狭窄的专家,而不是具备全面能力的通才。

希望构建通用型系统

作者希望构建一种更加通用的机器学习系统,能够在无需为每个任务手动创建和标记训练数据的情况下,执行多个任务。

这种愿景是为了解决现有机器学习系统的局限性,并通过扩展系统的应用范围,创建能够从不同领域和任务中进行学习的模型。

论文原文:

"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."

我们希望朝着更通用的系统发展,它可以执行许多任务------最终不需要为每个任务手动创建和标记训练数据集。

数据集与任务

现有的主流方法是为每个任务 收集特定的训练示例,并训练系统模仿这些行为,然后在相同分布的测试数据上评估其表现。

这个方法虽然在特定任务上取得了很大的成功,但也暴露了系统在广泛应用中的不足。

因此,论文提出希望通过 无监督任务 的方式,训练模型执行多种任务。

论文原文:

"The dominant approach to creating ML systems is to collect a dataset of training examples demonstrating correct behavior for a desired task, train a system to imitate these behaviors, and then test its performance on independent and identically distributed (IID) held-out examples."

创建机器学习系统的主要方法是收集训练示例的数据集,展示期望任务的正确行为,训练系统模仿这些行为,然后在独立和同分布(IID)持有的示例上测试其性能。

通用性缺乏的原因

作者推测,现有系统缺乏通用性的一个主要原因是,当前的机器学习系统通常只在单一任务上训练,并且使用的是单一领域的数据集。

为了让系统能够更好地应对多种任务,作者提出要在更广泛的领域和任务上训练和评估模型性能。

论文原文:

"Our suspicion is that the prevalence of single task training on single domain datasets is a major contributor to the lack of generalization observed in current systems."

_我们怀疑,在 单一领域数据集上流行的单一任务训练 是当前系统中观察到的 缺乏泛化的主要原因

Approach

在这部分,作者详细阐述了他们的 核心方法 :基于 语言建模 来解决 多任务问题

这种方法的重点是通过 无监督学习和分布估计 来生成和预测自然语言数据,模型不需要事先针对特定任务进行训练或微调,能够在零样本(zero-shot)条件下完成各种任务。

1. 概括与要点

作者通过语言模型处理多种任务,特别是"零样本学习",这意味着模型无需任何专门的监督训练即可推断不同任务。这些任务可能包括翻译、阅读理解等多种自然语言处理(NLP)任务。语言建模通常被视为无监督的分布估计,其目标是通过条件概率来预测序列中的下一个符号。论文中的核心思想是将任务本身也嵌入到模型中,从而让语言模型不仅能够根据输入生成输出,还可以根据任务的不同生成相应的输出。

2. 原文阅读翻译

At the core of our approach is language modeling. Language modeling is usually framed as unsupervised distribution estimation from a set of examples ( x 1 , x 2 , . . . , x n ) (x_1, x_2, ..., x_n) (x1,x2,...,xn) each composed of variable length sequences of symbols ( s 1 , s 2 , . . . , s n ) (s_1, s_2, ..., s_n) (s1,s2,...,sn). Since language has a natural sequential ordering, it is common to factorize the joint probabilities over symbols as the product of conditional probabilities (Jelinek & Mercer, 1980) (Bengio et al., 2003):

p ( x ) = ∏ i = 1 n p ( s n ∣ s 1 , . . . , s n − 1 ) p(x) = \prod_{i=1}^{n} p(s_n | s_1, ..., s_{n-1}) p(x)=∏i=1np(sn∣s1,...,sn−1)

我们的方法的核心是语言建模。语言建模通常被框定为从一组示例 ( x 1 , x 2 , . . . , x n ) (x_1, x_2, ..., x_n) (x1,x2,...,xn)的无监督分布估计,每个示例由可变长度的符号序列 ( s 1 , s 2 , . . . , s n ) (s_1, s_2, ..., s_n) (s1,s2,...,sn)组成。由于语言具有自然的顺序,因此通常将符号上的联合概率分解为条件概率的乘积。

This approach allows for tractable sampling from and estimation of p ( x ) p(x) p(x) as well as any conditionals of the form p ( s n − k , . . . , s n ∣ s 1 , . . . , s n − k − 1 ) p(s_{n-k}, ..., s_n | s_1, ..., s_{n-k-1}) p(sn−k,...,sn∣s1,...,sn−k−1). In recent years, there have been significant improvements in the expressiveness of models that can compute these conditional probabilities, such as self-attention architectures like the Transformer (Vaswani et al., 2017).

这种方法允许从 p ( x ) p(x) p(x)以及形式为 p ( s n − k , . . . , s n ∣ s 1 , . . . , s n − k − 1 ) p(s_{n-k}, ..., s_n | s_1, ..., s_{n-k-1}) p(sn−k,...,sn∣s1,...,sn−k−1)的任何条件中进行易于取样和估计。近年来,可以计算这些条件概率的模型的表现力有了显著的提高,如Transformer这样的self-attention架构。

Learning to perform a single task can be expressed in a probabilistic framework as estimating a conditional distribution p ( o u t p u t ∣ i n p u t ) p(output | input) p(output∣input).

学习执行单一任务可以在概率框架中表示为估计条件分布 p ( o u t p u t ∣ i n p u t ) p(output | input) p(output∣input)

Since a general system should be able to perform many different tasks, even for the same input, it should condition not only on the input but also on the task to be performed. That is, it should model p ( o u t p u t ∣ i n p u t , t a s k ) p(output | input, task) p(output∣input,task).

由于一个通用系统应该能够执行许多不同的任务,即使对于相同的输入,它也应该不仅取决于输入,而且取决于要执行的任务,也就是说,它应该模型化 p ( o u t p u t ∣ i n p u t , t a s k ) p(output | input, task) p(output∣input,task).

This has been variously formalized in multitask and meta-learning settings. Task conditioning is often implemented at an architectural level, such as the task specific encoders and decoders in (Kaiser et al., 2017) or at an algorithmic level such as the inner and outer loop optimization framework of MAML (Finn et al., 2017). But as exemplified in McCann et al. (2018), language provides a flexible way to specify tasks, inputs, and outputs all as a sequence of symbols.

这在多任务和元学习设置中有不同的形式化形式。任务条件反射通常在架构级别实现,例如(Kaiser等人,2017)中特定于任务的编码器和解码器,或者在算法级别实现,例如MAML的内部和外部循环优化框架(Finn等人,2017)。但正如McCann等人(2018)所举的例子,语言提供了一种灵活的方式来指定任务、输入和输出,所有这些都是一系列符号。

For example, a translation training example can be written as the sequence (translate to french, english text, french text). Likewise, a reading comprehension training example can be written as (answer the question, document, question, answer). McCann et al. (2018) demonstrated it was possible to train a single model, the MQAN, to infer and perform many different tasks on examples with this type of format.

例如,一个翻译训练示例可以写成序列(翻译成法语、英语文本、法语文本)。同样,阅读理解训练示例可以写成(回答问题,文档,问题,答案)。McCann等人(2018)证明,可以训练单个模型MQAN,以这种格式对示例进行推断和执行许多不同的任务。

Language modeling is also able to, in principle, learn the tasks of McCann et al. (2018) without the need for explicit supervision of which symbols are the outputs to be predicted. Since the supervised objective is the same as the unsupervised objective but only evaluated on a subset of the sequence, the global minimum of the unsupervised objective is also the global minimum of the supervised objective.

原则上,语言建模也能够学习McCann等人(2018)的任务,而不需要明确监督哪些符号是要预测的输出。由于监督目标与无监督目标相同,但只对序列的一个子集进行评估,因此无监督目标的全局最小值也是监督目标的全局最小值。

In this slightly toy setting, the concerns with density estimation as a principled training objective discussed in (Sutskever et al., 2015) are side stepped. The problem instead becomes whether we are able to, in practice, optimize the unsupervised objective to convergence. Preliminary experiments confirmed that sufficiently large language models are able to perform multitask learning in this toy-ish setup but learning is much slower than in explicitly supervised approaches.

在这个有点像玩具的设置中,(Sutskever et al., 2015)中讨论的关于密度估计作为原则性训练目标的关注是次要的。问题变成了我们是否能够在实践中优化无监督目标以达到收敛。初步实验证实,足够大的语言模型能够在这种类似玩具的设置中执行多任务学习,但学习速度比明确监督的方法慢得多。

While it is a large step from the well-posed setup described above to the messiness of "language in the wild", Weston (2016) argues, in the context of dialog, for the need to develop systems capable of learning from natural language directly and demonstrated a proof of concept---learning a QA task without a reward signal by using forward prediction of a teacher's outputs. While dialog is an attractive approach, we worry it is overly restrictive.

虽然从上面描述的良好设置到"野外语言"的混乱是一个很大的步骤,但Weston(2016)认为,在对话的背景下,需要开发能够直接从自然语言中学习的系统,并展示了概念证明-通过使用教师输出的前向预测来学习没有奖励信号的QA任务。虽然对话是一种很有吸引力的方法,但我们担心它的限制过于严格。

The internet contains a vast amount of information that is passively available without the need for interactive communication. Our speculation is that a language model with sufficient capacity will begin to learn to infer and perform the tasks demonstrated in natural language sequences in order to better predict them, regardless of their method of procurement. If a language model is able to do this it will be, in effect, performing unsupervised multitask learning. We test whether this is the case by analyzing the performance of language models in a zero-shot setting on a wide variety of tasks.

互联网包含了大量的信息,这些信息是被动的,不需要互动交流。我们的推测是,一个有足够能力的语言模型将开始学习推断和执行自然语言序列中展示的任务,以便更好地预测它们,而不管它们的获取方法是什么。如果一个语言模型能够做到这一点,那么它实际上就是在进行无监督的多任务学习。我们通过分析语言模型在各种任务的零射击设置中的性能来测试是否存在这种情况。


下面对这部分论文内容进行详细讲解。

3. 具体分析

论文核心

"Since language has a natural sequential ordering, it is common to factorize the joint probabilities over symbols as the product of conditional probabilities (Jelinek & Mercer, 1980) (Bengio et al., 2003)"

由于语言具有自然的顺序顺序,因此通常将符号的联合概率分解为条件概率的乘积(Jelinek & Mercer, 1980) (Bengio et al., 2003)

论文提出的核心公式是语言模型中的条件概率公式:
p ( x ) = ∏ i = 1 n p ( s n ∣ s 1 , ... , s n − 1 ) p(x) = \prod_{i=1}^{n} p(s_n|s_1, \dots, s_{n-1}) p(x)=∏i=1np(sn∣s1,...,sn−1)

这表达了通过前面给定的序列符号来预测下一个符号的可能性

任务推理模型的思想基于条件分布: p ( o u t p u t ∣ i n p u t , t a s k ) p(output|input, task) p(output∣input,task)

作者指出,一个通用系统应能够根据任务类型推断输出结果,并且这种任务调节可以通过语言本身来完成,正如McCann等人(2018)的工作中所示:

"Learning to perform a single task can be expressed in a probabilistic framework as estimating a conditional distribution p ( o u t p u t ∣ i n p u t ) p(output|input) p(output∣input).

学习执行单个任务可以在概率框架中表示为估计条件分布 p ( o u t p u t ∣ i n p u t ) p(output|input) p(output∣input)。

Since a general system should be able to perform many different tasks, even for the same input, it should condition not only on the input but also on the task to be performed. That is, it should model p ( o u t p u t ∣ i n p u t , t a s k ) p(output|input, task) p(output∣input,task).

由于一般系统应该能够执行许多不同的任务,即使 对于相同的输入 ,它 不仅应该以输入为条件,还应该 以要执行的任务为条件 。也就是说,它应该对 p ( o u t p u t ∣ i n p u t , t a s k ) p(output|input, task) p(output∣input,task)建模。

通过语言符号序列来表达任务、输入和输出可以极大地简化不同任务的定义,避免任务特定的编码器和解码器的复杂设计。

作者还提到使用 Transformer 架构来进行条件概率的建模,这是近年来在语言模型中的重要进展。

通过Transformer结构,模型能够在大规模数据上进行高效的条件概率估计和语言生成。

"There have been significant improvements in the expressiveness of models that can compute these conditional probabilities, such as self-attention architectures like the Transformer"

近年来,可以计算这些条件概率的模型的表达能力有了重大改进,例如Transformer这样的self-attention架构

Training Dataset

这一部分介绍了用于训练语言模型的数据集WebText。

为了避免过度依赖传统数据集(如Wikipedia),作者通过从网络上收集网页文本构建了一个新的语料库:WebText。

具体而言,他们从Reddit平台上收集了超过4500万条链接,并通过内容提取器清理HTML数据,最终形成了一个包含约800万个文档,总计40GB的文本数据集。


作者特别强调,他们的数据集没有包含Wikipedia,因为很多模型已经使用该数据集进行训练,可能会在测试集上出现数据重叠的问题。

WebText的构建依赖于Reddit上的用户评价系统,只有获得至少3个karma的链接会被包括在内。

这种方式确保了数据的质量,因为karma值较高的链接通常更具信息性或更有趣。

"The resulting dataset, WebText, contains the text subset of these 45 million links.

得到的数据集WebText包含了这4500万个链接的文本子集。

All results presented in this paper use a preliminary version of WebText which does not include links created after Dec 2017"

本文中提供的所有结果都使用WebText的初步版本,其中不包括2017年12月之后创建的链接

通过使用Dragnet和Newspaper1内容提取器,研究人员进一步清理了数据,去除了重复和噪音文本,最终形成了一个多样性和规模都较大的数据集,为语言模型的训练提供了坚实的基础。

Input Representation

概述:

输入表示部分探讨了 如何以最佳方式 将自然语言输入到模型中。

作者选择了字节对编码(Byte Pair Encoding, BPE)作为折中方案,既避免了传统词汇表示的局限性,也提升了字符级语言模型的性能。

详细讲解:

当前大规模语言模型通常需要对输入文本进行预处理,比如统一大小写、分词和处理未登录词(out-of-vocabulary, OOV)。

但这些方法往往限制了模型的通用性。为了克服这些问题,作者 使用BPE作为中间方案 ,该方法能够在处理常见符号序列时利用 词级输入,而对不常见的符号则回归到字符级输入。

这种方法确保了模型能够有效处理任意Unicode字符串,并避免了传统字节级模型性能不足的问题。

"Byte Pair Encoding (BPE) (Sennrich et al., 2015) is a practical middle ground between character and word level language modeling which effectively interpolates between word level inputs for frequent symbol sequences and character level inputs for infrequent symbol sequences."

字节对编码(BPE) (Sennrich等人,2015)是字符和词级语言建模之间的一个实用的中间地带,它有效地在频繁符号序列的词级输入和不频繁符号序列的字符级输入之间进行插值。

通过这种表示方法,模型不仅能够在任何数据集上运行,无需额外的预处理、分词或词汇表调整,而且能够处理具有多样性符号集的数据。

Model

概述:

在模型架构部分,论文描述了基于Transformer结构的语言模型。作者基于OpenAI GPT的模型架构进行了多项改进,并通过增加层数和模型参数,设计了四种不同规模的模型。

详细讲解:

模型架构的核心是基于Vaswani等人提出的Transformer架构(2017),模型的细节遵循了OpenAI GPT模型(2018)。为了提升模型的性能,作者对架构进行了若干改进,包括将层归一化(Layer Normalization)移动到每个子模块的输入处,并在最终的自注意力块后增加了额外的层归一化操作。此外,他们使用了一种改进的初始化方法,调整了残差路径的权重,以确保模型深度增加时的稳定性。

为了提升模型的容量,研究人员设计了四种不同大小的模型,参数从1.17亿到15.42亿不等。下表列出了四种模型的超参数:

参数量 层数 d model d_{\text{model}} dmodel
117M 12 768
345M 24 1024
762M 36 1280
1542M 48 1600

"We use a Transformer (Vaswani et al., 2017) based architecture for our LMs. The model largely follows the details of the OpenAI GPT model (Radford et al., 2018) with a few modifications."

除了增加模型的层数和参数量,作者还扩大了词汇表的大小,并将上下文窗口从512个token增加到1024个token,以更好地处理长文本。同时,作者也采用了较大的批量(batch size)进行训练。

3. BPE

这里补充一下上面提到的BPE的概念!

Byte Pair Encoding (BPE)

BPEByte Pair Encoding )是一种文本分词算法,用于处理自然语言中的词汇表示问题。

它是字符级和词级语言建模之间的一种折衷方案,既避免了词级表示的稀疏性问题,又克服了字符级建模时上下文太短、难以捕捉长距离依赖的缺点。

BPE 的背景

在自然语言处理中,模型通常依赖于词汇表(vocabulary)来表示输入文本。

传统的做法是把每个词(word)看作一个独立的单元,但这有一些问题:

  1. 词汇表的大小非常大,尤其是在多语言环境下,可能需要数十万到数百万个词汇。
  2. 未登录词(OOV, Out-of-Vocabulary)问题,即测试数据中出现了训练时未见过的词,模型无法处理。

另一种方案是字符级建模,即把每个字符作为输入单位。

这样可以避免未登录词问题,但会导致上下文 过于局部,模型难以学习语言中的长距离依赖关系。

BPE 解决了什么问题?

BPE是一种折衷方案,它介于字符级建模和词级建模之间。

其基本思想是从最小的字符对开始,将它们逐步组合成更大、更常见的词或短语。

BPE 的工作原理

BPE 通过逐步合并最频繁出现的字符对(或符号对)来构建子词单元:

  1. 初始化 :将每个单词分解为字符。例如,"lower"会分解为 [ " l " , " o " , " w " , " e " , " r " ] ["l", "o", "w", "e", "r"] ["l","o","w","e","r"]。
  2. 合并频率最高的字符对 :统计在语料库中,哪个字符对最常出现,并将它们合并为一个单元。继续合并直到达到预设的合并次数。
    • 例如,如果"l"和"o"最常出现,它们会被合并为"lo"。
  3. 重复操作 :继续找到最常见的字符对并合并,直到合并次数结束。最终,常见的单词会被合并成完整的词,而不常见的词则保持部分分词

通过这种方式,BPE能够:

  • 对常见词(如"the","and")直接使用词级表示。
  • 对不常见词分解成子词或字符级单位,从而避免未登录词问题。

论文中的解释

"Byte Pair Encoding (BPE) (Sennrich et al., 2015) is a practical middle ground between character and word level language modeling which effectively interpolates between word level inputs for frequent symbol sequences and character level inputs for infrequent symbol sequences."

BPE 的优点

  1. 减小词汇表的规模:通过将常见的词合并成一个单元,而不常见的词分解为子词,BPE使得模型能够处理大规模的词汇表。
  2. 解决未登录词问题:即使是测试集中出现的新词,也能通过其组成部分(子词或字符)来表示,从而避免了传统词级模型中遇到的 OOV 问题。
  3. 通用性强:BPE适用于多语言环境,可以处理各种符号系统(包括非拉丁字母语言,如中文和阿拉伯文)。

小结

BPE 是一种平衡字符级和词级建模的有效方法,它能够根据符号的频率选择适当的表示单位,常见符号使用词级表示,罕见符号使用字符级表示,既保证了模型的灵活性,又减小了词汇表规模并解决了未登录词的问题。

Experiments

在"Experiments"部分,作者详细描述了他们在不同任务上对语言模型的评估,涵盖语言建模、儿童图书测试、LAMBADA、Winograd Schema Challenge等任务。

实验的核心在于展示GPT-2模型在"零样本"情况下的多任务处理能力。

Language Modeling

概述:

这一小节旨在评估GPT-2在语言建模任务中的表现。

由于模型不需要对输入数据进行损失性预处理或标记化,因此可以直接在不同的语言模型基准上评估。

在语言建模中,常用的评估标准是计算平均负对数概率的缩放值或指数值。作者通过计算模型对数据集的对数概率,并除以标准单元(如字节或词),来评估模型的表现。GPT-2在多种语言建模基准测试中的表现优于现有的模型。

"We evaluate the same quantity by computing the log-probability of a dataset according to a WebText LM and dividing by the number of canonical units."

我们通过根据WebText LM计算数据集的对数概率并除以规范单元的数量来评估相同的数量。

模型不仅在小型数据集(如Penn Treebank和WikiText-2)上取得了显著的提升,还在像LAMBADA这样考察长期依赖关系的数据集上也表现出色。

"Large improvements are noticed on small datasets such as Penn Treebank and WikiText-2 which have

only 1 to 2 million training tokens. Large improvements are also noticed on datasets created to measure long-term dependencies like LAMBADA (Paperno et al., 2016) and the Children's Book Test (Hill et al., 2015)."

在只有1到200万个训练令牌的小数据集(如Penn Treebank和WikiText-2)上,可以看到显著的改进。

在用于测量长期依赖关系的数据集(如LAMBADA(Paperno等人,2016)和儿童书籍测试(Hill等人,2015))上,也可以看到显著的改进。

Children's Book Test (CBT)

概述:

CBT是为评估语言模型在不同类型词汇上的表现而创建的。该测试主要通过完形填空题,要求模型在给定上下文的情况下,预测出遗漏的词汇。

详细讲解:

在CBT测试中,GPT-2的性能随着模型规模的增加而逐步提升,并且在常见名词和命名实体上取得了新的最佳成绩。此外,作者指出,测试集中与《丛林之书》有关的部分与WebText数据集存在一定的重叠,因此他们仅报告了不含显著重叠的验证集结果。

"GPT-2 achieves new state of the art results of 93.3% on common nouns and 89.1% on named entities."

GPT-2在普通名词和命名实体上分别达到了93.3%和89.1%的最新水平。

LAMBADA

概述:

LAMBADA数据集专门用于测试模型处理长距离依赖关系的能力。

该任务要求模型预测句子最后一个词,这通常需要至少50个token的上下文。

详细讲解:

GPT-2在LAMBADA测试中将现有的最优模型的困惑度从99.8降低到 8.6 8.6 8.6,并将准确率从 19 % 19\% 19%提升至 52.66 52.66% 52.66。

这表明GPT-2能够更好地捕捉长距离依赖关系,虽然模型的部分预测是有效的句子延续,但却不总是正确的最终词语。

"GPT-2 improves the state of the art from 99.8 (Grave et al., 2016) to 8.6 perplexity and increases the accuracy of LMs on this test from 19% (Dehghani et al., 2018) to 52.66%."

GPT-2将最先进的水平从99.8 (Grave等人,2016)提高到8.6,并将LMs在该测试中的准确性从19% (Dehghani等人,2018)提高到52.66%。

Winograd Schema Challenge

Winograd模式挑战

Winograd Schema Challenge是一个测量模型常识推理能力的任务,主要通过消解文本中的歧义来评估模型的性能。

GPT-2在该任务上的准确率提升了 7 % 7\% 7%,达到了 70.7 % 70.7\% 70.7%。

该数据集规模较小,仅包含 273 273 273个样本,因此作者建议参考相关文献来更好地理解这一结果。

"GPT-2 improves state of the art accuracy by 7%, achieving 70.70%."

Reading Comprehension

阅读理解任务使用CoQA数据集,CoQA的目标是测试模型对文档的理解能力,以及模型是否能够根据上下文回答问题。

GPT-2在未经过任何监督学习的情况下,通过贪婪解码方式生成答案,并在开发集上取得了 55 55 55 F1分数,与训练过的基准模型表现相当。

"Greedy decoding from GPT-2 when conditioned on a document, the history of the associated conversation, and a final token A: achieves 55 F1 on the development set."

当 GPT-2 在给定文档、相关对话的历史以及最终的标记 A 的条件下进行贪心解码时,开发集上达到了 55 F1 分数。

Summarization

Summarization(摘要生成)

概述:

在这部分实验中,作者测试了GPT-2的摘要生成能力,使用的是CNN和Daily Mail数据集。

为了诱导模型生成摘要,他们在文章后面添加了"TL;DR:"提示,并使用了Top-k随机采样的方法生成摘要。

详细讲解:

GPT-2在生成摘要时,主要关注的是文章的最新内容,有时会混淆一些细节,如交通事故涉及的车辆数量或具体标志的描述。尽管GPT-2生成的摘要在某些质量上与常规神经模型相当,但在ROUGE得分上仍低于现有基线,并且在没有任务提示时,摘要生成性能下降了 6.4 6.4 6.4个百分点,这表明任务提示能够帮助模型更好地执行特定任务。

"On the commonly reported ROUGE 1,2,L metrics the generated summaries only begin to approach the performance of classic neural baselines and just barely outperforms selecting 3 random sentences from the article."

在常见的 ROUGE 1、2、L 指标上,生成的摘要仅开始接近经典神经网络基线的表现,且仅稍微优于从文章中随机选择 3 句的结果。

Translation

概述:

这一部分实验探讨了GPT-2是否学会了如何翻译语言。研究人员测试了GPT-2在英语到法语翻译任务中的表现。

详细讲解:

为了帮助模型推断这是一个翻译任务,作者为模型提供了英语句子=法语句子的上下文对,然后通过贪婪解码生成翻译。结果表明,在WMT-14英法翻译测试集上,GPT-2的表现略低于现有的词对词翻译模型,只获得了 5 5 5 BLEU分数。这表明尽管模型在其他语言任务上表现良好,但在翻译任务上的能力还有待进一步提高。

"On the WMT-14 English-French test set, GPT-2 gets 5 BLEU, which is slightly worse than a word-by-word substitution with a bilingual lexicon inferred in previous work on unsupervised word translation."

在 WMT-14 英法测试集上,GPT-2 得到 5 分的 BLEU 分数,稍微逊色于使用双语词典逐词替换的表现,这种词典是在之前无监督单词翻译的研究中推断出来的。

什么是贪婪解码

在上一部分的Translation中提到了贪婪解码,在这里讲解一下。

贪婪解码(Greedy Decoding) 是机器翻译、文本生成等任务中常用的一种解码方法。

它的 核心思想 是:在每一步生成时,选择具有 最高概率 的词作为输出,然后将这个词作为接下来一步生成的输入,重复这个过程,直到生成完整的序列。

贪婪解码的具体步骤:

  1. 初始状态:从起始符号或提供的输入序列开始。
  2. 生成词语:模型根据当前输入,计算可能的下一个词的概率分布(也就是每个词出现的概率)。
  3. 选择最优词 :在概率分布中,选择概率最高的词作为输出。
  4. 继续解码:将这个输出作为下一个时间步的输入,重复这个过程,直到生成结束标记或达到预设的最大长度。

在每一步,贪婪解码都 只选择当前时刻的最佳词,而不会回顾之前的选择或考虑全局的最优性。

因此,贪婪解码的策略是 逐步做出"局部最优"的选择,而不保证整个生成序列是全局最优的。

GPT-2和贪婪解码:

在GPT-2生成翻译的过程中,贪婪解码就是通过逐步生成每个词来实现的。

比如,在WMT-14英法翻译测试集中,GPT-2会从提供的英语句子开始,逐步预测出法语单词序列。

每一次预测,它都会选择概率最高的词。

然而,这种方法的缺点是它有时会错过更合适的词,因为它只专注于局部的最佳选择,忽略了可能需要等待几步后才能显现出最优结果的情况。

这种局部最优的选择可能导致生成的序列不是全局最优,从而影响翻译的准确性和流畅性。


假设要翻译句子 "I like to play soccer"。

  1. 起点 :模型开始处理第一个词 I I I,根据上下文生成概率分布,可能会输出 J e Je Je(我)。
  2. 第二步 :接着,它会生成下一个词,可能输出 a i m e aime aime(喜欢),因为这是当前概率最高的词。
  3. 第三步 :继续生成 j o u e r jouer jouer(玩)。
  4. 第四步 :生成 a u au au。
  5. 第五步 :生成 f o o t b a l l football football。

通过贪婪解码,模型在每一步都选择当前最可能的词,从而生成句子 "Je aime jouer au football"。

虽然这个句子在字面意思上正确,但它并不是法语中的标准表述,正确的翻译应该是 "J'aime jouer au football",但模型在第2步选择了错误的分词组合 J e a i m e Je aime Jeaime,从而影响了整体质量


BLEU得分:

BLEU(Bilingual Evaluation Understudy 双语评估替代)是一种常用的自动翻译评估指标,用于评估机器生成翻译与参考翻译的相似程度。

BLEU分数的范围是0到1,通常以百分比表示,越接近1(或100%)说明翻译质量越好。

在这篇论文中,GPT-2在WMT-14英法翻译任务中的贪婪解码得到的 5 5 5 BLEU分,说明它的翻译质量较低。

尽管能够生成有意义的句子,但这种局部最优的生成方法有时会错过更符合目标语言语法和表达的词。


总结:

  • 贪婪解码是一种简单的解码方法,在每一步只选择概率最高的词,不考虑全局的最优解。
  • 在翻译任务中,它可能会生成局部合理但全局不佳的结果,从而影响翻译的流畅性和准确性。
  • GPT-2在WMT-14英法翻译任务中使用贪婪解码,得到了 5 5 5 BLEU分,说明其翻译质量与专门的翻译模型相比仍有较大差距。

Question Answering

概述:

在这一小节,作者测试了GPT-2回答事实性问题的能力,使用的是Natural Questions数据集。

详细讲解:

GPT-2在问答任务中的准确率为 4.1 % 4.1\% 4.1%,虽然远低于当前最优的开放领域问答系统,但GPT-2在最有信心的 1 % 1\% 1%问题上的准确率达到了 63.1 % 63.1\% 63.1%。

通过提供示例问题-答案对,GPT-2能够推断数据集的简短回答风格,从而在零样本的情况下生成答案。

"GPT-2 answers 4.1% of questions correctly when evaluated by the exact match metric commonly used on reading comprehension datasets like SQUAD."

当使用阅读理解数据集(如 SQUAD)中常用的"精确匹配"指标进行评估时,GPT-2 对问题的准确回答率为 4.1%。

Generalization vs Memorization

Generalization vs Memorization:泛化与记忆

概述:

这一部分讨论了WebText数据集是否存在测试集与训练集重叠的问题,作者使用了Bloom Filter进行 8 8 8-gram的重叠分析,以测量模型是泛化学习还是简单的记忆。

详细讲解:

通过Bloom Filter分析,作者发现常见的语言建模数据集与WebText的训练集有 1 − 6 % 1-6\% 1−6%的重叠,并且部分数据集与自身训练集的重叠甚至更高,达到 5.9 % 5.9\% 5.9%。

为了验证这一现象,作者手动检查了测试集中出现的重叠模式,确认了某些常见短语和重复数据的存在。

"Common LM datasets' test sets have between 1-6% overlap with WebText train, with an average of overlap of 3.2%."

Related Work:相关工作

概述:

作者在这一部分讨论了他们的工作与现有文献的关系,特别是与大规模语言模型训练、生成模型功能和无监督预训练方法的关系。

详细讲解:

作者提到,许多现有的工作探讨了 如何通过扩展模型规模和数据集来提升性能,这与他们的研究方法类似。

相关工作包括Jozefowicz等人扩展RNN语言模型的研究,以及Hestness等人分析模型性能与数据集规模关系的研究。

"Our experiments, while much noisier across tasks, suggest similar trends hold for sub-tasks of an objective and continue into the 1B+ parameter regime."

我们的实验虽然在不同任务之间噪声较大,但表明类似的趋势也适用于目标的子任务,并且在超过 10 亿参数的规模中依然持续。

Discussion

Discussion:讨论

最后的讨论部分总结了研究发现,并提出了未来可能的研究方向。


作者认为他们的研究揭示了无监督任务学习是一个有前景的研究方向,解释了为什么预训练技术在下游NLP任务中表现优异。他们表明,语言模型在没有监督调整的情况下也能逐步学会执行特定任务,这为未来的研究提供了新的思路。

"Our results suggest that unsupervised task learning is an additional promising area of research to explore."

我们的结果表明,无监督任务学习是一个值得进一步探索的有前景的研究领域。

架构总结

看了上面那么多内容,这部分总结一下GPT-2如何基于Transformer架构、概率分布公式如何用在模型里面的以及如何实现GPT-2如此不错的无监督表现和泛化性。

1. GPT-2的架构

GPT-2基于Transformer架构的Decoder部分。具体来说,GPT-2只使用了Transformer的Decoder模块,没有使用Encoder模块。Decoder部分的主要作用是生成输出序列,而Encoder一般用于处理输入数据。GPT-2的设计中,模型通过自回归的方式,即基于之前的词生成下一个词,因此它只需要使用Decoder部分。

Transformer的Decoder由多个层级的自注意力机制(self-attention)和前馈神经网络组成,这使得它能够有效地捕捉输入序列中的长距离依赖关系。

2. 公式的解读

论文中提到的公式: p ( x ) = ∏ i = 1 n p ( s i ∣ s 1 , ... , s i − 1 ) p(x) = \prod_{i=1}^{n} p(s_i | s_1, \dots, s_{i-1}) p(x)=∏i=1np(si∣s1,...,si−1)

解释了语言建模的核心思想,即通过条件概率的方式分解句子的联合概率。在这个公式中, x x x 表示整个句子的概率,而句子中的每个词( s i s_i si)的出现是基于之前所有词( s 1 , ... , s i − 1 s_1, \dots, s_{i-1} s1,...,si−1)的条件概率。该公式的核心思想是:模型根据上下文预测下一个词的概率。这种分解使得模型能够逐步生成序列,特别适用于像GPT-2这样自回归的语言模型。

3. 公式如何应用于模型

在GPT-2中,这个公式通过Transformer的自注意力机制来实现。具体来说,模型会通过自注意力机制从前面的词中提取信息,并基于这些信息预测下一个词的概率分布。这个过程是递归的,模型从句子的第一个词开始,依次生成后续词汇,直到生成完整的句子或达到预设的句子长度。

4. 如何实现无监督学习的出色表现

GPT-2的出色无监督表现,依赖于以下几点:

  • 大规模的训练数据:GPT-2使用了一个名为WebText的庞大数据集,包含大量不同领域的网页内容。这使得模型可以学习到丰富的语义和上下文信息。
  • Transformer架构的自注意力机制:这种机制能够帮助模型捕捉长距离的上下文依赖,使得模型在处理复杂的语言模式时更为高效。
  • 无监督学习目标:GPT-2的训练目标是语言建模,即预测序列中的下一个词,这是一种无监督的任务,不需要特定的标注数据。通过大量语料,模型能够学习到足够的语言结构,从而在不同任务上泛化。

5. 如何实现泛化性

GPT-2的泛化性体现在模型能够在没有明确监督信号的情况下,适应多种不同的NLP任务。这是通过两方面实现的:

  • 共享任务格式:所有任务都被视为语言建模任务,因此不同任务(如翻译、问答)可以统一到同一个模型框架中。这种统一的格式让模型能够在处理不同任务时不需要额外的监督信号。
  • 自回归生成和自注意力机制:通过自回归生成和自注意力机制,模型可以从一个统一的框架下生成不同类型的输出,而不需要为每个任务设计特定的模型结构。这种机制大大提高了模型在多任务上的泛化能力。

6. 总结

  • GPT-2是基于Transformer的Decoder部分,通过自回归生成序列。
  • 公式 p ( x ) = ∏ i = 1 n p ( s i ∣ s 1 , ... , s i − 1 ) p(x) = \prod_{i=1}^{n} p(s_i | s_1, \dots, s_{i-1}) p(x)=∏i=1np(si∣s1,...,si−1) 用于表示基于上下文生成下一个词的条件概率。
  • GPT-2通过无监督语言建模任务、大规模数据集训练和Transformer架构的自注意力机制,实现了出色的无监督表现和良好的泛化能力。
相关推荐
神一样的老师2 分钟前
人工智能物联网的去中心化和分布式学习:全面综述、新兴挑战和机遇
人工智能·物联网·去中心化
范范08254 分钟前
基于NLP的对话系统开发:从零构建智能客服机器人
人工智能·自然语言处理·机器人
akhfuiigabv4 分钟前
使用LangChain创建简单的语言模型应用程序【快速入门指南】
java·python·语言模型·langchain
Point__Nemo27 分钟前
深度学习Day-33:Semi-Supervised GAN理论与实战
人工智能·深度学习
魔力之心31 分钟前
人工智能与机器学习原理精解【20】
人工智能·机器学习
SEU-WYL3 小时前
基于深度学习的因果发现算法
人工智能·深度学习·算法
Tunny_yyy4 小时前
李宏毅2023机器学习HW15-Few-shot Classification
人工智能·机器学习
Francek Chen4 小时前
【机器学习-监督学习】朴素贝叶斯
人工智能·机器学习·分类·数据挖掘·scikit-learn·朴素贝叶斯·naive bayes
jndingxin6 小时前
OpenCV运动分析和目标跟踪(1)累积操作函数accumulate()的使用
人工智能·opencv·目标跟踪
文艺倾年6 小时前
【大模型专栏—进阶篇】语言模型创新大总结——“后起之秀”
人工智能·pytorch·语言模型·自然语言处理·大模型