前面看过了CNN的基本结构,经典的模式如下图:
上图经典的CNN模型主要可以概括为三个部分:
convolution层:convolution是将原来的输入向量映射成多个feature map,每个feature map的权重和偏移量都是一样的
sub-sampling层:sub-sampling 层将feature map进一步缩小,可以选择down-sampling的方法有很多,如max-pooling是选取所选区域的最大值,也有是选取所选区域的每个像素的输出值的平均 值,当然也有是将所选区域的每个像素的输出值进行求和,但是目的只有一个,那就是进一步将feature map压缩
全连接层:CNN中卷积层和sub-sampling层可以多个组合使用,在最后面的sub-sampling层后面加入几个全连接层,最后连接到输出层中去
了解完这一点后,根据一般的神经网络BP算法,我们构造完损失函数L,然后在训练过程中就使用BP算法进行梯度下降求导了,本文就是介绍关于CNN求导过程。
整篇文章参考的论文为【1】Notes on Convolutional Neural Networks ,作者Jake Bourvie比较详细的介绍了CNN 的求导方法。
文章假设已经掌握了经典的BP算法,同时对于损失函数也有一定的了解,常用的平方损失函数或者cross-entropy函数等,所以下文不会给出从头到尾的推导公式,只是着重介绍在卷积层和sub-sampling层的求导过程。
一,首先来看卷积层的求导(求误差敏感项以及权重和偏置值):
从输入层到卷积层的feature map,我们使用的是如下计算公式:
其中Mj表示的是输入层的选中区域,而Kij核函数表示的是权重参数,也就是w参数,f(.)表示的是激励函数,一般使用sigmoid,也有资料【2】表示使用ReLU函数能够更好的训练深度神经网络,总之这个式子表示的是从上一输入层到卷积层的计算过程,feature map共享相同的Kernel和biase也就是w和b参数,不同的feature map 的w和b参数不一样
现在来计算一下卷积层的梯度下降公式:
目的:计算卷积层的各个参数的梯度,也就是计算上面式子的Kij和b的导数值
假设每个卷积层后面都跟着sub-sampling层,BP算法告诉我们,要想求得本层的参数,那么就需要求出损失函数对本层输出结果的导数,这里就出现了一个问题,卷积层的大小和sub-sampling层的大小不一样,这就对求导产生的难度。
为了求导,我们可以将sub-sampling层按照之前的卷积层到sub-sampling层的映射规则,将sub-sampling层展开成和卷积层一样的大小,我们看一下是如歌展开的:
假设卷积层为4*4大小,然后sub-sampling层为2*2大小,我们假设现在使用BP算法求得的sub-sampling敏感项大小是:
- 假设在从卷积层到sub-sample层是使用均值的方法,那么可以将sub-sampling 的敏感项"up-sampling"到如下图:
- 如假设使用的是max-pooling方法,那么可以选择其他区域为0,其up-sampling的结果可能是下图:
之所以是使用“可能”两个字,是因为0的位置需要根据卷积层到sub-sampling层的最大值在卷积层的位置决定,因此还需要记住从convolution层到sub-sampling层的映射位置。
在得到卷积层output敏感项之后,就可以进行对卷积层的参数进行求导了:
(1)
(2)
(3)
其中(1)式中的up(.)指的就是讲suB-sampling层按照之前说的规则“展开”,βl+1 表示的是sub-sampling“展开后”卷积层的output敏感项,f0(u` j)则是对卷积层的激励函数求导,这和BP算法是一致的
(2)式表示对卷积层参数b的求导,(3)式表示的是对卷积层参数Kij的求导,其实也就是对权重w进行求导,Pi表示的是卷积层上一层输入值块,也就是卷积区域的输入值矩阵,和BP算法保持一致。
在【1】这篇文章中,有一种新的方法计算这部分求导,其实是为了方便MATLAB编程,我们以求 L-1层的敏感项(δl-1)举例说明:
假设卷积层前面是一个3*3大小的通道,卷积核大小为2*2,那么在卷积层应该有2*2大小,我们假设现在已经求出的卷积层的敏感项为:
卷积核为:
我们先将卷积层L的敏感项“FULL”化:(稍后解释为什么)
那么对卷积层的Xij(也就是前一层的敏感项)求导的结果就是
* =
注意这里*表示的离散卷积,也就是先要将卷积核旋转180度然后进行卷积相乘。其实这里也是根据BP算法进行推导的,比如最中间的2.3是由矩阵[1,1,2,3]的 1的右下角,1的左下角,2的右上角,3的左上角的四个因子相乘所得,所以2.3=1*0.6+1*0.5+2*0.3+3*0.2得来
当然如果有多个feature map,只需要将所得到的3维矩阵相加即可
二,前面部分从convolution层到sub-sampling层没有考虑使用线性变换,也就是说可能从卷积层到sample层还可能有参数Biase和w参数,下面就这一点做个说明
计算公式:
其中down表示的是从卷积层到sub-sampling层使用的函数,例如max-pooling使用的是最大值,在论文【1】里面,作者使用的求和,也就是将卷基层的输出直接相加得到dowm(.)注意到这里使用的 βj `和(1) 式中使用的是一样的参数,之所以是这样,是因为如果从卷积层到sub-sampling层使用的是求和的话,那么卷积层的敏感项“展开项”都是一样的 βj ` ,所以(1)式中的 βj ` 就是这么来的
好了现在按照下面式子求出各个项的参数:
(4)
(5)
这个和一般的BP算法是一样的,这里求上一层的敏感项的时候,可以将down(.)当做一个整体求导,然后按照之前所说明的方式“展开”成和convolution层一样大小的去求卷积层各个参数导数
三,拓展
【1】还介绍了一下优化CNN的方法,如给不同的map不一样的比例参数ai,也说明了一些关于规范化(regulation)方面的内容,其求导过程大同小异,就不一一提及
参考文献:
【1】Notes on Convolutional Neural Networks,Jake Bouvrie
【2】Deep Sparse Rectifier Neural Network,Xavier Glorot..
【3】Deep learning:五十一(CNN的反向求导及练习)
相关推荐
深度学习之CNN卷积神经网络整理版 本文总结了深度学习中CNN卷积神经网络的基础知识,包括卷积神经网络的概念、卷积操作、池化操作、CNN网络模型、正向传播、反向传播等。 一、卷积神经网络的概念 卷积神经网络...
1. **物体检测**:深度学习在物体检测方面的应用广泛,例如,使用卷积神经网络(CNN)的方法,如R-CNN,可以定位图像中物体的位置并进行分类。这种方法在工业自动化中尤其重要,可以提高检测速度和准确性,减少人工...
卷积神经网络(CNN)是深度学习在图像识别和处理领域的基石。PPT可能会深入讨论卷积层、池化层以及如何利用滤波器提取特征。此外,全连接层和Softmax函数在分类任务中的应用也会有所涉及。 循环神经网络(RNN)和其...
卷积神经网络(CNN)是一种深度学习模型,广泛应用于图像识别、计算机视觉和自然语言处理等领域。CNN的主要特点是利用卷积层和池化层来提取特征,并通过反向传播算法进行参数更新。以下是对卷积神经网络理论推导的...
《深度学习》是人工智能领域的一本经典著作,通常被称为“花书”,由Ian Goodfellow、Yoshua Bengio 和 Aaron Courville 共同撰写。这本书深入浅出地介绍了深度学习的基本概念、理论和实践应用,是许多学习者入门...
卷积神经网络(CNN,Convolutional Neural Network)是一种在深度学习领域广泛应用的模型,尤其在计算机视觉任务中表现出色。CNN的特点在于其利用卷积层和池化层来提取和学习图像的局部特征,有效地减少了参数数量,...
卷积神经网络(CNN)是深度学习中的一种重要算法,具有很高的应用价值。CNN可以自动提取图像特征,实现图像分类、目标检测、图像分割等任务。CNN的基本结构包括卷积层、池化层、全连接层等。卷积层可以自动提取图像...
综上所述,基于深度学习的二维航空大地电磁数据反演技术有效克服了传统反演方法中的缺陷,提升了反演的效率和准确性,为地球物理勘探数据处理提供了新的解决方案。同时,这项研究也为深度学习在其他地球物理数据反演...
在本资源包中,我们关注的是“Fast Deep Java Library”(DJL)——一个用于Java和JVM平台的高效深度学习库。DJL提供了一种简单的方法,使得开发者能够利用其强大的功能,与Spring框架集成,进行深度学习模型的训练...
深度学习的关键组成部分包括前馈神经网络、卷积神经网络(CNN)、循环神经网络(RNN)、长短时记忆网络(LSTM)以及自注意力机制等。 **反向传播算法** 反向传播是训练神经网络的核心算法,用于计算损失函数相对于...
《深度学习》这本书是深度学习领域的经典之作,由Ian Goodfellow、Yoshua Bengio 和 Aaron Courville 共同撰写。书中详尽地介绍了深度学习的理论基础、模型构建和实践应用。中文版的推出,使得更多中文读者能够无...
2. 基于范数的界限与边缘理论:研究了如何使用神经网络的范数界限来推导网络的泛化性能,并探讨了所谓的边缘理论在深度学习中的角色。 3. 优化与隐式正则化:分析了深度学习优化过程中隐式正则化的存在,以及其如何...
- **卷积神经网络(CNN)**: CNN是计算机视觉领域中最常用的深度学习模型之一,它在图像分类、目标检测和语义分割等方面表现出色。 - **主流架构**: ResNet、YOLO等网络结构因其高效性和准确性而被广泛采用。 **2.2 ...
在深度学习领域,卷积神经网络(Convolutional Neural Networks,CNNs)是处理图像数据的关键技术,尤其是涉及到模式识别和图像分类的场合。在深入理解CNN的各种卷积操作之前,有必要了解一些基础概念。 首先,卷积...
这些补充资料中的论文很可能涵盖了深度学习的最新研究进展,包括但不限于卷积神经网络(CNN)、循环神经网络(RNN)、长短时记忆网络(LSTM)、生成对抗网络(GAN)以及强化学习等方面。 PPT导学资源通常包含课程的...
首先,文档指出无论是深度学习还是机器学习,其背后都蕴含着数学原理和公式推导。因此,掌握必要的数学知识对于理解深度学习的原理至关重要。 高等数学部分的知识点包括: 1. 导数定义:导数描述的是函数在某一点...
CNN是深度学习在图像处理领域的主力军,其主要特点是局部连接、权值共享和池化操作。书中详细解释了这些特性如何帮助模型学习图像的局部特征,并通过实例展示了如何构建和训练CNN。 六、循环神经网络(RNN) RNN...
SigAI系列的文章集合是针对机器学习和深度学习的宝贵资源,涵盖了从基础知识到高级理论的广泛内容。这个系列旨在帮助初学者以及寻找人工智能领域工作的专业人士深入理解这两个关键领域。 首先,机器学习是人工智能...
- 深度学习平台:Caffe和TensorFlow是深度学习平台,而Hadoop主要用于大数据处理,不是深度学习平台。 13. 无监督学习: - 聚类:在不知道数据标签时,聚类算法如KMeans可用于将数据分成具有相似属性的组。 14. ...