微积分与求导¶
训练神经网络 = 算损失对参数的梯度,再沿负梯度更新。本节只保留深度学习真正用到的微积分。
导数:变化有多快¶
一元函数 \(f(x)\) 在 \(x\) 处的导数:
\[
f'(x) = \lim_{h \to 0} \frac{f(x+h) - f(x)}{h}
\]
常用导数(建议背熟):
| 函数 | 导数 |
|---|---|
| \(x^n\) | \(n x^{n-1}\) |
| \(e^x\) | \(e^x\) |
| \(\ln x\) | \(1/x\) |
| \(\sigma(x)=\frac{1}{1+e^{-x}}\) | \(\sigma(x)(1-\sigma(x))\) |
| \(\mathrm{ReLU}(x)=\max(0,x)\) | \(1\)(\(x>0\)),\(0\)(\(x<0\)) |
偏导数与梯度¶
多变量函数 \(f(x_1, x_2, \ldots, x_n)\) 对某一个变量的导数叫偏导,记作 \(\partial f / \partial x_i\)。
把所有偏导排成向量,就是梯度:
\[
\nabla f = \left( \frac{\partial f}{\partial x_1}, \ldots, \frac{\partial f}{\partial x_n} \right)
\]
梯度指向函数上升最快的方向;训练时沿 \(-\nabla f\) 走,让损失下降。
链式法则(重中之重)¶
若 \(y = f(u)\),\(u = g(x)\),则:
\[
\frac{dy}{dx} = \frac{dy}{du} \cdot \frac{du}{dx}
\]
多层网络就是一层套一层的复合函数。反向传播 = 从外到内反复使用链式法则。
一个最小例子¶
\[
z = (wx + b)^2
\]
令 \(u = wx + b\),则 \(z = u^2\)。
\[
\frac{\partial z}{\partial w} = \frac{\partial z}{\partial u} \cdot \frac{\partial u}{\partial w} = 2u \cdot x = 2(wx+b)x
\]
向量/矩阵求导直觉¶
- 标量对向量的梯度形状与该向量相同。
- 线性层 \(y = Wx\) 中,上游传来的 \(\partial L/\partial y\) 会通过 \(W^\top\) 传回 \(x\),通过外积更新 \(W\)。
- 框架用自动微分帮你算;你要理解的是「为什么能算、形状怎么对」。
\[
\frac{\partial L}{\partial x} = W^\top \frac{\partial L}{\partial y}, \quad
\frac{\partial L}{\partial W} = \frac{\partial L}{\partial y}\, x^\top
\]
和深度学习的对应关系¶
| 概念 | 作用 |
|---|---|
| 梯度 | 参数更新方向 |
| 链式法则 | 反向传播的数学本质 |
| 自动微分 | 框架替你展开计算图并回传 |