《Deep Learning》学习4——卷积神经网络理论碎片

来源:互联网 发布:数组 push 编辑:程序博客网 时间:2024/06/05 14:30

卷积神经网络专门针对网格结构的数据的神经网络,例如时间序列数据、图像数据,它在图像和文本数据上都有不俗的表现。前面已经通过过简单的cnn、alexnet这两个cnn神经网络实践来初步了解了CNN,现在,学习CNN的底层原理。全连接网络相当于是矩阵乘法组成的神经网络,而卷积网络基于卷积运算,但卷积神经网络实际的应用中,卷积运算只是其中的一步,后面还有激活、池化,以及有一些cnn会加入正则化方法dropout。
本篇主要记录卷积运算、池化,以及卷积网络的优势。以下内容是个人对卷积和池化的理解,如有错误,请提示我更正。

1. 卷积运算

卷积运算是一个加权平均滤波方法,对局部邻域内(图像)的各像素点或者某n个最近的时间步内的输入做加权求和(对于连续输入,就是加权积分):
这里写图片描述
其中,x是输入,w是核函数,在学习算法中,核函数通常是对应于输入的多维参数,输出称作特征映射。
关于通用的卷积,https://www.zhihu.com/question/22298352 有很形象的解释,很容易理解。

离散的卷积运算:
这里写图片描述
对于卷积网络,二维的图像输入I,核函数通常是一个二维的参数矩阵,行数核列数都很少,这里称作核K,核函数通常是按步长横向和纵向移动的。
以一个4*4的图像为输入,2*2的核为例,本人理解的卷积过程如下:
这里写图片描述

可以看出来,K在卷积整个输入的过程中,实际上是经过平移n步(n为步长,上图为1)然后180°翻转,再与I对应的邻域做内积,组成S对应的元素S(i,j)。

由于翻转和平移是可交换的,平移翻转K到I位置后再对应相乘,和平移和翻转I到K对应位置后再相乘的效果是一样的,因此,二维离散卷积又可表示为
这里写图片描述
而实际卷积神经网络中采用的方式只是平移,没有180°翻转,因此,
这里写图片描述
只平移不翻转,那么S就等同于I和K互相关的输出。这有点像格拉姆矩阵。个人的理解为,卷积神经网络里面的卷积运算实际上是求输入图像或序列与卷积核相关的特征映射,所以,每个卷积核确定一张特征map。卷积核不同,其过卷积过滤后得到的相关特征映射也不同。
卷积神经网络中卷积过程如下:
这里写图片描述
这是严格对其的卷积,按照tensorflow的Padding方式,不严格对齐时,当横向移动到边缘时,会继续移动,直到核函数左边第一格和输入右边最后一格重合,输入不全则补全。纵向移动到下边缘也是一样的。

2. 池化

池化比较好理解,对设定大小的邻域范围内通过一个函数得到的输出来替代当前输出。例如最大池化函数:
这里写图片描述

除了最大池化外,池化函数还有求平均、L2范数、以及基于中心像素距离的加权平均。池化的移动步伐和卷积运算一样,Padding方式也有两种。

池化的优势是,图像经过少量的改动,池化后的结果依然能保持绝大多数元素不变。从而可以提高模型的泛化能力。

3. 核尺寸和步长

核尺寸本身不会使输出的尺寸相对于输入有多大变化,例如,1024*1024的图像经过(5,5)核卷积后,用VALID方式卷积或池化,按照步长为1来算,输出为(1024-5+1)*(1024-5+1),按照SAME的方式,依然是1024*1024。
而步长对输出尺寸的影响很大,例如,上面的步长改为2后,按照VALID的方式,输出尺寸变为[(1024-5)/2+1]*[(1024-5)/2+1],按照SAME的方式,输出尺寸变为

所以,要缩减输出的尺寸,关键在于卷积和池化步长的设置。

4. 卷积神经网络的优势

卷积神经网络的三大特点:稀疏交互、参数共享、等变表示。
稀疏交互:使用用size很小的核去卷积大尺寸的图像,相当于每个像素点只需要跟很少的参数交互。一个(5,5)卷积核,只有25个参数,一个像素点最多和25个参数连接(图像边界点与更少的参数交互)。
参数共享:如上第一部分所述,一个小的卷积核会按照步长横向和纵向移动,卷积整个图片。而实际上卷积过程应该是n*n个核依次局部连接n*n邻域,对其做卷积,只是这n*n个核共享同样的参数,所以,相当于一个核移动n*n次。
等变表示:当图像或时间序列数据做了平移变换后,经过卷积,输出和平移前数据做卷积的输出几乎没变化。例如:
这里写图片描述
从图上可以看到,当输入向右平移n位,对于核尺寸为m的卷积核采用VALID卷积方式,输出改变的元素数量为n个,与输入的尺寸和核的尺寸无关。采用SAME卷积方式,改变的个数为(n+m-1)个,与输入的尺寸无关。而通常平移位数和卷积的尺寸都比较小,输入的尺寸比较大。
因此,平移对输出的改变不大。

阅读全文
0 0
原创粉丝点击