3Blue1Brown 微积分本质
直观理解导数与积分
一句话定义:微积分是研究变化率(微分)和累积量(积分)的数学。在 AI 中,我们主要用**微分(求导)**来告诉模型如何调整参数以降低误差。
在 AI 训练中,我们想要找到轨道的最低点(最小 Loss)。导数就是那个告诉我们”前面是上坡还是下坡”的仪表盘。
拖动曲线上的点,观察切线斜率(即导数)如何随位置变化。
💡 拖动曲线上的点,观察切线斜率(导数)的变化
观察多项式如何逐项逼近原函数,理解函数近似的本质。
💡 增加项数,观察红色近似曲线如何逼近蓝色原函数
通过黎曼和理解定积分,观察矩形如何逼近曲线下面积。
💡 增加矩形数量,观察绿色面积和如何逼近曲线下方真实面积
神经网络的目标是让 Loss 最小化。 Loss 是关于参数 的函数 。 为了让 变小,我们需要知道调整 的方向。 导数 告诉了我们,如果 增加一点点, 会增加还是减少,以及变化多快。
没有微积分,我们就只能盲目猜测参数,那对于亿级参数的模型来说是不可能的。
衡量 发生微小变化时, 变化的比例。
反向传播的基石。如果 ,即 。
其中 。
就像传声筒:A 告诉 B,B 告诉 C。A 对 C 的影响 = (A 对 B 的影响) × (B 对 C 的影响)。
选择不同的复合函数,观察链式法则如何分解导数计算。
💡 反向传播就是对整个神经网络应用链式法则,从输出层逐层传递梯度
在 3D Loss 曲面上观察梯度下降过程,理解鞍点和局部最小值问题。
PyTorch 的核心功能 autograd 就是自动计算微积分。
import torch
# 定义变量 x = 2.0,需要求导x = torch.tensor(2.0, requires_grad=True)
# 定义函数 y = x^3 + 2x# 当 x=2 时,y = 8 + 4 = 12y = x**3 + 2*x
# 手动推导导数: y' = 3x^2 + 2# 当 x=2 时,y' = 3(4) + 2 = 14
# 自动反向传播计算导数y.backward()
# 查看 x 的梯度 (即 dy/dx)print(f"x 的梯度: {x.grad.item()}") # 应该是 14.0import numpy as np
def f(x): return x**3 + 2*x
x = 2.0delta = 0.0001
# 导数定义:(f(x+h) - f(x)) / hderivative = (f(x + delta) - f(x)) / delta
print(f"数值近似导数: {derivative:.4f}") # 接近 14.0使用 Desmos 探索导数和切线的关系,拖动滑块观察切线如何随着点移动而变化。