Bootstrap

神经网络反向传播交叉熵 计算损失函数对隐藏层加权输入Z1的导数

本文是交叉熵损失函数为代表的两层神经网络的反向传播量化求导计算公式中的一个公式,单独拿出来做一下解释说明。


公式 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} Z1L=a2LZ2a2a1Z2Z1a1=(a2y)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} a2L

根据公式 8-13,损失函数对输出层激活值 a 2 a_2 a2 的导数为:
∂ L ∂ a 2 = a 2 − y \frac{\partial L}{\partial a_2} = a_2 - y a2L=a2y
这是输出层的误差,表示模型预测值与真实标签之间的差异。

第二步:输出层激活值 a 2 a_2 a2 对加权和 Z 2 Z_2 Z2 的导数 ∂ a 2 ∂ Z 2 \frac{\partial a_2}{\partial Z_2} Z2a2

输出层的激活值 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) Z2a2=σ(Z2)=a2(1a2)

第三步:输出层加权和 Z 2 Z_2 Z2 对隐藏层激活值 a 1 a_1 a1 的导数 ∂ Z 2 ∂ a 1 \frac{\partial Z_2}{\partial a_1} a1Z2

输出层加权和 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 a1Z2=w2

这是线性组合的基本导数结果,表示输出层加权和 Z 2 Z_2 Z2 对隐藏层激活值 a 1 a_1 a1 的变化率等于连接两层的权重 w 2 w_2 w2

第四步:隐藏层激活值 a 1 a_1 a1 对加权输入 Z 1 Z_1 Z1 的导数 ∂ a 1 ∂ Z 1 \frac{\partial a_1}{\partial Z_1} Z1a1

隐藏层的激活值 a 1 a_1 a1 是通过激活函数 σ ( Z 1 ) \sigma(Z_1) σ(Z1) 计算得到的。因此,隐藏层激活值 a 1 a_1 a1 对加权输入 Z 1 Z_1 Z1 的导数为:
∂ a 1 ∂ Z 1 = σ ′ ( Z 1 ) \frac{\partial a_1}{\partial Z_1} = \sigma'(Z_1) Z1a1=σ(Z1)

这表示激活函数对输入 Z 1 Z_1 Z1 的变化率。

总结链式法则:

根据链式法则,我们可以将损失函数对隐藏层加权输入 Z 1 Z_1 Z1 的导数写为:
∂ L ∂ Z 1 = ∂ L ∂ a 2 ⋅ ∂ a 2 ∂ Z 2 ⋅ ∂ Z 2 ∂ a 1 ⋅ ∂ a 1 ∂ Z 1 \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} Z1L=a2LZ2a2a1Z2Z1a1

将各部分结果代入上式:
∂ L ∂ Z 1 = ( a 2 − y ) ⋅ w 2 ⋅ σ ′ ( Z 1 ) \frac{\partial L}{\partial Z_1} = (a_2 - y) \cdot w_2 \cdot \sigma'(Z_1) Z1L=(a2y)w2σ(Z1)

这就是公式 8-17 的推导结果。

3. 公式的含义

公式 8-17 表示的是损失函数对隐藏层加权输入 Z 1 Z_1 Z1 的导数。它表明,隐藏层的梯度由以下几部分决定:

  • 输出层的误差 a 2 − y a_2 - y a2y:这是模型预测结果与真实标签之间的差异,直接决定了模型的改进方向。
  • 输出层的权重 w 2 w_2 w2:这是将隐藏层输出传递到输出层的权重,决定了隐藏层对输出层的影响力。
  • 隐藏层激活函数的导数 σ ′ ( Z 1 ) \sigma'(Z_1) σ(Z1):这是激活函数的变化率,反映了隐藏层的输出是如何受到输入变化的影响。

通过这个公式,我们可以知道隐藏层的梯度是如何由输出层的误差反向传播过来的。这个梯度将用于调整隐藏层的权重和偏置,从而使模型的损失函数逐渐减小。

4. 直观理解

隐藏层梯度的计算是反向传播的一个核心步骤。我们通过公式 8-17,将输出层的误差通过输出层的权重传递给隐藏层,然后再乘以隐藏层激活函数的导数,以确定隐藏层的输入应该如何调整。

  • 如果输出层的误差较大,即 a 2 − y a_2 - y a2y 较大,说明模型的预测与真实标签之间的差异较大,隐藏层的输入需要较大调整。
  • 如果输出层的误差较小,即 a 2 − y a_2 - y a2y 较小,说明模型的预测接近真实值,隐藏层的输入只需要微小调整。
  • 激活函数的导数 σ ′ ( Z 1 ) \sigma'(Z_1) σ(Z1) 起到了缩放因子的作用,控制隐藏层的输出对输入变化的敏感性。

5. 在反向传播中的作用

公式 8-17 是反向传播中的关键一步。反向传播的目的是通过损失函数对每个参数的导数(梯度)来更新模型参数。公式 8-17 的结果将用于计算隐藏层的权重和偏置的梯度,从而逐步更新这些参数,使模型的损失函数降低。

6. 总结

公式 8-17 给出了损失函数对隐藏层输入 Z 1 Z_1 Z1 的导数,它是通过链式法则从输出层的误差反向传播到隐藏层的。这个梯度结合了输出层的误差、输出层的权重以及隐藏层激活函数的导数,是反向传播过程中非常重要的一步。通过这个梯度,模型可以逐步调整隐藏层的输入,从而优化模型的整体表现。

;