四张图彻底搞懂CNN反向传播算法

部署运行你感兴趣的模型镜像

阅读本文之前,请首先阅读之前讲述的全连接层的反向传播算法详细推导过程: 全连接反向传播算法。已经了解反向传播算法请自动忽略。

1. 卷积层的反向传播

直接上图:

假设输入为一张单通道图像 x x x,卷积核大小为 2 × 2 2\times 2 2×2,输出为 y y y。为了加速计算,首先将 x x x按卷积核滑动顺序依次展开,如上图所示。其中, x ^ \hat{x} x^中的红色框代表 x x x中的红色框展开后的结果,将 x x x依次按照此方式展开,可得 x ^ \hat{x} x^。同理可得 w ^ \hat{w} w^,然后通过矩阵相乘可得输出 y ^ \hat{y} y^ y ^ \hat{y} y^ y y y等价)。此时,已经将CNN转化为FC,与反向传播算法 完全一致,这里不再做详细介绍。

当有 N N N个样本,即batch=N时,前向与反向传播方式如下图所示:
在这里插入图片描述
其中,输入图像batch=3,使用2个 2 × 2 × 3 2\times 2\times 3 2×2×3的卷积核,输出两张图像,如图所示。红色框、黄色框代表的是卷积核以及使用该卷积核得到的输出图像 y y y。当输入图像为一个batch时, x 、 w x、w xw的转化方式如上图,首先将输入图像与卷积核分别按单通道图像展开,然后将展开后的矩阵在行方向级联。此时,已经将CNN转化为了FC,与反向传播算法 完全一致,这里不再做详细介绍。

2. Average pooling的反向传播

在这里插入图片描述
∂ J ∂ w \frac{\partial J}{\partial w} wJ不用求,因为 w w w为常数。 ∂ J ∂ x i j = Σ ∂ J ∂ x ^ i j \frac{\partial J}{\partial x_{ij}}=\Sigma \frac{\partial J}{\partial \hat{x}_{ij}} xijJ=Σx^ijJ

3. Max-pooling的反向传播

在这里插入图片描述
遍历 x ^ \hat{x} x^的每一行,找出此行最大值的索引 ( i , j ) (i,j) (i,j),然后将 ∂ J ∂ x ^ \frac{\partial J}{\partial \hat{x}} x^J中索引为 ( i , j ) (i,j) (i,j)的值设为 ∂ J ∂ y ^ \frac{\partial J}{\partial \hat{y}} y^J对应行的值,将此行其余列的值设为0,如上图所示红框所示。假设 x ^ \hat{x} x^中(1,1)处的值是第一行中最大的值,则将 ∂ J ∂ y 11 \frac{\partial J}{\partial y_{11}} y11J赋值给 ∂ J ∂ x ^ \frac{\partial J}{\partial \hat{x}} x^J中索引为 ( 1 , 1 ) (1,1) (1,1)的位置。最后计算: ∂ J ∂ x i j = Σ ∂ J ∂ x ^ i j \frac{\partial J}{\partial x_{ij}}=\Sigma \frac{\partial J}{\partial \hat{x}_{ij}} xijJ=Σx^ijJ

您可能感兴趣的与本文相关的镜像

TensorFlow-v2.15

TensorFlow-v2.15

TensorFlow

TensorFlow 是由Google Brain 团队开发的开源机器学习框架,广泛应用于深度学习研究和生产环境。 它提供了一个灵活的平台,用于构建和训练各种机器学习模型

### 反向传播算法片及其说明 反向传播算法是一种用于训练人工神经网络的核心方法,其基本过程可以分为四个阶段:前向传播、误差计算、反向传播以及参数更新[^2]。为了更好地理解这一复杂的过程,通常会借助表或解来进行可视化展示。 #### 前向传播 在前向传播过程中,输入数据通过网络逐层传递到输出层。每一层中的节点接收来自前一层的加权信号并将其作为激活函数的输入。最终,在输出层得到预测值。此部分可以通过一张简单的多层感知器结构来表示,其中标注了各层之间的连接权重和偏置项[^3]。 ```plaintext Input Layer -> Hidden Layer(s) -> Output Layer ``` #### 误差计算 当完成前向传播后,需要比较实际输出与目标值之间的差异,即计算损失函数(Loss Function)。常用的损失函数有均方误差(MSE)、交叉熵等。此时可以用一幅对比显示理想输出与当前模型输出的区别,并标记出具体的误差数值[^1]。 #### 反向传播 接着进入最关键的环节——反向传播。在此步骤中,利用链式法则沿着先前建立起来的数据流路径返回至每层对应的权重位置处求取局部梯度信息。这一步骤往往被描绘成箭头指向相反方向流动的形式,形象地表现出错误是如何从末端反馈回来影响前面各个单元状态变化情况的[^2]。 #### 参数更新 最后依据所获得的梯度大小调整相应链接强度也就是我们常说的学习率乘以负号后的产物再加上原始值从而达到逐步逼近最优解决方案的目的 。整个流程循环往复直至满足收敛条件为止或者到达预定最大迭代次数限制结束程序运行 [^3]. 下面给出了一张典型的反向传播算法工作原理示意: ![Backpropagation Diagram](https://upload.wikimedia.org/wikipedia/commons/7/7a/Neural_network_backprop.png) 这张清晰地标明了一个小型全连接神经网络内部运作机制概览, 包含但不限于以下几个方面: - 数据如何从前端传入经过隐藏层再抵达终端形成初步估计成果; - 计算所得偏差量级之后按照既定规则分配给不同部位承担各自责任份额以便后续改进措施得以实施 ; - 更新完毕后再重复执行新一轮测试验证效果直到达成预期指标水平 . 以上就是有关于"反向传播算法"的一些常见形表现形式及相关解释.
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值