作为前端开发,深入理解大模型的工作机制,掌握 AI 应用的能力边界。
前言 ✨
在上篇文章中,我们了解了 AI 的发展历程,知道了大语言模型是如何一步步演进而来的。
但有个问题一直困扰着我:大语言模型到底是怎么工作的?
作为前端开发,我习惯了"看到代码就能理解逻辑"。但大模型不一样,它是个"黑盒"——你给它输入,它给你输出,中间发生了什么?为什么它能理解我的问题?为什么它能写代码?
这篇文章就是要揭开这个"黑盒"。我会用尽量直观的方式讲解:
- 大语言模型的核心思想是什么?
- Transformer 架构是如何工作的?
- 训练过程是怎样的?
- 大模型的能力边界在哪里?
理解这些,你才能写出好的 Prompt,才能知道什么时候该用 AI、什么时候不该用。
💡 说明:本文参考了多位技术作者的优秀内容,在此基础上结合前端开发视角进行重新理解和创作。特别感谢原作者的知识分享。
让我们开始吧!
一、大语言模型的核心思想 🧠
1.1 一个简单的类比
想象一下,你正在写一篇技术博客。写到一半,你停下来思考:下一句话应该写什么?
比如你写了:
"React 的核心思想是..."你的大脑会自然地想到接下来可能是:
- "React 的核心思想是组件化"
- "React 的核心思想是数据驱动视图"
- "React 的核心思想是声明式编程"
为什么你能想到这些?因为你读过很多技术文章,你的大脑从这些文章中学到了:这些词经常一起出现。
大语言模型就是这个原理。
它"读"过互联网上海量的文本,学到了各个词之间的关系。然后,给它一个句子的开头,它就能预测接下来最可能是什么词。
这就是大语言模型最核心的能力:预测下一个词(Next Token Prediction)。
1.2 Token Prediction:逐词预测
让我更正式地讲一下。
大语言模型的训练目标就是:给定前面的词,预测下一个词。
在技术上,我们把这叫 Token Prediction(Token 是词的最小单位)。
举个例子:
输入:"今天天气很"
模型预测:"好" (概率 60%)
"热" (概率 25%)
"冷" (概率 10%)
...模型不是凭空知道答案的。而是在训练数据中看过很多次类似的句子,所以学到了这个规律。
用前端的思维理解:
// 这就像一个超级复杂的自动补全
function predictNextToken(context) {
// context: "今天天气很"
// 模型内部有几十亿个参数
// 通过复杂的数学运算
return {
"好": 0.6,
"热": 0.25,
"冷": 0.1,
// ...
};
}1.3 从"预测"到"聊天":上下文学习和指令调优
这里有个关键问题:它本来是用来预测下一个词的,怎么就能聊天、写代码、做翻译了?
答案是两个关键技术:上下文学习(In-Context Learning) 和 指令调优(RLHF)。
上下文学习是什么意思?
模型能从你提供的例子中"学会"这个任务。
举个例子:
你的输入:
---
问题:Vue 3 中 ref 和 reactive 的区别?
答案:ref 用于基本类型,reactive 用于对象...
问题:什么是虚拟 DOM?
答案:虚拟 DOM 是 JavaScript 对象...
问题:解释一下 CSS 的盒模型
答案:
---模型看到这个模式,就会理解:"哦,你要我回答技术问题"。然后它会按照这个模式继续生成答案。
这就像前端的模板引擎:
// 你给它一个模板
const template = `
问题:{{question1}}
答案:{{answer1}}
问题:{{question2}}
答案:{{answer2}}
问题:{{newQuestion}}
答案:
`;
// 它能根据模式填充内容**指令调优(RLHF)**是什么?
就是用人工反馈来调整模型的行为。
你用 ChatGPT 时,有没有遇到过这种情况:模型生成两个答案,让你选择哪个更好?
┌─────────────────────────────────┐
│ 答案 A:详细的技术解释... │ 👍 更好
├─────────────────────────────────┤
│ 答案 B:简短的回答... │ 👎 不太好
└─────────────────────────────────┘当你选择了"答案 A",模型就会学习:这种风格的回答更受欢迎。
通过大量的人工反馈,模型学会了:
- 如何好好说话
- 如何按照指令做事
- 如何给出有帮助的回答
💭 我的理解:这就像我们做前端开发,用户体验测试很重要。用户说"这个按钮不好用",我们就改进。RLHF 就是让 AI 也能根据用户反馈不断改进。
📚 参考资料:RLHF 详解 - OpenAI Blog
二、Transformer 架构:为什么能理解复杂内容? 🏗️
2.1 把文字变成数字:词向量
首先,计算机不能直接理解文字,我们得把文字变成数字。
假设要让计算机理解这句话:
"前端开发需要学习 JavaScript"我们把每个词都转成一个向量(一组数字):
前端 → [0.5, -0.3, 0.8, 0.2, ...]
开发 → [0.3, 0.6, -0.2, 0.4, ...]
需要 → [0.1, 0.2, 0.7, -0.1, ...]
学习 → [0.8, -0.5, 0.1, 0.6, ...]
JavaScript → [0.4, 0.3, -0.4, 0.9, ...]这就像前端的数据结构转换:
// 把用户输入转成程序能处理的格式
const userInput = "前端开发需要学习 JavaScript";
const tokens = tokenize(userInput); // 分词
const vectors = tokens.map(token => embedding(token)); // 转向量2.2 Attention 机制:注意力是关键
Transformer 最核心的机制叫 Attention(注意力机制)。
一个直观的例子:
句子:"小明在公园里踢足球,他很开心。"
问题:"谁很开心?"要回答这个问题,你的大脑会:
- 看到"他"这个词
- 自动"关注"前面的"小明"
- 忽略"公园"、"足球"这些无关的词
- 得出结论:"他"指的是"小明"
这就是注意力机制。
Attention 机制做的事情是:对于每一个词,计算它应该"关注"哪些词,每个词的重要程度是多少。
用前端的思维理解:
// 假设我们要理解"他"这个词
function calculateAttention(currentWord, allWords) {
const scores = {};
// 计算"他"和每个词的相关性
scores["小明"] = 0.9; // 高度相关
scores["公园"] = 0.1; // 不太相关
scores["踢"] = 0.3; // 有点相关
scores["足球"] = 0.2; // 有点相关
scores["开心"] = 0.7; // 比较相关
// 根据相关性加权组合
return weightedSum(allWords, scores);
}可视化表示:
句子:"老师给学生讲课"
处理"讲课"这个词时:
┌────────┬──────────┐
│ 词 │ 注意力权重│
├────────┼──────────┤
│ 老师 │ 90% │ ← 讲课的主体
│ 给 │ 50% │
│ 学生 │ 80% │ ← 讲课的对象
│ 讲课 │ 100% │ ← 自己
└────────┴──────────┘
"讲课"的理解 = 90% × 老师 + 50% × 给 + 80% × 学生 + ...为什么这很重要?
因为有时候,一个词的意思依赖于很远处的词。
比如一篇 1000 字的文章,你要理解第 1000 个词,可能需要参考第 10 个词。传统的神经网络做不到这一点,但 Transformer 可以。
📚 参考资料:图解 Transformer - Jay Alammar
2.3 多层堆叠:越往上越抽象
Transformer 不是一层,而是多层堆叠。每一层都有自己的 Attention 机制。
流程图:
输入:"前端开发需要学习 JavaScript"
↓
┌─────────────────────────────────┐
│ 第 1 层 Attention │
│ 学习:词与词的基本关系 │
│ "前端" 和 "开发" 经常一起出现 │
└─────────────────────────────────┘
↓
┌─────────────────────────────────┐
│ 第 2 层 Attention │
│ 学习:句子内的语法关系 │
│ "需要学习" 是一个动词短语 │
└─────────────────────────────────┘
↓
┌─────────────────────────────────┐
│ 第 3 层 Attention │
│ 学习:上下文中的语义关系 │
│ 这句话在讨论"技能要求" │
└─────────────────────────────────┘
↓
┌─────────────────────────────────┐
│ ... (12 层、24 层或更多) │
└─────────────────────────────────┘
↓
┌─────────────────────────────────┐
│ 最后一层 │
│ 生成下一个词的概率分布 │
└─────────────────────────────────┘关键理解:
- 底层:学习词的基本关系("前端"和"开发"常一起出现)
- 中间层:学习语法和句法("需要学习"是动词短语)
- 顶层:学习语义和逻辑(这句话在讨论技能要求)
越往上走,学到的东西就越抽象。
这就像我们读一本书:
- 第一遍:理解词的意思
- 第二遍:理解句子的逻辑
- 第三遍:理解整本书的主题
这也解释了为什么更大的模型、更多的层数,能力会更强——因为更多的层,意味着更深层次的理解能力。
💭 我的理解:这让我想起前端的组件层级。底层组件处理基础逻辑(Button、Input),中间层组件处理业务逻辑(Form、Table),顶层组件处理页面逻辑(Dashboard)。每一层都在上一层的基础上做更抽象的事情。
三、训练过程:从数据到智能 🎓
3.1 第一阶段:预训练(Pretraining)
预训练是最核心的阶段,决定了模型的基础能力。
第一步:收集数据
OpenAI 的工程师们会采集互联网上的海量文本:
- 书籍、论文
- 网页、博客
- 代码仓库(GitHub)
- 社交媒体
- …
有多海量?几百 GB、几 TB 的文本。一个网页就几千个词,几 TB 的文本,那是几千亿个词。
第二步:逐词预测训练
训练流程:
┌─────────────────────────────────────────┐
│ 第 1 步:给模型看前 99 个词 │
│ "前端开发需要学习 JavaScript,它是..." │
└─────────────────────────────────────────┘
↓
┌─────────────────────────────────────────┐
│ 第 2 步:问模型,第 100 个词是什么? │
│ 模型预测:"一门" (概率 40%) │
│ "最" (概率 30%) │
│ "非常" (概率 20%) │
└─────────────────────────────────────────┘
↓
┌─────────────────────────────────────────┐
│ 第 3 步:对比真实答案 │
│ 真实的第 100 个词是:"一门" │
└─────────────────────────────────────────┘
↓
┌─────────────────────────────────────────┐
│ 第 4 步:预测对了!强化这个模式 │
│ 预测错了!调整模型的参数 │
└─────────────────────────────────────────┘
↓
┌─────────────────────────────────────────┐
│ 第 5 步:重复这个过程 │
│ 几十亿次、几百亿次... │
└─────────────────────────────────────────┘用前端的思维理解:
// 这就像训练一个自动补全系统
function train(model, trainingData) {
for (let i = 0; i < billions; i++) {
const context = trainingData.slice(0, 99);
const target = trainingData[99];
const prediction = model.predict(context);
const loss = calculateLoss(prediction, target);
// 反向传播,调整参数
model.updateParameters(loss);
}
}计算成本:
这个过程特别特别消耗资源:
- 需要:几千个高端 GPU 或 TPU
- 时间:同时运行几个月(不能中断)
- 成本:一天的电费就是天文数字,总成本几千万美元
这就是为什么只有 OpenAI、Google、DeepSeek、字节这样的大公司才能从零训练大模型。
💭 我的感悟:这让我想起前端的构建过程。小项目用 Webpack 几秒钟就能打包,但大型项目可能要几分钟。而训练大模型,相当于要"打包"几个月,成本完全不是一个量级。
3.2 第二阶段:微调和指令调优(Fine-tuning & RLHF)
为什么需要微调?
预训练完了,模型能预测下一个词了。但这还不够。
如果一个模型只学会了"预测下一个词",你和它聊天会怎样?
你:"今天天气怎么样?"
模型:"天气怎么样?嗯,今天是个好天气,明天也是好天气,后天..."你看,它不对劲。模型没有学会"怎么好好和人聊天"、"怎么回答问题"。它就是在继续补全文本。
而且,互联网上的文本质量很不均匀:
- 有高质量的论文
- 也有垃圾内容
- 还有有害信息
所以需要进一步"教育"这个模型。
怎么做?
OpenAI 雇了一大批人,他们的工作是:和模型聊天,给模型打分。
┌─────────────────────────────────────────┐
│ 人类标注员:请解释什么是闭包 │
└─────────────────────────────────────────┘
↓
┌─────────────────────────────────────────┐
│ 模型生成多个答案: │
│ 答案 A:闭包是指函数可以访问...(详细) │
│ 答案 B:闭包就是函数...(简短) │
│ 答案 C:闭包是一个变量...(错误) │
└─────────────────────────────────────────┘
↓
┌─────────────────────────────────────────┐
│ 人类标注员评估: │
│ 答案 A:✅ 准确、有帮助、清晰 │
│ 答案 B:⚠️ 正确但不够详细 │
│ 答案 C:❌ 错误 │
└─────────────────────────────────────────┘
↓
┌─────────────────────────────────────────┐
│ 模型学习: │
│ "人类喜欢 A 这样的回答" │
│ "以后要生成更像 A 的答案" │
└─────────────────────────────────────────┘这个过程叫 RLHF(Reinforcement Learning from Human Feedback),翻译过来就是"从人类反馈中进行强化学习"。
简单说:人说好,模型就这样学;人说不好,模型就反向调整。
为什么要分两个阶段?
对比一下数据量:
预训练阶段:
- 数据:几 TB 的互联网文本
- 来源:自动采集
- 成本:计算成本高,但数据获取容易
微调阶段:
- 数据:几万到几十万条高质量问答
- 来源:人工标注
- 成本:人工成本高,但计算成本相对低最佳策略:
- 预训练:用海量文本让模型学到语言的规律
- 微调:用高质量问答让模型学会好好说话
两个阶段结合,才能训练出一个既有广阔知识面,又能好好交流的模型。
📚 参考资料:InstructGPT 论文 - OpenAI
四、大模型的能力与边界 ⚖️
4.1 大模型能做什么?
五大核心能力:
- 语言理解:能理解你说什么,能抓住上下文的意思
- 推理能力:能做逻辑推理(虽然有时会出错)
- 代码生成:能写代码(因为训练数据里有大量代码)
- 知识回忆:能回答各种问题(因为见过海量信息)
- 创意输出:能写故事、写文章、写诗
最厉害的地方:这些能力都来源于同一个统一的模型。
你可能会想,ChatGPT 是不是这样设计的:
❌ 错误理解:
┌─────────────┐
│ 聊天模块 │
├─────────────┤
│ 写代码模块 │
├─────────────┤
│ 翻译模块 │
└─────────────┘实际上:
✅ 正确理解:
┌─────────────────────────────┐
│ 一个统一的模型 │
│ │
│ 通过不同的 Prompt 引导: │
│ - "请帮我..." → 聊天 │
│ - "写一个函数..." → 代码 │
│ - "翻译..." → 翻译 │
└─────────────────────────────┘这就是大语言模型的灵活性。
4.2 大模型的五大局限
局限 1:知识过期
模型是在某个时间点训练的。比如 GPT-4 的知识库截止到 2023 年 4 月。之后的新闻、新技术,它都不知道。
为什么?
- 训练一个大模型需要几个月
- 成本巨大(几千万美元)
- 训练完了就不能再加新数据
解决方案:RAG(检索增强生成)
传统方式:
用户提问 → 模型直接回答(可能过期)
RAG 方式:
用户提问 → 先去网上搜索最新信息 → 结合搜索结果回答📚 参考资料:RAG 详解 - LangChain 文档
局限 2:AI 幻觉(Hallucination)
大模型有时候会说得特别自信,但其实完全错了。
举个例子:
你:"请推荐一篇关于 React Hooks 的经典论文"
模型:"我推荐《React Hooks: A New Era》,作者是 Dan Abramov,
发表于 2019 年的 ICSE 会议..."听起来很专业对吧?但这篇论文根本不存在!模型编造了一个听起来很像的答案。
为什么会这样?
想象你在考试,遇到一道不会的题。但你知道答题的"套路",所以你编了一个听起来很像答案的东西,还很自信地写上去。
大模型就是这样。它学会了"如何生成一个听起来很有道理的文本",但不一定是真的。
如何应对?
- ✅ 验证重要信息
- ✅ 要求模型提供来源
- ✅ 对关键决策,不要完全依赖 AI
好消息是,随着技术进步,幻觉问题正在减少。
局限 3:推理能力有限
虽然大模型能做一些推理,但在复杂逻辑面前,它还是会出错。
举个例子:
问题:"一个房间里有 100 只鸡,你杀死 30 只,房间里还有多少只鸡?"
模型(几个月前):"还有 70 只"
→ 错误!杀死的鸡还在房间里
模型(现在):"还有 100 只(70 只活的,30 只死的)"
→ 正确!为什么会出错?
- 推理需要一步一步思考
- 但大模型是"预测下一个词"
- 它没有"回溯"和"检查"的机制
解决方案:思维链(Chain of Thought)
普通提问:
"计算 23 × 47"
模型可能出错
思维链提问:
"计算 23 × 47,请一步一步思考:
1. 先算 23 × 40
2. 再算 23 × 7
3. 最后相加"
模型准确率提高📚 参考资料:思维链论文 - Google Research
局限 4:不能自我纠正
如果大模型犯了错误,它通常不会主动意识到。你必须告诉它"你错了",它才可能改正。
而且,有时候即使你指出错误,它也不一定能改正。
为什么?
- 它的机制是"预测概率最高的下一个词"
- 它没有"错误反馈"的学习机制
- 它不会"反思"自己的答案
局限 5:Token 限制
大模型的输入输出长度是有限的。
什么是 Token?
- 1 个 Token ≈ 4 个英文字符
- 1 个 Token ≈ 1.5 个中文汉字
限制示例:
- GPT-4:最多 128K Token(约 10 万字)
- GPT-3.5:最多 16K Token(约 1.2 万字)
为什么有限制?
Transformer 的计算复杂度随着序列长度呈平方级增长:
输入长度 计算量
1000 词 → 1,000,000 次运算
2000 词 → 4,000,000 次运算(4倍)
4000 词 → 16,000,000 次运算(16倍)如何处理长文档?
方案 1:分段处理
500 页文档 → 分成 10 段 → 分别总结 → 汇总
方案 2:使用 RAG
提取关键段落 → 只把相关部分给模型
方案 3:使用长上下文模型
Claude 3:200K Token
Gemini 1.5:1M Token4.3 哲学问题:大模型真的"理解"了吗?
这是个深层次的问题。没人完全知道答案。
案例 1:数学计算
问:"2 + 2 = ?"
答:"4"
它是真的在做加法吗?
还是在模仿训练数据中的模式?案例 2:逻辑推理
问:"所有程序员都喝咖啡,小明是程序员,小明喝咖啡吗?"
答:"喝"
它是真的在推理吗?
还是在模式匹配?两种观点:
观点 A(怀疑派):
"它只是在预测下一个词,所以它不懂"
观点 B(实用派):
"既然它能做出和懂的人一样的行为,那它就懂了"我的态度:
- 不要纠结它到底懂不懂
- 关键看它能不能解决问题
- 理解它的能力边界,合理使用
就像我们用 React,不需要完全理解 Fiber 架构的底层实现,只要知道怎么用、什么时候用就够了。
但有一点很确定:AI 的发展速度是指数级的。几个月前不会的,现在可能已经会了。
五、前端开发视角的思考 💭
5.1 我的三个感悟
感悟 1:从"调用接口"到"理解原理"
以前我只是调用 AI 接口,不知道背后发生了什么。现在理解了原理,我能更好地:
- 设计 Prompt
- 判断什么任务适合用 AI
- 评估 AI 的输出质量
感悟 2:AI 是工具,不是魔法
AI 很强大,但它有明确的边界:
- 它会出错(幻觉)
- 它不能自我纠正
- 它的知识会过期
关键是理解这些局限,合理使用。
感悟 3:Prompt 工程很像前端开发
写好的 Prompt,就像写好的组件:
- 清晰的输入输出
- 合理的结构
- 可复用的模式
// 这就像写一个好的函数
function generateCode(requirements) {
// 清晰的输入
const prompt = `
你是一个专业的前端开发工程师。
需求:${requirements}
请生成:
1. React 组件代码
2. TypeScript 类型定义
3. 单元测试
`;
return callAI(prompt);
}5.2 实际应用中的注意事项
何时使用大模型?
✅ 适合的场景:
- 文本生成(写文档、写邮件)
- 代码生成(写函数、写测试)
- 知识问答(技术咨询)
- 创意辅助(头脑风暴)
❌ 不适合的场景:
- 需要 100% 准确的计算
- 需要最新信息(除非用 RAG)
- 涉及隐私数据
- 关键决策(医疗、法律)
如何验证结果?
验证清单:
□ 事实性信息:查证来源
□ 代码:运行测试
□ 逻辑推理:人工检查
□ 关键决策:多方验证如何写好 Prompt?
好的 Prompt 结构:
1. 角色设定:"你是一个..."
2. 任务描述:"请帮我..."
3. 输入信息:"基于以下内容..."
4. 输出要求:"请生成..."
5. 格式要求:"使用 Markdown 格式"六、总结与展望 🎯
经过这篇文章,你应该理解了:
大模型的工作原理:
- ✅ 核心思想:预测下一个词
- ✅ 关键技术:Transformer + Attention
- ✅ 训练过程:预训练 + 微调
大模型的能力边界:
- ✅ 能做什么:理解、推理、生成
- ✅ 不能做什么:知识过期、会幻觉、推理有限
- ✅ 如何应对:理解局限,合理使用
实际应用建议:
- ✅ 选对场景
- ✅ 验证结果
- ✅ 写好 Prompt
未来展望:
AI 的发展速度是指数级的:
- 幻觉问题正在减少
- 推理能力正在增强
- 上下文长度正在增加
作为开发者,我们需要:
- 持续学习新技术
- 理解 AI 的能力边界
- 将 AI 融入开发流程
记住:AI 是工具,不是魔法。理解它、掌握它、善用它。
继续加油!💪
参考资料 📚
核心论文:
- Transformer 论文 - Attention Is All You Need
- GPT-3 论文 - Language Models are Few-Shot Learners
- InstructGPT 论文 - Training language models to follow instructions
技术博客:
实用工具:
推荐阅读:
致谢:本文参考了多位技术作者的优秀内容,在此基础上结合前端开发视角进行了重新理解和创作。特别感谢原作者的知识分享。
系列文章:
- 上篇:《从零理解 AI(上):大语言模型的前世今生》
- 下篇:《从零理解 AI(下):大语言模型的工作原理与边界》(本篇)
感谢阅读!(。・ω・。)ノ♡
- 本文链接:https://fridolph.top/posts/2026-02-07__re-ai2
- 版权声明:本博客所有文章除特别声明外,均默认采用 CC BY-NC-SA 许可协议。