文章目录
- 速通GPT系列
- 几个重要概念
- Abstract
- Introduction
- [Related Work](#Related Work)
- Framework
- Experiments
-
- 概括
- 分析和观点
-
- [1. 实验设置](#1. 实验设置)
- [2. 模型配置](#2. 模型配置)
- [3. 监督微调的设置](#3. 监督微调的设置)
- [4. 任务和数据集](#4. 任务和数据集)
- [5. 迁移学习的效果](#5. 迁移学习的效果)
- [6. 零样本任务表现](#6. 零样本任务表现)
- 小结
- [Gaussian Error Linear Unit](#Gaussian Error Linear Unit)
-
- [1. 激活函数的作用](#1. 激活函数的作用)
- [2. GELU(高斯误差线性单元)](#2. GELU(高斯误差线性单元))
- [3. GELU与其他激活函数的区别](#3. GELU与其他激活函数的区别)
- [4. 为什么选择GELU](#4. 为什么选择GELU)
- 总结
- Analysis
- Conclusion
🍃作者介绍:双非本科大四网络工程专业在读,阿里云专家博主,专注于Java领域学习,擅长web应用开发,目前开始人工智能领域相关知识的学习
🦅个人主页:@逐梦苍穹
📕所属专栏:🌩
专栏
① :人工智能; 🌩专栏
② :速通人工智能相关论文🌻gitee地址:xzl的人工智能代码仓库
✈ 您的一键三连,是我创作的最大动力🌹
速通GPT系列
GPT、GPT2和GPT3三篇文章都有速通系列,这是第一篇;
关于另外两篇,请看我的这些文章👇:
GPT2:https://xzl-tech.blog.csdn.net/article/details/142056011
GPT3:https://xzl-tech.blog.csdn.net/article/details/141996726
几个重要概念
在这篇论文中,所谓的"微调"(fine-tuning)指的是在特定任务的监督数据上对预训练的模型进行调整和优化,以提高其在这些任务上的表现。这一过程建立在已经通过无监督训练学到的通用语言表示的基础上。
1、微调的具体做法
- 预训练阶段(Unsupervised Pre-training): 首先,GPT-2模型在大量未标注的文本数据上进行无监督的预训练。预训练的任务是通过语言建模目标(即预测序列中的下一个词)来学习通用的语言模式。模型会根据上下文词预测下一个词的条件概率,学习到丰富的语言结构。
- 微调阶段(Fine-tuning): 完成预训练后,GPT-2模型在特定任务的数据集上进行微调,这些数据集是有标注的,并与具体任务相关。微调的过程是利用预训练模型的参数作为起点,在少量的有监督数据上进行额外的训练,以使模型能够更好地执行特定任务。
简单来说,微调过程如下:
- 输入的是标注好的任务数据(例如句子对、问题和答案等)。
- 将这些数据通过预训练的模型传递,利用预训练好的权重和特征表示。
- 在最后一层(例如分类层或回归层),根据任务的需求进行调整(如分类时添加一个线性输出层)。
- 通过反向传播优化模型参数,使其在该任务上表现得更好。
- 微调的优势: 微调能够快速适应不同任务而不需要从头开始训练一个新的模型。由于GPT-2已经通过大规模无监督数据学到了通用的语言模式,微调时只需要对少量任务特定的数据进行小规模调整即可实现较好的效果。这种方法显著减少了对大规模标注数据的依赖,节省了大量的训练时间和资源。
总结:
- 预训练提供了通用的语言表示,通过无监督学习模型学习了广泛的语言知识。
- 微调是通过特定任务的数据对模型进行少量训练,以适应任务的需求。
- 这种结合使得模型在多个不同的任务上能够实现良好的泛化性能,而不需要为每个任务从头开始训练。
2、任务感知输入变换
任务感知输入变换(Task-Aware Input Transformation) 是在多任务学习或多用途模型中,通过改变输入的表示或结构,使模型能够感知到当前的任务或上下文,进而根据任务需求生成不同的输出。
这种方法能够让模型在不需要显式监督或标签的情况下,灵活处理多种任务。
任务感知输入变换是指在输入数据中嵌入某种特定信息,使模型能够根据输入的不同模式或提示词执行不同的任务。这种方式可以使模型在多任务环境下工作,而不需要针对每个任务构建单独的模型。
典型做法:
- 在输入中添加任务提示词:任务提示词是一段明确告诉模型当前需要执行什么任务的文本。例如,如果任务是机器翻译,则可以在输入文本前加上"翻译成法语";如果任务是回答问题,则可以加上"回答问题"。
- 使用统一的输入格式:通过将不同任务的输入表示为统一的语言序列,模型可以基于这种表示来处理不同任务,而不需要对架构进行修改。例如,可以把一个问题回答任务表示为"问题:... 回答:..."的格式。
任务感知输入变换的优势
- 无需任务标签:通过自然语言提示或输入序列中的特殊符号,模型可以根据上下文自动识别任务类型,避免了传统多任务学习中的显式标签依赖。
- 灵活性和扩展性:任务感知输入变换方法使得模型能够处理多种类型的任务,而不需要为每个任务进行特别设计。这意味着模型可以在一个统一的框架下处理问答、翻译、摘要生成等任务。
- 避免模型复杂化:传统多任务学习需要为每个任务设计特定的网络结构,而任务感知输入变换则通过改变输入格式,使得一个单一模型就能处理多任务。
应用示例:
在GPT-2的具体应用中,任务感知输入变换的一个典型场景是零样本学习(Zero-shot learning)。GPT-2并没有在标注好的任务数据上进行预训练,但由于它通过自然语言的提示词学会了如何推理任务,因此能够在没有监督信号的情况下处理特定任务。例如:
- 翻译:输入文本可能是 "Translate to French: Where is the library?",GPT-2能够通过序列的提示"Translate to French"推断出它需要执行的是翻译任务,并生成相应的法语句子。
- 问答:输入可能是 "Answer the following question: What is the capital of France?",GPT-2会根据"Answer"提示,知道当前需要执行的是问答任务,并生成正确答案。
总结:
任务感知输入变换是让模型通过输入序列中的任务提示或格式变化,理解当前需要执行的任务并生成相应输出的一种方式。
3、判别式训练模型
判别式训练模型:Discriminative Training Models
判别式训练模型是一类专注于直接学习输入与输出之间映射关系的机器学习模型,它们的目标是通过最小化分类错误率或其他损失函数,来优化模型的预测性能。
这类模型与 生成式模型(Generative Models) 相对,生成式模型则专注于学习输入数据的生成分布。
判别式模型的特点:
- 直接建模输入与输出的条件概率 :判别式模型并不关心如何生成数据(即不建模数据的生成过程),而是直接学习输入数据(例如特征向量)和输出类别(例如标签)之间的关系。公式上,判别式模型主要建模条件概率 P ( y ∣ x ) P(y|x) P(y∣x),即给定输入 x x x,预测输出 y y y的概率。与之相比,生成式模型会学习联合概率分布 P ( x , y ) P(x, y) P(x,y),从而能够通过贝叶斯定理计算条件概率 P ( y ∣ x ) P(y|x) P(y∣x),同时也能生成数据。
- 优化目标是分类准确率或回归精度:判别式模型的训练目的是找到一个函数,它能够将输入映射到正确的类别或预测值。最常用的优化方法是通过梯度下降最小化损失函数,如交叉熵损失(分类任务)或均方误差(回归任务)。
判别式模型的例子:
- 线性模型 :如Logistic回归 ,它直接建模 P ( y ∣ x ) P(y|x) P(y∣x),通过线性组合输入特征来进行分类任务。
- 支持向量机(SVM):SVM是经典的判别式模型之一,旨在通过最大化不同类别之间的边界距离来进行分类。
- 神经网络:现代的神经网络(例如前馈神经网络、卷积神经网络等)也是判别式模型,它们通过复杂的层级结构学习输入与输出之间的映射关系。
- 条件随机场(CRF):CRF是一种专门用于序列标注任务的判别式模型,它直接建模序列标签的条件概率。
判别式模型 vs. 生成式模型:
判别式模型和生成式模型的主要区别在于它们的建模目标:
- 生成式模型(Generative Models) :试图学习输入数据的生成机制,能够建模联合概率分布 P ( x , y ) P(x, y) P(x,y),并能够生成新数据。例如,朴素贝叶斯模型 、隐马尔可夫模型(HMM) 、生成对抗网络(GAN) 都是生成式模型。
- 判别式模型(Discriminative Models) :直接学习输入与输出的映射关系,建模条件概率 P ( y ∣ x ) P(y|x) P(y∣x),专注于分类或回归任务。它们的目标是提高预测性能,而不考虑数据生成过程。
优缺点:
- 优点 :
- 更高的分类精度 :由于判别式模型只关心 P ( y ∣ x ) P(y|x) P(y∣x),不需要建模数据的生成过程,它们通常能比生成式模型获得更高的分类准确率。
- 高效:判别式模型专注于找到能够优化任务的函数,因此它们的训练往往更高效,且不需要大量计算生成分布。
- 缺点 :
- 无法生成数据 :判别式模型无法像生成式模型那样,生成与真实数据分布相似的样本。例如,GAN 和贝叶斯网络可以生成新的图像或文本,而判别式模型则不具备这样的能力。
- 数据依赖性强:判别式模型需要大量有标注的数据来进行训练,数据不完整或数据稀缺时,其效果会受到限制。
应用场景:
判别式模型在诸如分类、回归、目标检测、语音识别等任务中广泛应用。在这些任务中,通常不需要生成数据,只需要模型给出准确的预测结果。因此,像Logistic回归、SVM、神经网络等判别式模型在这些场景中表现出色。
总结:
判别式训练模型 专注于直接学习输入与输出之间的条件关系 P ( y ∣ x ) P(y|x) P(y∣x),通过最小化损失函数来优化分类或回归任务的性能。它们在分类、回归等任务中表现优异,但无法生成数据。相比之下,生成式模型能够建模数据生成过程,适合生成任务。
行文至此,几个重要概念就讲完了,下面就是关于论文《Improving Language Understanding by Generative Pre-Training》的详细拆解。
Abstract
概括
论文的摘要部分介绍了 研究的主要方向 :通过 生成预训练 的方式,提升自然语言理解任务的表现。
作者提出了一种新方法,首先对未标注的文本进行大规模的语言模型训练,然后对每个具体任务进行监督微调。
通过这种方式,模型无需大幅调整架构就能进行高效迁移,在多个任务上实现了性能的提升。
分析和观点
1. 自然语言理解中的数据问题
自然语言理解任务涉及如文本蕴含 、问答等任务,但标注数据稀缺,而大量未标注文本可利用。
这些任务常常由于缺乏足够的标注数据而使得基于监督学习的模型表现不佳。
论文原文:
"Although large unlabeled text corpora are abundant, labeled data for learning these specific tasks is scarce, making it challenging for discriminatively trained models to perform adequately."
尽管大量未标注的文本语料库非常丰富,但用于学习这些特定任务的标注数据却很稀缺,这使得判别式训练模型难以表现出色。
2. 生成预训练和监督微调的结合
论文提出了一种解决方案 :首先对 未标注 的文本进行 生成预训练,接着通过监督微调完成特定任务。
这一方法通过输入变换有效地进行任务迁移,减少了对模型架构的调整。
论文原文:
"We demonstrate that large gains on these tasks can be realized by generative pre-training of a language model on a diverse corpus of unlabeled text, followed by discriminative fine-tuning on each specific task."
我们证明了,通过在多样化的未标注文本语料库上对语言模型进行生成式预训练,随后对每个特定任务进行判别式微调,可以在这些任务上实现显著提升。
3. 任务感知输入变换
作者的方法通过 任务感知的输入变换,使得预训练模型能够高效地适应不同任务,并且需要的架构改动极少。这使得模型迁移学习变得更加简单和高效。
论文原文:
"In contrast to previous approaches, we make use of task-aware input transformations during fine-tuning to achieve effective transfer while requiring minimal changes to the model architecture."
与以往方法相比,我们在微调过程中利用了任务感知的输入转换,以实现有效的迁移,同时对模型架构的改动最小化。
4. 模型的强大性能
论文的模型在12个任务中表现突出,其中9个任务达到了当前最优结果。
在常识推理、问答和文本蕴含任务上,分别提升了8.9%、5.7%和1.5%的绝对性能。
论文原文:
"Our general task-agnostic model outperforms discriminatively trained models that use architectures specifically crafted for each task, significantly improving upon the state of the art in 9 out of the 12 tasks studied. For instance, we achieve absolute improvements of 8.9% on commonsense reasoning (Stories Cloze Test), 5.7% on question answering (RACE), and 1.5% on textual entailment (MultiNLI)."
我们的通用任务无关模型优于为每个任务专门设计架构的判别式训练模型,在所研究的12个任务中,有9个任务显著超越了当前的最佳水平。
例如,我们在常识推理(故事填空测试)任务上取得了 8.9% 的绝对提升,在问答任务(RACE)上提升了 5.7%,在文本蕴含(MultiNLI)任务上提升了 1.5%。
Introduction
概括
这部分详细介绍了自然语言理解任务面临的挑战,特别是当前模型对于大量标注数据的依赖。
由于标注数据稀缺,许多领域的模型表现有限。
为了解决这一问题,作者提出了一种半监督学习方法 ,即首先对未标注的数据进行预训练,然后通过少量的标注数据进行微调。
该部分还提到,现有技术如词嵌入 对任务有一定帮助,但 仍未能充分利用文本的高层次信息。
这篇论文的贡献在于提出一种通过生成预训练的语言模型来学习通用的表示 ,能够 迁移到多种任务上,并且在不同任务中表现优异。
分析和观点
1. 自然语言理解的挑战在于对标注数据的依赖
作者强调,自然语言处理中的大多数深度学习方法都需要大量的标注数据,尤其是在某些缺少标注资源的领域中,模型的应用受到极大限制。
论文原文:
"Most deep learning methods require substantial amounts of manually labeled data, which restricts their applicability in many domains that suffer from a dearth of annotated resources."
大多数深度学习方法需要大量的人工标注数据,这限制了它们在许多缺乏标注资源的领域中的适用性。
2. 未标注数据的重要性
作者提出了一种通过利用未标注数据进行 无监督学习 的方案,从未标注文本中提取语言信息,能够有效缓解标注数据不足的问题。
这种方案的优势在于能够大大减少对标注数据的依赖,同时提升模型的性能。
论文原文:
"In these situations, models that can leverage linguistic information from unlabeled data provide a valuable alternative to gathering more annotation, which can be time-consuming and expensive."
在这些情况下,能够利用未标注数据中的语言信息的模型为获取更多标注提供了一个宝贵的替代方案,而收集标注数据通常既耗时又昂贵。
3. 词嵌入的贡献与局限
虽然预训练的词嵌入模型(如Word2Vec和GloVe)在多个NLP任务中表现出色,但这些方法主要捕获的是词层次信息 ,而 无法有效学习更高层次的语义表示。
为了提高迁移学习的效果,本文提出了一种更高级别的表示学习方法。
论文原文:
"The most compelling evidence for this so far has been the extensive use of pretrained word embeddings [10, 39, 42] to improve performance on a range of NLP tasks [8, 11, 26, 45]. Leveraging more than word-level information from unlabeled text, however, is challenging for two main reasons."
迄今为止,最有说服力的证据是广泛使用预训练词嵌入 [10, 39, 42] 来提高各种自然语言处理任务的性能 [8, 11, 26, 45]。然而,从未标注文本中利用超越词级别的信息存在两大主要挑战。
4. 迁移学习中的挑战
作者指出了两大主要挑战:
- 优化目标的不确定性:不清楚哪种优化目标最适合学习对迁移有用的文本表示。
- 迁移技术的复杂性:现有方法在应用迁移学习时,需要对模型架构进行复杂的任务特定修改,这增加了难度。
论文原文:
"First, it is unclear what type of optimization objectives are most effective at learning text representations that are useful for transfer. "
首先,目前尚不清楚哪些类型的优化目标最有效地学习对迁移有用的文本表示。
"Second, there is no consensus on the most effective way to transfer these learned representations to the target task."
其次,对于如何将这些学到的表示最有效地迁移到目标任务上,尚无共识。
5. 提出的方法
作者提出了一个结合无监督预训练 和监督微调 的 半监督学习方法,目标是学习一种通用的表示,能够在多个任务上实现迁移。
这种方法不需要目标任务与未标注语料的领域一致,增强了模型的通用性。
论文原文:
"In this paper, we explore a semi-supervised approach for language understanding tasks using a combination of unsupervised pre-training and supervised fine-tuning. Our goal is to learn a universal representation that transfers with little adaptation to a wide range of tasks."
在本文中,我们探索了一种将无监督预训练与监督微调相结合的半监督方法来处理语言理解任务。
我们的目标是学习一种通用表示,该表示可以以极少的调整迁移到广泛的任务中。
6. 使用的模型架构
作者选择了Transformer 架构,原因是它在处理长距离依赖时比循环神经网络(RNN)表现更好,并且能够在 迁移过程中提供更强的泛化能力。
论文原文:
"For our model architecture, we use the Transformer [62], which has been shown to perform strongly on various tasks such as machine translation [62], document generation [34], and syntactic parsing [29]."
在我们的模型架构中,我们使用了 Transformer [62],该架构已被证明在诸如机器翻译 [62]、文档生成 [34] 和句法解析 [29] 等各种任务上表现出色。
"This model choice provides us with a more structured memory for handling long-term dependencies in text, compared to alternatives like recurrent networks, resulting in robust transfer performance across diverse tasks."
与循环神经网络等替代方法相比,这种模型选择为我们提供了 更结构化的记忆机制 来处理文本中的长期依赖关系,从而在不同任务中实现了稳健的迁移性能。
7. 实验效果
通过实验,作者展示了其方法在多种语言理解任务中的优越性,特别是在四类任务中,即自然语言推理 、问答 、语义相似性 和文本分类,其表现超过了传统的任务特定架构。
论文原文:
"We evaluate our approach on four types of language understanding tasks -- natural language inference, question answering, semantic similarity, and text classification. Our general task-agnostic model outperforms discriminatively trained models that employ architectures specifically crafted for each task"
Related Work
概括
"Related Work"部分回顾了与作者工作相关的几项研究领域,尤其是 半监督学习 、无监督预训练 和辅助训练目标。
作者总结了这些研究中的主要方法、优缺点以及与本论文工作的区别。
在自然语言处理中,半监督学习逐渐受到重视,而通过无监督的方式预训练语言模型 ,再进行监督微调 已经被证明在某些任务中有效,但目前的预训练大多限制于短距离依赖,且方法需要大量任务特定的调整。
作者的工作是对这些现有方法的改进和扩展,使用Transformer架构,使其能够更好地捕捉长距离依赖,同时减少任务特定的修改。
分析和观点
1. 半监督学习在自然语言处理中的应用
作者首先指出了半监督学习在自然语言处理任务中的重要性,尤其是在序列标注和文本分类等任务中,过去的工作大多利用未标注的数据来计算词级或短语级统计量,并将其作为特征融入监督学习模型中。
这些早期的工作主要侧重于低层次的信息。
论文原文:
"This paradigm has attracted significant interest, with applications to tasks like sequence labeling [24, 33, 57] or text classification [41, 70]. The earliest approaches used unlabeled data to compute word-level or phrase-level statistics, which were then used as features in a supervised model [33]."
这种范式引起了广泛的关注,并被应用于诸如序列标注 [24, 33, 57] 或文本分类 [41, 70] 等任务。
最早的方法使用未标注数据来计算词级或短语级的统计信息,随后将这些统计信息作为特征用于监督模型 [33]。
2. 词嵌入技术的进展
随着时间推移,词嵌入技术(如Word2Vec、GloVe)的使用带来了自然语言处理任务上的性能提升。
然而,这些方法主要关注 词级别的信息,在捕获高层次的语义表示上表现不佳。
论文提出,应该进一步探索从未标注文本中学习更高层次的语义表示,以提升模型对多样任务的迁移能力。
论文原文:
"Over the last few years, researchers have demonstrated the benefits of using word embeddings [11, 39, 42], which are trained on unlabeled corpora, to improve performance on a variety of tasks [8, 11, 26, 45]. These approaches, however, mainly transfer word-level information, whereas we aim to capture higher-level semantics."
在过去的几年里,研究人员展示了使用词嵌入 [11, 39, 42] 的优势,这些词嵌入是在未标注语料库上训练的,能够提升多种任务的性能 [8, 11, 26, 45]。然而,这些方法主要传递词级别的信息,而我们则旨在捕捉更高层次的语义。
3. 无监督预训练的发展
无监督预训练最初用于图像分类和回归任务中,后来逐渐应用于深度神经网络的正则化。
无监督预训练通过帮助模型找到良好的初始点,从而改进了模型的泛化能力。
特别是在文本分类任务中,研究者们发现无监督预训练捕捉到了部分语言信息,但由于LSTM等模型限制了模型的短距离预测能力,因此表现受到限制。
论文原文:
"Unsupervised pre-training is a special case of semi-supervised learning where the goal is to find a good initialization point instead of modifying the supervised learning objective. Early works explored the use of the technique in image classification [20, 49, 63] and regression tasks [3]. Subsequent research [15] demonstrated that pre-training acts as a regularization scheme, enabling better generalization in deep neural networks."
无监督预训练是半监督学习的一种特殊情况,其目标是找到一个良好的初始化点,而不是修改监督学习目标。早期的研究探索了该技术在图像分类 [20, 49, 63] 和回归任务 [3] 中的应用。后续研究 [15] 证明,预训练起到了一种正则化的作用,使深度神经网络能够更好地泛化。
4. 现有方法的局限性
尽管无监督预训练在某些任务中提高了模型性能,但许多现有的预训练方法,如LSTM,限制了对长距离依赖的捕捉能力。
相比之下,本文采用的Transformer架构能够更好地捕捉长距离的语义结构,因此表现出更好的迁移效果。
论文原文:
"In contrast, our choice of transformer networks allows us to capture longerrange linguistic structure, as demonstrated in our experiments. Further, we also demonstrate the effectiveness of our model on a wider range of tasks including natural language inference, paraphrase detection and story completion."
相比之下,我们选择 Transformer 网络使我们能够捕捉更长距离的语言结构,正如我们的实验所示。此外,我们还证明了我们的模型在更广泛的任务上(包括自然语言推理、释义检测和故事补全)具有有效性。
5. 辅助训练目标的使用
作者还讨论了为任务引入辅助训练目标(如语言建模)的策略。
以前的研究表明,将辅助任务融入模型可以提升性能,
例如,在词性标注和命名实体识别等任务中,通过添加语言建模目标来辅助学习,可以提升序列标注的效果。
论文原文:
"Early work by Collobert and Weston [10] used a wide variety of auxiliary NLP tasks such as POS tagging, chunking, named entity recognition, and language modeling to improve semantic role labeling. More recently, Rei [50] added an auxiliary language modeling objective to their target task objective and demonstrated performance gains on sequence labeling tasks. Our experiments also use an auxiliary objective, but as we show, unsupervised pre-training already learns several linguistic aspects relevant to target tasks."
Collobert 和 Weston [10] 的早期工作使用了多种辅助自然语言处理任务,如词性标注、块解析、命名实体识别和语言建模,以提升语义角色标注的表现。最近,Rei [50] 在其目标任务目标中添加了一个辅助语言建模目标,并在序列标注任务上展示了性能提升。我们的实验同样使用了一个辅助目标,但正如我们所展示的,无监督预训练已经学习到了与目标任务相关的多个语言方面。
6. 本文的改进
论文提出的改进在于减少任务特定的修改,最大化模型的通用性。与以前依赖大量任务特定架构修改的做法不同,作者通过输入变换和最小化架构调整,实现了模型在多个任务中的通用性和有效性。
论文原文:
"Other approaches [43, 44, 38] use hidden representations from a pre-trained language or machine translation model as auxiliary features while training a supervised model on the target task. This involves a substantial amount of new parameters for each separate target task, whereas we require minimal changes to our model architecture during transfer."
其他方法 [43, 44, 38] 在对目标任务训练监督模型时,使用预训练语言模型或机器翻译模型的隐藏表示作为辅助特征。这种方法为每个单独的目标任务引入了大量的新参数,而我们的模型在迁移过程中仅需对架构进行极少的改动。
总结来说,"Related Work"部分通过回顾半监督学习、无监督预训练和辅助训练目标的研究,指出了现有方法的局限,并引出本文的贡献,即通过使用Transformer架构和输入变换,在减少任务特定调整的同时,实现更好的迁移性能。
Framework
Framework:框架
概括
"Framework"部分介绍了本文提出的两阶段训练流程:首先对未标注文本进行无监督预训练 ,然后通过标注数据进行监督微调。
整个过程通过学习通用表示,实现了模型在不同自然语言处理任务中的迁移。该部分详细讨论了模型的架构选择(基于Transformer的多层解码器)及输入变换等内容。
分析和观点
1. 两阶段训练过程的概述
作者提出的训练过程分为两大阶段:
- 无监督预训练:在大规模的未标注语料库上进行语言模型的预训练。
- 监督微调:使用特定任务的标注数据进行参数微调。
论文原文:
"Our training procedure consists of two stages. The first stage is learning a high-capacity language model on a large corpus of text. This is followed by a fine-tuning stage, where we adapt the model to a discriminative task with labeled data."
我们的训练过程包括两个阶段。第一阶段是在大量文本语料库上学习一个高容量的语言模型。接下来是微调阶段,我们将模型适应带有标签数据的判别任务。
2. 无监督预训练的目标
在无监督预训练阶段,作者使用标准的语言建模目标。
其核心思想是通过上下文预测下一个词语,这个任务可以帮助模型学习文本的上下文结构和语义信息。
具体的目标函数如下,最大化似然估计: L 1 ( U ) = ∑ i log P ( u i ∣ u i − k , ... , u i − 1 ; Θ ) L_1(U) = \sum_{i} \log P(u_i | u_{i-k}, \ldots, u_{i-1}; \Theta) L1(U)=∑ilogP(ui∣ui−k,...,ui−1;Θ)
其中:
- U U U是未标注的词序列;
- u i u_i ui是第 i i i个词;
- k k k是上下文窗口的大小;
- Θ \Theta Θ是模型参数。
该公式表示:给定前 k k k个词的上下文,模型需要预测当前词 u i u_i ui的概率。训练的目标是最大化整个序列的条件概率。
公式讲解 :
这个公式定义了语言模型的基本目标------预测每个词的概率。
模型通过给定的上下文来学习词之间的依赖关系,从而有效捕获文本的结构。
这是预训练阶段的核心任务。
论文原文:
3. 使用Transformer解码器
无监督预训练使用了Transformer解码器。
与传统的RNN或LSTM不同,Transformer通过多头自注意力机制处理长距离依赖。
具体地,模型通过输入词序列计算自注意力分布,然后经过前馈神经网络得到输出分布。
公式 :
h 0 = U W e + W p h_0 = U W_e + W_p h0=UWe+Wp
h l = transformer_block ( h l − 1 ) ∀ l ∈ [ 1 , n ] h_l = \text{transformer\block}(h{l-1}) \quad \forall l \in [1, n] hl=transformer_block(hl−1)∀l∈[1,n]
P ( u ) = softmax ( h n W e T ) P(u) = \text{softmax}(h_n W_e^T) P(u)=softmax(hnWeT)
这里:
- h 0 h_0 h0是初始的嵌入表示(初始隐藏层),由词嵌入矩阵 W e W_e We和位置嵌入矩阵 W p W_p Wp得到;
- h l h_l hl是第 l l l层的Transformer表示;
- P ( u ) P(u) P(u)是通过Softmax函数计算的词的概率分布。将隐藏层的输出 h n h_n hn映射到一个概率分布。
公式讲解:
- 首先,输入词序列 U U U被映射到嵌入空间,通过词嵌入矩阵 W e W_e We和位置嵌入矩阵 W p W_p Wp结合生成初始输入 h 0 h_0 h0。
- 接下来,通过多个Transformer层的叠加,逐步更新表示 h l h_l hl,每一层都通过自注意力机制计算上下文的依赖关系。
- 最后,通过Softmax层计算每个词的概率分布,这就是语言模型用来生成下一个词的最终输出。
论文原文:
4. 监督微调阶段
在监督微调中,预训练的模型被应用到具体的任务上。
假设我们有一个标注数据集 C C C,每个样本包含一个输入序列和对应的标签。输入被传递到预训练的Transformer模型中,得到的表示经过一个线性层进行分类,输出标签的预测概率。
公式 :
P ( y ∣ x 1 , ... , x m ) = softmax ( h m l W y ) P(y|x_1, \ldots, x_m) = \text{softmax}(h_m^l W_y) P(y∣x1,...,xm)=softmax(hmlWy)
其中:
- h m l h_m^l hml是Transformer最后一层的激活值;
- W y W_y Wy是微调时添加的线性层的参数。
这个公式描述了微调阶段的预测过程,模型通过Transformer最后一层的表示 h m l h_m^l hml来进行标签的预测。
公式讲解:
- 预训练的Transformer模型将输入 x 1 , ... , x m x_1, \ldots, x_m x1,...,xm转换为激活表示 h m l h_m^l hml。
- 最后的线性层 W y W_y Wy将这个表示映射到目标标签的分类空间,通过Softmax层输出各个类别的概率。
论文原文:
5. 辅助语言建模目标
作者发现,在微调阶段继续使用语言建模作为辅助目标有助于加速模型的收敛,并提升其泛化能力。
通过这种方式,模型能够在微调阶段利用额外的语言信息进行更好的学习。
公式:
L 2 ( C ) = ∑ ( x , y ) log P ( y ∣ x 1 , ... , x m ) L_2(C) = \sum_{(x,y)} \log P(y | x^1, \dots, x^m) L2(C)=∑(x,y)logP(y∣x1,...,xm)
L 3 ( C ) = L 2 ( C ) + λ ⋅ L 1 ( C ) L_3(C) = L_2(C) + \lambda \cdot L_1(C) L3(C)=L2(C)+λ⋅L1(C)
这里:
- L 2 ( C ) L_2(C) L2(C)是监督微调的任务目标,也是最大化目标,log使用的是自然底数e;
- L 1 ( C ) L_1(C) L1(C)是无监督的语言建模目标;
- λ \lambda λ是控制两个目标之间权重的超参数。
公式讲解:
- 该公式将任务目标 L 2 ( C ) L_2(C) L2(C)与语言建模目标 L 1 ( C ) L_1(C) L1(C)结合,作为联合优化的目标函数。
- 通过调整 λ \lambda λ来平衡这两个目标,既确保任务的准确性,又提升模型的语言理解能力。
论文原文:
6. 任务感知的输入变换
由于不同的任务有不同的输入格式(如问答、文本蕴含等),作者采用了任务感知的输入变换策略 ,将所有结构化的输入转化为单一的连续标记序列,方便模型处理。
这种方式避免了对模型架构的复杂修改。
论文原文:
"Since our pre-trained model was trained on contiguous sequences of text, we require some modifications to apply it to these tasks."
由于我们的预训练模型是在连续的文本序列上进行训练的,因此我们需要进行一些修改才能将其应用于这些任务。
"These input transformations allow us to avoid making extensive changes to the architecture across tasks."
这些输入转换使我们能够避免在不同任务中对架构进行大幅修改。
下面还有一部分:
在这部分中,作者描述了如何处理不同类型的自然语言处理任务,包括文本蕴含、相似性任务以及问答与常识推理任务。每个任务都有不同的输入序列和处理方式,具体方法如下:
1. Textual Entailment(文本蕴含)
对于文本蕴含任务,模型的目标是判断两个句子之间是否存在蕴含关系。
通常有两个句子:一个是前提(premise) p p p,另一个是假设(hypothesis) h h h。
在这个任务中,作者将前提 p p p和假设 h h h的 t o k e n token token
序列通过连接符号 "$" 连接在一起,作为模型的输入序列。
这种连接方式使得模型能够更好地理解两个句子之间的关系。
通过这种方法,模型可以通过这两个句子的连接部分来捕捉它们之间的潜在逻辑关系(例如,假设是否由前提推导而来)。
2. Similarity(相似性任务)
对于相似性任务,模型需要判断两个句子之间的 语义相似度。
在这些任务中,两个句子之间通常没有明确的顺序,因此输入顺序对结果可能会产生影响。
为了处理这种任务,作者修改了输入序列,包含了两种可能的句子顺序(即先后顺序的两种排列)。
这些序列通过分隔符连接,然后分别输入模型。模型将生成的两个句子表示 h m l h_m^l hml和 h n l h_n^l hnl元素逐一相加,并最终输入线性输出层。
这种方法确保了无论句子以什么顺序输入,模型都能学到更好的相似性表示。
3. Question Answering and Commonsense Reasoning(问答与常识推理)
在问答与常识推理任务中,给定一个上下文(context) z z z,一个问题 q q q,以及一组候选答案 { a k } \{a_k\} {ak},模型需要判断哪个候选答案是正确的。
为了处理这种任务,作者将文档上下文 z z z与问题 q q q和每个可能的答案 a k a_k ak连接在一起,并在它们之间添加分隔符 "$"。每个生成的序列独立地通过模型处理,最后通过softmax层归一化,得到可能答案的概率分布。
这种处理方式能够有效地将问题、上下文和候选答案结合起来,模型可以根据上下文信息推断最可能的正确答案。
小结
这一部分描述了如何通过简单的序列连接和自注意力机制来处理不同类型的任务:
- 文本蕴含任务:前提和假设通过连接符号进行组合,帮助模型理解句间关系。
- 相似性任务:模型通过不同的句子排列组合,捕捉句子之间的相似度。
- 问答与常识推理任务:上下文、问题和候选答案通过连接符号组合,模型使用softmax层生成输出分布,选出正确答案。
总结来说,Framework部分详细描述了两阶段的训练流程,并提供了多个公式来支持其训练目标的实现。无监督预训练通过语言模型的方式捕捉文本的上下文关系,监督微调则通过线性层进行分类。通过结合辅助目标,作者的模型在迁移学习中的表现得到了提升。
Experiments
概括
在"Experiments"部分,作者详细介绍了他们的实验设置以及在多种自然语言处理任务上的表现。
实验包括无监督预训练和监督微调两个阶段,分别使用不同的数据集和评估标准。
作者通过实验证明了他们的模型在多个任务上的迁移性能 优于现有的模型,并且取得了最新的最佳成绩。
本节包括了实验的具体设置、模型训练的细节以及各个任务的性能对比。
分析和观点
1. 实验设置
无监督预训练的语言模型使用了一个名为BooksCorpus 的大规模数据集,包含了7,000本未发布的书籍文本,涵盖不同的文本类型,如冒险、奇幻和浪漫小说。这种语料库提供了长文本序列 ,有助于模型学习处理长距离上下文。实验还使用了1B Word Benchmark,这个数据集与ELMo模型使用的类似。
论文原文:
"We use the BooksCorpus dataset [71] for training the language model. It contains over 7,000 unique unpublished books from a variety of genres including Adventure, Fantasy, and Romance. Crucially, it contains long stretches of contiguous text, which allows the generative model to learn to condition on long-range information."
我们使用BooksCorpus数据集[71]来训练语言模型。该数据集包含超过7,000本来自不同类型(如冒险、奇幻和浪漫)的独特未出版书籍。重要的是,它包含长段的连续文本,使生成模型能够学习基于长距离信息进行条件推断。
2. 模型配置
作者的模型主要基于原始的Transformer架构,使用了12层解码器。
模型的具体参数如下:
- 768维的隐藏状态;
- 12个注意力头;
- 3072维的前馈神经网络内部状态;
- Adam优化器(学习率为2.5e-4,采用余弦退火)。
模型通过对512个连续词元的随机小批量数据进行100个epoch的训练。
在正则化方面,作者使用了Dropout和L2正则化,激活函数采用Gaussian Error Linear Unit (GELU)。
论文原文:
"We trained a 12-layer decoder-only transformer with masked self-attention heads (768 dimensional states and 12 attention heads). For the position-wise feed-forward networks, we used 3072 dimensional inner states. We used the Adam optimization scheme [27] with a max learning rate of 2.5e-4."
我们训练了一个12层的仅解码Transformer模型,带有掩码自注意力头(768维状态和12个注意力头)。对于逐位置前馈网络,我们使用了3072维的内部状态。优化方法采用了Adam优化算法[27],最大学习率为2.5e-4。
"For the activation function, we used the Gaussian Error Linear Unit (GELU) [18]."
对于激活函数,我们使用了高斯误差线性单元(GELU)[18]。
对于GELU在下面会解析!
3. 监督微调的设置
监督微调阶段,模型在一系列自然语言理解任务上进行了训练,作者使用了与无监督预训练阶段相同的超参数设置。
为了加快收敛,模型在大多数任务上只进行3个epoch的训练。
此外,作者还使用了一个线性学习率衰减计划来控制微调阶段的学习率。
论文原文:
"For most tasks, we use a learning rate of 6.25e-5 and a batchsize of 32. Our model finetunes quickly and 3 epochs of training was sufficient for most cases. We use a linear learning rate decay schedule with warmup over 0.2% of training. λ was set to 0.5."
对于大多数任务,我们使用的学习率为6.25e-5,批量大小为32。我们的模型微调速度较快,训练3个周期已足够应对大部分情况。我们采用线性学习率衰减计划,并在0.2%的训练过程中进行预热。λ值设定为0.5。
这段话描述了GPT-2模型在大多数任务上使用的超参数和训练策略:
- 学习率设置为 6.25 × 1 0 − 5 6.25 \times 10^{-5} 6.25×10−5,批量大小为32。
- 微调速度快,通常只需要3个训练轮次。
- 采用了线性学习率衰减计划,并在0.2%的训练过程中进行学习率升温(warmup)。
- 正则化参数 λ \lambda λ设置为0.5,用于控制模型的正则化程度。
4. 任务和数据集
作者在多种语言理解任务上测试了他们的模型,具体包括以下四类任务:
- 自然语言推理:如SNLI、MultiNLI、RTE等数据集;
- 问答任务:如RACE、Story Cloze Test等;
- 语义相似性:如MSR Paraphrase Corpus和Quora Question Pairs;
- 文本分类:如Stanford Sentiment Treebank (SST-2) 和Corpus of Linguistic Acceptability (CoLA)。
论文原文:
"We evaluate our approach on four types of language understanding tasks -- natural language inference, question answering, semantic similarity, and text classification."
5. 迁移学习的效果
实验结果表明,作者的通用模型在多个任务上取得了最新的最佳成绩。
在12个任务中有9个任务超过了现有的模型表现,尤其是在以下任务中表现尤为突出:
- 常识推理(Story Cloze Test)提升了8.9%;
- 问答任务(RACE)提升了5.7%;
- 文本蕴含(MultiNLI)提升了1.5%。
论文原文:
"Our general task-agnostic model outperforms discriminatively trained models that employ architectures specifically crafted for each task, significantly improving upon the state of the art in 9 out of the 12 tasks studied."
6. 零样本任务表现
作者还分析了模型的零样本学习能力,即在未进行监督微调的情况下,模型在多个任务上的表现。
实验发现,模型在经过生成预训练后,能够自动获取与下游任务相关的语言知识,表现出了一定的零样本能力。
论文原文:
"We also analyzed zero-shot behaviors of the pre-trained model on four different settings and demonstrate that it acquires useful linguistic knowledge for downstream tasks."
小结
"Experiments"部分证明了本文提出的预训练+微调的框架在多个自然语言理解任务中都表现出了优异的迁移能力,尤其是在资源有限的情况下,也能够通过预训练大幅提升模型的表现。实验通过多个数据集和任务验证了该方法的有效性。
Gaussian Error Linear Unit
GPT-2模型中使用了一种激活函数,称为Gaussian Error Linear Unit (GELU) ,即高斯误差线性单元。
1. 激活函数的作用
激活函数是神经网络中的一个重要组件,它决定了每个神经元的输出如何基于输入进行计算。激活函数通常用于引入非线性,这使得神经网络能够处理更复杂的数据模式。如果没有激活函数,神经网络只会是简单的线性映射,无法处理复杂的非线性问题。
2. GELU(高斯误差线性单元)
GELU是一种平滑的激活函数,它的定义基于高斯分布。它不同于ReLU(ReLU只在正值时激活,负值时输出0),而是根据输入的值来计算输出的概率。
GELU的数学公式为: G E L U ( x ) = x ⋅ Φ ( x ) GELU(x) = x \cdot \Phi(x) GELU(x)=x⋅Φ(x)
其中, Φ ( x ) \Phi(x) Φ(x)是标准正态分布的累积分布函数(CDF),用于将输入值映射到 [ 0 , 1 ] [0,1] [0,1]之间。
GELU也可以近似为: G E L U ( x ) = 0.5 x ⋅ ( 1 + tanh ( 2 π ( x + 0.044715 x 3 ) ) ) GELU(x) = 0.5x \cdot (1 + \tanh(\sqrt{\frac{2}{\pi}} (x + 0.044715 x^3))) GELU(x)=0.5x⋅(1+tanh(π2 (x+0.044715x3)))
用近似函数画个图直观感受一下:
3. GELU与其他激活函数的区别
- ReLU:只输出正数,负数部分全部置为0,输出形如阶梯状。
- GELU:是一种平滑的激活函数,结合了ReLU和Sigmoid的特性,根据输入的高斯分布,部分负数仍可能被激活,而不是直接输出0。
相比于ReLU,GELU能够在处理小于0的输入时产生更平滑的梯度更新,使得模型在训练过程中更加稳定。
4. 为什么选择GELU
在Transformer等模型中,选择GELU作为激活函数是因为它能够在神经网络的训练过程中引入平滑的非线性,从而让模型在训练大规模数据时表现出更好的性能和收敛速度。研究表明,GELU比传统的ReLU在处理复杂的语言模型任务时有一定的优势,尤其是在大规模模型如GPT-2中。
总结
- GELU是一种基于高斯分布的激活函数,它相比于ReLU更为平滑,能够对负数部分进行平滑处理,而不是直接置为0。
- GPT-2使用了GELU作为激活函数,这使得模型在处理大规模数据时表现出更好的稳定性和效果。
Analysis
Analysis 概括
在"Analysis"部分,作者对实验结果进行了深入的分析,探讨了影响模型性能的关键因素。
特别是作者考察了 不同数量的Transformer层的转移效果 、预训练更新的效果 、以及模型的零样本表现 。此外,作者还通过 多项消融实验 分析了不同模型组件的作用,进一步验证了该方法的优势。
分析和观点
1. 不同Transformer层数的影响
作者探讨了模型在进行任务微调时,转移不同层数的Transformer对性能的影响。
他们发现在自然语言推理(MultiNLI)和问答任务(RACE)上,转移更多层次的Transformer带来了更好的性能。
论文原文:
"We observed the impact of transferring a variable number of layers from unsupervised pre-training to the supervised target task. Figure 2(left) illustrates the performance of our approach on MultiNLI and RACE as a function of the number of layers transferred. We observe the standard result that transferring embeddings improves performance and that each transformer layer provides further benefits up to 9% for full transfer on MultiNLI. "
我们观察了从无监督预训练中转移不同数量的层到有监督目标任务的影响。图2(左)展示了我们方法在MultiNLI和RACE任务中的表现,作为转移层数的函数。我们观察到一个标准结果,即转移嵌入有助于提升性能,并且每个Transformer层的转移都带来进一步的好处,完全转移时在MultiNLI上性能提升可达9%。
2. 预训练更新次数对模型的影响
作者分析了随着预训练更新次数增加,模型在零样本任务上的表现如何演变。结果显示,随着预训练的进展,模型的零样本性能持续提高,预训练能为下游任务提供更多有用的语言知识。
3. 模型的零样本能力
为了更好地理解模型为什么在预训练后表现出色,作者提出了一个假设:生成模型在改进其语言建模能力时,实际上也学习到了许多任务相关的功能,这使得模型具备一定的零样本能力。
例如,在某些任务中,模型可以通过生成式预测来完成问答或情感分析等任务,而不需要明确的监督微调。
4. 消融实验
为了进一步验证各个组件的重要性,作者进行了三类消融实验:
- 没有预训练的模型:作者发现,缺少预训练的模型在所有任务中的表现都显著下降,表明预训练对下游任务的性能至关重要,性能下降幅度达到14.8%。
- 无辅助语言建模目标:在没有辅助语言建模目标的情况下,特别是对于大数据集,模型的表现有所下降。
- LSTM替代Transformer:当使用LSTM替代Transformer时,模型的平均性能降低了5.6分,这表明Transformer架构在处理长距离依赖方面的优势。
论文原文:
"We perform three different ablation studies (Table 5). First, we examine the performance of our method without the auxiliary LM objective during fine-tuning. We observe that the auxiliary objective helps on the NLI tasks and QQP. Overall, the trend suggests that larger datasets benefit from the auxiliary objective but smaller datasets do not. Second, we analyze the effect of the Transformer by comparing it with a single layer 2048 unit LSTM using the same framework. We observe a 5.6 average score drop when using the LSTM instead of the Transformer. The LSTM only outperforms the Transformer on one dataset -- MRPC. Finally, we also compare with our transformer architecture directly trained on supervised target tasks, without pre-training."
我们进行了三项不同的消融研究(表5)。首先,我们检查了在微调过程中不使用辅助语言模型目标时的方法性能。我们观察到辅助目标对NLI任务和QQP有帮助。总体趋势表明,较大数据集受益于辅助目标,而较小数据集则不明显。其次,我们通过将Transformer与相同框架下的单层2048单元LSTM进行比较,分析了Transformer的效果。使用LSTM代替Transformer时,平均得分下降了5.6分。LSTM仅在一个数据集------MRPC上表现优于Transformer。最后,我们还比较了直接在有监督目标任务上训练的Transformer架构,而不进行预训练。
5. Transformer vs. LSTM 的优势⭐
通过消融实验,作者进一步证明了Transformer架构相比于LSTM的优势。
具体来说,Transformer架构的自注意力机制使得模型能够更好地处理长距离依赖信息,而LSTM在处理长距离文本时性能较差。
此外,Transformer的表现更为稳定,零样本学习中,LSTM模型表现出更高的方差。
结论
在"Analysis"部分,作者深入探讨了影响模型性能的关键因素。实验表明,转移更多层的预训练模型能够带来显著的性能提升,特别是模型的零样本能力得到了验证。此外,消融实验清晰地展示了预训练和Transformer架构在自然语言理解任务中的重要性。总的来说,本文提出的框架在多个任务中都展现了强大的迁移学习能力和零样本性能。
Conclusion
概括
在结论部分,作者总结了他们在论文中提出的主要贡献和研究发现。
本文通过结合生成预训练 和监督微调的方式,实现了自然语言理解任务的显著性能提升。
作者指出,他们的方法能够有效地捕捉长距离的语言依赖关系,并在多个任务上实现了最新的最佳结果。
此外,他们强调了利用无监督学习提升有监督任务表现的潜力,特别是在标注数据有限的情况下。作者还希望该方法能够激发更多关于无监督学习 和自然语言理解的新研究。
分析和观点
1. 生成预训练+监督微调的有效性
作者的主要结论是,结合生成预训练和监督微调的框架能够在自然语言理解任务中表现出色。
通过在大规模未标注文本上进行预训练,模型学会了丰富的语言表示,这些表示可以通过少量的微调适应到具体的下游任务。
论文原文:
"We introduced a framework for achieving strong natural language understanding with a single task-agnostic model through generative pre-training and discriminative fine-tuning."
2. 捕捉长距离依赖关系的重要性
在预训练阶段,模型通过处理长文本序列学会了长距离依赖关系的建模能力。这种能力在迁移到下游任务时,能够帮助模型更好地理解复杂的文本结构,提高任务表现。
论文原文:
"By pre-training on a diverse corpus with long stretches of contiguous text our model acquires significant world knowledge and ability to process long-range dependencies which are then successfully transferred to solving discriminative tasks."
3. 提升多个任务的表现
作者的实验表明,该框架在多个任务上表现优异,特别是在资源受限的任务中,如文本蕴含、问答和语义相似性等任务中,该方法在9个任务上达到了最新的最佳成绩。
论文原文:
"Improving the state of the art on 9 of the 12 datasets we study."
4. 无监督预训练在监督学习中的潜力
作者特别强调了无监督预训练在提升有监督任务表现方面的潜力,尤其是在标注数据有限的情况下。无监督学习可以帮助模型获得对语言的广泛理解,减少对标注数据的依赖,进一步提升任务表现。
论文原文:
"Using unsupervised (pre-)training to boost performance on discriminative tasks has long been an important goal of Machine Learning research. Our work suggests that achieving significant performance gains is indeed possible"
5. 对未来研究的启发
最后,作者指出他们的工作能够激发更多关于无监督学习的研究,尤其是如何在不同领域的任务中,利用未标注数据来提升有监督学习的表现。本文展示的预训练方法可以为未来的自然语言理解任务提供有价值的借鉴。
论文原文:
"We hope that this will help enable new research into unsupervised learning, for both natural language understanding and other domains, further improving our understanding of how and when unsupervised learning works."
结论
"Conclusion"部分总结了本文的贡献,强调了生成预训练 结合监督微调 在自然语言理解任务中的有效性。通过利用未标注的文本数据,模型能够获得丰富的语言知识,并在多个下游任务中表现出色。本文的研究成果不仅提升了当前的自然语言处理技术,还为未来的无监督学习研究提供了重要的启发。