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

目录

[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) 是超参数,是一个极小值(如 )以防止分母为零。

相关推荐
2401_841495645 小时前
【LeetCode刷题】删除链表的倒数第N个结点
数据结构·python·算法·leetcode·链表·遍历·双指针
岑梓铭5 小时前
YOLO11深度学习一模型很优秀还是漏检怎么办,预测解决
人工智能·笔记·深度学习·神经网络·yolo·计算机视觉
叫我:松哥5 小时前
基于YOLO深度学习算法的人群密集监测与统计分析预警系统,实现人群密集度的实时监测、智能分析和预警功能,支持图片和视频流两种输入方式
人工智能·深度学习·算法·yolo·机器学习·数据分析·flask
你撅嘴真丑5 小时前
STL练习
开发语言·c++·算法
苦藤新鸡5 小时前
28.两数相加,进位制
数据结构·算法·链表·力扣
Lips6115 小时前
第七章 贝叶斯分类器
人工智能·算法·机器学习
郝学胜-神的一滴5 小时前
机器学习特征选择:深入理解移除低方差特征与sklearn的VarianceThreshold
开发语言·人工智能·python·机器学习·概率论·sklearn
码农水水6 小时前
阿里Java面试被问:Online DDL的INSTANT、INPLACE、COPY算法差异
java·服务器·前端·数据库·mysql·算法·面试
wangjialelele6 小时前
二刷C语言后,一万字整理细碎知识点
c语言·开发语言·数据结构·c++·算法·cpp