深度学习

知识库简介

本目录保留完整的《动手学深度学习》(D2L)中文课程正文,新增一条面向 AI Agent Engineer 的选择性路线。一般 Agent 或 RAG 应用不必先把卷积网络、分布式训练和全部推导学完;当项目需要理解模型内部、Embedding、多模态或训练评测边界时,再按需建立张量、梯度、训练/泛化、注意力与 Transformer 的直觉。

导航说明

来源与完整目录保留来源和 140 篇课程正文的结构。本页提供 Agent 工程选择性路线;2026-07-22 又为安装、自动微分、评测、数值、Transformer、优化、分布式训练和 BERT 等高风险入口补了明确标记的现代工程说明,D2L 历史正文仍保留并可追溯。

在总路线中的位置

深度学习位于“数学与数据基础”,是多模态与模型研究方向的推荐背景,而不是一般 Agent、Embedding、LLM API 或 RAG 的完整课程硬前置。需要进入本路线时,建议先补概率统计、线性代数、微积分基础和机器学习的入门概念;不必等数学全部熟练才开始。向量基础面向 Embedding 与检索,可以与本课并行或在需要 RAG 时单独学习,也不是训练神经网络的硬前置。

如果要把课内概念用于真实实验或项目,先读 工程实践与现代化路线:它把 D2L 的训练直觉连接到数据谱系、评测、发布、运行模式和 Agent/RAG 系统边界。它不是替代 140 篇正文的第二本教材,而是帮助选择必要章节、避免把历史代码或单次曲线误当成生产证据。

学习目标

  • 用张量、参数、损失、梯度和优化器描述一次训练迭代。
  • 区分训练集、验证集、测试集,解释欠拟合、过拟合和分布偏移。
  • 理解前向传播、反向传播、自动微分与参数更新的职责。
  • 用查询(query)、键(key)、值(value)解释注意力和自注意力。
  • 说清 Transformer、词嵌入和预训练模型与 LLM/RAG 的连接点。
  • 能运行一个小实验、读取损失/指标,并记录环境与随机性限制。

前置知识

  • Python 函数、列表/字典、虚拟环境和异常处理;不熟悉时先完成 Python基础。
  • 向量、矩阵乘法、导数与概率的直觉;推导看不懂时先核对形状和数据流,可按需回看 线性代数、微积分基础 与 概率统计。
  • 先理解 机器学习 的数据划分、基线、指标和泛化边界,再把模型换成神经网络。
  • D2L 示例可能涉及不同框架和硬件。先用 CPU 小样例理解流程,不必为入门购买 GPU。

一轮训练的最小心智模型

深度学习仍是机器学习:只是模型由许多可学习层组成,参数更多、表示能力更强。一次训练迭代可以压缩成四步:

  1. 前向传播:模型用参数 把输入 变成预测 。
  2. 计算损失:损失 衡量预测与目标 的差距;它是优化信号,不一定等同于业务指标。
  3. 反向传播:自动微分沿计算图求梯度 ,回答“每个参数向哪边改能让当前损失下降”。
  4. 参数更新:最简单的梯度下降是 ,其中学习率 控制步长。

可以手算一次验证方向:令 、、、初始 ,损失为 。此时 、、梯度 。取 后, 更新为 ,新预测为 ,新损失为 :一次更新确实让当前样本的损失下降。它仍不能证明对新样本有效。

一个 batch 是一次迭代读取的一小批样本,一个 epoch 是训练集被遍历一轮。训练损失下降只说明模型更适应训练数据;是否学到可泛化规律,仍要看未参与拟合的验证/测试数据。常见误区是把“梯度存在”当作“梯度数值稳定”,或把“参数更多”当作“效果必然更好”。

对 Agent Engineer,这套模型帮助理解 Embedding、Transformer 与微调,但调用已训练 LLM API、构建 RAG 或编排工具并不要求先训练大模型。

版本、环境与复现边界

本地课程是 2026-05-07 从 D2L 中文 2.0.0 站点整理的快照。官方安装页仍以 Python 3.9、PyTorch 1.12.0、torchvision 0.13.0 和 d2l==0.17.6 为示例;这是复现该书代码的历史环境,不能直接当作当前 PyTorch 推荐版本。PyTorch 的官方安装命令会根据 Windows、Python 和 CPU/CUDA 组合动态生成,因此本页不硬编码一个可能迅速过期的命令。

在 Windows 11 / PowerShell 7 上,先建立独立 venv,再从 PyTorch Start Locally 选择 Windows、Pip、Python 和实际计算平台,把页面生成的安装命令改为由该环境的 Python 执行:

$course = (Resolve-Path '.\Knowledge\AI Agent Engineer\docs\深度学习').Path
$venv = Join-Path $course '.venv'
$python = Join-Path $venv 'Scripts\python.exe'
 
py -3.11 -m venv $venv
& $python -m pip install --upgrade pip
& $python -c "import sys; print(sys.executable); print(sys.version)"

随后把官方选择器给出的 pip install ... 改写成 & $python -m pip install ...,避免装进系统 Python;安装后记录 python --version、pip freeze、CPU/GPU 与驱动信息。若目标是逐行复现书中旧代码,应另建历史环境并使用原书版本,不要在同一环境中混装“当前 PyTorch”与“D2L 历史依赖”。熟悉 venv + pip 后可以用 uv 加速建环境,但环境隔离和版本记录原则不变。

本轮验证边界

本轮验证了本地文件、完整目录和选择性路线,不下载框架、不创建 .venv,也不声称 140 篇中的所有历史代码能在当前 Python/PyTorch 上原样运行。运行某一实验时,应以该实验实际输出和锁定环境为证据。

推荐学习顺序

先读:工程边界与证据

  1. 工程实践与现代化路线:先区分课程快照、当前框架、训练/验证/测试和发布的职责,再运行任何历史代码或创建云资源。

0. 张量与数学预备

  1. 预备知识总览:了解课程工具与学习顺序。
  2. 数据操作:重点看张量形状、索引和广播。
  3. 数据预处理:理解表格数据怎样进入张量。
  4. 线性代数、微积分、概率:只先掌握后续会用的最小概念。
  5. 自动微分:观察框架怎样计算梯度。

1. 从线性模型到神经网络

  1. 线性回归:把模型、损失和优化连成闭环。
  2. 线性回归简洁实现:认识框架的数据、模型、损失和优化器接口。
  3. 多层感知机:理解层、非线性与表达能力。
  4. 模型选择、欠拟合和过拟合:这是评测与生产化的必修概念。
  5. 反向传播和计算图:沿数据流理解梯度。
  6. 数值稳定性与初始化:认识梯度消失/爆炸等失败模式。

2. 通往 LLM 的序列与注意力主线

  1. 文本预处理、语言模型和数据集:理解 token 序列与下一个词元预测。
  2. 编码器—解码器、seq2seq:理解输入序列到输出序列。
  3. 注意力机制、多头注意力:掌握 Q/K/V 与多子空间直觉。
  4. 自注意力和位置编码:理解同一序列内部的信息混合和位置信号。
  5. Transformer:把注意力、前馈层、残差和归一化组成模型。
  6. 词嵌入、BERT:连接向量表示、预训练与下游任务。

3. 按应用选修

  • 多模态/OCR:再读计算机视觉章节的卷积、迁移学习、检测和分割。
  • 模型训练与性能:再读优化算法、计算性能和多 GPU;它们不是调用 LLM API 的前置条件。
  • NLP 任务:按需读情感分析、自然语言推断与 BERT 微调。

动手实践与项目入口

最小实验

任选 线性回归简洁实现 或 多层感知机简洁实现,在独立环境中缩小数据和轮数后运行一次,记录:

  1. Python、框架与设备版本;
  2. 输入/标签形状;
  3. 损失怎样变化;
  4. 随机种子是否固定;
  5. 哪一项结果能证明代码运行,哪一项仍不能证明泛化。

综合项目

房价预测实战 提供完整建模流程。学习时可只在本地小数据上完成数据预处理、训练/验证划分、模型、损失与提交前检查;不要求参加线上比赛。完成后写一页实验卡:目标、数据、基线、指标、过拟合证据、复现命令和已知限制。

实验卡至少回答下面这些问题:

项目必须记录的证据
环境Python、框架、依赖、设备和随机种子
数据来源、许可、样本数、形状、训练/验证/测试边界
模型输入输出形状、层、激活、损失、优化器和学习率
基线简单模型或规则的同口径结果
结果训练曲线、验证指标、最好轮次和至少三条错误样本
限制小样本、随机性、分布差异、未执行步骤和复现风险

初学者自测

  1. 参数、超参数、激活值和梯度分别由谁产生、何时变化?
  2. 为什么损失函数可以下降,而 accuracy、F1 或业务收益不一定同步上升?
  3. model.eval() 与“不计算梯度”解决的是同一个问题吗?若不确定,应到所用框架的官方文档核对哪些层会改变行为。
  4. 自注意力中的 Q、K、V 各自参与什么计算?位置编码为什么不能被词向量自然替代?
  5. 若训练损失继续下降而验证损失上升,你有哪些数据、模型和训练层面的排查动作?
  6. 为什么“我能调用大模型 API”既不等于“我会训练模型”,也不妨碍先成为 Agent 应用工程师?

完成自测时不要只背术语:至少画出一张训练闭环图、手算一次单参数梯度更新,并用一条实验日志支持自己的判断。

掌握标准

  • 给定一个批量张量,能解释每一维代表什么。
  • 能画出数据→模型→预测→损失→梯度→更新的闭环。
  • 能说明为什么训练损失低不等于新数据表现好。
  • 能区分参数、激活值、梯度、超参数和评测指标。
  • 能用自己的话解释 Q/K/V、自注意力、多头与位置编码。
  • 能指出 Transformer 与 Embedding/RAG 的关系,但不把 Embedding 等同于知识库。
  • 能运行并记录一个最小实验,失败时从形状、设备、依赖和数据开始排查。

与其他知识库的关系

主要参考资料

核验日期:2026-07-22。D2L 本地正文是教学快照;动态安装命令、框架 API 和硬件支持以安装当天的官方文档为准。