在 2018 年 6 月,OpenAI 提出了 GPT 神经网络模型,该模型立即在多种语言类测试中展现出极佳结果。 GDP-2 于 2019 年出现,而 GPT-3 则于 2020 年 5 月提出。 这些模型展示了神经网络生成相关文本的能力。 尚有其他实验涉及生成音乐和图像的能力。 这一模型的主要缺点与它们涉及的计算资源相关。 在配备 8 颗 GPU 的计算机上训练第一个 GPT 花费了一个月的时间。 为了解决新问题,使用预先训练的模型,可部分弥补这一缺陷。 但考虑到模型的规模,需要大量资源来维持模型的运行。
1. 理解 GPT 模型
从概念来讲,GPT 模型是在之前研究的变换器基础上构建的。 主要思路是基于大数据针对模型进行无监督预训练,然后再依据相对少量的标记数据进行微调。
分两步训练的原因在于模型规模。 像 GPT 这样的现代深度机器学习模型涉及大量参数,可多达数亿个。 因此,这种神经网络的训练需要大量的训练样本。 当采用监督学习时,创建带标记的训练样本集合是件劳动密集型工作。 与此同时,网站上有许多不同的数字化和无标记文本,这些文本非常适合模型的无监督训练。 然而,统计数据表明,无监督学习相较监督学习,其结果要差很多。 因此,在无监督训练之后,可依据相对少量的标记数据样本针对模型进行微调。
无监督学习可令 GPT 学习语言类模型,而针对特定任务,可依据标记数据进一步训练,从而调整模型。 因此,为了执行不同的语言类任务,可以复制并微调一个预训练的模型。 该限制基于采用无监督学习的原始语言集合。
实践表明,这种方法对于广泛的语言问题能产生良好的效果。 例如,GPT-3 模型能够针对给定主题生成连贯流畅的文本。 不过,请注意,指定的模型包含 1750 亿个参数,按顺序依据 570GB 的数据集合上进行了预训练。
尽管 GPT 模型是为处理自然语言类而开发的,但它们在音乐和图像生成任务中也表现出色。
理论上,GPT 模型可与任何数字化数据序列配合使用。 唯一的前置需求是无监督的预学习需要足够的数据和资源。
2. GPT 与之前研究的变换器之间的区别
我们来研究 GPT 模型与之前研究的变换器有何区别。 首先,GPT 模型未使用编码器,因为它们仅使用解码器。 当没有编码器时,模型不再拥有“编码器 - 解码器自关注”内层。 下图展示了 GPT 变换器模块。
添加图片注释,不超过 140 字(可选)
与经典的变换器相似,GPT 模型中的模块在彼此之上构建。 每个模块针对关注机制都有自己的权重矩阵,并具有完全连接的前馈层。 模块的数量决定了模型的规模。 模块堆栈可能会很庞大。 GPT-1 和最小的 GPT-2(小型 GPT-2)有 12 个模块;GPT-2 特大型有 48 个,而 GPT-3 则有 96 个模块。
与传统语言类模型类似,GPT 仅能够发现与序列中先前元素的关系,但无法窥视未来。 但它与变换器不同,GPT 不使用元素的掩码 — 代之,它更改了计算过程。 GPT 会重置 Score 矩阵中后续元素的关注比率。
同时,GPT 可被归类为自回归模型。 每次迭代都会生成一个序列令牌。 生成的令牌会被添加到输入序列中,并馈入模型进行下一次迭代。
与经典变换器一样,自关注机制内的每个令牌都会生成三个向量:一个 query,一个 key,和一个 value。 在自回归模型当中,在每次新迭代里,输入序列仅能由 1 个令牌更改,因此每个令牌无需重新计算向量。 因此,GPT 中的每一层只在序列有新元素时计算向量。 每个变换器模块都保存其向量,以备后用。
这种方式令模型能够在接收最终令牌之前逐词生成文本。
当然,GPT 模型采用多目击者关注机制。