卷积神经网络前向传播和BP后向传播计算步骤

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了卷积神经网络前向传播和BP后向传播计算步骤相关的知识,希望对你有一定的参考价值。

参考技术A

 1.从DNN前向传播和BP后向传播说起
 2.CNN前向传播和BP后向传播
注:为减小书写、计算量,文中推导都忽略了偏置b。

  之前所学的DNN是一个全连接的网络,采用BP算法来计算各参数的梯度,只需要采用链式法则将误差求导传递到每个神经元的每个参数上即可。特别是,将数据向量化后,求解梯度过程较为简单。但对于CNN来说,CNN涉及到了卷积和池化,在进行后向传播计算时,仅采用矩阵乘法、元素级乘法(对应元素相乘)根本无法进行传递计算。那么CNN的BP算法是如何实现的呢?首先从CNN的BP算法说起。
   DNN符号约定:
  ①小写字母代表一个值,大写字母代表向量或矩阵
  ②输入数据维度为(n,m)表示n个特征,m个样本
  ③上标[l]:第l层,如A [l] ,表示第l层激活值
  ④下标n:某一层第n个神经元,如果是输入数据X,则代表第n个特征,如a [l] 1 ,表示第l层第1个激活值
  ⑤w [l] ij :表示l层参数,连接了l层第i个神经元和第l-1层第j个神经元
  ⑥向量化导数符号:dZ即代表最终误差对Z的梯度
  ⑦δ [l] 即dZ [l] ,两个是一个东西,只是描述不一样

  卷积层前向传播如下图所示(步长为1), l-1 层的输出,高=3、宽=3、通道数=3, shape=(3,3,3) ; l 层一共有两个卷积核,每个卷积核 shape=(2,2,3) ; l 层输出 shape=(2,2,2) 。
  ① l-1 层的通道数与 l 层卷积核通道数相同,所以在进行卷积时,是同一个卷积核的各通道对应 l-1 层的通道输出A去卷积;②卷积后,在通道维度上进行叠加,一个卷积核最后只输出一个通道的数据;③卷积核的数量决定了该层输出的通道数量,激活后维度不变。因此,维度变化为: (m,n_h_pre,n_w_pre,n_c_pre) → (f,f,n_c_pre,n_c) → (m,n_h,n_w,n_c)

  根据DNN的经验,要求 dW ,那么需要先求出 dZ 、 dA ,在此假设已知当前 l 层 dZ 。
   (1)求dA

  由于池化向前传播时,会使得h、w两个维度缩减,丢失掉部分信息,那么在后向传播时,如何将尺寸小的矩阵还原到原来大小?一般,池化分为最大池化和平均池化,两种池化后向传播时处理的方式略有不同。
   (1)最大池化后向传播
  在此将池化当作一层,假设已知 l 层 dZ=dA (池化无激活函数,视激活后等于本身),求 l-1 层 dZ=dA ,下面对一个通道数据进行举例:

卷积神经网络(CNN)反向传播算法
CNN的反向传播
Convolutional Neural Networks: Step by Step

深度学习系列经典博客收藏

刘建平Pinard博客系列

以上是关于卷积神经网络前向传播和BP后向传播计算步骤的主要内容,如果未能解决你的问题,请参考以下文章

卷积神经网络:总结

卷积层和池化层

深度学习系列经典博客收藏

Matlab训练多层神经网络

007-卷积神经网络-前向传播-反向传播

:卷积神经网络