16.3 GPT-2

BERT 的核心特性是其双向编码能力,即模型在处理任意 token 时可以同时考虑该 token 前后的上下文。这种全局语境感知大幅增强了 BERT 在语义提取任务中的表现,因此在众多自然语言处理任务中,BERT 相比 GPT-1 展现出了更全面的优势。随后,OpenAI 推出了 GPT-2,其论文标题为 Language Models are Unsupervised Multitask Learners,中文译为《语言模型是非监督的多任务学习器》。GPT-2 的设计初衷是为了解决 GPT-1 与 BERT 虽然引入了预训练机制,但在处理具体下游任务时仍需进行微调的局限。

16.3.1 GPT-2的目标

GPT-2 的目标是通过一个强大的预训练模型直接处理所有下游任务,从而尽可能地避免对特定任务的数据进行微调。在 GPT-1 中,执行下游任务时通常需要引入特殊 token 来微调模型,而 GPT-2 则尝试完全依赖自然语言提示(prompt)来指导模型完成任务。

在使用 GPT-2 进行预测时,输入内容由实际数据和自然语言提示组成,提示部分用以明确当前任务的目标。基于这些输入,模型生成相应输出。这种方式有效地简化了预训练模型到实际应用之间的转化流程,使得 GPT-2 可以更广泛地应用于多种语言任务。

例如,在执行情感分类任务时,GPT-1 的做法是在文本前后添加特定的起始与结束标记,然后通过分类头进行预测。而在 GPT-2 中,任务说明需要以自然语言形式嵌入到输入中,模型据此“理解”并执行相应任务。并且GPT-2与GPT-1在解决下游任务时的方式不一样,GPT-1会根据不同的任务设计不同的分类头。相当于把任务类型融入到模型架构中去。但是GPT-2训练时完全不引入特殊token,也不针对具体任务改变模型架构。预测时,完全是靠模型输出自然语言来给出答案。

例如,对于不同的问题的提示词如下:

翻译任务:“把下面的英文翻译成中文:Hello world =>”

情感分析:“评论:这部电影太精彩了! 情感:正向/负向? 答:”

摘要:“总结以下文章:[文章内容], 总结:”

16.3.2 架构改进

相比 GPT-1,GPT-2 在模型架构方面做出了如下几个重要优化:

层归一化的位置调整 层归一化操作从每个模块的输出移至输入阶段,即先进行层归一化再执行注意力计算。这种调整有助于提高训练的稳定性。同时,在最后一个子层的注意力模块后新增了额外的层归一化操作,进一步提升了模型的稳定性。

残差连接初始化的优化 随着网络深度的增加,GPT-2 减小了残差连接的初始化参数,旨在更好地维持梯度的传播效率,防止梯度消失或爆炸问题。

词汇表的扩展 词汇表的容量扩大至 50,257 个 token,能够覆盖更多词汇和表达方式,提升模型的语言覆盖能力。

模型规模的提升 GPT-2 的参数规模增加至 15.42 亿,大幅增强了模型处理复杂任务的能力。

16.3.3 训练数据与配置

在训练设置方面,GPT-2 也进行了多项提升:

上下文长度从原本的 512 扩展至 1024;

批处理大小由 32 增加到 512;

使用了 Reddit 社区中高质量的网页链接内容,数据总量达 800 万条文本,约合 40GB。

16.3.4 总结

尽管 GPT-2 在多个任务上已经展现出了优异的性能表现,但在一些特定任务中,尚未完全超越传统的监督学习模型。然而,OpenAI 发现:随着模型规模的扩大,性能持续提升,这预示着大模型具有巨大的扩展潜力。

GPT-2的意义是模型训练时只需要一个任务,那就是预测下一个词,就可以训练出一个可以解决各种问题,具备通用能力的模型。这个模型不需要在不同任务上进行微调,就能得到一个还不错的成绩。在GPT-2之前,具体任务类型需要被设计进网络结构,(比如添加分类头,设置分类数量),但是GPT-2是把任务类型通过prompt这种自然语言的方式传入到模型。模型也不是输出任务可能结果的概率值,而是以自然语言方式给出答案。这种统一是一个巨大的进步。

results matching ""

    No results matching ""