文章

dL/dz 的推导

dL/dz 的推导

🎯 目标

  推导在二分类逻辑回归(使用 sigmoid 激活函数 + 交叉熵损失)中,损失函数 $L$ 对线性输出 $z$ 的导数:

\[\frac{dL}{dz} = a - y\]

  其中:

  • $a = \sigma(z)$ 是 sigmoid 激活输出,
  • $y \in {0,1}$ 是真实标签,
  • $L = -\big[y \log(a) + (1 - y)\log(1 - a)\big]$ 是二元交叉熵损失。

🔗 推导步骤(使用链式法则)

  根据链式法则:

\[\frac{dL}{dz} = \frac{dL}{da} \cdot \frac{da}{dz}\]

第一步:计算 $\frac{dL}{da}$

  损失函数:

\[L = -\big( y \log a + (1 - y) \log(1 - a) \big)\]

  对 $a$ 求导:

\[\frac{dL}{da} = -\left( \frac{y}{a} - \frac{1 - y}{1 - a} \right) = \frac{-y}{a} + \frac{1 - y}{1 - a}\]

  通分后化简:

\[\frac{dL}{da} = \frac{a - y}{a(1 - a)}\]

第二步:计算 $\frac{da}{dz}$

  因为 $a = \sigma(z)$,而 sigmoid 函数的导数为:

\[\frac{d}{dz} \sigma(z) = \sigma(z)(1 - \sigma(z)) = a(1 - a)\]

  所以:

\[\frac{da}{dz} = a(1 - a)\]

第三步:相乘得到 $\frac{dL}{dz}$

\[\frac{dL}{dz} = \frac{a - y}{a(1 - a)} \cdot a(1 - a) = a - y\]

  ✅ 最终结果:

\[\boxed{\frac{dL}{dz} = a - y}\]

💡 补充说明

  • 在 Andrew Ng 的课程中,常将 $\frac{dL}{dz}$ 简记为 dz,因此你会看到代码或笔记中写成 dz = a - y
  • 这个简洁的结果是 sigmoid + 交叉熵损失 组合的一个重要优点——梯度形式简单,训练更稳定。
本文由作者按照 CC BY 4.0 进行授权