AI 学习笔记

梯度下降与反向传播

原始对话 · 2026-10-29 归档

这里保留当时的提问和 ChatGPT 的回答,回答未逐条核实;学习页是另行核对后的解释。

查看全部已归档对话

反向传播

第 31 条提问附带的截图

尤其是backpropagation解释

这张图开始讲神经网络最重要的机制之一:Backpropagation(反向传播)。

你之前已经看过 Activation Function(激活函数)、Weights(权重)和 Biases(偏置)。现在视频开始回答一个新问题:

神经网络最初并不知道正确的权重和偏置,那它是怎么把这些数字调整到合适的值的?

答案就是通过反向传播计算如何调整参数,再由优化算法更新它们。

1. 一句话理解 Backpropagation

反向传播就是:神经网络先做出预测,再根据预测的错误,从输出端往回计算每个参数应该如何调整。

你可以把它想象成一个不断纠错的过程。

1输入数据2计算预测3衡量误差4调整参数反向传播误差梯度,再更新参数
一个简化的神经网络训练循环,会反复进行很多次。

2. 结合你的截图理解

你的截图中,神经网络有两条计算路径。

蓝色路径
输入 × 权重 + 偏置 → 激活函数
橙色路径
输入 × 权重 + 偏置 → 激活函数

两条路径的结果经过各自的输出权重,再相加并加上最终偏置,得到预测值。

你截图里出现了:

  • × ???:需要学习的权重(Weights)。
  • + ???:需要学习的偏置(Biases)。
  • × -1.22、× -2.30:另外两个权重。
  • + 2.61:输出端的偏置。

这些数值都属于神经网络可以通过训练调整的参数。红色问号代表视频准备重新寻找更合适的参数。

3. 为什么需要反向传播?

假设神经网络正在预测一种药物是否有效。

真实答案是:

1 = 有效

但神经网络预测:

0.3 = 预测值偏低

那么它就需要学习。

可是问题来了:这个预测值是经过许多权重、偏置和激活函数计算出来的。

究竟应该修改哪个数字?修改多少?

这就是反向传播的作用。

它通过数学中的 Chain Rule(链式法则),计算损失函数对各个参数的梯度,告诉优化算法:

  • 哪些参数对当前误差有影响?
  • 朝哪个方向调整,可能降低误差?
  • 调整的幅度应该如何确定?

随后,Gradient Descent(梯度下降)等优化算法根据这些梯度更新参数。

4. 你可以自己体验一次神经网络如何学习

下面用一个极简模型展示。假设输入固定为 1,真实目标是 1,模型的预测就是权重 ww。我们暂时不使用激活函数和偏置,只观察训练过程。

训练模拟器
简化模型
模型预测
0.300
真实目标
1.000
预测接近目标的程度
30%
当前权重 w
0.3000
误差平方(Loss)
0.49000
学习率(Learning Rate)
0.20
每点击一次,模型计算损失对权重的梯度,再使用梯度下降更新权重。观察预测值是否越来越接近 1。

严格来说,这个例子只有一个参数,所以不需要复杂的反向传播过程。但它展示了反向传播最终要帮助完成的事情:让参数朝着降低误差的方向更新。

5. 你目前需要理解到什么程度?

从 AI 产品设计和 Vibe Coding 的学习目标来看,我建议你先掌握三个层次:

概念需要理解的核心
Forward Propagation 前向传播输入数据,经过计算得到预测
Loss Function 损失函数衡量预测与目标之间的差距
Backpropagation 反向传播反向计算各参数的梯度,帮助模型改进

暂时不需要手动推导链式法则或偏导数。

最后,记住一句英文:

"Backpropagation calculates how each parameter contributes to the loss, so the model can update its weights and biases."

意思是:反向传播计算各个参数对损失的影响,从而帮助模型更新权重和偏置。

这也是你正在看的视频从“神经网络如何做预测”进入“神经网络如何学习”的关键转折。

导数与链式法则

第 33 条提问附带的截图

不懂

这张图确实比前面复杂,因为视频已经进入 Backpropagation(反向传播)背后的数学原理:Derivative(导数)和 Chain Rule(链式法则)。

但这里有一个特别重要的地方:你不需要先理解整条公式,只需要理解它想回答什么问题。

1. 这张图究竟想解决什么?

回忆之前的神经网络:

InputBlueOrangePrediction+ b₃
蓝色和橙色代表两条不同的计算路径,最后合并成预测值。

模型的预测公式是:

Predicted=Blue+Orange+b3\text{Predicted}=\text{Blue}+\text{Orange}+b_3

这里的 b3b_3 是最终的 Bias(偏置)。

现在视频想知道:

如果我们稍微改变 b3b_3,最终的预测误差 SSR 会改变多少?

这正是截图最上方公式的意思:

d SSRdb3\frac{d\,SSR}{db_3}

读作:The derivative of SSR with respect to b three.

意思是:SSR 对 b3b_3 的导数。

2. 为什么截图里 Blue 和 Orange 的导数都是 0?

这是你这张截图最值得理解的部分。

视频写的是:

ddb3(Blue+Orange+b3)=0+0+1\frac{d}{db_3}(\text{Blue}+\text{Orange}+b_3) =0+0+1

为什么?

因为这里计算的是 只改变 b3b_3,其他参数保持不变 的情况。

部分改变 b3b_3 时会怎样?导数
Blue不变0
Orange不变0
b3b_3增加 1 就增加 11

所以:

d Predicteddb3=1\frac{d\,Predicted}{db_3}=1

注意:Blue 和 Orange 的导数为 0,不代表它们的输出是 0,也不代表它们对预测没有贡献。

只是说,当我们单独调整 b3b_3 时,这两部分不会跟着变化。

3. 那为什么上面还有一个乘法公式?

截图上方是:

d SSRdb3=d SSRd Predicted×d Predicteddb3\frac{d\,SSR}{db_3} = \frac{d\,SSR}{d\,Predicted} \times \frac{d\,Predicted}{db_3}

这就是 Chain Rule(链式法则)。

可以把它拆成两个问题:

  1. 预测值变化,会让误差 SSR 变化多少?
  2. b3b_3 变化,会让预测值变化多少?

把这两个变化率相乘,就能得到:

改变 b3b_3,会让 SSR 变化多少。

这就是神经网络训练时需要的信息。

4. 用一个数字例子试试

尝试调整偏置 \(b_3\)
假设 Blue + Orange = 0.6,真实目标 = 1。
偏置 b₃
0.00
预测值
0.60
0.6 + b₃
误差平方
0.1600
(1 − 预测值)²
试着向右移动滑块,观察预测值如何变化、误差如何减小。

你会发现,Blue 和 Orange 一直不变,但改变 b3b_3 就能改变最终预测,也会影响误差。

这就是视频正在用导数分析的关系。

5. 你现在需要记住什么?

你之前已经理解了神经网络的前向计算,现在可以把这节内容连接起来:

  • Forward Propagation: 通过权重、偏置和激活函数计算预测值。
  • Loss(SSR): 衡量预测值与真实值的差距。
  • Derivative: 衡量一个参数发生微小变化时,误差如何变化。
  • Backpropagation: 使用链式法则计算各参数的梯度,帮助优化算法调整权重和偏置。

还有一点:截图里出现的 0+00+0 只是中间计算,完整结果应该是 0+0+1=10+0+1=1,因为 b3b_3 对自身的导数是 1。

我建议你暂时不用背这些数学公式。 对你目前建立 AI Literacy 的目标,更重要的是理解:神经网络不是随机地修改参数,而是利用梯度,有方向地降低预测误差。

你可以继续看视频,遇到下一步计算权重(Weights)的导数时,我们再把它和这里的偏置(Bias)比较,你会发现其实是同一套逻辑。

山谷与梯度下降

你说的这个让我想起了吴恩达在deep learning平台讲的课,用那种xyz轴山峰和谷底演示计算一步步优化接近准确值

对!你想起来的正是吴恩达课程里经典的 Gradient Descent(梯度下降) 演示。

而且它和你现在学习的 Backpropagation(反向传播) 是直接关联的。你其实已经接触过同一套训练机制,只是两门课从不同角度解释。

原回答这里有一张网络搜索的配图,无法还原。

两个概念是怎样连接的?

可以把神经网络训练想象成:在一座山上寻找最低的谷底。

  • 山的高度:Loss(损失),代表模型预测有多不准确。
  • 山上的位置:Weights 和 Biases(权重与偏置)的当前取值。
  • 山的坡度:Gradient(梯度),告诉我们往哪个方向调整参数,损失下降得最快。
  • 谷底:损失较小的位置,是优化希望到达的地方。

但这里有两个不同的工作:

概念负责什么山谷比喻
Backpropagation 反向传播计算每个参数对应的梯度测量当前位置的坡度
Gradient Descent 梯度下降根据梯度更新参数沿着下坡方向走一步

试着走向谷底

下面用一个简化的一维损失函数演示。你可以调整学习率(Learning Rate),观察每次更新的步长。

最低点Loss ↑参数 →
已更新次数
0
当前损失
16.0000
Learning Rate
0.20
这是简化的凸函数示例。实际神经网络的损失曲面可能非常复杂,存在多个局部低点。

再联系你刚刚看到的公式

截图中:

d SSRdb3\frac{d\,SSR}{db_3}

就是在计算:如果改变偏置 b3b_3,山的高度(SSR)会怎样变化?

反向传播算出这个梯度之后,梯度下降就可以利用它更新 b3b_3。

所以你可以把整个过程记成:

Forward → Loss → Backpropagation → Gradient Descent
计算预测 → 衡量误差 → 计算梯度 → 更新参数

这四步反复执行,就是神经网络训练的基本循环。

还有一个你可能会感兴趣的联系:你之前学习的 Cross-validation(交叉验证) 不负责让模型下山,而是帮助评估模型在未见数据上的表现,以及选择合适的超参数。

这样,你最近学到的神经网络、Bias、Derivative、Backpropagation、Gradient Descent 和 Cross-validation,其实已经开始形成一个完整的机器学习知识框架了。

权重的偏导数

第 37 条提问附带的截图

一点都看不懂

这张图确实突然变得很数学化了。但你先不用试图读懂所有符号。

整张图其实只在回答一个问题:神经网络应该怎样调整一个叫 w3w_3 的权重,才能让预测更准确?

这就是你刚刚提到的吴恩达课程里“沿着山坡寻找谷底”的一部分。

1. 先不看公式,理解它在干什么

假设我们有一个预测药物疗效的神经网络。

  • 实际结果(Observed):1,代表药物有效。
  • 模型预测(Predicted):0.6。
  • 预测误差:0.4。

现在我们想让预测从 0.6 更接近 1。

但神经网络里有很多可以调整的参数,例如 w3w_3、w4w_4、b3b_3。

问题是:调整 w3w_3 会让预测变好还是变坏?影响有多大?

这张图就是在计算这个。

2. 把截图中的公式拆成三部分

第一部分:我们最终想知道什么?
d SSRdw3\frac{d\,SSR}{dw_3} 意思是:如果稍微改变 w3w_3,预测误差 SSR 会怎样变化?

第二部分:误差对预测有多敏感?
d SSRd Predicted\frac{d\,SSR}{d\,Predicted} 意思是:预测值稍微变化,会让误差变化多少?

第三部分:预测对权重有多敏感?
d Predicteddw3=y1,i\frac{d\,Predicted}{dw_3}=y_{1,i} 意思是:w3w_3 稍微变化,会让预测值变化多少?
截图里的 y1,iy_{1,i} 是前一个神经元针对第 ii 个样本的输出。

然后,把第二部分和第三部分相乘,就得到第一部分。

这叫 Chain Rule(链式法则)。

3. 为什么要相乘?

用一个更简单的例子:

假设:

  • w3w_3 增加 1 个单位,会让预测值增加 0.5。
  • 预测值增加 1 个单位,在当前位置会让误差减少 0.8。

那么:

0.5×(−0.8)=−0.40.5\times(-0.8)=-0.4

结果为负,表示在当前位置,稍微增加 w3w_3,误差会下降。

这就是导数告诉我们的信息。

注意,这些数字只是为了帮助理解,不是截图中的实际计算结果。

4. 为什么截图最后出现了一个求和符号?

你看到的:

∑i=13\sum_{i=1}^{3}

意思就是:把三个训练样本分别算出来的结果加在一起。

因为视频里使用三个样本训练,所以需要考虑 w3w_3 对全部三个样本总误差的影响,而不只是一个样本。

因此截图最终得到:

d SSRdw3=∑i=13−2(Observedi−Predictedi)y1,i\frac{d\,SSR}{dw_3} = \sum_{i=1}^{3} -2(Observed_i-Predicted_i)y_{1,i}

你目前不需要记住这个公式,只要知道它计算的是一个权重对总误差的影响。

5. 和你之前看到的山谷有什么关系?

Gradient(梯度)
告诉我们当前坡度,以及往哪个方向调整参数可以降低误差。
Backpropagation(反向传播)
利用链式法则,高效计算神经网络中各个参数的梯度。
Gradient Descent(梯度下降)
利用算出来的梯度,更新参数,让误差逐步下降。

我对你当前学习阶段的建议

你现在看的 StatQuest 视频已经进入神经网络的数学推导部分,涉及偏导数、链式法则和求和符号。

如果你的目标是建立 AI Literacy,理解神经网络怎样学习、怎样训练,以及这些技术如何影响 AI 产品设计,目前不必掌握手工计算这些导数的能力。

但我想确认一个关键理解:

假设我们发现,增加 w3w_3 会让预测误差变大。

那么,为了降低误差,梯度下降通常应该怎么调整 w3w_3?

如果你能理解这道题,其实你就已经掌握了这段视频最重要的概念,而不需要先把所有数学符号都弄懂。

损失曲面

第 45 条提问附带的截图

这张图其实把你之前在 StatQuest 学到的 Weight、Bias、Backpropagation 和 Gradient Descent(梯度下降) 联系起来了。

你现在看到的是 3Blue1Brown 第二章里一个很重要的概念:

神经网络的学习过程,可以理解为不断调整参数,让预测错误越来越小。

1. What — 这张三维曲面是什么?

它叫做 Cost Surface(损失曲面),也可以理解为一张“错误程度的地形图”。

原回答这里有一张网络搜索的配图,无法还原。
三个坐标轴
X:一个模型参数(例如 Weight 1)
Y:另一个模型参数(例如 Weight 2)
Z:Cost(预测错误程度)
这是帮助理解的二维参数简化模型。实际神经网络可能有数百万甚至更多参数。

想象你站在山坡上:

  • 山顶:Cost 很高,模型预测不准确。
  • 山谷:Cost 较低,模型预测更准确。
  • 你的任务:找到尽可能低的位置。

2. How — 神经网络怎样走到谷底?

它使用 Gradient Descent(梯度下降)。

模拟梯度下降:逐步接近最低点
最低点CostWeight
迭代次数
0 / 12
Cost(示意)
16.000
这是简化的一维凸函数示例,展示梯度下降如何逐步减小 Cost;真实模型的曲面可能复杂得多。

每一步其实只需要理解三个动作:

  1. 计算坡度:当前位置往哪个方向走,Cost 会下降?这需要 Gradient(梯度)。
  2. 调整参数:改变 Weight 和 Bias。
  3. 重新计算 Cost:看看预测是否改善,然后重复。

3. Why — 为什么要这样做?

因为神经网络刚开始通常不知道什么样的 Weight 和 Bias 能够正确识别图像。

例如识别手写数字 3:

最初模型可能错误地预测为 8。训练时,它会比较预测结果和正确答案,计算 Cost,然后根据梯度调整参数。

重复许多次后,模型通常就能更准确地识别数字。

这里还有一个你之前不太理解的区别:

概念负责什么
Forward Propagation根据当前参数计算预测结果
Cost Function衡量预测有多错误
Backpropagation高效计算 Cost 对各个参数的梯度
Gradient Descent利用梯度更新参数,尝试降低 Cost

Backpropagation 负责告诉模型参数应该如何调整,Gradient Descent 负责实际执行调整。

这也是为什么你之前看到的复杂偏导数公式,与这张直观的山谷图其实是在讲同一套训练过程。

你现在不必掌握那些偏导数的计算。对于建立 AI Literacy,现阶段最重要的是理解:

神经网络不是直接被告知每个 Weight 应该是多少,而是通过预测、计算误差、求梯度和更新参数,逐步学习合适的参数。

另外,这张图中的谷底不一定只有一个;实际神经网络的高维损失曲面非常复杂,梯度下降也不保证找到全局最低点。

负梯度向量

第 53 条提问附带的截图

啥意思

这张图其实是在解释你之前看到的 Gradient Descent(梯度下降)到底如何调整神经网络中的 Weight(权重)。

之前你看到的是一座三维山谷,现在视频把山谷上的“下坡方向”变成了一长串数字。

我们按照 What → How → Why 来理解。

1. What — 图中的两组数字是什么?

Weight Vector
W⃗\vec Ww₀w₁w₂⋮w₁₃,₀₀₂
模型当前的所有权重
Negative Gradient
−∇C(W⃗)-\nabla C(\vec W)+0.31+0.03−1.25⋮+0.16
每个权重应该调整的方向
  • 上面那组 WW:神经网络中当前的权重参数。
  • 下面那组 −∇C(W)-\nabla C(W):负梯度(Negative Gradient),告诉我们怎样调整各个权重,才能在局部降低 Cost。

你看到的 13,002,表示这个示例中有大量需要调整的权重,而不是只有两三个。

2. How — 这些数字怎样改变 Weight?

我们用图中三个数值演示。

模拟一次梯度下降
假设三个 Weight 当前都是 1.00,使用截图中的负梯度方向。
权重
负梯度
更新后
w₀
+0.31
1.031
w₁
+0.03
1.003
w₂
-1.25
0.875
Learning Rate(学习率)
0.10
Wnew=Wold+η(−∇C)W_{\text{new}}=W_{\text{old}}+\eta(-\nabla C)
η 是学习率,控制每次调整的幅度。拖动滑块,观察同样的梯度如何产生不同的更新结果。

例如:

  • +0.31:第一个权重应该增加。
  • +0.03:第二个权重也应该增加,但方向上的调整幅度较小。
  • −1.25:第三个权重应该减小。

注意,截图中的 +0.31 并不是说 Weight 必须直接增加 0.31,还要乘上 Learning Rate。

3. Why — 为什么需要一长串数字?

还记得之前的山谷图吗?

如果只有两个 Weight,我们可以画出一张三维曲面,直观地看到往哪里走。

但是如果有 13,002 个 Weight,就相当于在 13,002 维的参数空间中寻找降低 Cost 的方向。

人类无法直接画出这样的空间,但数学可以计算。

所以这组负梯度向量,本质上就是:

一份包含 13,002 个调整方向和相对幅度的清单。

4. 它和 Backpropagation 的关系

这里是最重要的连接:

Backpropagation
计算每个 Weight 对 Cost 的梯度
Negative Gradient
得到截图中这组正负数字
Gradient Descent
按照负梯度方向和学习率更新 Weight

这也解释了你前面一直不理解的偏导数公式:它们是在计算这些梯度分量,而不是直接计算神经元的 Activation。

一句话总结:之前的山谷图告诉你神经网络为什么要往下走;这张图告诉你,当神经网络有成千上万个参数时,怎样用一组数字确定往哪个方向走。

你现在不需要记住 ∇ 的数学运算,只要知道它叫 Gradient(梯度),表示 Cost 对各个参数变化的敏感程度,就足够继续看这一章了。

On this page