AI IN PRACTICE / LEARN · TRAIN · INVESTIGATE
从读懂公式,到验证一个想法。
数学 → 深度学习 → 模型训练 → Agent 算法 → 可复现的实验。
按目标选择路线,共同基础只学一次
Agent 应用工程
用现有模型做应用:让它查资料、调用工具,并处理出错、权限和部署。最后做一个能实际使用、能检查结果的 Java 学习助手。
模型训练与 Agent 算法研究
从数学和小模型实验开始,理解模型怎样学习、怎样改进。最后写一份别人能重做、能看懂比较结果的实验报告。
两条路线按各自前置知识起步,无需先读完另一条路线。只做应用可沿工程主线推进;以研究为目标可直接从数学开始。
共享基础主读向量与余弦注意力直觉(应用选修)数据划分原则
已掌握基础时,按文章开头的“本篇重点”阅读;重复的余弦推导与注意力 Java 演示默认折叠,完整代码仍可展开。
查看 12 组交叉主题:已学什么,这次补什么
| 主题与共同基础 | 应用工程侧重 | 训练研究侧重 |
|---|---|---|
| 向量与相似度 点积、范数、余弦与稳定计算统一以数学篇为主读;掌握后不重复做同类数值练习。 | 先核对查询和文档的编码模型版本、归一化方式与索引是否兼容;换模型或迁移索引后检查检索结果,再用标注样例确定并检验相似度阈值。阅读应用篇 ↗ | 推导并计算 L1 / L2 / L∞ 范数、点积和余弦,再用相近数相减的例子检查浮点抵消误差,学习稳定计算。阅读研究篇 ↗ |
| 注意力 Q / K / V、缩放、掩码与 softmax 的基础直觉以 Agent 入门篇为主读,属于应用路线的选修模型背景。 | 画出 Token 怎样变成注意力输出,说明每个位置能看到哪些上下文、为什么不能提前看到未来内容;按需选学,不要求训练模型。阅读应用篇 ↗ | 先核对矩阵各维的大小,再检查不同框架 API 如何解释掩码、整行屏蔽时怎样处理以及 dropout 的行为;用梯度实验检查被屏蔽信息是否仍影响计算。阅读研究篇 ↗ |
| Token 与 Embedding Token、上下文窗口、词表与向量表示的术语可复用。 | 记录请求用了多少 Token、输出是否被截断以及为什么结束,检查调用是否超出预算。阅读应用篇 ↗ | 用 BPE 观察词表怎样建立,再把 Token ID 转成可训练的 Embedding,弄清训练实际接收的输入。阅读研究篇 ↗ |
| 概率与 softmax 概率归一化与数值稳定性是共同基础;采样和求梯度是不同任务。 | 先累计每项概率,再用二分查找选中一次采样结果;检查边界输入和调用预算,观察生成结果的随机性。阅读应用篇 ↗ | 先推导交叉熵与 p − one-hot 梯度,再比较把多条损失求和或取平均(loss reduction)会怎样改变训练。阅读研究篇 ↗ |
| 工具调用与轨迹 模型、工具、观察与行动的交互结构相通。 | 先规定允许调用哪些工具(白名单),再记录调用 ID,处理重复与冲突,并设置执行预算和停止条件。阅读应用篇 ↗ | 按步骤记录观察、动作、奖励和结束原因,区分任务真正结束与预算用尽的截断,再决定哪些内容作为监督训练标签。阅读研究篇 ↗ |
| 工作流与决策搜索 任务、状态、依赖与预算是共同语言,固定调度与搜索未知动作分别学习。 | 画出没有循环依赖的任务图(DAG),找出耗时最长的依赖路径(关键路径),再规定角色、预算和失败后受影响的任务。阅读应用篇 ↗ | 比较 Beam Search 与 MCTS / UCT 怎样选择候选,推演尝试新选择(探索)、利用已有好选择与搜索预算之间的关系。阅读研究篇 ↗ |
| 多 Agent 协作 角色之间会交换信息并共享结果;工程编排不等于联合策略训练。 | 安排固定角色的权限、依赖、通信与结果合并,判断是否需要多个 Agent。阅读应用篇 ↗ | 先观察队友改变策略后,旧经验为什么可能失效;再学集中训练、分散执行(CTDE)和 COMA,检查各成员的动作对策略更新与合作收益分别有什么影响。阅读研究篇 ↗ |
| 检索与记忆 检索、证据和上下文选择相通;使用检索器与训练检索器有不同验收目标。 | 把记忆和有出处的资料交给模型,检查读取权限和上下文长度,再用 Recall / MRR / NDCG 检查资料是否找全、排得是否合适。阅读应用篇 ↗ | 分别为查询和文档生成向量(双编码器),用负样本和对比损失学习区分相关资料,再检查内容选择策略及对新数据的效果。阅读研究篇 ↗ |
| 数据划分与评测集 这组原则只学一次:先确定以后要处理哪些新数据,再据此给相关样本分组;同组不跨数据集,测试集不用来调参,并划清时间先后,避免测试内容的相同或近似版本提前进入训练。 | 写清系统允许和禁止做什么,把同一原始案例的变体归为一组,记录失败类型,并固定回归测试的版本与通过条件。阅读应用篇 ↗ | 只用训练部分学习预处理参数,再复用参数处理其他数据(fit / transform);交叉验证时每折都在训练部分重新拟合。检查新实体上的效果,保存数据及处理结果的版本,并说明评测时哪些任务计入总数。阅读研究篇 ↗ |
| 回归与统计评估 先约定实验方法,再用独立样本得到可以比较的结果。 | 先列出发布必须通过的检查,校准评分器,再比较新旧版本有没有退步,决定能否发布。阅读应用篇 ↗ | 用重复抽样观察分数如何波动,学习 bootstrap、置信区间和 pass@k 各自适用的条件,再说明结论有多大不确定性。阅读研究篇 ↗ |
| 失败定位与归因 保留完整的输入、执行步骤和结果;同时发生的变化,不一定就是导致失败的原因。 | 沿一次请求的完整记录(trace)和各步骤记录(span)查找失败位置与耗时,再结合指标排查线上问题。阅读应用篇 ↗ | 逐步删减仍能触发同一失败的输入,固定其他条件后替换一个环节(反事实实验),检查结果是否变化,以及是否还有其他因素同时影响结果。阅读研究篇 ↗ |
| 成本与推理性能 先说清统计哪些调用、哪些阶段,再比较费用、耗时和单位时间处理量(吞吐)。 | 逐次记录调用费用,缺少用量时标为未知;拆开从请求开始到结束各阶段的耗时,再设置应用预算。阅读应用篇 ↗ | 对比使用与不使用 KV Cache 的结果,分清先处理提示内容(prefill)和逐步生成(decode),再检查查询与键数量不同时的掩码、分页共享及写时复制。阅读研究篇 ↗ |
先知道,哪些值得先学
重要程度与难度,分开看。
先沿 P0 主线学习,遇到前置知识先补齐;再按目标扩展 P1、P2。编号是建议顺序,不限制每天的篇数。筛选后的编号会保留,方便回到完整路线。
- P0 · 必会主线
- 后续学习和独立开发反复依赖
- P1 · 重点提升
- 提升工程能力与问题定位能力
- P2 · 按需深入
- 在特定场景下进一步研究
显示 48 / 48 篇
L0 · 零基础
从环境、术语和第一个可运行的例子开始,不预设相关知识。
从符号、函数与数量级开始读懂公式
先看懂公式里的输入、输出、下标、求和与单位,再用程序正确计算张量有多少元素、占多少字节。
变量与常量 · 函数输入和输出 · 定义域与取值范围
向量、点积与范数:把相似度写成计算
先用一组有顺序的数表示对象,再计算点积、长度和余弦相似度,并处理零向量与极大、极小浮点数。
向量分量和维度 · 逐元素加法与缩放 · 点积的代数定义
本篇重点:推导并计算 L1 / L2 / L∞ 范数、点积和余弦,再用相近数相减的例子检查浮点抵消误差,学习稳定计算。
矩阵与线性变换:看懂形状和乘法
用有行有列的数表理解矩阵乘法,再看一批输入经过线性层时,转置、偏置和空维度怎样处理。
矩阵行列与元素下标 · 矩阵乘法内维匹配 · 矩阵向量变换
导数、偏导与链式法则:追踪一次变化
先看输入稍变一点会怎样影响输出,再用两变量计算图理解导数、偏导和链式法则,并用差分核对。
平均变化率与导数 · 导数单位 · 偏导与固定其他变量
概率、条件概率与贝叶斯推断
从“已知一件事发生,另一件事有多可能”理解条件概率和贝叶斯公式,再用离散假设更新实验检查直觉。
样本空间与事件 · 概率范围和归一化 · 联合与条件概率
期望、方差与蒙特卡洛估计
用期望看平均水平,用方差看波动,再估计样本均值的误差,并在数据逐条到来时更新统计结果。
随机变量与取值分布 · 离散期望 · 总体方差
L1 · 基础
掌握日常开发的基本方法,能独立完成小功能并解释结果。
对数、熵、交叉熵与 KL 散度
从“越少见的结果越意外”理解负对数信息量,再学习熵、交叉熵和 KL,检查零概率、比较方向与分类损失的关系。
对数底与信息单位 · 负对数信息量 · 离散熵
线性回归与梯度下降:第一次拟合数据
用 y=w*x+b 预测小数据,再从平方误差算梯度,检查参数该往哪调、学习率多大,以及形状是否正确。
特征目标与参数 · 线性预测和截距 · 残差与半均方误差
训练集、验证集与测试集:防止数据泄漏
按将来会遇到的新数据选择随机、分组或时间切分,并只用训练数据学习预处理需要的统计量。
训练验证测试职责 · 评估目标与抽样单位 · 随机与分层切分
本篇重点:只用训练部分学习预处理参数,再复用参数处理其他数据(fit / transform);交叉验证时每折都在训练部分重新拟合,检查新实体上的效果,并保存数据及处理结果的版本。
泛化、偏差方差与正则化
先比较训练数据和新数据上的误差,再用一维 Ridge 看参数惩罚怎样改变拟合结果、偏差和方差。
经验风险与新数据误差 · 欠拟合与过拟合 · 偏差方差和噪声
置信区间、Bootstrap 与假设检验
从已有样本中重复抽样,观察估计怎样变化;手写均值 bootstrap,再分清置信区间、p 值、效果大小和同题配对比较。
统计量与抽样分布 · 频率学派置信区间 · 有放回 bootstrap
本篇重点:先说明想研究哪些对象、样本怎样抽取,再区分抽样与重复运行;用 bootstrap 和置信区间描述估计的不确定性,并检查样本是否可视为独立。
从 SGD 到 AdamW:理解优化器状态
跟着参数一步步更新,理解随机梯度、动量和 Adam 如何使用一阶矩、二阶矩与步数,再分清 L2 惩罚和解耦权重衰减。
全批与小批随机梯度 · 学习率与梯度噪声 · 动量历史缓冲
从数组到 Tensor:形状、设备与广播
建立独立 Python 环境,亲手验证张量的形状、步长、广播、复制与共享存储。
Python 虚拟环境与解释器 · Tensor 的形状、类型和设备 · NumPy 与 Tensor 共享内存
自动微分、反向传播与梯度检查
从一个输入经多条路线影响输出的例子出发,看反向传播怎样累加梯度,再学习叶子梯度、计算图何时保留或释放、detach 和双精度核验。
反向模式自动微分 · 局部导数与向量雅可比积 · 共享节点梯度求和
多层感知机与激活函数:为什么需要非线性
先把各层输入输出形状接好,再用非线性激活构造多层感知机,在四个 XOR 点上运行可重复的 CPU 拟合。
仿射层与权重方向 · 批次和特征维度 · 纯线性层合并
Softmax 分类与数值稳定的损失函数
把各类别的原始分数 logits 转成概率,再推导稳定 softmax、交叉熵和 p-onehot 梯度,检查类别轴、标签类型与极端数值。
Logits 与互斥类别 · Softmax 类别归一化 · 平移不变性
本篇重点:先推导交叉熵与 p − one-hot 梯度,再比较把多条损失求和或取平均(loss reduction)会怎样改变训练。
训练循环、DataLoader 与断点恢复
想在中断后接着训练,就要保存参数、优化器、数据顺序和随机状态,并检查恢复后是否继续了原来的计算。
batch与epoch和optimizer step的区别 · zero_grad与backward和step顺序 · train/eval与梯度开关
初始化、归一化与残差:让梯度走得更远
跟踪每层信号和梯度怎样变化,再看初始化、LayerNorm 的统计轴和残差的恒等路径各自起什么作用。
fan_in与fan_out · Xavier与Kaiming适用假设 · LayerNorm归一化轴
L2 · 进阶
把知识串成系统,处理并发、可靠性、检索质量与真实故障。
分词、BPE 与 Embedding:文本如何变成向量
从合并相邻符号理解 BPE 分词,再看 token ID 怎样从 Embedding 矩阵取出向量,以及重复使用的向量怎样累加梯度。
字符与字节和token区别 · BPE相邻对频率 · 合并次序与平局规则
本篇重点:用 BPE 观察词表怎样建立,再把 Token ID 转成可训练的 Embedding,弄清训练实际接收的输入。
缩放点积注意力与掩码:亲手计算一次关注
先看一个位置怎样读取其他位置的信息,再从 QK 转置的形状推导缩放点积注意力,用因果与布尔掩码检查哪些连接被允许。
Q和K与V形状 · 点积缩放sqrt(dk) · 按key轴softmax
本篇重点:先核对矩阵各维的大小,再检查不同框架 API 如何解释掩码、整行屏蔽时怎样处理以及 dropout 的行为;用梯度实验检查被屏蔽信息是否仍影响计算。
位置编码、RoPE 与 Transformer 模块
用向量旋转表示位置,推导两个位置之差(相对位移)怎样影响点积,再把归一化、注意力和前馈残差接成 Transformer 块。
位置编码与顺序信息 · 二维旋转矩阵 · RoPE频率与偶数维度
从 Decoder 到小型语言模型:标签移位与因果约束
把 token 序列接入因果模块,再让每个位置预测下一个 token,用移位交叉熵训练小语言模型,区分并行训练和逐步生成。
条件概率分解 · 输入标签右移关系 · logits的B,T,V形状
学习率预热、调度与梯度裁剪
明确学习率每一步怎样变化、梯度过大时怎样缩小,分别检查更新步数、裁剪前梯度长度和实际参数变化。
预热直觉与范围 · 更新编号和epoch编号 · 余弦衰减端点
混合精度与梯度累积:控制显存与数值误差
用较低计算精度和分成小批的梯度累积节省显存,同时分清损失缩放,并按有效目标数量还原完整大批的梯度。
FP32和FP16与BF16 · autocast按算子选精度 · loss scaling与反缩放
预训练语料:清洗、去重、来源与污染检查
清洗文本、给文档生成指纹、聚合近重复内容,并检查训练资料是否混入评测内容,让每一步都能追查来源。
原始字节与规范化文本的双重身份 · SHA-256 指纹与碰撞复核 · 词片段集合与 Jaccard 相似度
预训练目标、序列打包与 Token 计数
把多篇文档装进同一训练序列来减少填充,并从“预测下一个 token”检查文档之间的注意力隔离、标签屏蔽和有效目标计数。
因果语言建模目标 · 文档边界与结束标记 · 连续流与独立文档语义
计算量、显存与 Scaling Laws:先估算再训练
训练要放得下模型状态和中间激活,也要承担计算成本;分别估算这些开销,再用小实验核对预算假设。
参数量与共享参数去重 · 字节与GiB单位 · 权重梯度和优化器状态
DDP、梯度 AllReduce 与分布式采样
先看多张设备各自处理哪些样本、最后怎样合并梯度,再用采样索引和梯度对照理解 DDP 副本同步,以及有效目标数不同的权重。
rank与world size · 模型副本和梯度同步 · 默认梯度平均
FSDP、ZeRO 与激活检查点的内存权衡
一种办法把模型状态分到不同设备,另一种少存激活、需要时重新计算。分清两者,并用输出和梯度对照检查激活检查点。
模型状态与激活分类 · ZeRO三阶段的累计分片 · FSDP参数聚合与梯度分片
LoRA、QLoRA 与量化:低成本适配模型
让基础权重保持冻结,只训练一个低秩增量:推导 LoRA 的形状、初始化和梯度,训练小适配器,再分清 QLoRA 额外的量化机制。
低秩矩阵分解 · A和B的形状 · alpha/r缩放
L3 · 深入
进入机制、诊断与权衡,用证据判断复杂设计是否必要。
监督微调 SFT:指令数据与损失掩码
先分清对话中每段文字属于谁,再移位标签、只对助手回答计算 SFT 损失,检查被屏蔽位置与上下文的梯度。
条件语言建模与teacher forcing · 聊天模板和角色边界 · completion与assistant掩码
MDP、Bellman 方程与策略梯度基础
从“当前是什么状态、能做什么、得到多少回报”定义目标,推导 Bellman 递推与策略梯度,再训练一个可核对的两动作策略。
状态与马尔可夫假设 · 策略与环境转移 · 折扣回报
偏好数据与奖励模型:奖励究竟在测什么
比较同一提示下更受偏好与较不受偏好的回答,建立成对概率和奖励损失,再训练一个能逐项核对的线性奖励头。
偏好对与同提示比较 · Bradley-Terry概率 · 成对交叉熵
PPO、GAE 与 RLHF:约束策略更新
先估计一个动作相对预期表现好多少(优势),再分别推导 GAE、PPO 概率比裁剪和 RLHF 参考策略约束,并检查终止与截断。
时间差分残差 · GAE反向递推 · 终止与时间截断
DPO:用偏好对直接优化策略
根据成对偏好调整回答概率,从带 KL 约束的奖励目标推导 DPO,并明确参考概率、哪些回答位置参与计算、怎样按长度汇总。
KL约束最优策略 · 奖励重参数化 · 配分函数消去
GRPO 与可验证奖励:从组内比较到奖励漏洞
比较同一组候选的奖励,计算组相对优势,并检查自动评分器会被怎样钻空子;分清论文中的 GRPO 目标与 CPU 局部实验。
同提示分组采样 · 组均值基线 · 总体与样本标准差
ReAct 与交互轨迹:建立可学习的 Agent 环境
让 ReAct 中的观察与行动真正发生在环境里,记录能重新回放的过程,并规定怎样才算任务成功。
观察与真实状态 · 动作空间与解析 · 决策摘要与环境证据
本篇重点:按步骤记录观察、动作、奖励和结束原因,区分任务真正结束与预算用尽的截断,再决定哪些内容作为监督训练标签。
模仿学习、离线轨迹与 DAgger
让策略偏离示范路线,再比较行为克隆与 DAgger 怎样学习,分清实际执行的动作和专家给出的正确动作标签。
行为克隆经验风险 · 状态分布偏移 · 错误累积
Beam Search、树搜索与 MCTS 规划
用束搜索反例和小型 UCT 实验,分清按概率选序列、在状态间规划,以及在有限尝试次数下探索候选。
束宽与累计分数 · 前缀剪枝的不可逆性 · UCT均值与探索项
本篇重点:比较 Beam Search 与 MCTS / UCT 怎样选择候选,推演尝试新选择(探索)、利用已有好选择与搜索预算之间的关系。
工具使用训练与长链路信用分配
先学会正确填写工具调用,再判断是否值得调用,最后看整条任务的奖励该怎样分给各步,用小实验检查这些目标的区别。
调用监督与任务奖励 · Toolformer损失筛选 · 动作和观测掩码
记忆与检索学习:从固定规则到可训练选择
用双编码器小实验学习让相关内容更接近的对比损失,检查向量与索引是否匹配,再用 MMR 兼顾记忆候选的相关性和多样性。
双编码器与点积 · 批内负例矩阵 · 假负例与多正例
本篇重点:分别为查询和文档生成向量(双编码器),用负样本和对比损失学习区分相关资料,再检查内容选择策略及对新数据的效果。
多智能体学习:非平稳性与协作信用分配
多个 Agent 一起学习时,各自策略都在变。用 COMA 基线和 Shapley 枚举,分清怎样给策略梯度分配贡献,以及怎样分配合作收益。
独立学习的非平稳性 · 集中训练分散执行 · 局部观测与全局critic
本篇重点:先观察队友改变策略后,旧经验为什么可能失效;再学集中训练、分散执行(CTDE)和 COMA,检查各成员的动作对策略更新与合作收益分别有什么影响。
Agent 基准与可执行环境:定义成功和失败
把 Agent 评估变成能重复运行的环境试验,明确从哪里开始、允许多少动作、怎样算成功,以及异常试验怎样计入分母。
任务与环境快照 · 独立成功oracle · 修复与回归检查
本篇重点:固定运行环境、任务规则和结果检查器,检查训练或调试是否提前使用了测试内容;分别说明全部计划任务和实际有效运行有多少,不能悄悄丢掉异常任务。
pass@k 与统计比较:正确解释实验提升
计算有限候选中抽取 k 个、至少有一个成功的 pass@k,再按同一题目配对比较方法,检查抽样单位、置信区间和预算限制。
pass@k定义与候选预算 · 无放回组合估计 · 独立同分布假设
本篇重点:推导 pass@k 的组合估计,比较系统时按题目重新抽样并保留配对;事先固定采样预算和报告规则。
失败分类、轨迹诊断与反事实实验
先给失败分类,再删减轨迹或只替换其中一部分来定位问题,分清一起出现的现象、局部修复效果和因果结论。
失败分类与证据 · 最早偏离和传播 · 确定性回放
本篇重点:逐步删减仍能触发同一失败的输入,固定其他条件后替换一个环节(反事实实验),检查结果是否变化,以及是否还有其他因素同时影响结果。
实验复现、消融、多随机种子与研究记录
把实验怎样重跑写清楚:保存随机种子与完整配置,逐项去掉组件做消融,并用配对统计比较训练结果。
随机源与确定性 · 代码数据配置身份 · 训练和评估模式
推理系统、KV Cache 与服务性能边界
推理时先处理已有输入,再逐 token 生成;看 KV 缓存怎样复用前文计算,检查因果掩码位置,并用分页共享模型估算服务显存。
预填充与解码阶段 · 每层K和V缓存 · 位置及非方形掩码
本篇重点:对比使用与不使用 KV Cache 的结果,分清先处理提示内容(prefill)和逐步生成(decode),再检查查询与键数量不同时的掩码、分页共享及写时复制。
研究毕业实验:小模型适配与 Agent 改进报告
用一个从头到尾能运行的小实验,把数据划分、参数适配、Agent 动作评估、多随机种子和消融连起来,再为真实模型设计可复查的研究报告。
可证伪研究问题 · 冻结与全参数基线 · 低秩参数适配
学习笔记 · 整理于 2026.09.26
难度与重要程度服务于学习排序。用练习结果验证掌握情况,再决定是否进入下一篇。