偏导数

偏导数

🧮 偏导数:直观理解与核心用法

偏导数是多变量函数里的 “变化率”,它的核心思想是:只看一个变量的变化对函数值的影响,同时把其他变量都固定住


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. 前向传播(计算预测值与损失)

  1. 隐藏层输入

    z=w1​⋅x+b1​=0.5×2+0.1=1.1

  2. 隐藏层输出(激活后)

    a=σ(z)=1+e−1.11​≈0.7503

  3. 最终预测值

    y^​=w2​⋅a=0.3×0.7503≈0.2251

  4. 损失函数(均方误差)

    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

嘿嘿,还是没看懂