本文是交叉熵损失函数为代表的两层神经网络的反向传播量化求导计算公式中的一个公式,单独拿出来做一下解释说明。
公式 8-17 是反向传播过程中,计算损失函数 L L L 对隐藏层加权输入 Z 1 Z_1 Z1 的导数。这个公式是通过链式法则逐步求导,最终将损失函数对隐藏层激活值、输出层误差等因素关联起来。接下来,我将详细解释这个公式的推导过程以及每个部分的含义。
公式 8-17 的表达式:
∂ L ∂ Z 1 = ∂ L ∂ a 2 ⋅ ∂ a 2 ∂ Z 2 ⋅ ∂ Z 2 ∂ a 1 ⋅ ∂ a 1 ∂ Z 1 = ( a 2 − y ) w 2 σ ′ ( Z 1 ) (8-17) \frac{\partial L}{\partial Z_1} = \frac{\partial L}{\partial a_2} \cdot \frac{\partial a_2}{\partial Z_2} \cdot \frac{\partial Z_2}{\partial a_1} \cdot \frac{\partial a_1}{\partial Z_1} = (a_2 - y) w_2 \sigma'(Z_1) \tag{8-17} ∂Z1∂L=∂a2∂L⋅∂Z2∂a2⋅∂a1∂Z2⋅∂Z1∂a1=(a2−y)w2σ′(Z1)(8-17)
1. 符号解释
- L L L:损失函数,通常为交叉熵损失函数。
- Z 1 Z_1 Z1:隐藏层神经元的线性组合,即隐藏层神经元在应用激活函数前的输入值。
- a 1 a_1 a1:隐藏层的激活值,通过激活函数 σ ( Z 1 ) \sigma(Z_1) σ(Z1) 计算得到。
- Z 2 Z_2 Z2:输出层的加权和,即输出层神经元在应用激活函数之前的输入值。
- a 2 a_2 a2:输出层的激活值,通过激活函数(如 sigmoid)计算得到的预测值。
- w 2 w_2 w2:连接隐藏层和输出层的权重。
- y y y:真实标签。
- σ ′ ( Z 1 ) \sigma'(Z_1) σ′(Z1):隐藏层激活函数 σ ( Z 1 ) \sigma(Z_1) σ(Z1) 的导数,表示激活函数对加权输入 Z 1 Z_1 Z1 的变化率。
2. 推导思路:链式法则的应用
公式 8-17 通过链式法则逐层计算损失函数 L L L 对隐藏层加权输入 Z 1 Z_1 Z1 的导数。为了推导这一公式,我们需要考虑损失函数是如何通过多个中间变量传递到隐藏层的输入 Z 1 Z_1 Z1 的。
第一步:损失函数对输出层激活值的导数 ∂ L ∂ a 2 \frac{\partial L}{\partial a_2} ∂a2∂L
根据公式 8-13,损失函数对输出层激活值
a
2
a_2
a2 的导数为:
∂
L
∂
a
2
=
a
2
−
y
\frac{\partial L}{\partial a_2} = a_2 - y
∂a2∂L=a2−y
这是输出层的误差,表示模型预测值与真实标签之间的差异。
第二步:输出层激活值 a 2 a_2 a2 对加权和 Z 2 Z_2 Z2 的导数 ∂ a 2 ∂ Z 2 \frac{\partial a_2}{\partial Z_2} ∂Z2∂a2
输出层的激活值
a
2
a_2
a2 是通过激活函数(例如 sigmoid 函数)从加权和
Z
2
Z_2
Z2 中计算得到的。sigmoid 激活函数的导数为:
∂
a
2
∂
Z
2
=
σ
′
(
Z
2
)
=
a
2
(
1
−
a
2
)
\frac{\partial a_2}{\partial Z_2} = \sigma'(Z_2) = a_2(1 - a_2)
∂Z2∂a2=σ′(Z2)=a2(1−a2)
第三步:输出层加权和 Z 2 Z_2 Z2 对隐藏层激活值 a 1 a_1 a1 的导数 ∂ Z 2 ∂ a 1 \frac{\partial Z_2}{\partial a_1} ∂a1∂Z2
输出层加权和
Z
2
Z_2
Z2 是通过隐藏层激活值
a
1
a_1
a1 及权重
w
2
w_2
w2 线性组合得到的,因此:
∂
Z
2
∂
a
1
=
w
2
\frac{\partial Z_2}{\partial a_1} = w_2
∂a1∂Z2=