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 + 交叉熵损失 组合的一个重要优点——梯度形式简单,训练更稳定。