从 GPT 的发展看大模型的演进

news2025/6/5 16:52:41

这是一个技术爆炸的时代。一起来看看 GPT 诞生后,与BERT 的角逐。

BERT 和 GPT 是基于 Transformer 模型架构的两种不同类型的预训练语言模型。它们之间的角逐可以从 Transformer 的编码解码结构角度来分析。

BERT(Bidirectional Encoder Representations from Transformers):

  • Bert 主要基于编码器结构,采用了双向 Transformer 编码器的架构。它在预训练阶段使用了大量的无标签文本数据,通过 Masked Language Model(MLM)任务来学习双向上下文表示。Bert 只使用编码器,不包含解码器部分,因此在生成文本方面有一定局限性。
  • Bert 的优势在于能够更好地理解句子中的上下文信息,适用于各种自然语言处理任务,如文本分类、语义理解和命名实体识别等。

GPT(Generative Pre-trained Transformer):

  • GPT 则是基于 Transformer 的解码器结构,采用了自回归的方式来进行预训练。它通过语言模型任务来学习生成文本的能力,可以根据输入文本生成连续的文本序列。GPT 在预测下一个词的过程中,考虑了所有前面的词,从而能够逐步生成连贯的文本。
  • GPT 在生成文本方面表现出色,能够生成流畅的语言并保持一致性。但由于没有编码器部分,GPT 不擅长处理双向上下文信息。

BERT 和 GPT 在编码解码结构方面有着明显的差异。BERT 更适用于需要双向上下文信息的任务,而 GPT 则擅长生成连贯的文本。在实际应用中,可以根据任务需求选择合适的模型进行使用。

GPT(Generative Pre-trained Transformer)诞生于2018年,采用解码器架构,以无监督学习方式预训练。它通过大规模文本数据的学习,能够生成自然流畅的文本,并在多项自然语言处理任务中取得了较好的成绩。然而,虽然GPT在生成型任务上表现卓越,但在理解和联系信息方面相对较弱。

相比之下,BERT(Bidirectional Encoder Representations from Transformers)于2018年底问世,采用编码器架构,通过双向训练方式将上下文信息有效地融入到语言表示中。BERT的出现引领了预训练技术的新浪潮,迅速成为自然语言处理领域的一匹黑马。其优势在于对上下文信息的充分利用,使得在理解和推断任务上有着出色的表现。

不可否认,BERT家族的发展壮大,吸引了众多研究者和工程师的关注,取得了许多重要的突破。然而,GPT作为一种全新的生成式模型,也顺利地在自然语言处理领域站稳了脚跟。它在生成任务上展现出的出色表现,逐渐赢得了更多人的喜爱和认可。

在两个顶尖模型之间的角逐中,GPT虽然起步较晚,但其独特的架构和颠覆性的设计,使得它在自然语言处理的发展中扮演着不可或缺的角色。BERT的强大并不意味着GPT的失败,两者各有所长,相互之间的竞争与合作将推动自然语言处理技术的不断进步和创新。在未来的发展中,无论是GPT还是BERT,都将在人工智能领域继续书写属于自己的辉煌篇章。

从 GPT 的发展来看技术的演进过程。

GPT-1:学会微调(Finetune)

GPT-1的训练数据是从哪里获取的呢?GPT-1是基于海量的无标签数据,通过对比学习来进行训练的。这个思路来源于从 Word2Vec 到 ELMo 的发展过程中积累的经验。它们都通过在大规模文本数据上进行无监督预训练,学习到了丰富的语言知识。

GPT-1的微调方法是,使用预训练好的模型来初始化权重,同时在 GPT-1 的预训练模型后面增加一个线性层,最后只要根据下游具体 NLP 任务的训练数据来微调更新模型的参数就可以了。

下图展示了四个经典 NLP 场景的改造方法,分别是文本分类、蕴含关系检测、相似性检测和多项选择题的改造方式。通过这样的微调策略,GPT-1能够迅速适应各种NLP任务,而无需重新训练整个模型。

GPT-1的模型结构其实就是 Transformer 的架构。与 Transformer 不同的是,GPT-1 使用了一个只包含解码器部分的架构。它是一个单向的语言模型,通过自回归地生成文本,来模拟序列生成的过程。自回归指的是使用前面的观测值,来预测未来的值,GPT模型一个词一个词往外“蹦”,就是源于它的特性。

Transformer层类比的语言层级具体功能示例
第1层单词/局部语法- 识别词性(动词/名词)
- 捕捉邻近词关系(如“吃”→“苹果”)
第2~3层句子结构- 分析主谓宾关系
- 处理短距离指代(如“他”→“医生”)
深层(4~6+层)篇章/语义- 理解长程依赖(如跨句指代)
- 把握情感倾向或逻辑连贯性

具体层数分配因模型规模和任务而异,例如BERT-base有12层,GPT-3多达96层。

在自回归生成的过程中,GPT-1 会为序列开始后的每个时刻生成一个词,并把它当作下一个时刻生成的上下文。

GPT-1 在训练过程中则会根据海量数据,统筹考量不同上下文语境下生成的文本在语法和语义上的合理性,来动态调整不同词的生成概率,这个能力主要由它所使用的 12 个 Transformer 共同提供。

这便是 GPT-1 所提供的一整套完备的预训练加微调的 NLP PTM 方法论,它也是第一个提出这种方法的。从这个角度说,GPT-1 的创新度是在 BERT 之上的。

GPT-2:放下微调(Zero-shot)

BERT 是在 GPT-1 诞生后不久发布的,BERT 使用了与 GPT-1 类似的思想和更大数据集,达到了比它更好的效果,所以 OpenAI 团队一直在憋着想要打赢这场翻身仗,他们的反击,就是 GPT-2。

GPT-2 第一次推出了 WebText 这个百万级别的数据集。BERT 你的数据多是吧?我比你还多。而且,GPT-2 还使用了比 BERT 更大的 15 亿参数的 Transformer,BERT 你模型大吧?我比你还大。有了更大的数据集和参数,GPT-2 就能更好地捕捉复杂的语言特征和更长距离的上下文语义关系。

事实证明,GPT-2在各种标准任务中表现出色。然而,OpenAI团队并没有满足于在标准任务上取得的进步,而是想到既然已经投入了大量资源来构建这个“小怪物”,为什么还需要下游任务进行微调呢?

零样本学习就此诞生。

那什么是零样本学习呢,就是创造一个通用的、不需要任何额外样本,就能解决所有下游任务的预训练大模型

于是,这次 OpenAI 索性就把所有可能用到的下游任务数据汇集成了一个多任务学习(MTL)的数据集,并将这些数据都加入到了 GPT-2 模型的训练数据当中,想要看看到底能合成出一个什么样的“新物种”。

这个想法很有吸引力,但是如果不进行下游任务的微调,模型要怎么知道自己该做什么任务呢。这时,OpenAI 提出了一种影响了后续所有语言模型工作的方法,那就是通过提示词(prompt)的方式,来告知模型它需要解决什么问题。

OpenAI 在预训练过程中,将各类 NLP 任务的数据都放到 GPT-2 的训练数据中,帮助大模型更好地理解和生成文本。在经过这些步骤以后,GPT-2 的预训练模型在未经过任何微调的情况下,就能战胜许多下游任务的最佳结果。

它不仅在很多 NLP 任务上超越了 BERT,还成功地提出并完成了 “零样本学习” 这个更为困难的任务。

GPT-3:超越微调(in-Context Learning)

“零样本学习”的方式仍然存在一定的局限性,因为下游的使用者,很难把新的下游数据注入到模型中,因为 GPT-3 预训练模型的规模已经变得非常庞大了,它是当时规模最大的模型之一,具有惊人的 1750 亿个参数,很少有机构有能力承担微调所需的巨大算力成本。

于是,OpenAI 提出了一个更新的理念,也就是全新的“少样本学习”(Few-Shot Learning)的概念。这和传统意义上模型微调的“少样本学习”是不一样的。GPT-3 所提出的方式是,允许下游使用者通过提示词(prompt)直接把下游任务样本输入到模型中,让模型在提示语中学习新样本的模式和规律,这种方法的学名叫做in-context learning。

def translate(text, model):
    instruction = "Translate the following English text to French:\n"
    example = "sea otter => loutre de mer\n"
    task = text + " => "
    # Construct the prompt
    prompt = f"{instruction}{example}{task}"
    translation = model.generate_text(prompt)
    return translation

这种方法也存在缺点,其中最明显的问题是,注入样本的数量完全受限于模型能接收的最大提示词长度。这就导致 GPT 向着参数规模越来越大、训练数据越来越多,还有提示词输入长度越来越长这样的趋势发展。你在 GPT-4 的各项参数中,一定也发现了这个规律。

正是 GPT-3 这种基于提示词的开放输入方式,让用户可以直接与大语言模型(LLM)进行互动,逐渐开始感受到了大模型的"涌现"和"思维链"等能力的魅力和价值。

GPT-3 的问世也引发了中小企业的担忧,这么高昂的训练成本可能会导致大公司在技术方面形成垄断,这让全球各公司逐渐认识到当中蕴含的价值,纷纷开始加入这场技术军备竞赛,这直接导致了 NVIDIA 的公司股价持续攀升。

从上图可看出:不管多少参数量下,少样本学习的效果都明显优于零样本学习和One-shot。

OpenAI 的模型迭代:预训练与微调的共舞

1. GPT-3 Initial(起点)

  • 这是最初的 GPT-3 基础模型,发布于 2020 年。

  • 从这一起点分出两条主要路径:

    • Codex 分支(面向代码生成)

    • InstructGPT 分支(面向指令微调)

2. 第一条分支:Codex Initial

  • 目标:专注于代码生成和补全任务。

  • 衍生模型

    • Code-davinci-001:早期代码生成模型,能力较强。

    • Code-cushman-001:轻量级代码模型,响应速度更快。

3. 第二条分支:InstructGPT Initial

  • 目标:优化对指令的理解和响应,更适合交互式任务。

  • 衍生模型

    • Instruct-davinci-beta:早期指令调优的实验性模型。

    • Text-davinci-001:初步融合代码和指令能力的模型。

4. 分支合并:Code-davinci-002 进入 GPT-3.5 系列

  • 关键节点:Code-davinci-002 的能力被整合到 GPT-3.5 系列中。

  • 产出模型

    • Text-davinci-002:作为 GPT-3.5 系列的起点,兼具代码和文本能力。

5. GPT-3.5 系列的进一步分化

从 Text-davinci-002 开始,分出两条新的路径:

  1. Text-davinci-003

    • 迭代优化的通用文本模型,改进了指令微调和生成质量。

    • 主要用于 API 和文本生成任务。

  2. ChatGPT

    • 专注于对话交互的模型,基于人类反馈强化学习(RLHF)优化。

    • 发布于 2022 年 11 月,成为面向大众的对话式 AI。

关键点

  • Codex 和 InstructGPT 是平行发展的两条技术路线,分别侧重代码和指令理解。

  • GPT-3.5 系列是技术整合的产物,尤其是 Code-davinci-001 的代码能力被融入。

  • ChatGPT 是 GPT-3.5 的对话专用分支,通过 RLHF 大幅优化交互体验。

这一路径反映了 OpenAI 从通用模型(GPT-3)到垂直优化(代码、指令),再通过技术整合推出更强的通用模型(GPT-3.5)的战略。

遇见都是天意,记得点赞收藏哦!

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Qt】构建目录设置

问题 ProjectRoot/├── src/ # 源代码│ ├── project1│ └── project2├── build/ # 构建目录│ ├── build-PCIeDemoApp-Desktop_Qt_5_9_7_MSVC2015_64bit-Debug/│ └── build-PCIeDemoApp-Desktop_Qt_5_9_7_MSVC2015_64bit-Rele…

Web后端快速入门(Maven)

Maven是apche旗下的一个开源项目,是一款用于管理和构建java项目的工具。 开源项目:Welcome to The Apache Software Foundation. Maven的作用: 依赖管理(方便快捷的管理项目依赖的资源,避免版本冲突问题&#xff09…

机器学习算法:逻辑回归

1. 基础概念 定义: 逻辑回归(Logistic Regression)是一种用于解决二分类问题的监督学习算法,通过概率预测样本属于某一类别的可能性。 核心特点:输出是概率值(0~1),通过阈值&#…

AI健康小屋+微高压氧舱:科技如何重构我们的健康防线?

目前,随着科技和社会的不断发展,人们的生活水平和方式有了翻天覆地的变化。 从吃饱穿暖到吃好喝好再到健康生活,观念也在逐渐发生改变。 尤其是在21世纪,大家对健康越来越重视,这就不得不提AI健康小屋和氧舱。 一、A…

如何做接口测试?

🍅 点击文末小卡片,免费获取软件测试全套资料,资料在手,涨薪更快 01、通用的项目架构 02、什么是接口 接口:服务端程序对外提供的一种统一的访问方式,通常采用HTTP协议,通过不同的url&#xff…

【JMeter】性能测试知识和工具

目录 何为系统性能 何为性能测试 性能测试分类 性能测试指标 性能测试流程 性能测试工具:JMeter(主测web应用) jmeter文件目录 启动方式 基本元件:元件内有很多组件 jmeter参数化 jmeter关联 自动录制脚本 直连数据库…

SOC-ESP32S3部分:25-HTTP请求

飞书文档https://x509p6c8to.feishu.cn/wiki/KL4RwxUQdipzCSkpB2lcBd03nvK HTTP(Hyper Text Transfer Protocol) 超文本传输协议,是一种建立在 TCP 上的无状态连接,整个基本的工作流程是客户端发送一个 HTTP 请求,说明…

字符编码全解析:ASCII、GBK、Unicode、UTF-8与ANSI

UTF - 8(全球字符能被唯一标识)、GBK、Unicode、ANSI 区别与关联 qwen模型分词器文件 1. ASCII(基础铺垫,理解编码起源) 作用:最早期为处理英文文本设计,是字符编码的基础,后演变成其他编码兼容的一部分 。范围:共 128 个字符(0 - 127),包含英文大小写字母、数字…

MaxCompute开发UDF和UDTF案例

文章目录 一、Java开发UDF1、创建Maven项目2、创建UDF类3、打包上传资源4、创建函数MyUDF5、SQL验证 二、Java开发UDTF1、创建Maven项目2、创建UDTF类3、打包上传更新资源4、创建函数MyUDTF5、SQL验证 三、常见问题1、发布函数报错 一、Java开发UDF 1、创建Maven项目 创建Mav…

49套夏日小清新计划总结日系卡通ppt模板

绿色小清新PPT模版,日系小清新PPT模版,粉红色PPT模版,蓝色PPT模版,草青色PPT模版,日系卡通PPT模版 49套夏日小清新计划总结日系卡通ppt模板:夏日小清新日系卡通PPT模版https://pan.quark.cn/s/9e4270d390fa…

告别硬编码!用工厂模式优雅构建可扩展的 Spring Boot 应用 [特殊字符]

嗨,各位技术伙伴们!👋 在日常的软件开发中,我们经常面临需求变更的挑战。如何构建一个既能满足当前需求,又能轻松应对未来变化的系统呢?答案往往藏在那些经典的设计模式中。 今天,我们就来聊聊…

Express教程【006】:使用Express写接口

文章目录 8、使用Express写接口8.1 创建API路由模块8.2 编写GET接口8.3 编写POST接口 8、使用Express写接口 8.1 创建API路由模块 1️⃣新建routes/apiRouter.js路由模块: /*** 路由模块*/ // 1-导入express const express require(express); // 2-创建路由对象…

mongodb集群之分片集群

目录 1. 适用场景2. 集群搭建如何搭建搭建实例Linux搭建实例(待定)Windows搭建实例1.资源规划2. 配置conf文件3. 按顺序启动不同角色的mongodb实例4. 初始化config、shard集群信息5. 通过router进行分片配置 1. 适用场景 数据量大影响性能 数据量大概达到千万级或亿级的时候&…

Starrocks Full GC日志分析

GC日志样例: [2025-06-03T07:36:06.1770800] GC(227) Pause Full (G1 Evacuation Pause) [2025-06-03T07:36:06.1960800] GC(227) Phase 1: Mark live objects [2025-06-03T07:36:06.9480800] GC(227) Cleaned string and symbol table, strings: 47009 processed,…

飞算 JavaAI 赋能老项目重构:破旧立新的高效利器

许多企业的 Java 老项目面临着代码陈旧、架构落后、维护困难等问题。老项目重构势在必行,却又因庞大的代码量、复杂的业务逻辑让开发团队望而却步。 老项目重构困境重重 传统的 Java 老项目往往在长期的迭代和维护中积累了诸多问题。一方面,代码质量堪…

typescript的Interface和Type

类型别名和接口非常相似,在大多数情况下你可以在它们之间自由选择。 几乎所有的 interface 功能都可以在 type 中使用,关键区别在于不能重新开放类型以添加新的属性,而接口始终是可扩展的。 // window.ts.transpileModule(src, {}); 这是调…

java后端生成心电图-jfreechart

用jfreechart生成心电图 先上成功的图片 上代码 1.导入包 implementation org.jfree:jfreechart:1.5.4implementation org.jfree:jcommon:1.0.242.实现代码 对数据进行滤波 转换单位 package com.shinrun.infrastructure.util;import java.util.ArrayList; import java.ut…

算法/机理模型演示平台搭建(二)——算法接口部署(FastApi)

算法/机理模型演示平台搭建(二)—— 算法接口部署(FastApi) 1. 项目结构2. 构建 Docker 镜像3. 运行 Docker 容器4. 访问 API 文档5. 调用 API1. 项目结构 app app/algorithms app/models Dockerfile FROM python:3.9-slimWORKDIR /codeCOPY ./requirements.txt /code…

动态规划-647.回文子串-力扣(LeetCode)

一、题目解析 这里的子字符串是连续的,与之前的子序列不同,这里需要我们统计回文子串的数目。 二、算法原理 这里也有其他算法可以解决该问题,如中心扩展算法 时间复杂度O(N^2)/空间复杂度O(1),马拉车算法(具有局限性) 时间复杂…

仿真每日一练 | Workbench中接触种类及选择方法简介

Workbench中给我们提供的接触类型主要包括以下几种👇 ◆ 1、摩擦 ◆ 2、无摩擦 ◆ 3、绑定 ◆ 4、不分离 ◆ 5、粗糙 ◆ 6、强制滑移 下面通过最常用的摩擦和绑定给大家展示两者的区别,同时文末也给大家介绍了几种接触的选择方法。首先先给大家介绍一下…