{
 "nbformat": 4,
 "nbformat_minor": 5,
 "metadata": {
  "kernelspec": {
   "name": "python3",
   "display_name": "Python 3",
   "language": "python"
  },
  "language_info": {
   "name": "python"
  },
  "deepnote": {
   "projectId": "c0b185e7-d7e3-48b6-a605-8f1acdfe243c",
   "notebookId": "a09cce95fed04f51850a46e7afd37c2e",
   "name": "CLS 01 · 从像素到学习：表示、损失与一次更新"
  },
  "title": "CLS 01 · 从像素到学习：表示、损失与一次更新"
 },
 "cells": [
  {
   "cell_type": "markdown",
   "id": "c686be1953b749e384d94890eaacc8e7",
   "metadata": {
    "deepnote_block_type": "text-cell-h1",
    "deepnote_block_id": "c686be1953b749e384d94890eaacc8e7",
    "html_anchor": "cell-1"
   },
   "source": "# CLS 01 · 从像素到学习：表示、损失与一次更新"
  },
  {
   "cell_type": "markdown",
   "id": "aacde49a344c405eba51a54b6ba3fe61",
   "metadata": {
    "deepnote_block_type": "markdown",
    "deepnote_block_id": "aacde49a344c405eba51a54b6ba3fe61",
    "html_anchor": "cell-2",
    "deepnote": {
     "block_id": "aacde49a344c405eba51a54b6ba3fe61"
    }
   },
   "source": [
    "[返回第二讲 · 监督学习闭环](https://codingai-lec02.pages.dev/#/architecture-supervised-loop/0) · [第二讲导读](https://codingai-lec02.pages.dev/course/guide.html) · [问卷作业 ↗](https://tally.so/r/VLroVv)（外链可右键在新标签页打开）\n",
    "\n",
    "图像怎样成为分数，标签怎样形成损失，错误又怎样改变参数？本册沿第二讲 A 段，把这三个接口接成一次可以自己算完的学习过程。\n",
    "\n",
    "**跟着课堂继续**：第 3–4 节读“分数→损失→求导→更新”，第 6 节读训练／验证曲线；想补足“为什么要学习表示”，先读第 1–2 节。末尾短代码只用 Python 标准库，可逐项核对手算，不需要下载数据或训练模型。\n",
    "\n",
    "**动手选一个问题**：到 [LAB 06 · 表示、损失与学习步长](https://codingai-lec02.pages.dev/course/lab06.html) 改一次步长，比较更新前后损失；想读真实训练记录，到 [LAB 02 · 小 CNN 与图像平移](https://codingai-lec02.pages.dev/course/lab02.html) 找曲线与检查点选择。完成后带回一句判断：我改变了什么，哪一项记录支持我的解释？"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "30fa6980d9da4edea0c0f58c9d82ff0e",
   "metadata": {
    "deepnote_block_type": "text-cell-h2",
    "deepnote_block_id": "30fa6980d9da4edea0c0f58c9d82ff0e",
    "html_anchor": "cell-3"
   },
   "source": [
    "## 1. 像素更接近，为什么不一定更像？"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "259205293e0148f182877e5fa926cf65",
   "metadata": {
    "deepnote_block_type": "markdown",
    "deepnote_block_id": "259205293e0148f182877e5fa926cf65",
    "html_anchor": "cell-4",
    "deepnote": {
     "block_id": "259205293e0148f182877e5fa926cf65"
    }
   },
   "source": [
    "**课件与图解**：[Learning to See：图像怎样成为可以学习的表示？](https://codingai-lec02.pages.dev/#/from-local-operations/0) · [同为自行车，为什么像素可以差别这么大？](https://codingai-lec02.pages.dev/#/same-category-different-pixels/0) · [同类竖线平移一格，像素距离却比异类横线更远](https://codingai-lec02.pages.dev/course/reference/pixel-distance-counterexample.html) · [给每个类别一套权重，就得到可调整的评分规则](https://codingai-lec02.pages.dev/#/linear-algebraic-view/0)\n",
    "\n",
    "**先猜**：下面两张候选图，哪张和查询的像素更接近？哪张仍属于“竖线”？\n",
    "\n",
    "![三张4×4二值图：原竖线、右移一格竖线和横线；平方像素距离依次为8、6](data:image/webp;base64,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)\n",
    "\n",
    "**逐格核对。** 三张图都只有 4 个亮像素。两条竖线不重叠，8 格不同，平方距离为 8；横竖线共享交点，只有 6 格不同，距离为 6。像素更近的候选，反而属于另一形状类别。\n",
    "\n",
    "这个反例否定的是“像素距离小就总是任务相似”。它没有证明像素永远无用。同样，识别自行车时可以容忍位置变化，定位自行车时却不能把位置丢掉。**保留什么，取决于要回答什么。**\n",
    "\n",
    "**再算一个分数。** 输入 x=(2,1)，B 类权重 w=(1,−1)、b=0，得到 s_B=2−1=1。每类一行权重，合起来就是 s=Wx+b：输入由样本给出，W、b 留给训练调整。后面暂用三类分数 (2,1,0) 继续核对概率。\n",
    "\n",
    "**先预测与核对**：圈出图中的 8 格与 6 格差异，再算 B 类分数。只要计算没错，评分规则就能应用；可是原坐标若根本分不开，继续调权重还有用吗？\n",
    "\n",
    "*图为主讲像素距离例的精确二值构造，不是模型分类结果。*"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "b7e3cf67af3b4237b02eb7f143955518",
   "metadata": {
    "deepnote_block_type": "text-cell-h2",
    "deepnote_block_id": "b7e3cf67af3b4237b02eb7f143955518",
    "html_anchor": "cell-5"
   },
   "source": [
    "## 2. 两灯任务：改变坐标，才改变可分性"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "ceaf3c84ea5a4ffcbf021b653eaef298",
   "metadata": {
    "deepnote_block_type": "markdown",
    "deepnote_block_id": "ceaf3c84ea5a4ffcbf021b653eaef298",
    "html_anchor": "cell-6",
    "deepnote": {
     "block_id": "ceaf3c84ea5a4ffcbf021b653eaef298"
    }
   },
   "source": [
    "**课件与图解**：[恰好亮一盏：为什么一条直线分不开？](https://codingai-lec02.pages.dev/course/reference/linear-two-lamps-xor.html) · [只堆线性层还不够：让负响应归零会怎样？](https://codingai-lec02.pages.dev/#/why-nonlinearity/0) · [两个ReLU，给刚才的两灯任务一个可核对的解](https://codingai-lec02.pages.dev/course/reference/relu-solves-two-lamps.html) · [换一组坐标，同一任务变得线性可分](https://codingai-lec02.pages.dev/course/reference/hidden-coordinates-two-lamps.html)\n",
    "\n",
    "任务是“恰好亮一盏”为正类；全灭与全亮为负类。先看四个样本搬到新坐标后，**谁的位置变了，谁的标签没变**。\n",
    "\n",
    "![两灯任务的原坐标与ReLU隐藏坐标：A和D在隐藏空间重合，正负类可被h1+h2=0.5分开](data:image/webp;base64,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)\n",
    "\n",
    "**左图为什么分不开？** 两个正类的中点与两个负类的中点都是 (½,½)。仿射分数在中点等于两端平均，因此一条直线不可能把两组严格分到两侧。增加训练轮次不会消除这个表达限制；只叠仿射层也仍是仿射函数。\n",
    "\n",
    "**右图具体改了什么？** 插入 ReLU(z)=max(0,z)，取 h₁=ReLU(x₁−x₂)、h₂=ReLU(x₂−x₁)。两个方向的正差变成新坐标：\n",
    "\n",
    "| 样本 | 原坐标 (x₁,x₂) | 标签 | 新坐标 (h₁,h₂) | h₁+h₂−0.5 |\n",
    "|---|---|---|---|---:|\n",
    "| A 全灭 | (0,0) | 负 | (0,0) | −0.5 |\n",
    "| B 只亮灯1 | (1,0) | 正 | (1,0) | +0.5 |\n",
    "| C 只亮灯2 | (0,1) | 正 | (0,1) | +0.5 |\n",
    "| D 全亮 | (1,1) | 负 | (0,0) | −0.5 |\n",
    "\n",
    "样本身份与标签没变；A、D 被映到同一个隐藏坐标。此时 h₁+h₂>0.5 就能分类。\n",
    "\n",
    "**先预测与核对**：遮住表格后两列，先算 D 与 C，再指认图中两点。这里的权重是手工给出的可行解，证明结构能表达规则；还没有证明随机起点会训练出该解。下一步先解决训练所需的接口：怎样把分数与真实标签接起来？"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "2f795f8c48a34ef3a8a197a886e04ad6",
   "metadata": {
    "deepnote_block_type": "text-cell-h2",
    "deepnote_block_id": "2f795f8c48a34ef3a8a197a886e04ad6",
    "html_anchor": "cell-7"
   },
   "source": [
    "## 3. 分数变概率，标签才决定损失"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "fc735e0c8fd0477a985cdbce3357dfd1",
   "metadata": {
    "deepnote_block_type": "markdown",
    "deepnote_block_id": "fc735e0c8fd0477a985cdbce3357dfd1",
    "html_anchor": "cell-8",
    "deepnote": {
     "block_id": "fc735e0c8fd0477a985cdbce3357dfd1"
    }
   },
   "source": [
    "**课件与图解**：[分数2、1、0，怎样变成一组类别概率？](https://codingai-lec02.pages.dev/course/reference/softmax-relative-scores.html) · [都预测成狗，为什么给猫20%与1%需要不同的损失？](https://codingai-lec02.pages.dev/#/confident-error-loss-comparison/0)\n",
    "\n",
    "回到暂存的分数 s=(2,1,0)。Softmax 定义 p_c=exp(s_c)/Σⱼexp(sⱼ)。计算时三项共同减去最大值 2，得到 exp(0)、exp(−1)、exp(−2)，再除以总和，概率约为 (0.6652,0.2447,0.0900)。共同加减一个常数不改变相对概率；只改某一类分数则会改变归一化后的所有概率。\n",
    "\n",
    "真实类别 y 到来后，单样本交叉熵是 L=−ln p_y。若真实类别为猫，猫概率为 60%、20%、1%，损失分别约为 0.51、1.61、4.61。后两次即使都被判成狗，准确率都记错，损失仍区分对真标签的支持程度。Softmax 概率由全部分数共同决定，损失读取其中真标签对应的一项。\n",
    "\n",
    "**先预测与核对**：先预测把三个分数都加 10，概率是否变化；再比较猫概率从 1% 升到 20% 时损失的方向。**核对**：概率不变；损失下降。损失表达训练追求什么，下一步还需要知道参数怎样影响它。"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "ba7f54af0d944c26824b6de0c2549783",
   "metadata": {
    "deepnote_block_type": "text-cell-h2",
    "deepnote_block_id": "ba7f54af0d944c26824b6de0c2549783",
    "html_anchor": "cell-9"
   },
   "source": [
    "## 4. 同一个标量例子，分开求导和更新"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "33ec19f9b7cc43c28fcef181b679252e",
   "metadata": {
    "deepnote_block_type": "markdown",
    "deepnote_block_id": "33ec19f9b7cc43c28fcef181b679252e",
    "html_anchor": "cell-10",
    "deepnote": {
     "block_id": "33ec19f9b7cc43c28fcef181b679252e"
    }
   },
   "source": [
    "**课件与图解**：[固定当前位置，导数告诉我们参数往哪边改](https://codingai-lec02.pages.dev/course/reference/gradient-local-direction.html) · [输出的反馈，怎样变成权重的反馈？](https://codingai-lec02.pages.dev/course/reference/backprop-chain-rule.html) · [先对当前计算求导，再统一更新参数](https://codingai-lec02.pages.dev/course/reference/backprop-versus-optimization.html)\n",
    "\n",
    "为了看清求导，暂换成一个明确的构造回归例：输入 x=2，目标 t=0，预测 y=wx，损失 L=½(y−t)²=2w²。它不是上一节猫狗分类的训练结果。\n",
    "\n",
    "![同一旧点w=1求梯度4；分别取步长0.1与0.6，再前向得到损失0.72与3.92](https://codingai-lec02.pages.dev/course/visuals/deepnote-final/foundations-update-loop.png)\n",
    "\n",
    "**先看上排**：求导尚未改参数。再遮住下排损失，分别算两种步长的新权重、新预测，最后揭开结果核对。\n",
    "\n",
    "链式法则给出 ∂L/∂w=(∂L/∂y)(∂y/∂w)=(y−t)x=2×2=4。第一个 2 是损失对输出的反馈，第二个 2 是乘法对权重的局部导数 x；它们数值相同，来源不同。反向传播只产出梯度，优化步骤才执行 w′=w−ηg=1−0.1×4=0.6。之后重新计算 y′=1.2、L′=0.72，才算闭合一次更新。\n",
    "\n",
    "**先预测与核对**：逐行写下参数是否已经改变；用有限差分 [L(1+ε)−L(1−ε)]/(2ε) 核对 g。再预测把 η 改为 0.6 是否仍下降。**核对**：w′=−1.4，L′=3.92，反而高于 2。局部下降方向与合适的步长是两个问题。接下来把一次更新放进小批量循环。"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "06177aae955d496aaa04803b52a16fdb",
   "metadata": {
    "deepnote_block_type": "text-cell-h2",
    "deepnote_block_id": "06177aae955d496aaa04803b52a16fdb",
    "html_anchor": "cell-11"
   },
   "source": [
    "## 5. 一个 epoch，参数可以更新很多次"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "52535e7c9a8540eda37ef9f22d9cc8a2",
   "metadata": {
    "deepnote_block_type": "markdown",
    "deepnote_block_id": "52535e7c9a8540eda37ef9f22d9cc8a2",
    "html_anchor": "cell-12",
    "deepnote": {
     "block_id": "52535e7c9a8540eda37ef9f22d9cc8a2"
    }
   },
   "source": [
    "**课件与图解**：[看完12个样本，参数已经更新了4次](https://codingai-lec02.pages.dev/course/reference/minibatch-one-epoch-four-updates.html)\n",
    "\n",
    "12 个训练样本洗牌后，每批 3 个，恰好形成 4 批。每一批都完成前向、求导和更新，所以一个 epoch 包含 4 个 step：θ₀→θ₁→θ₂→θ₃→θ₄。后面一批在新的参数处计算梯度，不能把整个 epoch 描述成“先用 θ₀ 算完四批梯度，最后只更新一次”。\n",
    "\n",
    "epoch 统计数据走过几遍，step 统计参数更新几次。若改成每批 4 个，本例一个 epoch 是 3 个 step；这只是计数变化，不能单凭步数说哪种 batch 泛化更好。这里样本数可整除批量大小；实际不整除时还要声明如何处理最后一批。\n",
    "\n",
    "**先预测与核对**：在四个批次旁分别写上它读取的参数 θ₀、θ₁、θ₂、θ₃，并标出每次更新发生的位置。**核对**：同一批前向和反向对应同一组旧参数。训练循环闭合后，新的问题是：所有数据都能参与这个循环吗？"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "409727d272c54652b4b76a556ad44aea",
   "metadata": {
    "deepnote_block_type": "text-cell-h2",
    "deepnote_block_id": "409727d272c54652b4b76a556ad44aea",
    "html_anchor": "cell-13"
   },
   "source": [
    "## 6. 数据的职责不同，曲线才有解释"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "8273401786ed4e1ea94b370ecb8fb4d4",
   "metadata": {
    "deepnote_block_type": "markdown",
    "deepnote_block_id": "8273401786ed4e1ea94b370ecb8fb4d4",
    "html_anchor": "cell-14",
    "deepnote": {
     "block_id": "8273401786ed4e1ea94b370ecb8fb4d4"
    }
   },
   "source": [
    "**课件与图解**：[训练、验证与测试的职责](https://codingai-lec02.pages.dev/#/data-roles-before-curves/0) · [训练曲线与泛化判断](https://codingai-lec02.pages.dev/#/training-and-generalization/0)\n",
    "\n",
    "| 数据 | 可以影响什么 | 阅读时要问什么 |\n",
    "|---|---|---|\n",
    "| 训练集 | 损失、梯度和参数更新 | 训练本身是否拟合改善？ |\n",
    "| 验证集 | 配置、轮次与检查点选择 | 按哪一个指标选方案？ |\n",
    "| 测试集 | 方案锁定后的独立评价 | 是否在评价后又据此调参？ |\n",
    "\n",
    "验证不对这些样本反向更新权重，但仍参与方案选择，不能冒充完全未参与选择的最终测试。\n",
    "\n",
    "**读本课曲线。** CNN／无增强的历史记录中，最小验证交叉熵为 **0.1610109955072403**，位于 **epoch 6**，所以按这个指标选择第 6 轮检查点。训练 `train_online_loss` 是一轮内随 batch 更新累计的损失；`val_loss` 是轮末固定当时模型的评估值。它们不是在同一组参数时刻计算，两条损失都在下降，不能只按高低关系判为过拟合。若训练拟合改善而验证变差，才有需要进一步调查的泛化信号；若训练也不好，仅说过拟合便解释不全。\n",
    "\n",
    "数据协议保持原记录：官方 60,000 个 MNIST 训练样本按 seed=20260908 排列，前 12,000 个训练，位置 50,000:60,000 的 10,000 个验证；官方 10,000 个测试样本用于最终评价。指定右移测试属于另外的分布变化检查。这里读取保存结果，不要求重训；[原始结果 JSON](https://codingai-lec02.pages.dev/course/data/lab02-results.json) 与 [LAB 02 · 小 CNN 与图像平移](https://codingai-lec02.pages.dev/course/lab02.html) 保留可追溯数值。\n",
    "\n",
    "**做完要能判断**：把“更新 w”“选择第 6 轮”“报告最终准确率”分别放回三栏，再说清训练损失下降为什么还不够。接下来进入 CNN：类别错误怎样经后层回到局部的共享参数？"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "4cb2c53077ac4a79a9224e2442fa4cac",
   "metadata": {
    "deepnote_block_type": "text-cell-h2",
    "deepnote_block_id": "4cb2c53077ac4a79a9224e2442fa4cac",
    "html_anchor": "cell-15"
   },
   "source": [
    "## 把本段主线连起来"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "afd60bfc0592489da24a88761267d5ac",
   "metadata": {
    "deepnote_block_type": "markdown",
    "deepnote_block_id": "afd60bfc0592489da24a88761267d5ac",
    "html_anchor": "cell-16",
    "deepnote": {
     "block_id": "afd60bfc0592489da24a88761267d5ac"
    }
   },
   "source": [
    "**课件与图解**：[本段起点](https://codingai-lec02.pages.dev/#/from-local-operations/0)；逐页入口见上方各节。\n",
    "\n",
    "请用五句连贯的话复述：任务决定哪些变化可以忽略；表示影响分类是否容易；分数与标签形成损失；反向传播求梯度、更新步骤改参数；独立评价检验是否能处理新样本。\n",
    "\n",
    "本册的二值距离、两灯、Softmax 与标量回归是各自明确的小算例，不能拼成一次已经运行的图像训练。两灯给出表达能力的证据；标量例给出一次更新的证据；MNIST 曲线来自既有实验记录。完整的基础动手与记录模板见 [LAB 06 · 表示、损失与学习步长](https://codingai-lec02.pages.dev/course/lab06.html)。\n",
    "\n",
    "来源沿用主讲：[CS231n · 线性分类](https://cs231n.github.io/linear-classify/)、[CS231n · 反向传播](https://cs231n.github.io/optimization-2/)、[D2L · 小批量随机梯度下降](https://d2l.ai/chapter_optimization/minibatch-sgd.html)。"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "2a3e9c72c6914bbe8c1140f2b851e25f",
   "metadata": {
    "deepnote_block_type": "text-cell-h2",
    "deepnote_block_id": "2a3e9c72c6914bbe8c1140f2b851e25f",
    "html_anchor": "cell-17"
   },
   "source": [
    "## 课堂核对：先预测，再运行"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "65578f89c32a4d8aab58bd4c5be8bb56",
   "metadata": {
    "deepnote_block_type": "markdown",
    "deepnote_block_id": "65578f89c32a4d8aab58bd4c5be8bb56",
    "html_anchor": "cell-18",
    "deepnote": {
     "block_id": "65578f89c32a4d8aab58bd4c5be8bb56"
    }
   },
   "source": [
    "**课件与图解**：[本段起点](https://codingai-lec02.pages.dev/course/reference/relu-solves-two-lamps.html)；逐页入口见上方各节。\n",
    "\n",
    "下面只用 Python 标准库，独立核对两灯、Softmax、标量更新和批次计数，不下载数据、不训练图像模型。先填预测：(1,1) 的隐藏值是什么？梯度算完 w 是否还是 1？η=0.6 的新损失是否下降？运行后的数值是这段小算例的输出，不是新的 MNIST 结果。"
   ]
  },
  {
   "cell_type": "code",
   "id": "87782a8ef1094b7ab21d827f76dc1d8e",
   "metadata": {
    "deepnote_block_type": "code",
    "deepnote_block_id": "87782a8ef1094b7ab21d827f76dc1d8e",
    "html_anchor": "cell-19"
   },
   "source": [
    "from math import exp, log, isclose\n",
    "\n",
    "relu = lambda z: max(0.0, z)\n",
    "lamps = [(0, 0), (1, 0), (0, 1), (1, 1)]\n",
    "hidden = [(relu(a-b), relu(b-a)) for a, b in lamps]\n",
    "predicted = [int(sum(h) > 0.5) for h in hidden]\n",
    "assert hidden == [(0, 0), (1, 0), (0, 1), (0, 0)]\n",
    "assert predicted == [0, 1, 1, 0]\n",
    "print('两灯隐藏值:', hidden, '预测:', predicted)\n",
    "\n",
    "def softmax(scores):\n",
    "    z = [exp(s-max(scores)) for s in scores]\n",
    "    return [v/sum(z) for v in z]\n",
    "p = softmax([2, 1, 0])\n",
    "assert all(isclose(a, b) for a, b in zip(p, softmax([12, 11, 10])))\n",
    "print('概率:', [round(v, 4) for v in p])\n",
    "print('猫概率0.6/0.2/0.01的损失:', [round(-log(q), 4) for q in [.6, .2, .01]])\n",
    "\n",
    "x, target, w = 2.0, 0.0, 1.0\n",
    "loss = lambda weight: 0.5*(weight*x-target)**2\n",
    "y = w*x\n",
    "g = (y-target)*x\n",
    "assert w == 1.0 and g == 4.0  # 求导尚未改变参数\n",
    "eps = 1e-6\n",
    "fd = (loss(w+eps)-loss(w-eps))/(2*eps)\n",
    "assert isclose(fd, g, rel_tol=1e-8)\n",
    "for eta in [0.1, 0.6]:\n",
    "    new_w = w-eta*g  # 两次都从同一旧点w=1开始比较\n",
    "    print('eta=', eta, 'w新=', round(new_w, 4), 'y新=', round(new_w*x, 4), 'L新=', round(loss(new_w), 4))\n",
    "assert isclose(loss(w-.1*g), .72)\n",
    "assert isclose(loss(w-.6*g), 3.92)\n",
    "assert 12//3 == 4 and 12//4 == 3\n",
    "print('12个样本，batch=3: 4 steps；batch=4: 3 steps。')"
   ],
   "execution_count": null,
   "outputs": []
  },
  {
   "cell_type": "markdown",
   "id": "c43fc1a409024b8993aac4c7703bb330",
   "metadata": {
    "deepnote_block_type": "markdown",
    "deepnote_block_id": "c43fc1a409024b8993aac4c7703bb330",
    "html_anchor": "cell-20",
    "deepnote": {
     "block_id": "c43fc1a409024b8993aac4c7703bb330"
    }
   },
   "source": [
    "**课件与图解**：[本段起点](https://codingai-lec02.pages.dev/course/reference/gradient-local-direction.html)；逐页入口见上方各节。\n",
    "\n",
    "**运行后写三行**：哪个输出验证了手算？哪个结论只是这个构造例成立？下一项需要什么独立证据？不要把“η=0.1 在这里下降”写成所有训练任务的默认最优步长。到 [LAB 06 · 表示、损失与学习步长](https://codingai-lec02.pages.dev/course/lab06.html) 继续时，保留“先预测—记录输出—解释差异”的顺序。"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "a488ad4f78c24bd4bf0e4675e09c7b79",
   "metadata": {
    "deepnote_block_type": "text-cell-h2",
    "deepnote_block_id": "a488ad4f78c24bd4bf0e4675e09c7b79",
    "html_anchor": "cell-21"
   },
   "source": [
    "## 课程导航"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "d01763d169e448ee861ec867ff016c5c",
   "metadata": {
    "deepnote_block_type": "markdown",
    "deepnote_block_id": "d01763d169e448ee861ec867ff016c5c",
    "html_anchor": "cell-22",
    "deepnote": {
     "block_id": "d01763d169e448ee861ec867ff016c5c"
    }
   },
   "source": [
    "[第二讲导读与完整索引](https://codingai-lec02.pages.dev/course/guide.html) · [继续 CLS 03 · 同一台 CNN](https://codingai-lec02.pages.dev/course/c03.html)\n",
    "\n",
    "[在 Deepnote 返回 CLS 00 · 第二讲导读](https://deepnote.com/workspace/ise3309jingao-5ba66b0a-4283-4f5a-ae06-3f68d3201e99/project/c0b185e7-d7e3-48b6-a605-8f1acdfe243c/notebook/008c71041d2d43569af77c9f25509be8?utm_source=openai&utm_medium=mcp&utm_campaign=openaimcp&utm_content=008c71041d2d43569af77c9f25509be8&utm_term=get_notebook)。静态课件链接返回对应主题；需保留原 Slides 停点时，请在新标签页打开材料。"
   ]
  }
 ]
}