【GPT】从GPT1到GPT3

every blog every motto: Although the world is full of suffering, it is full also of the overcoming of it

0. 前言

从GPT1 到GPT3

20250219175022

1. GPT1

论文: https://s3-us-west-2.amazonaws.com/openai-assets/research-covers/language-unsupervised/language_understanding_paper.pdf
时间:2018年
作者: Alec Radford Karthik Narasimhan Tim Salimans Ilya Sutskever

1.1 整理理解

在GPT-1之前(和ELMo同一年),传统的NLP模型往往使用大量的数据对有监督的模型进行任务相关的模型训练,但是这种有监督学习的任务存在两个缺点:

  • 需要大量的标注数据,高质量的标注数据往往很难获得,因为在很多任务中,图像的标签并不是唯一的或者实例标签并不存在明确的边界;
  • 根据一个任务训练的模型很难泛化到其它任务中,这个模型只能叫做“领域专家”而不是真正的理解了NLP。

GPT1的思想是先再无标签的数据上学习通用的语言模型,再在特定的任务上进行微调。
GPT1的思想是先再无标签的数据上学习通用的语言模型,再在特定的任务上进行微调。
GPT1的思想是先再无标签的数据上学习通用的语言模型,再在特定的任务上进行微调。

主要的原因还是现实生活中,无标签数据占大多数,而有标签数据往往很少,而且有标签数据往往需要花费大量的人力物力去标注。所以,GPT1的思想就是先在无标签数据上学习通用的语言模型,然后再在特定的任务上进行微调。

1.2 进一步

1.2.1 网络结构

下面是标准的Transformer结构,GPT1就是基于这个结构进行改进的(采用decoder,并删除其中没有mask的多头注意力(红框))。
20240903173151
具体来说,GPT1采用的是decoder部分,由于其是单向的,所以encoder中的多头注意力不适用(没有mask的话,预测当前词能看到其前面和后面的),所以采用了decoder部分(由于其有mask,预测当前词只能看到其前面的词)。

整体由12个decoder组成。
20240903173745

1.2.2 关于输入

由于GPT1下游有不同的任务,而这些任务之间的输入格式是不一样的,所以对不同的输入(分类、推理、相似、问答)进行了统一,这样后续微调是就不用再动输入形式了。如下图。

20240903174925

其中分词采用的是Byte Pair Encoding (BPE)。
简单来说,根据子词频率搞的进行合并。

1.2.3 无监督预训练

优化目标:
20240910161037

  • k: 滑动窗口大小
  • P: 条件概率
  • Θ \Theta Θ : 模型参数

1.2.4 微调

输入是m各token x 1 , . . . , x m {x^1,...,x^m} x1,...,xm , 对应的标签是y。
首先将这些token输入到预训练好的模型中,得到最终的特征向量 h l m h_l^{m} hlm,然后再通过全连接层得到预测结果y。

20240910162415

优化目标:
20240910162434

微调阶段增加**语言模型(language model)**作为辅助,最终的由优化目标为:
20240910163128

1.3 能力

在有监督学习的12个任务中,GPT-1在9个任务上的表现超过了state-of-the-art的模型。在没有见过数据的zero-shot任务中,GPT-1的模型要比基于LSTM的模型稳定,且随着训练次数的增加,GPT-1的性能也逐渐提升,表明GPT-1有非常强的泛化能力,能够用到和有监督任务无关的其它NLP任务中。GPT-1证明了transformer对学习词向量的强大能力,在GPT-1得到的词向量基础上进行下游任务的学习,能够让下游任务取得更好的泛化能力。对于下游任务的训练,GPT-1往往只需要简单的微调便能取得非常好的效果。

GPT-1在未经微调的任务上虽然也有一定效果,但是其泛化能力远远低于经过微调的有监督任务,说明了GPT-1只是一个简单的领域专家,而非通用的语言学家。

1.4 结论

  1. 使用Transformer作为基础结构,避免了LSTM在捕获长期依赖关系上的困难。
  2. 使用无监督预训练,在大量无标签数据上进行预训练,提高了模型的泛化能力。
  3. 使用微调,在特定任务上进行微调,提高了模型的性能。

2. GPT2

2.1 整体理解

GPT2相比GPT1做的更加“极端”,直接无监督训练,抛弃的微调过程。讲究的是“大力出奇迹”。

作者猜测,单任务训练在单一领域数据集上的普遍性是当前系统缺乏泛化能力的主要原因之一。

所以作者采用在在更广泛的领域和数据集上训练模型,以获得更好的泛化能力。

模型依然采用的是Transformer结构的decoder部分,分为四个不同的版本。层数分别为12、24、36、48。其中,

  • 12层为了GPT1作对比;
  • 24层为了BERT作对比;
  • 36层用于对比;
  • 48层为真正的GPT2。

模型种类:

名成层数参数输入维度备注
smallest12117M768和GPT1对比
medium24345M1024和BERT对比
large36762M1280
largeest481542M1600GPT2

20240911155432

训练数据采集自Reddit,命令为WebText,数据量为:40G。 其中剔除了Wikipedia的文章。

2.2 模型和数据

2.2.1 模型结构

整体来说和GPT1类似,由多个decoder层组合而来,略微做了一点小改动。

  1. Layer Normalization移动到每个Transformer Block之前;
  2. self-attention之后增加了Layer Normalization;
  3. 修改了残差连接的权重 1 N 1 \over \sqrt{N} N 1
  4. 词表增加到50257;
  5. 上下文大小从512增加到1024;‘
  6. bactch size 512。

左边是GPT1的block,右边是GPT2的block。
20240911162732

2.2.1 数据

GPT-2的文章取自于Reddit上高赞的文章,命名为WebText。数据集共有约800万篇文章,累计体积约40G。为了避免和测试集的冲突,WebText移除了涉及Wikipedia的文章。

2.3 训练目标

训练目标:
20240911163328

即,根据输入预测下文,可以表示为: p ( o u t p u t ∣ i n p u t ) p(output|input) p(outputinput)

2.4 能力

  1. 在8各语言模型任务中,在zero-shot情况下,有7个超过了SOTA
  2. 在文本总结表现不佳,但它的效果与由监督的模型接近。

2.5 小结

**GPT-2的最大贡献是验证了通过海量数据和大量参数训练出来的词向量模型有迁移到其它类别任务中而不需要额外的训练。**但是很多实验也表明,GPT-2的无监督学习的能力还有很大的提升空间,甚至在有些任务上的表现不比随机的好。尽管在有些zero-shot的任务上的表现不错,但是我们仍不清楚GPT-2的这种策略究竟能做成什么样子。GPT-2表明随着模型容量和数据量的增大,其潜能还有进一步开发的空间,基于这个思想,诞生了我们下面要介绍的GPT-3。

3. GPT3

之前的研究主要基于pretrain+finetune,当模型在下游任务上训练以后,往往失去了泛化能力,为此,GPT3相比GPT2更进一步,模型更大,训练数据更多。

3.1 不同方法

3.1.1 fine-tuing(微调)

主流的一种方式,对预训练任务在有标签的数据上进行监督训练。
微调的主要优点是可以在许多基准测试中表现出色。主要缺点是每个任务都需要一个新的大数据集,可能导致模型在分布外泛化能力差 [MPL19],以及可能利用训练数据中的虚假特征 [GSL+18, NK19],这可能导致与人类表现的不公平比较

20240929142742

3.1.2 few-shot learning(少样本学习)

少样本(Few-Shot, FS)是我们在本研究中使用的术语,指的是模型在推理时给定少量任务示例的设置,作为条件输入 [RWC+19],但不允许更新权重

对于一个典型的数据集,一个示例具有上下文和期望结果(例如,一个英语句子及其法语翻译),少样本学习通过提供 K 个上下文和完成示例来实现,然后再给出一个上下文示例,模型需提供相应的完成。

我们通常将 K 设置在 10 到 100 之间,因为这是模型上下文窗口(nctx = 2048)能够容纳的示例数量。少样本学习的主要优点是显著减少对任务特定数据的需求,并降低从大型但狭窄的微调数据集中学习过于狭窄分布的潜在风险

主要缺点是这种方法的结果迄今为止远不及最先进的微调模型。 此外,仍然需要少量的任务特定数据。如其名称所示,这里描述的语言模型的少样本学习与在其他机器学习上下文中使用的少样本学习相关 [HYC01, VBL+16]——两者都涉及基于广泛任务分布(在此情况下隐含于预训练数据)进行学习,然后快速适应新任务。

简单来说: 在推理阶段,给少量的样本,然后进行推理,不需要微调。
严格来说: 不是传统意义上的学习,因为没有参数的更新。

20240929142810

3.1.3 one-shot learning(单样本学习)

一例样本(One-Shot, 1S)与少样本学习相同,唯一的区别是只允许一个示例,并提供任务的自然语言描述,区分一例样本、少样本和零样本的原因在于,它最接近某些任务向人类传达的方式。例如,当要求人类生成一个关于人类工人服务的数据集(例如 Mechanical Turk)时,通常会给出一个任务示例。相反,如果没有示例,有时很难传达任务的内容或格式。

20240929142826

3.1.4 zero-shot learning(零样本学习)

零样本(Zero-Shot, 0S)与一例样本相同,但不允许提供任何示例,模型只获得描述任务的自然语言指令。 这种方法提供了最大的便利性、潜在的鲁棒性,并避免了虚假关联(除非这些关联在大规模预训练数据中非常普遍),但也是最具挑战性的设置。

在某些情况下,即使是人类在没有先前示例的情况下也可能难以理解任务的格式,因此这种设置在某些情况下是“过于困难”的。

例如,如果有人被要求“制作一张关于200米短跑的世界纪录表”,这个请求可能会模糊不清,因为可能不清楚表格的具体格式应是什么,或应包含哪些内容(即使经过仔细澄清,确切理解所需内容也可能很困难)。

尽管如此,至少在某些情况下,零样本最接近人类执行任务的方式——例如,在图 2.1 的翻译示例中,人类可能仅凭文本指令就知道该怎么做。

20240929142844

3.1.5 小结

这三种“shot”方法虽然在推理时给出的示例数量不同,但实际上它们在适应新任务时的机制是不同的。

  • 零样本(Zero-Shot): 模型仅依赖于自然语言指令,没有示例。 这种方式要求模型充分利用其在预训练阶段所学的知识和模式,来理解和完成任务。
  • 一例样本(One-Shot): 模型在推理时提供一个示例,使其能够更好地理解任务的格式和要求。 这个示例可以帮助模型更准确地进行推理。
  • 少样本(Few-Shot):提供多个示例, 使模型能够捕捉到更多的任务特征和模式,从而提高性能。

虽然在这三种设置中都没有进行参数更新,但模型在处理任务时利用的上下文信息和已知示例的数量不同,导致其在理解和推理能力上的差异。因此,它们的表现通常会有所不同。少样本和一例样本方法通常能更有效地指导模型,从而提升性能。

不是传统意义上更新参数进行“学习”,而是利用上下文信息进行“学习”。

这三种方法都是在推理阶段进行的,而不是在训练阶段进行的。因此,它们不需要额外的训练数据,只需要在预训练阶段学习到的知识。
这三种方法都是在推理阶段进行的,而不是在训练阶段进行的。因此,它们不需要额外的训练数据,只需要在预训练阶段学习到的知识。
这三种方法都是在推理阶段进行的,而不是在训练阶段进行的。因此,它们不需要额外的训练数据,只需要在预训练阶段学习到的知识。

3.2 模型与数据

3.2.1 模型

GPT-3进一步将模型扩大。GPT2参数量为1.5B(15亿),GPT3参数量扩大到175B(1750亿)。整整扩大了116倍。

对比更加丰富,总共有8种不同的模型,参数量从125M到175B不等。
20240929121806

模型整体和GTP2类似,主要区别是将其中的attention替换为sparse attention,即稀疏注意力机制。稀疏注意力机制可以减少计算量,从而提高模型的训练速度和效率。
传统的attention是两两token进行计算,复杂度为O(n^2),而稀疏注意力机制只对部分token进行计算,复杂度为O(nlogn),从而大大减少了计算量。

20240929142622

3.2.2 数据

GPT-3的训练数据包括低质量的Common Crawl(对其进行了过滤),高质量的WebText2,Books1,Books2和Wikipedia。GPT-3根据数据集的不同的质量赋予了不同的权值,权值越高的在训练的时候越容易抽样到。

总数据量达到570G

20240929143719

训练时间:
20240929144347

3.3 结果

GPT3主要利用的是上下文学习(in-context learning),具体可以细分为上面提到的三种方式(zero-shot、one-shot、few-shot)。
尽管在推理阶段没有更新参数,上下文学习(in-context learning)仍被称为“学习”,是因为模型利用其预训练过程中获得的知识和模式来适应新任务。这种适应过程虽然不涉及参数调整,但模型能够根据提供的示例和指令识别并执行任务,因此仍然被视为一种学习形式。实际上,它更多地是依赖于模型的泛化能力和上下文理解,而非传统意义上的学习。

如下图所示,随着参数的增加模型更强,同时few-shot > one-shot > zero-shot。

20240929151741

下图,可以看到随着参数的增加,模型在各个任务上的表现都得到了提升。

  • 当测试案例数量越多时,效果越好。
  • 当测试案例很多时,prompt(自然语言描述)变得不那么重要,因为模型已经学会了如何处理任务。
    20240929152104

3.4 小结

  1. 随着模型增大(GPT2 1.5B,GPT3 175B),数据量增大(GPT2 40G GPT3 570G),模型在各个任务上的表现都得到了提升。
  2. 存在一定的数据污染问题
  3. GPT-3在处理某些任务时可能会出现错误或不准确的结果,以及不合理或不合逻辑的结果。

4. 总结

时间模型参数量层数词向量长度训练数据
2018.6GPT1117M127685G
2019.2GPT21.5B(1542M)48160040G
2020.5GPT3175B3612288570G

关于参数,如下是GPT2-small示例:
20240929162351

 

参考

  1. https://zhuanlan.zhihu.com/p/620494604
  2. https://zhuanlan.zhihu.com/p/350017443
  3. https://www.cnblogs.com/Chatdanta/p/18235460
  4. https://blog.csdn.net/beilizhang/article/details/109282032
  5. https://blog.csdn.net/weixin_60734652/article/details/132470086

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/977499.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

stm32使用(无线串口)实现收发、判断数据+DMA(HAL库)

目录 前言: 1. 用CubeMX配置串口DMA所需要的环境 (1)打开CubeMAX,点击红框 (2)查找stm32F103C8T6的芯片 (3)配置SYS (4)配置RCC时钟 (5&am…

QT入门--QMainWindow

从上向下依次是菜单栏,工具栏,铆接部件(浮动窗口),状态栏,中心部件 菜单栏 创建菜单栏 QMenuBar* mybar1 menuBar(); 将菜单栏放到窗口中 setMenuBar(mybar1); 创建菜单 QMenu *myfilemenu mybar1-…

重构清洁想象,石头科技首创五轴仿生机械手打破传统清洁边界

2月25日,主题为“重构清洁想象”的石头科技2025发布会在上海天文馆正式召开。石头科技清洁产品BU总裁钱启杰在会上宣布,石头科技正式成为上海天文馆授权合作伙伴,希望借助航天科技到家庭科技的跨越,进一步简化家庭清洁工作&#x…

Amazon Outposts:构建混合云的安全堡垒,让数据安全“零距离”

在数字化转型的浪潮中,企业纷纷拥抱混合云架构以兼顾敏捷性与本地化需求。然而,如何确保数据在本地与云端的无缝流转中始终安全可控,成为企业面临的核心挑战。Amazon Outposts 作为AWS推出的混合云解决方案,不仅将原生AWS服务延伸…

详解Redis如何持久化

引言 本文介绍了 Redis 的两种持久化方式:RDB 和 AOF。RDB 按时间间隔快照存储,AOF 记录写操作。阐述了它们的配置、工作原理、恢复数据的方法、性能与实践建议,如降低 fork 频率、控制内存等,还提到二者可配合使用,最…

【Ambari】Ranger KMS

目录 一、Ranger KMS介绍 二、KMS基于Ranger插件安装 一、Ranger KMS介绍 Ranger KMS是把数据存储入后台数据库中。通过Ranger Admin可以集中化管理KMS服务。 Ranger KMS有三个优点 l Key management Ranger admin 提供了创建,更新,删除密钥的Web UI…

vscode设置终端复制快捷键(有坑!!!)

vscode的编辑页面和终端的复制粘贴快捷键是不一样的。 vscode的终端复制快捷键为ctrlshiftC,当然,自己可以自定义设置 vscode设置终端复制快捷键(有坑!!!)_vs code 不能复制-CSDN博客文章浏览…

angular舒尔特方格

说明:我计划用angular实现舒尔特方格的功能,必须是动态的,比如33,55,9*9,而且无论是什么样式的,都必须保持正方形,然后还有时间监听,计算用户完成方格的时间,…

提升数据洞察力:五款报表软件助力企业智能决策

概述 随着数据量的激增和企业对决策支持需求的提升,报表软件已经成为现代企业管理中不可或缺的工具。这些软件能够帮助企业高效处理数据、生成报告,并将数据可视化,从而推动更智能的决策过程。 1. 山海鲸报表 概述: 山海鲸报表…

DistilQwen2.5发布:通义千问蒸馏小模型再升级

01 引言 因高计算成本和复杂性,在例如移动设备和边缘计算场景等资源有限的环境中,限制了大语言模型的普及。如何在保留模型性能的同时提高计算效率并降低部署成本,已成为研究和工业界必须面对的关键挑战。 在此背景下,我们正式…

VS2022配置FFMPEG库基础教程

1 简介 1.1 起源与发展历程 FFmpeg诞生于2000年,由法国工程师Fabrice Bellard主导开发,其名称源自"Fast Forward MPEG",初期定位为多媒体编解码工具。2004年后由Michael Niedermayer接任维护,逐步发展成为包含音视频采…

【前端基础】Day 1 HTML

总结: 1. Web标准的构成 2. 基本标签 目录 1. Web标准的构成 2. 基本标签 2.1快捷键 2.2.1标题标签 2.2.2段落和换行标签 2.2.3文本格式化标签 2.2.4div和span标签 2.3.1 图像标签和路径 2.3.2路径 2.3.3超链接标签 2.4注释标签 2.5特殊字符 1. Web标准…

Android Realm数据库使用与集成指南

本地存储storage集成创建Realm数据模型插入和更新数据模型数据查询统计数据分页查询处理表数据删除操作总结Realm 是一款专为移动端和嵌入式场景设计的高性能、跨平台的 对象数据库(NoSQL),由 MongoDB 团队维护。它的核心思想是将数据模型直接映射到对象(如 Java/Kotlin、S…

(九)趣学设计模式 之 桥接模式!

目录 一、 啥是桥接模式?二、 为什么要用桥接模式?三、 桥接模式的实现方式四、 桥接模式的优缺点五、 桥接模式的应用场景六、 总结 🌟我的其他文章也讲解的比较有趣😁,如果喜欢博主的讲解方式,可以多多支…

Day8 蓝桥杯acw讲解

首先先给大家看一道这个题, 我真的是太喜欢y总了,如果大家也是最近在准备蓝桥杯或者计算机相关的比赛,但是得加一个前提就是必须最好基础真的很好,要不然其实买了课,也没啥太大的用处,其实就可以以我本人举…

谷云科技iPaaS×DeepSeek:构建企业智能集成的核心底座

2025年,DeepSeek大模型的爆发式普及,正引领软件行业实现 “智能跃迁”。从代码生成到系统集成,从企业级应用到消费级产品,自然语言交互能力已成为新一代软件的核心竞争力。据行业分析,超60%的软件企业已启动大模型适配…

java面试项目介绍,详细说明

金三银四少走弯路,Java岗面试冲刺,你与大厂只差这篇文章包括面试准备,帮助大家少走弯路,成功入职大厂,并快速成长落地。 祝大家拿到满意的offer!(把许愿的offer发在评论区,一定会实现的) 主要从四大方面:掌握的主要知识、算法、项目、简历 掌握的主要知识 下面是我看过的资料和…

计算机毕业设计SpringBoot+Vue.js墙绘产品展示交易平台(源码+文档+PPT+讲解)

温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 作者简介:Java领…

springboot005学生心理咨询评估系统(源码+数据库+文档)

源码地址:学生心理咨询评估系统 文章目录 1.项目简介2.部分数据库结构与测试用例3.系统功能结构4.包含的文件列表(含论文)后台运行截图 1.项目简介 ​ 使用旧方法对学生心理咨询评估信息进行系统化管理已经不再让人们信赖了,把现…

Linux红帽:RHCSA认证知识讲解(二)配置网络与登录本地远程Linux主机

Linux红帽:RHCSA认证知识讲解(二)配置网络与登录本地远程Linux主机 前言一、使用命令行(nmcli 命令)配置网络,配置主机名第一步第二步修改主机名称 二、使用图形化界面(nmtui 命令)配…