🧮 偏导数:直观理解与核心用法
偏导数是多变量函数里的 “变化率”,它的核心思想是:只看一个变量的变化对函数值的影响,同时把其他变量都固定住。
1. 从普通导数到偏导数
- 普通导数:适用于单变量函数,比如 y=f(x),导数 dxdy 表示当 x 变化时,y 变化的快慢。
- 偏导数:适用于多变量函数,比如 z=f(x,y),偏导数 ∂x∂z 表示:固定 y 不变时,x 变化一点点会导致 z 变化多少。
生活例子:
假设你的成绩 z 由学习时间 x 和睡眠时长 y 共同决定:z=f(x,y)。
- ∂x∂z:固定睡眠时长 y,看学习时间 x 增加 1 小时,成绩 z 能提升多少。
- ∂y∂z:固定学习时间 x,看睡眠时长 y 增加 1 小时,成绩 z 能提升多少。
2. 数学定义与计算
对于函数 z=f(x,y):
∂x∂z=limΔx→0Δxf(x+Δx,y)−f(x,y)
∂y∂z=limΔy→0Δyf(x,y+Δy)−f(x,y)
计算规则:
计算 ∂x∂z 时,把 y 当成常数,只对 x 求导;
计算 ∂y∂z 时,把 x 当成常数,只对 y 求导。
例子:
z=x2+3xy+y3
-
对 x 求偏导(把 y 看作常数):
∂x∂z=2x+3y
-
对 y 求偏导(把 x 看作常数):
∂y∂z=3x+3y2
3. 偏导数在深度学习里的作用
在神经网络中,损失函数 Q(w) 是所有权重 w1,w2,…,wn 的函数。
- 偏导数 ∂wi∂Q 表示:固定其他所有权重不变时,权重 wi 变化一点点会导致损失 Q 变化多少。
- 这个值的正负告诉我们:增大 wi 会让损失变大还是变小;绝对值大小告诉我们影响的程度。
- 所有偏导数组成的向量,就是梯度 ∇Q(w)。
反向传播的本质:
就是用链式法则,逐层计算损失函数对每一个权重的偏导数,最终得到整个梯度向量。
4. 关键区别
| 普通导数 | 偏导数 |
|---|---|
| 单变量函数 | 多变量函数 |
| 符号:dxdy | 符号:∂x∂z |
| 描述一个变量的变化率 | 描述 “一个变量变化、其他固定” 时的变化率 |
🧠 示例:简单的两层神经网络
我们用一个非常直观的例子来拆解反向传播的每一步。
1. 网络结构
- 输入:x=2
- 隐藏层权重:w1=0.5,偏置:b1=0.1
- 激活函数:sigmoid σ(z)=1+e−z1
- 输出层权重:w2=0.3
- 真实标签:y=1
2. 前向传播(计算预测值与损失)
-
隐藏层输入:
z=w1⋅x+b1=0.5×2+0.1=1.1
-
隐藏层输出(激活后):
a=σ(z)=1+e−1.11≈0.7503
-
最终预测值:
y^=w2⋅a=0.3×0.7503≈0.2251
-
损失函数(均方误差):
Q=(y^−y)2=(0.2251−1)2≈0.6006
3. 反向传播(计算每个权重的偏导数)
我们的目标是求出 ∂w2∂Q 和 ∂w1∂Q,这就是损失对权重的偏导数。
步骤 1:计算损失对输出层权重 w2 的偏导数
∂w2∂Q=∂y∂Q⋅∂w2∂y
-
∂y∂Q=2(y−y)≈2(0.2251−1)=−1.5498
-
∂w2∂y^=a≈0.7503
-
所以:
∂w2∂Q≈−1.5498×0.7503≈−1.1628
步骤 2:计算损失对隐藏层权重 w1 的偏导数
这一步需要多层链式法则:
∂w1∂Q=∂y∂Q⋅∂a∂y⋅∂z∂a⋅∂w1∂z
- ∂y^∂Q≈−1.5498(已算)
- ∂a∂y^=w2=0.3
- ∂z∂a=σ(z)(1−σ(z))≈0.7503×(1−0.7503)≈0.1873
- ∂w1∂z=x=2
代入计算:
∂w1∂Q≈−1.5498×0.3×0.1873×2≈−0.1764
4. 梯度与权重更新
现在我们得到了梯度向量:
∇Q=[∂w1∂Q,∂w2∂Q]≈[−0.1764,−1.1628]
假设学习率 η=0.1,用梯度下降公式更新权重:
w1new=w1−η⋅∂w1∂Q≈0.5−0.1×(−0.1764)=0.5176
w2new=w2−η⋅∂w2∂Q≈0.3−0.1×(−1.1628)=0.4163
嘿嘿,还是没看懂
