CONV 反向传播

前向传播:

    这里只说CNN前向传播不同于全连接前向传播的部分,即:输入层到卷积层和卷积层到池化层。

 

1、输入层到卷积层的前向传播

输入层到卷积层,采用的是局部连接,参数共享,卷积操作的方式,进行计算的,有个最好的说明就是cs231n笔记中的gif图,现展示如下:

    图中有两个卷积核,w0和w1,注:这两个卷积核是已经翻转过的,然后进行协相关操作。由于输入的是3个通道的图片,因此每个卷积核也必须是3个通道的。所谓局部连接、权值共享都在这幅图上体现的淋淋尽致,非常好的表达。

    现作理论推导:

 

2、卷积层到池化层的前向传播:

    前向传播比较简单,介绍就到这里,下面分析反向传播算法:

    CNN的反向传播其实与全连接神经网络的反向传播有很大不同,只是从最后的输出层到最后一个卷积层的池化层的误差计算方式是相同的,但是从池化层到卷积层,卷积层到输出层(or池化层)的误差传播方式与全连接网络是大不相同的。

### 卷积神经网络中的反向传播工作原理 #### 1. 前向传播概述 卷积神经网络(CNN)是一种专门用于处理具有网格结构的数据的前馈神经网络,如图像数据。其人工神经元能够响应部分覆盖范围内的周围单元,在大规模图像处理方面表现出色[^2]。 在前向传播过程中,输入数据依次经过多个卷积层、激活函数以及池化操作最终到达输出层。每一步都涉及权重参数的应用,这些参数决定了模型的学习能力。 #### 2. 反向传播基本概念 为了优化CNN性能并调整内部参数以最小化损失函数值,需要执行反向传播算法来计算梯度。此过程基于链式法则求导数,从最后一层开始逐层向前传递误差信号直至首层。具体来说: - **误差计算**:根据预测结果与真实标签之间的差异定义损失函数;然后依据该损失函数对各层输出求偏导获得局部敏感度δ。 - **权值更新**:利用上述得到的δ乘以前一层节点输出值得到当前层对应连接上的梯度Δw=α⋅δ⋅a_prev,其中α表示学习速率而a_prev代表上一时刻的状态变量。 #### 3. 特定于卷积层的操作 当涉及到卷积运算时,由于存在共享权重特性使得同一滤波器应用于整个特征图的不同位置处。因此,在实施BP时需特别注意以下几点: - 对于单个过滤器而言,所有与其关联的位置都会贡献相同的梯度增量给这个过滤器本身; - 当考虑多通道情况下的三维张量形式,则还需额外累加来自不同channel方向的影响因素。 综上所述,对于任意指定位置(i,j),关于特定filter k 的梯度表达式可写作如下所示[^1]: \[ \frac{\partial L}{\partial W_k}=\sum_{i}\sum_j (\delta^{l}_{ij}) * (X^{l-1}_{(i:i+f_w-1),(j:j+f_h-1)})^T \] 这里\(L\)指代总损耗,\(\delta ^{l}\) 表明第 l 层产生的残差项,X^(l−1) 则为进入本阶段之前的原始输入矩阵;f_w 和 f_h 分别描述了kernel尺寸宽度和高度. #### 4. 计算效率考量 值得注意的是,完成一轮完整的反向传播所需时间大致等于两次正向遍历所耗资源之和。这是因为除了要重新评估中间状态外还需要额外记录下必要的信息以便后续使用[^3]. ```python import numpy as np def conv_backward(dZ, cache): """ Implement the backward propagation for a convolution function Arguments: dZ -- gradient of the cost with respect to output of the conv layer Z, numpy array of shape (m, n_H, n_W, n_C) cache -- cache of values needed for the conv_backward(), contains A_prev, W and b from forward pass. Returns: dA_prev -- gradient of the cost with respect to input of previous layer, same shape as A_prev dW -- gradient of filter weights w.r.t loss, has same dimensions as filters db -- gradient of bias term relative to overall error, vector of length equal number channels """ # Retrieve information from "cache" (A_prev, W, b, hparameters) = cache ... ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值