推导神经网络前向后向传播算法的优化迭代公式

目录

[1. 定义符号](#1. 定义符号)

[2. 前向传播 (Forward Propagation)](#2. 前向传播 (Forward Propagation))

[3. 后向传播 (Backward Propagation)](#3. 后向传播 (Backward Propagation))

[3.1 关键:计算误差项](#3.1 关键:计算误差项)

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

[4.1 随机梯度下降 (SGD)](#4.1 随机梯度下降 (SGD))

[4.2 Momentum 动量法](#4.2 Momentum 动量法)

[4.3 Adam (Adaptive Moment Estimation)](#4.3 Adam (Adaptive Moment Estimation))


1. 定义符号

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

  • :神经网络的总层数。

  • :表示网络的第 层 ()。

  • :第 层的权重矩阵。其维度为,其中 是第 层的神经元数量。

  • :第层的偏置向量。其维度为 。

  • :第 层神经元的线性输入(加权输入和)。

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

  • :第 层的激活输出,即 。是网络的输入。

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

  • :神经网络的预测输出,即 。

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

  • :学习率 (Learning Rate)。

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

2. 前向传播 (Forward Propagation)

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

  • 计算线性输入:

  • 计算激活输出:

这个过程从 开始,重复计算直到最后一层 ,得到最终的预测结果。

3. 后向传播 (Backward Propagation)

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

3.1 关键:计算误差项

我们定义误差项 为损失函数对第 层线性输入的偏导数:

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

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

  • 其中是输出层激活函数在处的导数。

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

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

  • 步骤 3:计算权重梯度

  • 步骤 4:计算偏置梯度

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

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

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

4.1 随机梯度下降 (SGD)

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

4.2 Momentum 动量法

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

  • 初始化 :

  • 计算动量:

  • 更新参数:

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

4.3 Adam (Adaptive Moment Estimation)

Adam 结合了 Momentum 和 RMSProp 的思想。

  • 初始化 :一阶矩估计 和二阶矩估计 为 0,迭代次数 。

  • 在每次迭代中 ():

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

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

    3. 偏差修正 (Bias Correction):

    4. 更新参数:

    其中 (通常为 0.9), (通常为 0.999) 是超参数,是一个极小值(如 )以防止分母为零。

相关推荐
zyl76515 小时前
FlashAttention 详解:从 GPU 硬件、普通 Attention 到分块计算与 Online Softmax
算法
爱读书的小胖19 小时前
LeetCode 122:买卖股票的最佳时机 II(C)解题分析
算法
结局无敌19 小时前
React Native for OpenHarmony 实战:三方库 react-native-modal-dialog 的鸿蒙化适配指南
深度学习·算法·react native·react.js·harmonyos
在所不辞兄19 小时前
为什么神经网络对对抗扰动和分布偏移往往比较脆弱,而人类感知相对更鲁棒?
人工智能·深度学习·神经网络·机器学习
OPEN-F19 小时前
ROS2系列教程:上位机建图与导航(原理综合)
算法·机器人
weixin_3077791319 小时前
C++代码实现MATLAB中的fitrtree函数功能
开发语言·c++·算法·matlab
tomwang032220 小时前
路径优化建模、优化算法分类及工程化小结
算法·数学建模·分类
小羊没烦恼!20 小时前
Ajax与JSON的一些总结
android·java·前端·数据库·mysql·算法·okhttp
szxinmai主板定制专家20 小时前
储能 EMS、微网控制器选型:RK3588、RK3576、RK3568+FPGA 怎么选?多网、多 CAN、EMC 设计权衡
人工智能·深度学习·机器学习·fpga开发·工业网关·rk3576·电力网关
2501_9269783320 小时前
人机通信协议--人和机器之间的交互想象
人工智能·经验分享·算法·ai写作