YOLO系列正传(三)神经网络的反向传播(back propagation)与公式推导

系列文章

YOLO系列基础

YOLO系列基础合集------小白也看得懂的论文精解-CSDN博客

YOLO系列正传

YOLO系列正传(一)类别损失与MSE损失函数、交叉熵损失函数-CSDN博客

YOLO系列正传(二)YOLOv3论文精解(上)------从FPN到darknet-53-CSDN博客


目录

系列文章

YOLO系列基础

YOLO系列正传

背景

从普通神经网络的基础结构开始讲起

反向传播的高层级理解

损失函数计算

第一层反向传播公式推导:w1

[1. 偏导数求解](#1. 偏导数求解)

[2. w1参数更新](#2. w1参数更新)

第二层反向传播公式推导:w3

[1. 偏导函数求解](#1. 偏导函数求解)

[2. w3参数更新](#2. w3参数更新)

MSE&sigmoid神经网络w参数更新公式普世规律推演

交叉熵&sigmoid反向推导公式

损失函数计算

第一层反向传播公式推导:w1

[1. 偏导数求解](#1. 偏导数求解)

[2. w1参数更新](#2. w1参数更新)

第二层反向传播公式推导:w3

[1. 偏导数求解](#1. 偏导数求解)

[2. w3参数更新](#2. w3参数更新)

交叉熵&sigmoid神经网络w参数更新公式普世规律推演


背景

随着YOLOv11版本的发布,YOLO算法在视觉检测领域独领风骚,本系列旨在从小白出发,给大家讲解清楚视觉检测算法的前世今生,并讲清楚YOLOv11版本算法的所有模块功能!

在YOLO系列基础中,我们对所有的基础知识进行了讲解和说明。

在私信反馈中,发现有些读者针对反向传播的原理不甚了解,所以我们今天我们针对神经网络的正向与反向传播的原理进行详解。求赞!!

从普通神经网络的基础结构开始讲起

以下是神经网络的经典结构,包括一个输入层,两个隐藏层和一个输出层。

其中

,n为该神经元左侧进入线的数量

反向传播的高层级理解

老规矩我们从反向传播的高层级理解开始说起。

所谓反向传播,其最终目的是将Loss的数值不断降低。

也就是说,假设我们的损失函数要是一个凸函数,有且只有一个局部最小值。那么很简单,我们只需要对此函数求导并使得导函数为零我们就能解出最小的loss所需要的参数w和b。

注意:我们更新的参数是f(x)中的w和b!

令人兴奋的事情是我们损失函数刚好是一个凸函数,如下:

所以我们直接计算损失函数对各个w的偏导然后等于0,再然后求解最佳w不就结束了吗?

这样的办法有一个专业名词叫做:解析解,也就是通过数学公式直接解出参数。这对于一些小型单层网络往往是可行的,但是无法适用于大型网络。

这是因为我们在求解某一层的w的解析解的时候,我们有一个前提,那就是前一层的输入不变。这就直接导致了在多层神经网络的场景下根本无法直接使用解析解的方式求解参数值。

但是这个思想我们可以借鉴,那就是loss下降的方向一定是偏导数下降的方向。我们只需要逐步慢慢靠近偏导数指向的方向,我们就能将模型慢慢拟合到我们期望的方向!

也就是说,针对每一个,更新公式如下:

其中

为步长,也叫学习率

损失函数计算

最简单的神经网络使用最简单的损失函数计算公式:MSE均方差

由于我们的y只有两个,所以loss计算公式如下:

第一层反向传播公式推导:w1

首先,我们反向传播公式如下:

1. 偏导数求解

各个部分分解如下:

注:y1=σ(f(x))

其中为上图中N1神经元的输出,也是式子中xi的一员。

综上

2. w1参数更新

第二层反向传播公式推导:w3

我知道大伙懒得往上翻,我再次粘贴图片如下:

可以看到w3出来的线可以影响N1、N4和N5。故我们分两条线进行求解,但是主公式还是不变的如下:

1. 偏导函数求解

由于w3一共有两条线,所以我们偏导函数也有两项,如下:

偏导函数如下:

左侧偏导计算如下:

右侧偏导计算如下

好复杂!!但是安心,我们马上化简一下!

不知大家还记不记得Loss对w1的偏导函数,如下:

我们将其记为:

同理我们可以得到Loss对w2的偏导函数,如下:

同理我们记为:

那么左侧偏导我们可以简化为如下公式:

同理,右侧简化如下:

综上,我们可得最终的偏导函数如下:

2. w3参数更新

MSE&sigmoid神经网络w参数更新公式普世规律推演

很简单如下所示:

其中:

  • :学习率
  • :待更新w的后续一层神经元计算的偏导数
  • :待更新w的后续一层神经元的参数
  • :本神经元的输出
  • :本神经元的输入

注:以上推导为博主自己推导所得,若有错漏请指出!

其实各位看官可以自己也推导一边,会更有感悟,随便也帮忙纠错下是否正确~

交叉熵&sigmoid反向推导公式

有关YOLOv3损失函数的内容可以先看下以下博文:

YOLO系列正传(一)类别损失与MSE损失函数、交叉熵损失函数_yolov1 分类损失-CSDN博客

损失函数计算

我们可得YOLOv3类别损失函数如下:

其中,最主要的就是二叉熵损失函数。我们从此入手进行推导!首先我们列出公式如下:

其中yi为预测值,为真值。

以上为交叉熵损失函数的表达式。

还是针对一样的图片,我们假设YOLOv3的网络结构如上所示!

注意,YOLOv3在训练时候的输出层采用一个conv2d卷积直接输出,没有经过激活函数激活。本文我们从激活函数全部都是sigmoid函数出发进行推导!

第一层反向传播公式推导:w1

首先,我们反向传播公式如下:

1. 偏导数求解

各个部分分解如下:

最终我们可以得到如下公式:

2. w1参数更新

第二层反向传播公式推导:w3

首先,我们反向传播公式如下:

1. 偏导数求解

偏导函数如下:

左侧偏导计算如下:

右侧偏导计算如下

同理,我们将w1的偏导函数 记为

将w2的偏导函数 记为

综上,可得偏导函数如下:

2. w3参数更新

交叉熵&sigmoid神经网络w参数更新公式普世规律推演

很简单如下所示:

其中:

  • :学习率
  • :待更新w的后续一层神经元计算的偏导数
  • :待更新w的后续一层神经元的参数
  • :本神经元的输出
  • :本神经元的输入

注意和之前的结论居然一模一样!

以此类推,我们就能求解后续所有参数的更新过程了!

各位读者大大,求赞求关注......为了写此篇博客,脑细胞死了很多了......
注:推导若有错漏请不吝赐教!

相关推荐
AI浩18 分钟前
【面试总结】FFN(前馈神经网络)在Transformer模型中先升维再降维的原因
人工智能·深度学习·计算机视觉·transformer
可为测控27 分钟前
图像处理基础(4):高斯滤波器详解
人工智能·算法·计算机视觉
ℳ₯㎕ddzོꦿ࿐1 小时前
解决Python 在 Flask 开发模式下定时任务启动两次的问题
开发语言·python·flask
CodeClimb1 小时前
【华为OD-E卷 - 第k个排列 100分(python、java、c++、js、c)】
java·javascript·c++·python·华为od
一水鉴天1 小时前
为AI聊天工具添加一个知识系统 之63 详细设计 之4:AI操作系统 之2 智能合约
开发语言·人工智能·python
Channing Lewis1 小时前
什么是 Flask 的蓝图(Blueprint)
后端·python·flask
倔强的石头1061 小时前
解锁辅助驾驶新境界:基于昇腾 AI 异构计算架构 CANN 的应用探秘
人工智能·架构
B站计算机毕业设计超人1 小时前
计算机毕业设计hadoop+spark股票基金推荐系统 股票基金预测系统 股票基金可视化系统 股票基金数据分析 股票基金大数据 股票基金爬虫
大数据·hadoop·python·spark·课程设计·数据可视化·推荐算法
觅远2 小时前
python+playwright自动化测试(四):元素操作(键盘鼠标事件)、文件上传
python·自动化
佛州小李哥2 小时前
Agent群舞,在亚马逊云科技搭建数字营销多代理(Multi-Agent)(下篇)
人工智能·科技·ai·语言模型·云计算·aws·亚马逊云科技