前言
你盼世界,我盼望你无bug!Hello 大家好,我是霖呆呆!
AI 大模型种类实在是太多了,Opus、GPT、DeepSeek、Gemini... 各种模型满天飞,网上的朋友张口闭口就是"我用 Claude 写了个 XXX"、"DeepSeek 性价比真高"。
作为一个依赖 AI 写代码的开发者,我突然意识到一个尴尬的问题:我天天用这些模型,但我根本不知道它们底层在干嘛 😅
用是会用,但要是有人问我"Opus 和 DeepSeek 到底有啥区别?",我可能只会说"嗯...感觉 Opus 写的代码好一点?DeepSeek便宜很多?"------你看,这种回答多没底气。
所以我花了点时间,从最基础的原理开始,把这些模型扒了一遍。过程中还纠正了自己不少错误认知(对,打脸了 🤡)。今天就把我的学习心得整理出来,争取让大家少走点弯路。

一、大模型的本质:一个超级厉害的"接话王"
很多人觉得大模型像是一个巨大的搜索引擎------你问它问题,它从数据库里找答案。
但实际上完全不是这么回事。
大模型干的事情其实只有一件:预测下一个词。
是的,就这么朴素 😂
它在训练阶段读了海量的文本数据,把语言的规律和模式 压缩进了数十亿到数千亿个数字参数里。这些参数不是数据的存储,而是规律的浓缩。
来个类比帮助理解 👇
💡 老司机类比:
想象一个跑了 20 年的出租车司机,他从来不用导航。你说个地名,他脑子里直接算 出一条路线。他并没有存储每条路线,而是 20 年的驾驶经验已经内化成了他对道路的"感觉"。他甚至能去没去过的新开发区,因为他理解了道路规律。
大模型就是这个老司机。训练数据就是那 20 年的驾驶经验,模型参数就是内化后的"直觉"。当你给它一个全新的问题,它不是在"找"答案,而是在用内化的规律去计算:在当前上下文之后,下一个 token 最可能是什么。
那幻觉(瞎编)是怎么回事?
理解了"预测下一个词",幻觉就很好解释了:
模型从头到尾都没有在"回忆事实",它一直在做概率预测 。大多数时候,"概率最高的"恰好是"正确的",所以看起来它很靠谱。但它并不区分"真实的"和"听起来合理的"。
比如你问它 lodash 的字符串方法,它可能回答 _.camelCase(真实存在)、_.capitalize(真实存在)、_.toPascalCase(不存在但很合理)------因为这个名字完全符合 lodash 的命名规律和常见的字符串操作。
🚨 划重点:
幻觉不是 bug,是这种"预测机制"的固有特性。所以别指望"训练数据更多就能彻底解决幻觉"------这个思路本身就有问题。模型的本质没变,它永远在做概率游戏。
二、Transformer 注意力机制:模型怎么"理解"上下文
模型要预测得好,就得"理解"上下文。比如你说:
"我有一个 React 项目,用了 TypeScript,现在需要加一个用户认证功能,用 JWT 方案。"
模型需要同时关注到 React、TypeScript、认证、JWT 这些词,并且理解它们之间的关系。一句话可能有几十上百个词,模型怎么知道该重点关注哪些词?
答案是:注意力机制(Attention)。
核心思想很简单:对于句子中的每个词,模型会计算它和其他所有词的相关性分数,然后根据分数来加权融合上下文。
用伪代码理解就是:
javascript
// 注意力机制的直觉
for (当前词 of 句子中每个词) {
for (其他词 of 句子中所有词) {
score = 计算相关性(当前词, 其他词)
}
注意力分数 = softmax(所有score) // 归一化(总和为1)
当前词的新表示 = 加权求和(所有词, 注意力分数) // 融合上下文
}
而且这个相关性是动态计算的。同样是"React"这个词,在"我要用 React 写后台管理系统"和"React 的学习曲线不算陡"这两句话里,它和其他词的注意力分数完全不同。
O(n²) 的代价
注意到没?两层嵌套循环,每个词都要和所有词计算一遍。如果输入有 n 个 token,计算量就是 n²。
这意味着什么?token 数从 1000 涨到 10000(涨 10 倍),注意力部分的计算量就涨 100 倍 😱
这就是为什么上下文越长,模型响应越慢、成本越高。也是各家在"上下文窗口大小"上疯狂内卷的原因------技术难度远不是线性增长。
多头注意力:并行分析
实际的模型还有一个优化:多头注意力(Multi-Head Attention)。
一个注意力头只能关注一种维度的关系(比如技术栈关联),但理解一句话需要同时从语法、语义、逻辑等多个角度分析。所以 Transformer 用了 32 到 128 个注意力头并行工作,每个头独立计算,最后合并结果。
如果你写过并发代码的话,可以这么理解:每个注意力头就是一个独立的 Worker,各算各的,最后汇总 👍
三、训练三阶段:一个模型是怎么"炼"出来的
这部分对理解模型差异至关重要。所有现代大模型的训练都分三个阶段:
阶段一:预训练(Pre-training)------ 疯狂阅读
让模型读完互联网上的海量文本。不给任何任务,不做任何考核,就是读。
读完之后,模型对语言规律有了"感觉",但它只学会了"接着写"------你给它一段话,它会续写下去。你让它帮你写代码?它可能会继续写你的需求文档,而不是给你写代码 😂
阶段二:监督微调(SFT, Supervised Fine-Tuning)------ 师傅带徒弟
给模型几十万个"指令→标准回答"的示例。比如"用户问怎么排序,应该这样回答"。
这一步的核心作用:让模型从"续写文本"变成"遵循指令"。
没有 SFT 的模型就像一个读了所有书但从来没跟人对过话的天才------有知识,但不知道怎么用对话的方式输出。
阶段三:人类反馈强化学习(RLHF)------ 用户打分
让真实的人(通常是标注员或工程师)来评价模型的回答,"这个好"、"那个不好",模型根据反馈调整行为。
这一步的核心作用:让模型的回答更符合人类的期望和偏好。
💡 这三个阶段的一句话总结:
- 预训练:学会"接着写"(知识底座)
- SFT:学会"按指令干活"(遵循指令)
- RLHF:学会"干得让人满意"(行为偏好)
这跟模型差异有啥关系?
关系大了 👇
Anthropic(Claude)和 OpenAI(GPT)是两家完全不同的公司。它们在每个阶段都可能有差异:
- 预训练数据不同 → 读过的代码质量不同
- SFT 示例不同 → "遵循指令"的能力不同
- RLHF 打分者不同 → 行为偏好不同
就像两个程序员,读的书不同、跟的师傅不同、收到的用户反馈不同------最终写出来的代码风格当然不一样。
四、Dense vs MoE:两种架构路线
Dense(谐音:等死?) Moe(摸诶~)
这个概念直接关系到 DeepSeek 为什么能做到"又便宜又能打"。
Dense(稠密)模型
每次推理用全部参数。Claude Opus就是这种。
就像 1000 个全栈工程师,每个需求都让全员参与讨论。质量高,但成本也高。
MoE(Mixture of Experts,混合专家)模型
把参数分成多个"专家组",每次推理只激活其中一小部分。DeepSeek 就是这种。
关键数据:DeepSeek-V3 总参数 6710 亿 ,但每次推理只激活约 370 亿。总人才储备很大,但每次开会只叫几个相关的人 💡
🚨 常见误区:参数多 ≠ 模型更强
之前我也差点掉进这个坑里。"DeepSeek 有 6710 亿参数,肯定比 Opus 强吧?"------不一定!因为:
- MoE 每次只激活部分参数,实际参与计算的可能不如 Dense 模型多
- 模型质量还取决于训练三阶段的质量(预训练数据、SFT、RLHF)
模型质量 = 架构 × 参数规模 × 训练质量,缺一不可。
五、推理参数:Temperature 到底是啥
模型每一步输出的不是"一个词",而是对所有可能的下一个词的概率分布。比如:
erlang
"组件" → 23%
"页面" → 18%
"表单" → 12%
...其他几万个词各占很小的概率
那问题来了------选哪个?
这就是 Temperature(温度) 的作用,可以把它想象成一个抽奖转盘 🎯:
| Temperature | 转盘行为 | 适用场景 |
|---|---|---|
| 0 | 永远选概率最高的,结果确定 | 写代码、做数学 |
| 0.1~0.5 | 有轻微随机性,输出比较稳定 | 日常对话、技术问答 |
| 0.8~1.5 | 各选项概率更均匀,输出多样 | 创意写作、起标题 |
(实际中还有 top-p 等其他采样参数配合使用)
💡 实用建议:
- 写正则表达式 → Temperature = 0(要精确!)
- 起 10 个创意标题 → Temperature = 1.0+(要天马行空!)
- Temperature 越高,幻觉越严重(低概率的词更容易被选中)
六、各家模型到底有啥不同
说实话,在研究之前,我的认知是这样的:
- "Claude 擅长编程"
- "GPT 擅长日常聊天"
- "DeepSeek 便宜"
后来发现这些认知大部分是错的 🤡
这些模型其实都是通用模型 ,都能做编程、写作、推理。我之所以觉得"Claude 擅长编程",只是因为我主要用它写代码,这是典型的认知偏差。
实际的差异化更多在策略层面:
| 模型 | 核心策略 | 架构 | 关键优势 |
|---|---|---|---|
| Claude(Anthropic) | 安全性 + 指令遵循 | Dense | RLHF 重视安全,指令还原度高 |
| GPT(OpenAI) | 生态 + 先发优势 | Dense/MoE | 插件生态最成熟,产品线最广 |
| DeepSeek | 性价比 + 开源 | MoE | 推理成本低,可私有化部署 |
| Gemini(Google) | 多模态 + 长上下文 | Dense | 1M token 上下文,海量视频/图像训练数据 |
开源 vs 闭源:比你想的重要得多
DeepSeek 的开源策略意味着:如果你是金融公司或医院,数据非常敏感,你可以自建服务器、本地部署,数据不出内网。
而 Claude 的闭源也有道理------通过控制分发来确保模型不被滥用,和它"AI 安全"的核心理念一致。
七、为什么不同模型写出的代码质量不同
这个是我最有体感的部分了。
有时候你给不同模型发了同样的 prompt、产品需求文档和设计方案。结果差异很明显:
有一些会忠实还原设计方案,会主动做代码拆分,例如Service/Plugin 放在不同目录,职责清晰。而有一些会将所有东西怼在一个文件夹里,文件也比较冗长。
学了原理之后,我可以稍微理解这个现象了:
| 观察到的差异 | 主要来源 | 原因 |
|---|---|---|
| 忠实还原设计方案 | SFT | 指令遵循训练质量高 |
| 主动拆分文件 | 预训练 + RLHF | 读过好代码 + 打分者偏好好架构 |
| 目录职责清晰 | 预训练 + RLHF | 内化了工程架构规律 |
还有一个容易忽略的因素:上下文窗口大小。模型在生成多文件项目时,前面生成的代码也占上下文。如果窗口小,到后面几个文件时,模型可能已经"忘了"前面的接口定义,开始"各写各的"。
八、多模态:看图和画图是两码事
"能看图"和"能画图"是并不是同一种能力,实际上完全是两套技术 😱
看懂图片(Claude、GPT)
图片经过一个视觉编码器,被压缩成几百个"视觉 token",然后和文字 token 一起塞进 Transformer 做注意力计算。
ini
文字: "这张图里有什么?" → [文字token...]
图片: [一张照片] → [视觉token...] (几百个)
合并后一起送入 Transformer → 输出回答
生成图片(DALL-E、Seedream)
用的是扩散模型(Diffusion Model),原理完全不同:从一张纯随机噪声开始,在文本条件的引导下,一步步去噪,最终从一张模糊的照片逐步调清晰。
就像雕塑------从一块混沌的石头中,一刀一刀去掉不需要的部分。
💡 所以:
- Claude 能看图但不能画图 → 有视觉编码器,没有扩散模型
- GPT 能画图 → 是因为集成了 DALL-E,本质上是两个模型在协作
九、实战选型:不同场景选什么模型
学了这么多原理,最终还是要落地嘛。来看几个实际场景 👇
场景一:内部代码助手
需求:帮开发团队写代码,质量要高。
建议:Claude 系列。Dense 架构全参数推理 + 高质量 SFT/RLHF = 代码质量有保障。虽然成本高,但用得好不一定比人力贵。
场景二:客服聊天机器人
需求:日处理 10 万条消息,成本敏感。
建议:DeepSeek。MoE 架构推理成本低,对话场景对输出质量要求相对不那么苛刻。
场景三:医疗数据分析
需求:处理患者隐私数据,合规要求极高。
建议:开源模型(如 DeepSeek)私有化部署 处理敏感数据,保证数据不出内网。部分隐私性不高但对准确性要求极高的任务,可以混合使用 Claude。
💡 实际中"混合方案"是很常见的策略: 关键场景用高质量闭源模型,常规场景用开源模型控制成本。不用 All in 一个模型。
十、前沿趋势:下一步往哪卷
趋势一:AI Agent
你如果用过 Claude Code/CodeX/Cursor 就知道它们不仅"回答问题",还能读文件、写文件、执行命令、规划多步骤任务。
普通 LLM 只能"说",Agent 能"说"也能"做"。这是目前各家都在重点投入的方向。
趋势二:推理链(Chain of Thought)
让模型在回答之前先"想一想"。就像你排查复杂 bug 时,不会直接猜答案,而是一步步排查。模型也是一样,先输出推理过程,再给结论,准确性大幅提升。
趋势三:长上下文竞赛
Gemini 已经做到 1M tokens,意味着可以把整个代码仓库一次性塞进去。不过别忘了 O(n²) 的代价------上下文越长,计算成本和响应时间都会显著增加。各家也在通过压缩机制 (如 Claude Code 的自动上下文压缩)和 KV Cache 等工程优化来应对。
后语
知识无价,支撑原创!这篇文章就介绍到这里了。
整理完这些知识之后,我最大的感触是:之前那些"体感"终于有了理论解释。
比如我一直觉得不同模型写代码会有差异,但说不出为什么。现在我知道了------这背后是训练三阶段的差异、Dense vs MoE 的架构选择、上下文窗口大小的限制等多个因素共同作用的结果。
而且在学习过程中也纠正了自己不少错误认知:
- ❌ "Claude 只擅长编程" → ✅ 都是通用模型,我只是主要用它写代码所以产生了偏差
- ❌ "大模型是从训练数据中搜索答案" → ✅ 是用内化的规律做概率计算
- ❌ "参数越多模型越强" → ✅ 还得看架构、训练质量和激活参数量
这些知识不一定能让你立刻写出更好的代码,但至少下次和别人聊大模型的时候,不会只说"嗯...感觉还行"了 😄
呆呆也是刚入门,很多更深的内容(比如注意力机制的 QKV 矩阵运算、LoRA 微调、RAG 等)还没有涉及。如果有大佬发现文章有不准确的地方,欢迎指正,一起学习 🙏