ByteFisher AI 编程实战(二):大语言模型原理通俗解读

在上一篇文章中,我们了解了 AI 编程带来的范式变革。很多朋友会好奇:AI 为什么能写代码?它真的”理解”代码吗?这篇文章用最通俗的方式,拆解大语言模型的工作原理。

一、Token——AI 的”文字积木”

大语言模型并不直接认识文字,它认识的是 Token(词元)。

可以把 Token 理解为一种”文字积木”。模型把一段文字拆分成若干 Token,每个 Token 对应一个编号(ID)。比如:

1
2
"Hello World" → ["Hello", " World"] → [15496, 2159]
"你好世界" → ["你", "好世", "界"] → [3612, 8763, 512]

不同模型的分词方式不同,中文通常一个汉字不一定对应一个 Token。这也是为什么写中文 Prompt 时,表达越简洁精确,Token 利用率越高。

语言 平均每个字的 Token 数 说明
英文 ~0.3 一个单词约 1-2 Token
中文 ~1.5 一个汉字约 0.6-2 Token
代码 ~0.5 关键字和符号压缩率高

1.1 Token 对编程的影响

理解 Token 机制对 AI 编程有实用价值:

场景 最佳实践 原因
变量命名 使用有意义的英文命名 中文拼音占用更多 Token
注释 英文注释比中文注释省 Token 释放上下文给代码逻辑
Prompt 精简指令,去掉冗余修饰 更多 Token 留给代码和示例
上下文 只包含相关代码文件 避免无关文件消耗 Token

模型的所有输入输出,本质上都是在处理 Token 序列。这意味着你的 Prompt 越长,模型可用的”思考空间”就越小。

二、从 N-Gram 到 Transformer

2.1 早期的语言模型

最初的”语言模型”基于统计:给定前面几个词,预测下一个最可能的词是什么。这种 N-Gram 模型只能看到前面几个词,长距离依赖关系无法捕捉。

1
2
3
4
N-Gram 示例(Trigram):
"我今天去___" → 基于"我"+"今天"+"去" → 预测"上班"/"学校"/"医院"

局限:只能看前面 2 个词,无法利用更远的上下文

2.2 注意力机制——让模型”关注重点”

2017 年,Google 团队在《Attention Is All You Need》论文中提出了 Transformer 架构,其核心是注意力机制(Attention)

注意力机制让模型在处理每个词时,能够”关注”到句子中所有其他词的相关性。比如在句子 “The cat sat on the mat because it was tired” 中,模型能通过注意力机制判断 “it” 指代的是 “cat” 而不是 “mat”。

注意力机制的核心思想(简化版):

1
2
3
4
5
6
"猫坐在垫子上,因为它累了"

注意力权重分配:
猫 → 它:0.85(强关联)
垫子 → 它:0.12(弱关联)
...

这种”关注重点”的能力,让模型在处理代码时能理解变量之间的引用关系、函数调用的上下游依赖。

2.3 Transformer 的核心结构

每个 Transformer 层包含两个核心子层:

  • 多头注意力:从多个不同角度同时计算词与词之间的关系(就像多个程序员同时审查同一段代码)
  • 前馈网络:对注意力结果做进一步的变换和抽象(类比为”理解并总结这些关系”)

通过堆叠数十个这样的层(GPT-3 有 96 层),模型获得了强大的模式识别和生成能力。每一层都在不同抽象级别上理解输入:低层关注语法结构,中层关注语义关系,高层关注整体意图。

1
2
3
4
层数增加 → 抽象级别提升
Layer 1-4: 词性、语法结构
Layer 5-12: 语义关系、指代消解
Layer 13+: 整体意图、逻辑推理

三、GPT 系列演进

OpenAI 的 GPT 系列经历了多次迭代,每次迭代都带来质的飞跃:

版本 发布时间 参数量 核心突破
GPT-1 2018 1.17 亿 验证了生成式预训练的有效性
GPT-2 2019 15 亿 展示了零样本学习能力
GPT-3 2020 1750 亿 大规模涌现出上下文学习能力
GPT-3.5 2022 - InstructGPT 对齐训练
GPT-4 2023 - 多模态、推理能力大幅提升
GPT-4o 2024 - 原生多模态、超低延迟

3.1 预训练 + 微调

大语言模型的训练分为两个阶段:

  1. 预训练:在海量互联网文本上学习语言规律,目标是预测下一个 Token。这一阶段模型”读”了几乎整个互联网的内容
  2. 微调/对齐:通过指令微调(Supervised Fine-Tuning)和人类反馈强化学习(RLHF),让模型学会遵循指令、输出有用内容

这也解释了为什么模型能写代码——预训练数据中包含了大量的开源代码(GitHub),模型从中学习了编程语言的语法和模式。训练数据中代码占比越高,模型的编程能力就越强。

3.2 国产大模型崛起

模型 厂商 特点 编程能力
DeepSeek-V3/R1 深度求索 推理能力突出,性价比极高 五星
Qwen2.5-Coder 阿里云 专门针对代码优化 四星
Yi-Lightning 零一万物 速度快,数学推理强 四星
MiniMax-M2.7 MiniMax 超长上下文(256K) 四星
GLM-5 智谱 中文理解最佳 四星

国产模型的快速发展让 AI 编程的成本大幅降低——DeepSeek 的 API 价格仅为 GPT-4 的几十分之一,且中文理解更好。

四、编码器 vs 解码器架构

架构 代表模型 特点 适合场景
编码器-解码器 T5、BART 理解+生成并重 翻译、摘要
纯编码器 BERT 双向理解 分类、实体识别
纯解码器 GPT、LLaMA、DeepSeek 自回归生成 代码生成、对话

当前主流的大语言模型(包括 GPT、Claude、DeepSeek、Qwen 等)都采用纯解码器架构。它们逐个 Token 地生成输出,每次生成一个新 Token,就把它拼接到已有序列中,再预测下一个 Token。

1
2
3
4
5
6
7
8
解码器生成过程示例:
输入:"写一个函数,计算两数之和"

Step 1: "public"
Step 2: "public static"
Step 3: "public static int"
Step 4: "public static int Add"
...最终: "public static int Add(int a, int b) { return a + b; }"

每次生成一个 Token,都要回顾已经生成的全部内容——这就是自回归(Auto-regressive)的含义。

五、涌现能力

当模型规模超过某个临界点(约 100 亿参数),会涌现出一些小模型不具备的能力:

能力 说明 编程场景示例
上下文学习 给几个示例就能按模式执行 给 3 个 API 调用示例后自动写第 4 个
思维链 通过”一步步思考”提升推理质量 先分析需求→设计方案→生成代码
代码理解 理解代码结构、变量作用域、控制流 分析复杂函数的时间复杂度
指令遵循 执行复杂的多步指令 “创建类→添加属性→实现接口→添加测试”
自我修正 识别并纠正自己输出的错误 主动发现代码中的 bug 并修正

这些能力不是显式编程出来的,而是从海量数据中”涌现”出来的。这也是为什么 GPT-3(1750 亿参数)比 GPT-2(15 亿参数)的能力有质的飞跃——不仅仅是”更大”的差异,而是”质变”。

六、温度与采样——控制 AI 的”创造力”

大语言模型生成文本时不是每次都选概率最高的 Token,而是通过采样引入随机性:

参数 作用 编程场景推荐值 对话场景推荐值
temperature(温度) 控制随机性,越高越有创意 0.2 ~ 0.4 0.7 ~ 0.9
top_p(核采样) 只从累积概率 p 的 Token 中采样 0.1 ~ 0.3 0.8 ~ 0.9
top_k 只从概率最高的 k 个 Token 中采样 20 ~ 40 40 ~ 60

编程场景为什么用低温? 写代码需要确定性和准确性,过高的温度会导致 AI”自由发挥”,生成语法正确但逻辑错误的代码。调试或做架构设计时可以适当提高温度,获取更创新的思路。

七、上下文窗口——AI 的”工作记忆”

上下文窗口(Context Window)是模型一次能处理的最大 Token 数。不同模型差异很大:

模型 上下文窗口 能容纳的内容
GPT-4 128K 约 200 页文档
Claude 4 200K 约 300 页,或一个中型项目
DeepSeek-V3 128K 约 200 页
MiniMax-M2.7 256K 约 400 页,最大之一
Gemini 2.0 1M 约 1500 页

上下文窗口越大不代表越好——窗口越大,模型在长距离依赖上的表现可能下降。对于 AI 编程来说,关键是只把相关的代码放入上下文,而不是把所有代码都塞进去。

八、大模型的能力边界与编程场景

了解大模型的能力边界,能帮你判断何时依赖 AI、何时自己动手:

AI 擅长 AI 不擅长 应对策略
代码生成(模式化) 代码生成(高度创新的) 标准 CRUD 交给 AI,架构设计自己把控
错误分析(常见错误) 错误分析(罕见或环境相关的) 常见错误相信 AI,奇怪错误自己排查
代码解释(标准语法) 代码解释(领域特定的 DSL) 标准语言问 AI,DSL 看官方文档
单元测试生成 集成测试/E2E 测试 单元测试交给 AI,E2E 自己写
重构(模式化) 重构(需要深入理解业务) 机械重构用 AI,业务重构自己来

九、从原理到实践:一个例子

结合原理来看一个具体场景:

1
2
3
4
5
6
7
8
9
10
11
12
13
你写了一条 Prompt:"用 C# 写一个二分查找"

AI 的"思考过程"(简化版):
1. Token 化:"用"、"C#"、"写"、"一个"、"二分查找"
2. 注意力机制:关注"二分查找"和"C#"的关联
3. Transformer 推理:从训练数据中召回二分查找的模式
4. 逐 Token 生成:"public"、"static"、"int"、"BinarySearch"...

这背后发生了什么?
- tokenizer 把中文 Prompt 拆成了约 7-10 个 Token
- 注意力权重集中在"二分查找"上(大约占 60% 的注意力)
- 模型调用了它在训练时学习到的"C# 二分查找"模式
- 温度 0.2 让它保持保守,生成标准实现而非"创新"实现

了解这些能帮你理解:为什么写清楚语言技术栈和算法名称至关重要。

十、国产模型的技术突破

国产大模型在编程场景中的技术优势值得关注:

模型 技术特点 编程场景优势
DeepSeek-V3 MoE 架构,671B 参数仅激活 37B 推理快,成本低
DeepSeek-R1 思维链推理,长 CoT 训练 复杂逻辑任务表现优异
Qwen2.5-Coder 专为代码优化,在代码数据上持续训练 代码补全质量高
Yi-Lightning 超低延迟推理架构 响应速度快

这些模型的共同趋势:推理能力越来越强、价格越来越低、中文理解越来越好。对 AI 编程用户来说,这是个好消息——可以用更低的成本获得更好的编程辅助。

十一、付之一炬?还是为己所用

了解 LLM 的原理,不是为了成为 AI 专家,而是为了更好地使用 AI 工具。就像你不需要懂汽车发动机的原理才能开车,但懂一点能让你的驾驶更高效、更安全。

本系列后续所有内容,都建立在这三篇文章(01 范式变革、02 LLM 原理、03 Prompt 工程)的基础上。理解得越深,后面的实践就越得心应手。

十二、为什么有些问题 AI 答不好

结合原理,AI 在以下场景表现不佳的原因也就清楚了:

1
2
3
4
5
6
7
8
9
10
11
1. "当前上海时间几点?"
原因:模型训练数据中无实时信息 → 解决:RAG + 实时检索

2. "用我公司内部框架 X 写代码"
原因:训练数据中没有该框架 → 解决:提供框架文档作为上下文

3. "计算 123456789 × 987654321"
原因:LLM 不擅长精确数学计算 → 解决:用代码解释器工具

4. "这个复杂业务规则是否符合政策要求"
原因:需要最新政策信息 + 业务理解 → 解决:提供完整上下文

理解这些局限不是贬低 AI,而是让你知道什么时候该用什么工具、什么问题应该怎么问。

十三、理解原理对编程实践的帮助

了解 LLM 的工作原理不只是理论知识,对日常 AI 编程有直接帮助:

  1. Token 意识:写 Prompt 时知道中文比英文费 Token,自然会精简表达
  2. 注意力机制:理解 AI 更关注开头和结尾,会把关键信息放在 Prompt 首尾
  3. 涌现能力:知道大模型和小模型的能力差距不只是”量”的差异,选模型时更理性
  4. 采样参数:理解 temperature 的作用,写代码用低温,头脑风暴用高温
  5. 上下文窗口:知道窗口有限,不会把所有代码都塞进一个 Prompt

本章小结

  • Token 是模型处理文字的基本单位,理解 Token 有助于优化 Prompt 和节省成本
  • Transformer 的核心是注意力机制,让模型能关注长距离依赖关系
  • 大模型通过海量预训练学习语言规律,通过微调对齐人类指令
  • 代码能力来自于训练数据中的大量开源代码
  • 国产模型(DeepSeek、Qwen)在中文编程场景中性价比出色
  • 涌现能力是规模增长带来的质变,让小模型无法通过”微调”获得
  • 温度参数控制创造力,编程场景用低温(0.2~0.4),创意场景用高温
  • 上下文窗口越大不等于越好,关键在于内容的精准度
  • 理解模型原理有助于你更好地利用 AI 编程工具——知其然也知其所以然

下一篇我们将深入 Prompt Engineering,学习如何让 AI 准确理解你的编程需求。

ByteFisher
分享编程技术 · 记录钓鱼乐趣
扫码关注
▸ 扫码关注 ◂
分享: