自 2015 年 OpenAI 成立以来,它已经成为了人工智能领域的一股强大力量。OpenAI 的 GPT 模型(Generative Pre-trained Transformer),作为其最具代表性的技术之一,已经改变了自然语言处理(NLP)领域的面貌。本系列文章将回顾 GPT 模型的发展历程,分析其关键的技术突破和创新,以及探讨其对未来人工智能发展的影响。
介绍
OpenAI 的生成式预训练 Transformer (Generative Pre-trained Transformer, GPT) 模型通过引入非常强大的语言模型,席卷了自然语言处理(NLP)社区。这些模型可以执行各种 NLP 任务,如问答、文本蕴涵、文本摘要等,而无需任何监督训练。这些语言模型几乎不需要示例来理解任务,并执行与以监督方式训练的最先进的模型相当甚至更好的性能。
GPT-1:开启征程
GPT-1 是 OpenAI 在 2018 年 6 月推出的第一个版本,它采用了 Transformer 解码器架构,并通过无监督学习从大规模文本数据中预训练。GPT-1 在自然语言生成和理解任务上取得了令人瞩目的成绩,展示了Transformer模型的巨大潜力。
在 GPT-1 发布之前,大多数先进的 NLP 模型都是使用有监督学习专门针对特定任务(如情感分类、文本蕴涵等)进行训练的。但是,监督模型有两个主要限制:
- 需要大量带注释的数据来学习通常不容易获得的特定任务。
- 无法完成超出训练范围以外的任务。
GPT-1 没有走其他 NLP 模型的路线,采用未标记的数据学习生成语言模型,然后通过提供特定下游任务(如分类、情感分析、文本蕴涵等)的示例来微调模型。
其中左侧是 GPT-1 使用的 Transformer 架构和训练目标,右侧用于对不同任务进行微调的输入转换。将所有结构化输入转换为令牌序列,由预训练模型处理,经过线性层和 softmax 层输出。
模型训练
这种针对 NLP 任务的半监督学习(无监督预训练,然后是监督微调)具有以下三个组成部分:
-
无监督语言建模(预训练)
对于无监督学习,使用标准语言模型目标。
其中T
是无监督数据{t_1,...,t_n}
中的标记集,k
是上下文窗口的大小,θ
是使用随机梯度下降训练的神经网络的参数。 -
监督微调
这部分旨在最大限度地提高观察标签y
的可能性,给定的特征或标记x_1,...,x_n
。
其中 C 是由训练样本组成的标记数据集。
此外增加了一个辅助学习目标,用于监督微调,以获得更好的泛化和更快的收敛。修改后的训练目标表述为:
其中L₁(C)
是学习语言模型的辅助目标,λ
是赋予该次要学习目标的权重。λ
设置为 0.5。
通过在 Transformer 模型中添加线性层和 softmax 层来获取下游任务的任务标签,从而实现监督微调。 -
特定于任务的输入转换
为了在微调期间对模型的架构进行最小化的更改,特定下游任务的输入被转换为有序序列。令牌按以下方式重新排列:
- 开始和结束标记已添加到输入序列中。
- 在示例的不同部分之间添加了分隔符标记,以便输入可以作为有序序列发送。对于问答、多项选择题等任务,每个示例都发送了多个序列。例如,由上下文序列、问答任务的问答和答案组成的训练示例。
数据集
GPT-1 使用 BooksCorpus 数据集来训练语言模型。BooksCorpus 有大约 7000 本未出版的书籍,这有助于在看不见的数据上训练语言模型。在下游任务的测试集中不太可能找到此数据。此外,该语料库具有大量连续文本,这有助于模型学习大范围依赖关系。
模型架构
GPT-1 采用 12 层 Transformer 解码器结构,每一层的维度是 768,具有掩码自注意力来训练语言模型。模型的架构在很大程度上与变压器的原始工作中描述的相同。掩码有助于实现语言模型目标,其中语言模型无法访问当前单词右侧的后续单词。
模型在大小为 64、序列长度为 512 的小批量上训练了 100 epoch,模型规模 117M 参数。
性能
GPT-1 在比较模型的 12 项任务中的 9 项中表现优于经过专门有监督学习训练的最先进的模型,拿到了 SOTA。
由于预训练,模型在不同的 NLP 任务(如问答、模式解析、情感分析等)上已经进化为零样本 (zero-shot) 性能。
意义
GPT-1 证明了语言模型是一个有效的预训练目标,可以帮助模型很好地泛化。该架构促进了迁移学习,并且可以执行各种 NLP 任务,只需很少的微调。该模型显示了生成式预训练的强大功能,并为其他模型开辟了道路,这些模型可以通过更大的数据集和更多的参数更好地释放这种潜力。