目录

1. 定义符号

2. 前向传播 (Forward Propagation)

3. 后向传播 (Backward Propagation)

3.1 关键:计算误差项

4. 优化迭代公式 (Optimization Algorithms)

4.1 随机梯度下降 (SGD)

4.2 Momentum 动量法

4.3 Adam (Adaptive Moment Estimation)


1. 定义符号

在推导之前,首先定义网络中使用的符号:

  • $L$:神经网络的总层数。

  • $l$:表示网络的第 $l$ 层 ($l=1, 2, ..., L$)。

  • $W^{[l]}$:第 $l$ 层的权重矩阵。其维度为$(n^{[l]}, n^{[l-1]})$,其中 $n^{[l]}$ 是第 $l$ 层的神经元数量。

  • $b^{[l]}$:第$l$层的偏置向量。其维度为 $(n^{[l]}, 1)$

  • $z^{[l]}$:第 $l$ 层神经元的线性输入(加权输入和)。

  • $\sigma$:第$l$层的激活函数 (如 Sigmoid, ReLU, Tanh)。

  • $a^{[l]}$:第 $l$层的激活输出,即 $a^{[l]} = \sigma(z^{[l]})$$a^{[0]}$是网络的输入。

  • $y$:训练样本的真实标签。

  • $\hat{y}$:神经网络的预测输出,即 $a^{[L]}$

  • $J$:损失函数 (Cost Function),例如均方误差或交叉熵。

  • $\alpha$:学习率 (Learning Rate)。

  • $\odot$:元素对应相乘 (Hadamard Product)。

2. 前向传播 (Forward Propagation)

前向传播的目标是根据输入计算出每一层的输出,直到最终得到预测值。对于网络中的第 $l$ 层,其计算过程如下:

  • 计算线性输入:$z^{[l]} = W^{[l]}a^{[l-1]} + b^{[l]}$

  • 计算激活输出:$a^{[l]} = \sigma(z^{[l]})$

这个过程从 $l=1$开始,重复计算直到最后一层 $L$,得到最终的预测结果$\hat{y} = a^{[L]}$

3. 后向传播 (Backward Propagation)

后向传播的核心是利用链式法则 (Chain Rule),从最后一层开始逐层反向计算损失函数对每一层参数 ($W$$b$) 的梯度(偏导数)。

3.1 关键:计算误差项

我们定义误差项 $\delta^{[l]}$为损失函数对第$l$ 层线性输入的偏导数:$\delta^{[l]} = \frac{\partial J}{\partial z^{[l]}}$

  • 步骤 1:计算输出层的误差

    对于输出层 $L$,其误差项 $\delta^{[L]}$可以直接计算。它等于损失函数对预测值的偏导与激活函数对线性输入的偏导的乘积。

  • $\delta^{[L]} = \nabla_{a}J \odot \sigma'(z^{[L]})$

    其中$\sigma'$是输出层激活函数在$z^{[L]}$处的导数。

  • 步骤 2:反向传播误差 (计算隐藏层误差)

    对于任意隐藏层 $l$(从 $L-1$ 到 1),其误差项可以通过下一层($l+1$层)的误差项推导出来:

    $\delta^{[l]} = ((W^{[l+1]})^T \delta^{[l+1]}) \odot \sigma'(z^{[l]})$

  • 步骤 3:计算权重梯度

    $\frac{\partial J}{\partial W^{[l]}} = \delta^{[l]} (a^{[l-1]})^T$

  • 步骤 4:计算偏置梯度

    $\frac{\partial J}{\partial b^{[l]}} = \delta^{[l]}$

    注:在实践中,通常会对一个 mini-batch 中所有样本的梯度求平均。

4. 优化迭代公式 (Optimization Algorithms)

计算出梯度后,使用优化算法来更新网络的权重和偏置,以最小化损失函数。

4.1 随机梯度下降 (SGD)

这是最基础的优化算法。更新规则是在梯度的反方向上调整参数:

$W^{[l]} = W^{[l]} - \alpha \frac{\partial J}{\partial W^{[l]}}$

$b^{[l]} = b^{[l]} - \alpha \frac{\partial J}{\partial b^{[l]}}$

4.2 Momentum 动量法

动量法引入了一个速度向量 $v$,用于累积历史梯度,从而加速收敛并减少震荡。

  • 初始化$v_{dW} = 0, v_{db} = 0$

  • 计算动量:

    $v_{dW^{[l]}} = \beta v_{dW^{[l]}} + (1 - \beta) dW^{[l]}$

    $v_{db^{[l]}} = \beta v_{db^{[l]}} + (1 - \beta) db^{[l]}$

  • 更新参数:

    $W^{[l]} = W^{[l]} - \alpha v_{dW^{[l]}}$

    $b^{[l]} = b^{[l]} - \alpha v_{db^{[l]}}$

    其中 $\beta$ 是动量超参数,通常取 0.9。

4.3 Adam (Adaptive Moment Estimation)

Adam 结合了 Momentum 和 RMSProp 的思想。

  • 初始化:一阶矩估计 $m$和二阶矩估计 $v$为 0,迭代次数 $t=0$

  • 在每次迭代中 ($t = t + 1$):

    1. 计算一阶矩估计 (Momentum):

      $m_t = \beta_1 m_{t-1} + (1 - \beta_1) g_t$

    2. 计算二阶矩估计 (RMSProp):

      $v_t = \beta_2 v_{t-1} + (1 - \beta_2) g_t^2$

    3. 偏差修正 (Bias Correction):

      $\hat{m}_t = \frac{m_t}{1 - \beta_1^t}$

      $\hat{v}_t = \frac{v_t}{1 - \beta_2^t}$

    4. 更新参数:

      $\theta_{t+1} = \theta_t - \frac{\alpha}{\sqrt{\hat{v}_t} + \epsilon} \hat{m}_t$

    其中 $\beta_1$(通常为 0.9), $\beta_2$ (通常为 0.999) 是超参数,$\epsilon$是一个极小值(如 $10^{-8}$)以防止分母为零。

Logo

脑启社区是一个专注类脑智能领域的开发者社区。欢迎加入社区,共建类脑智能生态。社区为开发者提供了丰富的开源类脑工具软件、类脑算法模型及数据集、类脑知识库、类脑技术培训课程以及类脑应用案例等资源。

更多推荐