【深度学习】12. VIT与GPT 模型与语言生成:从 GPT-1 到 GPT4

news2025/6/5 5:11:59

VIT与GPT 模型与语言生成:从 GPT-1 到 GPT4

本教程将介绍 GPT 系列模型的发展历程、结构原理、训练方式以及人类反馈强化学习(RLHF)对生成对齐的改进。内容涵盖 GPT-1、GPT-2、GPT-3、GPT-3.5(InstructGPT)、ChatGPT 与 GPT-4,并简要提及 Vision Transformer 的演化。

1. GPT 模型的原理

Transformer 架构中包含 Encoder 与 Decoder 两部分。

  • 如果我们只需要处理输入(如 BERT),可以去掉 Decoder;
  • 如果我们只生成输出(如 GPT),可以只保留 Decoder。

GPT 是一种只使用 Transformer Decoder 堆叠结构的模型,其训练目标是根据前文预测下一个词,即语言建模任务

给定前缀 { x 1 , x 2 , . . . , x t } \{x_1, x_2, ..., x_t\} {x1,x2,...,xt},模型预测 x t + 1 x_{t+1} xt+1

2. GPT 与 ELMo/BERT 的比较

模型参数量架构特点
ELMo94M双向 RNN上下文嵌入
BERT340MTransformer Encoder掩码语言模型 + 下一句预测
GPT可变(取决于版本)Transformer Decoder自回归语言模型

GPT 使用自回归机制,一个词一个词地生成结果,适合生成任务。

3. GPT-1:生成式预训练语言模型

GPT-1 的两大创新:

  1. 利用海量无标注文本进行预训练(语言建模);
  2. 对具体任务进行监督微调(分类、情感分析、蕴含等)。

这种预训练 + 微调范式,开启了 NLP 模型训练的新方向。

预训练目标是最大化:

log ⁡ P ( t 1 , t 2 , . . . , t n ) = ∑ i = 1 n log ⁡ P ( t i ∣ t 1 , . . . , t i − 1 ) \log P(t_1, t_2, ..., t_n) = \sum_{i=1}^{n} \log P(t_i | t_1, ..., t_{i-1}) logP(t1,t2,...,tn)=i=1nlogP(tit1,...,ti1)

微调目标是最大化:

log ⁡ P ( y ∣ x 1 , x 2 , . . . , x n ) \log P(y | x_1, x_2, ..., x_n) logP(yx1,x2,...,xn)

其中 y y y 是标签。

特定于任务的输入转换:为了在微调期间对模型的体系结构进行最小的更改,将特定下游任务的输入转换为有序序列

在这里插入图片描述

4. GPT-2:无监督多任务学习

GPT-2 扩展了 GPT-1:

  • 更大的数据集(从 6GB 增长至 40GB);
  • 更多的参数(117M → 1542M);
  • 任务无需专门微调结构,只需修改输入格式,即可处理不同任务。

这一版本提出了“语言模型是无监督的多任务学习者”这一重要观点。

5. GPT-3:大规模语言模型与 Few-shot 能力

GPT-3 使用了 1750 亿参数,训练数据量达 45TB,计算资源非常庞大(28.5 万 CPU,1 万 GPU)。

其突破包括:

  • 强大的 Few-shot / One-shot / Zero-shot 能力;
  • 不再依赖下游微调,输入任务示例即可生成高质量输出。

其架构仍为标准 Transformer Decoder,无重大结构创新。

6. GPT-3.5 / InstructGPT:人类对齐

InstructGPT 引入了 人类反馈强化学习(RLHF),旨在让模型更符合用户意图:

在这里插入图片描述

主要流程分为三阶段:

  1. 语言模型预训练(如 GPT-3);

    RLHF一般使用预训练的LMs作为起点(例如,使用GPT-3)

    这些预训练的模型可以根据额外的文本或条件进行微调,但这并不总是必要的。(人类增强文本可以用来调整人类的偏好)

  2. 奖励模型训练(由人工标注生成输出的排序);

    Gathering data and training a Reward Model (RM)

    • RLHF中的RM:接受文本序列并返回代表人类偏好的标量奖励
    • RM的训练集:通过对提示进行采样并将其传递给初始LM以生成新文本,然后由人工注释器对其进行排序。
    • 注意:标注对LM的输出进行排序,而不是直接给它们打分。
  3. 通过强化学习优化模型(使用 PPO 算法)。

    1. 示例提示

    2. 通过初始LM和RL策略(初始LM的副本)传递它

    3. 将策略的输出传递给RM来计算奖励,并使用初始LM和策略的输出来计算移位惩罚

    4. 采用奖惩结合的方式,通过PPO (Proximal policy)更新

结果是模型更加安全、有用且真实。

7. ChatGPT:对话能力与人类协作训练

ChatGPT 是 InstructGPT 的“对话版”,与用户进行多轮交流。

其训练包括:

  • 初始监督微调:AI 教练扮演用户和助手角色生成对话;
  • 奖励模型训练:对话中多个回复由 AI 教练排序评分;
  • 最终强化学习:使用 PPO 方法优化回复。

它与 GPT-3.5 共享核心技术,但训练数据格式专为对话优化。

ChatGPT 的训练概述

ChatGPT 是 InstructGPT 的“兄弟模型”,主要目标是理解提示并生成详细回复。两者使用相同的 RLHF 方法,但 数据构造方式略有不同

ChatGPT 的训练数据分两部分:

① 初始监督微调数据(Supervised Fine-tuning)
  • 训练师(AI Trainers)模拟对话角色

    “The trainers acted as both users and AI assistants…”

    即,训练师扮演用户助手两个角色,人工构造对话数据集。

  • 参考模型生成建议(model-written suggestions)**:
    帮助训练师撰写回复,提高效率。

  • InstructGPT 数据集也被转换为对话格式并混入**新数据集中。

② 奖励模型数据(Reward Model,比较排序数据)
  • 从 AI 训练师与模型的对话中提取**:

    “Took conversations that AI trainers had with the chatbot”

  • 随机抽取模型生成的回答**,训练师对多个候选答案进行排序打分,构成奖励数据。


总结:ChatGPT 相比 InstructGPT 的不同点

阶段InstructGPTChatGPT
微调数据任务式指令对多轮对话,训练师模拟双方
奖励数据人类写的参考回复人类对多轮对话排序打分

8. GPT-4:多模态与推理能力提升

GPT-4 相较于 GPT-3.5 主要提升:

  • 更强的创造力与推理能力;
  • 多模态输入(文本+图像);
  • 更长的上下文处理能力(约 25,000 字);
  • 在专业考试中达到人类水平。

其方法未完全公开,但大体基于 ChatGPT 和 InstructGPT 技术演进。

9. Emergent Ability 与 CoT

Emergent Ability(涌现能力) 是指模型规模达到一定程度后,出现新的、未显式训练出的能力。

突发能力是指模型从原始训练数据中自动学习和发现新的高级特征和模式的能力。

Chain of Thought(CoT) 是一种通过 prompt 引导模型“逐步推理”的技巧,可大幅提升逻辑与数学任务表现。

生成思维链(一系列中间推理步骤)可以显著提高llm执行复杂推理的能力

10. Prompt Engineering 简介

Prompt 工程是通过设计输入提示来提升 LLM 输出质量的方法。

一个好的 Prompt 通常包含:

  • 角色设定(如你是老师);
  • 场景背景(如我们在深度学习课堂);
  • 明确指令(解释 prompt engineering);
  • 响应风格(应通俗易懂)。

常见方法包括:

  • Chain of Thought;
  • Self-consistency;
  • Knowledge prompt 等。

11. GPT 系列演化总结

模型技术路线特点
GPT-1预训练 + 微调引入生成式语言模型思想
GPT-2更大模型Few-shot、多任务泛化能力
GPT-3巨量参数零样本/少样本迁移能力
GPT-3.5RLHF对齐人类意图
ChatGPT对话优化多轮对话、任务跟踪
GPT-4多模态 + 长上下文强逻辑推理、创造力

12. 未来方向:多模态与通用智能

未来的发展趋势将包括:

  • 更强的多模态处理能力(语言 + 图像 + 音频);
  • 更长文本记忆;
  • 与人类交互更自然的代理;
  • 融合强化学习、知识图谱等异构技术;
  • 向通用人工智能(AGI)迈进。

GPT 是这一进化路线上的关键步骤。

13. Vision Transformer 的动机与背景

传统 CNN 利用局部感受野和共享权重处理图像,但难以建模全局依赖。

Transformer 本是为 NLP 设计,但其强大的全局建模能力被引入图像领域,催生了 Vision Transformer (ViT)

核心观点:将图像切成 Patch,类比 NLP 中的 token,再用 Transformer 编码序列。

ViT 不再依赖卷积结构,是一种纯基于 Transformer 的视觉模型。

ViT: Vision Transformer. Transformers for image recognition at… | by  Shivani Junawane | Machine Intelligence and Deep Learning | Medium

14. Vision Transformer 的核心构成(图像 → patch → 向量序列)

ViT 输入处理流程如下:

  1. 输入图像大小为 H × W × C H \times W \times C H×W×C
  2. 将图像划分为 N N N 个 Patch,每个 Patch 为 P × P P \times P P×P
  3. 展平每个 Patch 为长度为 P 2 ⋅ C P^2 \cdot C P2C 的向量;
  4. 每个 Patch 映射为 D D D 维表示(通过全连接);
  5. 加入可学习的位置编码;
  6. 在序列前添加一个 [CLS] token,作为图像的全局表示;
  7. 输入标准 Transformer Encoder。

最终分类结果由 [CLS] token 表示。

15. 多头注意力在 ViT 中的作用

与 NLP 中一样,ViT 中每个 token 都会计算 Query、Key、Value:

Q = X W Q , K = X W K , V = X W V Q = XW_Q,\quad K = XW_K,\quad V = XW_V Q=XWQ,K=XWK,V=XWV

然后进行多头注意力(Multi-Head Attention):

Attention ( Q , K , V ) = softmax ( Q K T d ) V \text{Attention}(Q, K, V) = \text{softmax}\left( \frac{QK^T}{\sqrt{d}} \right) V Attention(Q,K,V)=softmax(d QKT)V

多个头并行计算后拼接,再映射到原始维度:

MultiHead ( X ) = Concat ( head 1 , . . . , head h ) W O \text{MultiHead}(X) = \text{Concat}(\text{head}_1, ..., \text{head}_h)W_O MultiHead(X)=Concat(head1,...,headh)WO

注意力机制使模型可以捕捉图像各区域之间的长距离依赖。

16. 位置编码在 ViT 中的关键性

因为 Transformer 本身对输入顺序不敏感,ViT 必须引入 位置编码(Positional Encoding) 以告知 patch 的相对或绝对位置信息。

在 ViT 原始论文中,位置编码是 可学习的向量,维度与 patch 向量一致。

ViT 输入为:

z 0 = [ x class ; x p 1 ; x p 2 ; …   ; x p N ] + E pos z_0 = [x_{\text{class}}; x_p^1; x_p^2; \dots; x_p^N] + E_{\text{pos}} z0=[xclass;xp1;xp2;;xpN]+Epos

其中 x p i x_p^i xpi 表示第 i i i 个 patch 的向量表示, E pos E_{\text{pos}} Epos 是位置嵌入。

17. 类比 NLP 模型:ViT 与 BERT 输入结构对照

ViT 完全借鉴了 BERT 的编码形式:

  • 使用 [CLS] token 获取图像全局信息;
  • patch 类比为 token;
  • 添加位置编码。
模型输入单位[CLS]位置编码Transformer 层
BERTtokenEncoder Stack
ViTpatchEncoder Stack

因此,ViT 可视为一种图像版本的 BERT。

18. ViT 应用于图像分类任务(Encoder-only 模型)

ViT 的应用以图像分类为代表性任务。

其完整流程:

  1. 图像 → Patch → 向量序列;
  2. 加入位置编码;
  3. 输入多层 Transformer Encoder;
  4. 提取 [CLS] 输出向量;
  5. 使用全连接层进行分类预测。

ViT 是 Encoder-only 模型,不包含 Decoder,与 BERT 类似。

19. ViT 模型的训练策略与挑战

训练 ViT 时的挑战:

  • 数据依赖性强,若使用小数据集(如 CIFAR-10),效果不如 CNN;

    在JFT大数据集上才能略微强过ResNet

  • 训练时间长,对正则化要求高;

  • 无归纳偏置(不像 CNN 有平移不变性等先验),导致训练初期收敛慢。

解决方法包括:

  • 使用 大规模预训练(如 ImageNet-21k)
  • 引入 混合训练策略(如 Token Labeling、MixToken);
  • 结合 CNN 结构(Hybrid ViT)。

20. 总结:ViT 与 GPT 的共同趋势

ViT 和 GPT 虽应用领域不同,但都体现了 Transformer 的优势:

  • 使用统一的序列建模结构;
  • 可用于多种下游任务(分类、生成、匹配);
  • 都展现出随着模型规模扩大,性能提升的趋势;
  • 需要大量数据与计算支持;
  • 都引发了通用 AI 架构探索的热潮。

ViT 的出现标志着 Transformer 正式从 NLP 扩展至视觉领域,推动了多模态融合的发展。

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

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

相关文章

常规算法学习

算法 1. 排序算法1. 归并排序1.1 普通归并排序1.2 优化后的归并排序(TimSort) 2. 插入排序2.1 直接插入排序2.2 二分插入排序2.3 成对插入排序 3. 快速排序3.1 单轴快速排序3.2 双轴快排 4. 计数排序 2. 树1. 红黑树(Red Black Tree&#xff…

Google 发布的全新导航库:Jetpack Navigation 3

前言 多年来,Jetpack Navigation 库一直是开发者的重要工具,但随着 Android 用户界面领域的发展,特别是大屏设备的出现和 Jetpack Compose 的兴起,Navigation 的功能也需要与时俱进。 今年的 Google I/O 上重点介绍了 Jetpack Na…

Arbitrum Stylus 合约实战 :Rust 实现 ERC20

在《Arbitrum Stylus 深入解析与 Rust 合约部署实战》篇中,我们深入探讨了 Arbitrum Stylus 的核心技术架构,包括其 MultiVM 机制、Rust 合约开发环境搭建,以及通过 cargo stylus 实现简单计数器合约的部署与测试。Stylus 作为 Arbitrum Nitr…

内存管理--《Hello C++ Wrold!》(8)--(C/C++)--深入剖析new和delete的使用和底层实现

文章目录 前言C/C内存分布new和deletenew和delete的底层定位new表达式 内存泄漏作业部分 前言 在C/C编程中,内存管理是理解程序运行机制的核心基础,也是开发高效、稳定程序的关键。无论是局部变量的存储、动态内存的分配,还是对象生命周期的…

Java进阶---JVM

JVM概述 JVM作用: 负责将字节码翻译为机器码,管理运行时内存 JVM整体组成部分: 类加载系统(ClasLoader):负责将硬盘上的字节码文件加载到内存中 运行时数据区(RuntimeData Area):负责存储运行时各种数据 执行引擎(Ex…

C++ 检查一条线是否与圆接触或相交(Check if a line touches or intersects a circle)

给定一个圆的圆心坐标、半径 > 1 的圆心坐标以及一条直线的方程。任务是检查给定的直线是否与圆相交。有三种可能性: 1、线与圆相交。 2、线与圆相切。 3、线在圆外。 注意:直线的一般方程是 a*x b*y c 0,因此输入中只给出常数 a、b、…

23. Merge k Sorted Lists

目录 题目描述 方法一、k-1次两两合并 方法二、分治法合并 方法三、使用优先队列 题目描述 23. Merge k Sorted Lists 方法一、k-1次两两合并 选第一个链表作为结果链表,每次将后面未合并的链表合并到结果链表中,经过k-1次合并,即可得到…

Unity + HybirdCLR热更新 入门篇

官方文档 HybridCLR | HybridCLRhttps://hybridclr.doc.code-philosophy.com/docs/intro 什么是HybirdCLR? HybridCLR(原名 huatuo)是一个专为 Unity 项目设计的C#热更新解决方案,它通过扩展 IL2CPP 运行时,使其支持动态加载和…

ElasticSearch迁移至openGauss

Elasticsearch 作为一种高效的全文搜索引擎,广泛应用于实时搜索、日志分析等场景。而 openGauss,作为一款企业级关系型数据库,强调事务处理与数据一致性。那么,当这两者的应用场景和技术架构发生交集时,如何实现它们之…

【C语言极简自学笔记】项目开发——扫雷游戏

一、项目概述 1.项目背景 扫雷是一款经典的益智游戏,由于它简单而富有挑战性的玩法深受人们喜爱。在 C 语言学习过程中,开发扫雷游戏是一个非常合适的实践项目,它能够综合运用 C 语言的多种基础知识,如数组、函数、循环、条件判…

Maven概述,搭建,使用

一.Maven概述 Maven是Apache软件基金会的一个开源项目,是一个有优秀的项目构建(创建)工具,它用来帮助开发者管理项目中的jar,以及jar之间的依赖关系,完成项目的编译,测试,打包和发布等工作. 我在当前学习阶段遇到过的jar文件: MySQL官方提供的JDBC驱动文件,通常命名为mysql-…

Unity 环境搭建

Unity是一款游戏引擎,可用于开发各种类型的游戏和交互式应用程序。它由Unity Technologies开发,并在多个平台上运行,包括Windows、macOS、Linux、iOS、Android和WebGL。Unity也支持虚拟现实(VR)和增强现实(AR)技术,允许用户构建逼…

【入门】【练9.3】 加四密码

| 时间限制:C/C 1000MS,其他语言 2000MS 内存限制:C/C 64MB,其他语言 128MB 难度:中等 分数:100 OI排行榜得分:12(0.1*分数2*难度) 出题人:root | 描述 要将 China…

使用 SASS 与 CSS Grid 实现鼠标悬停动态布局变换效果

最终效果概述 页面为 3x3 的彩色格子网格;当鼠标悬停任意格子,所在的行和列被放大;使用纯 CSS 实现,无需 JavaScript;利用 SASS 的模块能力大幅减少冗余代码。 HTML 结构 我们使用非常基础的结构,9 个 .i…

Spring如何实现组件扫描与@Component注解原理

Spring如何实现组件扫描与Component注解原理 注解配置与包扫描的实现机制一、概述:什么是注解配置与包扫描?二、处理流程概览三、注解定义ComponentScope 四、核心代码结构1. ClassPathScanningCandidateComponentProvider2. ClassPathBeanDefinitionSca…

达梦数据库 Windows 系统安装教程

🧑 博主简介:CSDN博客专家、CSDN平台优质创作者,高级开发工程师,数学专业,10年以上C/C, C#, Java等多种编程语言开发经验,拥有高级工程师证书;擅长C/C、C#等开发语言,熟悉Java常用开…

【Java EE初阶】计算机是如何⼯作的

计算机是如何⼯作的 计算机发展史冯诺依曼体系(Von Neumann Architecture)CPU指令(Instruction)CPU 是如何执行指令的(重点) 操作系统(Operating System)进程(process) 进程 PCB 中的…

RAG理论基础总结

目录 概念 流程 文档收集和切割 读取文档 转换文档 写入文档 向量转换和存储 搜索请求构建 向量存储工作原理 向量数据库 文档过滤和检索 检索前 检索 检索后 查询增强和关联 QuestionAnswerAdvisor查询增强 高级RAG架构 自纠错 RAG(C-RAG&#xf…

列表推导式(Python)

[表达式 for 变量 in 列表] 注意:in后面不仅可以放列表,还可以放range ()可迭代对象 [表达式 for 变量 in 列表 if 条件]

一天搞懂深度学习--李宏毅教程笔记

目录 1. Introduction of Deep Learning1.1. Neural Network - A Set of Function1.2. Learning Target - Define the goodness of a function1.3. Learn! - Pick the best functionLocal minimaBackpropagation 2. Tips for Training Deep Neural Network3. Variant of Neural…