序言
之前对MP模型、单层感知器、多层感知器(BP)的基础进行了理解,接下来写一下对卷积神经网络的理解。卷积神经网络(CNN)由卷积(convolution), 激活(activation),池化(pooling)和全连接四种结构组成。下面也从这三部分对CNN进行介绍。
卷积(convolution)
1、无padding时
首先我们来看下面这张图 这张图其实就是卷积的过程,中间黄色的那个框就是卷积核,我们能够看出它的大小是3x3,这里将卷积核的大小设为k,k的值就是3,接着我们看input这部分,这个式子其实就包含了卷积结果,它是核位置权重与原图对应位置相乘然后相加的结果0,output中是绿色的部分,那么output中其它部分的数字是哪里来的呢?,这里就不得不提到卷积核的步长了,顾名思义,卷积核的步长就是卷积核的移动步数,如下图所示,卷积核的步长为1时的动图: 聪明的小伙伴可能就已经看出,在已知原图大小w,x1卷积核大小k和步长s时,可以得到经过卷积后的特征图的大小,比如第一幅图,原图大小是5x5,卷积核大小是3x3,卷积核的步长为1,在从左到右的方向上,卷积核可以移动三次,同理在从上到下的方向上,卷积核移动也是三次。由此得到卷积后的特征层大小为3x3。下面给出计算公式:
2、有padding时
如上图所示,padding其实是原图周围的白色空格,相当于在原图中添加了像素值为0的像素,使得原图的大小扩大变为(w+2padding)x(w+2padding),公式如下: 那么为什么要加入padding呢?
1、为了不丢弃原图信息。 2、为了保持特征图的大小与原图一致。 3、为了让更深层的layer的input依旧保持有足够大的信息量。 4、为了实现上述目的,且不做多余的事情,padding出来的pixel的值都是0,不存在噪音问题。 5、为了保持边缘信息。
3、卷积与全连接
如之前的多层感知器(BP),如下三层感知器,每个神经元都与上层所有的神经元相连接,这就是全连接。 那么为什么要用卷积呢?下面我们来看一组图 左边是全连接,右边是卷积,假设图片大小为1000x1000,隐藏层含有1000x1000个神经元。那么我们来看一下他们的参数量:
全连接:首先一个神经元与图片中的每个像素点相连,每条连接都会有一个对应的权重。每个神经元一共会有1000x1000个参数权重,一共有1000x1000个神经元, 所以说参数量大小是1000x1000x1000x1000=10的12次方个参数,可以说是很大了。 卷积:这里假设隐藏层每个神经元只和输入10x10的局部patch相连接,且卷积核移动的步长为10 这样其实每个神经元对应权重的参数量其实为10x10=100,一共有1000x1000个神经元,因此,总的参数量大小为:1000x1000x10x10=10的8次方,与全连接的参数量整整差了4个数量级。 卷积能够通过权值共享将图片各个部分联系起来,这就使得各个部分相互关联,而全连接各个部分是相互独立的。
在这里给大家带来一个链接,上面有很多图能够帮助大家深入的理解卷积神经网络的卷积过程。如下:卷积大全
通道数(一般一张彩色图像为三通道RGB)
接着我们考虑一种实际的情况,这个情况就是通道数,开始时我并不能理解这个通道数,就比如上面图中输入图像的通道数为3,在经历卷积后,通道数为什么变成了64通道呢?之后慢慢明白,其实这个通道数就相当于卷积核的个数即通道数=卷积核个数,如上图是64个2x2大小的卷积核在原图上进行卷积操作,每个卷积核的权重并不一样且卷积过后得到的卷积层通道数为1,卷积过后将得到的通道数叠在一起就得到了卷积层的通道数。 下面再给出一张图方便大家理解,
激活(激活函数)
相信大家对激活函数都有一定了解,像Sigmoid函数,tanh函数,Relu函数等等,卷积操作为线性操作,这就导致一个问题,那就是模型的表达能力不够,而激活函数是分线性函数,它可以为计算加入非线性因素以增加线性表达的能力。若是还不太理解,在这里给大家推荐一篇博客,里面对激活函数的讲解还是挺详细的。如下:卷积神经网络(CNN)中,卷积层、激活函数、池化层、全链接层术语解析
池化(池化层)
经过卷积操作后,卷积层的参数量依旧很多,因此通过池化将输入的特征图进行压缩, 一方面来说特征图得以变小减少了网络的参数量; 另一方面则将主要特征提取出来。 下图是池化的操作,左边是平均池化,右边是最大池化,关于池化给大家推荐一个B站上的视频 同济自豪兄 当然别的讲的也不错,不过不是我所要的,所以各取所需吧。
全连接
全连接,顾名思义就是将经历卷积以后的特征层的特征都连接起来,连接过后就可以进行统计分类了。下面是整个CNN的网络图: 下面是网络层的计算公式及过程:
误差反传
关于卷积神经网络的误差反传我并没有太多的深入了解,不过有一个知乎上的链接,有想学习的朋友可以去学一下,链接如下: 卷积神经网络反向传播最清晰的解释? 那么记录到这里就结束了。
|