CNN 反向传播算法推导

2017 年 12 月 29 日 统计学习与视觉计算组 安骄阳

1. CNN 前向传播过程


输入层或隐层前向传播到卷积层 l 的公式如下:

公式中上标表示层数,∗ 表示卷积运算,σ 表示激活函数, 在 CNN 中通常使用 ReLU, b 表示偏置.

当输入图像深度为M时或输入是上一层M个 feature map 的组合时, 上一层前向传播到第 l 层的卷积层的公式可以表示为:

隐层前向传播到池化层 ll 时, 输入的若干矩阵的大小为 M × N, 池化大小是 j × k 的区域, 则所有输出矩阵的维度都为. 池化的标准一般为最大池化或平均池化. 这里用 down() 表示池化(下采样)过程. 由于池化层没有激活函数, 则该过程可以用公式表示为:

全连接层间的前向传播公式为:

对于输出层 L:


2. CNN 反向传播算法


2.1 神经网络中的反向传播算法


先回顾一下神经网络反向传播的相关公式.

第 l 层第 j 个神经元的错误量为:

输出层中关于错误量的公式:

根据下一层错误量计算错误量的公式:

网络的代价函数相对于权重的改变速率的公式:

网络的代价函数相对于偏置的改变速率的公式:


2.2 CNN 反向传播算法推导


这里, 对推导条件进行简化, 只考虑深度为1, 步长为1的情况. 当步长不为1时, 推导过程稍有变化.


(1). 已知池化层误差, 求 l−1 层误差由链式法则可得:

其中,. 那么问题就转化为求.

比如, 池化大小为 2 × 2 的区域, 使用平均池化时, 有:

使用最大池化, 有:

可知, 当平均池化大小为 k × k 的区域时, 有:

使用最大池化时, 有:

因此, 可以对池化层的误差矩阵进行上采样操作.

比如, 池化大小为 2 × 2 的区域, 有如下误差矩阵:

若为平均池化, 上采样后每个区域的值为池化层对应的值再乘以, 得:

用克罗内克积表示为:

其中表示克罗内克积,表示按元素相乘.

若为最大池化, 上采样时先将误差矩阵还原, 再将每个区域的误差移动到前向传播时最大值所的位置上. 如记录的位置分别为 (0,0),(1,3),(3,1),(2,2), 则上采样的过程为:

将最大池化形式的误差上采样也表示为, 公式 (3.6) 可写为:


(2). 已知卷积层误差, 求 l−1 层误差

由公式 (3.3) 可知, l−1 层的误差与 l 层中与其相连神经元的误差以及两者间的权重有关. 由于卷积操作是局部感知和权值共享的, 因此误差传播过程和神经网络稍有不同. 考虑如下卷积过程, 输入矩阵的大小为 3×3, 卷积核的大小为 2×2, 输出矩阵的大小为2×2, 标注的 i,j 是元素在矩阵中的位置.

将上图所示卷积过程展开, 并用神经网络神的形式描述. 权重上的标注是其在卷积核中的位置, 相同的权重用同一种颜色表示.

由上图的连接情况可得:

上述9个等式可用矩阵卷积运算表示为:

先在误差矩阵周围填充一圈 0, 然后将卷积核旋转, 两者进行卷积, 再与矩阵按元素相乘, 就得到了前一层的误差矩阵. 用公式表示为:


(3). 已知卷积层误差, 求该层

由于任意权重是所有输出的参数, 因此可得:

仍以上述卷积过程为例, 得:

上述等式可用卷积运算表示为:

于是有:

由于偏置 b 也是共享的, 因此在公式 (2.1) 中, 加的操作是按元素相加的, 可得:

即对误差矩阵中所有元素求和.


参考资料

[1] An Intuitive Explanation of Convolutional Neural Networks, Ujjwal Karn 

链接: https://ujjwalkarn.me/2016/08/11/intuitive-explanation-convnets/


[2] Notes on Convolutional Neural Networks, Jake Bouvrie 

链接: http://cogprints.org/5869/1/cnn_tutorial.pdf


[3] Backpropagation In Convolutional Neural Networks, Jefkine Kafunah 

链接: http://www.jefkine.com/general/2016/09/05/backpropagation-in-convolutional-neural-networks/


[4] 卷积神经网络(CNN)反向传播算法, 刘建平Pinard

链接: https://www.cnblogs.com/pinard/p/6494810.html



登录查看更多
30

相关内容

思想来自于视觉机制,是对信息进行抽象的过程。
神经网络的拓扑结构,TOPOLOGY OF DEEP NEURAL NETWORKS
专知会员服务
31+阅读 · 2020年4月15日
【ICLR-2020】网络反卷积,NETWORK DECONVOLUTION
专知会员服务
38+阅读 · 2020年2月21日
专知会员服务
41+阅读 · 2020年2月20日
一文搞懂反向传播
机器学习与推荐算法
18+阅读 · 2020年3月12日
误差反向传播——CNN
统计学习与视觉计算组
30+阅读 · 2018年7月12日
干货|深度神经网络(DNN)反向传播算法(BP)
全球人工智能
7+阅读 · 2018年1月12日
机器学习、深度学习 知识点总结及面试题
全球人工智能
17+阅读 · 2018年1月4日
【CNN】一文读懂卷积神经网络CNN
产业智能官
18+阅读 · 2018年1月2日
干货 | 深度学习之CNN反向传播算法详解
机器学习算法与Python学习
17+阅读 · 2017年11月21日
干货 | 深度学习之卷积神经网络(CNN)的前向传播算法详解
机器学习算法与Python学习
9+阅读 · 2017年11月17日
神经网络bp算法推导
统计学习与视觉计算组
11+阅读 · 2017年11月17日
CNN之卷积层
机器学习算法与Python学习
8+阅读 · 2017年7月2日
卷积神经网络(CNN)学习笔记1:基础入门
黑龙江大学自然语言处理实验室
14+阅读 · 2016年6月16日
Interpretable CNNs for Object Classification
Arxiv
20+阅读 · 2020年3月12日
Neural Approaches to Conversational AI
Arxiv
8+阅读 · 2018年12月13日
Arxiv
21+阅读 · 2018年5月23日
Arxiv
22+阅读 · 2018年2月14日
Arxiv
7+阅读 · 2018年1月10日
Arxiv
4+阅读 · 2017年7月25日
VIP会员
相关资讯
一文搞懂反向传播
机器学习与推荐算法
18+阅读 · 2020年3月12日
误差反向传播——CNN
统计学习与视觉计算组
30+阅读 · 2018年7月12日
干货|深度神经网络(DNN)反向传播算法(BP)
全球人工智能
7+阅读 · 2018年1月12日
机器学习、深度学习 知识点总结及面试题
全球人工智能
17+阅读 · 2018年1月4日
【CNN】一文读懂卷积神经网络CNN
产业智能官
18+阅读 · 2018年1月2日
干货 | 深度学习之CNN反向传播算法详解
机器学习算法与Python学习
17+阅读 · 2017年11月21日
干货 | 深度学习之卷积神经网络(CNN)的前向传播算法详解
机器学习算法与Python学习
9+阅读 · 2017年11月17日
神经网络bp算法推导
统计学习与视觉计算组
11+阅读 · 2017年11月17日
CNN之卷积层
机器学习算法与Python学习
8+阅读 · 2017年7月2日
卷积神经网络(CNN)学习笔记1:基础入门
黑龙江大学自然语言处理实验室
14+阅读 · 2016年6月16日
相关论文
Interpretable CNNs for Object Classification
Arxiv
20+阅读 · 2020年3月12日
Neural Approaches to Conversational AI
Arxiv
8+阅读 · 2018年12月13日
Arxiv
21+阅读 · 2018年5月23日
Arxiv
22+阅读 · 2018年2月14日
Arxiv
7+阅读 · 2018年1月10日
Arxiv
4+阅读 · 2017年7月25日
Top
微信扫码咨询专知VIP会员