大白话讲解GPT底层原理
读完这篇文档,你会搞清楚三件事:
- GPT 和原始 Transformer 到底有什么不一样,为什么不能混为一谈
- ChatGPT 那个"打字机效果"背后在发生什么,模型有没有在"思考全文"
- 为什么今天写 Prompt 讲究格式和结构,这件事从 2018 年的论文里就能找到根源
一、GPT 在解决什么问题?
在 GPT 出现之前,做 NLP(自然语言处理)任务的套路是:你有什么任务,就专门为它训练一个模型。情感分析一个模型,问答一个模型,文本蕴含又一个模型——每个都要大量标注数据,费时费力,还不能互相复用。
GPT 提出了一个不同的思路:
能不能先让模型"读遍所有书",学会语言本身,然后再针对具体任务稍微调教一下?
这就是论文的核心贡献——"预训练 + 微调"两阶段范式。
用一个比喻来理解:GPT 的训练就像培养一个实习生。第一阶段让他广泛阅读、积累通识(预训练);第二阶段再送去不同岗位实习几天,快速上手具体工作(微调)。
二、图一解读:GPT 的身体结构
对应论文 Figure 1 左侧:模型架构图
2.1 整体结构一览
GPT 的结构从下往上读,分三层:
Text & Position Embed ← 输入层:把文字变成向量 ↓ 12× 解码器块 ← 处理层:理解语义与上下文 ↓ Text Prediction / ← 输出层:根据任务选不同的"脑袋" Task Classifier2.2 输入层:文字怎么进入模型?
模型不认识"苹果"这两个字,它只认识数字向量。输入层做两件事:
- Text Embedding(词嵌入):把每个词映射成一串数字,比如"苹果"→
[0.3, -0.7, 0.9, ...],维度是 768。 - Position Embedding(位置嵌入):告诉模型"这个词排在第几位"。因为注意力机制天然不感知顺序,必须额外注入位置信息。
GPT 的特别之处:位置编码不是固定的三角函数(原始 Transformer 的做法),而是可学习的向量——模型自己在训练中摸索出最优的位置表示方式,更灵活。
最终每个 token 的表示 = 词向量 + 位置向量,两者直接相加。
2.3 处理层:12 个解码器块堆叠
这是 GPT 的核心,12 个结构完全相同的解码器块串联,信息从下往上流动,逐层提炼。
每个块只包含两个子结构:
① 掩码多头自注意力(Masked Multi-Head Self-Attention)
"注意力"的本质是:当模型处理某个词时,让它去关注序列里其他词的信息。
"掩码"(Masked)是关键限制:只能看左边,不能偷看右边。
输入序列:我 爱 中 国 处理"中"时能看到:我 爱 中 处理"中"时不能看:国(被遮住了) → 模型要根据"我 爱 中"预测下一个词是"国"为什么要遮住?因为 GPT 是生成模型,训练时的任务是"预测下一个词"——如果让模型提前看到答案,就没有任何学习意义了。
"多头"(12头)的意思是:同时从 12 个不同角度关注上下文(比如一个头关注语法关系,另一个头关注语义相似性),最后把所有角度的信息拼合。
② 前馈网络(Feed Forward)
注意力层解决了"关注哪里"的问题,前馈网络负责"深化理解"——对每个位置的表示做进一步的非线性变换,提炼更抽象的语义特征。
③ 残差连接 + Layer Norm(图中的 ⊕ 符号)
每个子层的输出都加上它的输入(残差连接),再做归一化。
作用是:保留原始信息,防止深层网络训练时梯度消失,让 12 层能稳定叠加。
2.4 输出层:两个可换的"脑袋"
顶部有两个输出头,根据任务切换:
| 输出头 | 用途 | 阶段 |
|---|---|---|
| Text Prediction | 预测下一个词,输出整个词表的概率分布 | 预训练 |
| Task Classifier | 提取最后一个 token 的表示,做分类 | 微调 |
底座(12 层 Transformer)是共享的,只有顶部的"脑袋"在换。这正是迁移学习的精髓。
2.5 交给真实用户时,两个头分别长什么样?
Task Classifier 头 → 用户看不见它。输出是概率列表,直接被业务系统消费。你在美团看到的"好评率 96%",就是这个头在后台悄悄跑的结果,用户全程感知不到模型存在。
Text Prediction 头 → 就是打字机效果。ChatGPT / Claude 一个字一个字蹦出来,本质是一个循环:预测一个词 → 拼回输入 → 再预测下一个,直到出现结束符。模型没有全局规划,每步只往前走一格。
GPT-3 之后,两个头合并成了一个。分类任务不再换头,直接让模型生成"正面"或"负面"这几个字。Task Classifier 头的功能被 prompt 格式彻底吸收——这就是为什么今天写 prompt 的结构比措辞更重要:现代 LLM 只有一个头,所有任务的区别全靠输入格式来传达。
三、预训练:让模型"读遍天下书"
3.1 训练目标:预测下一个词
GPT 预训练的任务极其简单,用一句话概括:
给你一段文字的前半段,预测下一个词是什么。
输入:今天天气 模型输出:"很"的概率 40%,"不"的概率 25%,"真"的概率 15%... 正确答案:很 → 用正确答案反向调整模型参数这叫自回归语言建模(Autoregressive Language Modeling)。
它的优雅之处在于:训练数据完全不需要人工标注——任何一段文字天然就是训练样本,前面的词是输入,后面的词是标签。
3.2 训练数据:BooksCorpus
论文使用了BooksCorpus语料库:
- 来源:超过 7000 本英文小说完整文本
- 规模:约8 亿词
- 特点:语言自然流畅,句子长、上下文完整,非常适合训练长距离依赖能力
为什么用小说而不是网页?网页的句子往往短而碎,小说有完整的情节逻辑,更能让模型学会跨越长距离的上下文依赖。
3.3 预训练学到了什么?
经过在海量文本上的预测训练,模型被迫学会:
- 语法规则:什么词性跟什么词性搭配
- 语义知识:苹果和水果是什么关系
- 上下文依赖:代词"他"指代的是前文哪个人物
- 世界常识:从书中读到的大量事实性知识
这些能力都隐含在 12 层 Transformer 的权重里,可以被后续任务直接复用。
四、图二解读:微调时的输入格式设计
对应论文 Figure 1 右侧:四种下游任务的输入格式
4.1 微调的核心挑战
GPT 是自回归语言模型,输入必须是一段连续的文本序列。但现实中的 NLP 任务各式各样,有的需要比较两段文字,有的需要从多个选项里挑一个——怎么把这些任务都"翻译"成一段文字输入给模型?
论文给出的答案:用特殊 token 做分隔,把任务结构编码进输入序列本身。
这是整篇论文工程价值最高的地方,直接预示了现代 Prompt Engineering 的核心思路。
4.2 四种任务格式逐一解读
| 任务 | 输入格式 | 关键设计 | 一句话说明 | 适用场景 |
|---|---|---|---|---|
| 分类 | [Start] 文本 [Extract] | 单段直接提取 | 最简单,从 Extract 位置读表示做分类 | 情感分析、话题识别、垃圾邮件检测 |
| 蕴含 | [Start] 前提 [Delim] 假设 [Extract] | [Delim]划定边界 | 没有分隔符,模型不知道两段文字各自的角色 | 事实核查、逻辑推理、对话一致性判断 |
| 相似度 | 正反各跑一次,结果拼接后接 Linear | 消除顺序偏差 | 相似度是对称任务,A→B 和 B→A 权重不同,必须两次取平均 | 问答匹配、重复问题识别、文档去重 |
| 多选题 | 每个选项单独一路,各自打分,Softmax 选最高 | N 路独立评分 | 不把选项堆一起"一眼扫",让模型对每个选项单独建立注意力关系 | 阅读理解、常识推理、工具/动作选择 |
4.3 格式设计背后的统一原则
详细解读,参考公众h: 计算机知识的传播者
六、对后世的影响
GPT-1 本身并不强大(参数只有 1.17 亿),但它的范式影响深远:
- GPT-2 / GPT-3:同样的架构,暴力扩参数 + 扩数据,涌现出 few-shot / zero-shot 能力
- BERT:把单向改成双向,同样用预训练 + 微调,但更擅长理解而非生成
- ChatGPT:在 GPT-3 基础上加 RLHF(人类反馈强化学习),让模型学会对话
- GPT-4 / GPT-5:从 GPT-4 起 OpenAI 转为闭源,不再发表完整技术论文,本文不作介绍
- 现代 Agent:把微调时"输入格式设计"的思路,演化成了 Prompt Engineering,再演化成了 Context Engineering
GPT-1 是一粒种子,它的核心洞见是:
语言建模 = 通用智能的前置条件。学会预测下一个词的模型,已经隐式地学会了理解世界。
欢迎点赞加关注,一起聊聊ai
