博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
深度学习笔记 (一) 卷积神经网络基础 (Foundation of Convolutional Neural Networks)
阅读量:4703 次
发布时间:2019-06-10

本文共 2414 字,大约阅读时间需要 8 分钟。

一、卷积

卷积神经网络(Convolutional Neural Networks)是一种在空间上共享参数的神经网络。使用数层卷积,而不是数层的矩阵相乘。在图像的处理过程中,每一张图片都可以看成一张“薄饼”,其中包括了图片的高度、宽度和深度(即颜色,用RGB表示)。

在不改变权重的情况下,把这个上方具有k个输出的小神经网络对应的小块滑遍整个图像,可以得到一个宽度、高度不同,而且深度也不同的新图像。

卷积时有很多种填充图像的方法,以下主要介绍两种,一种是相同填充,一种是有效填充

如图中紫色方框所示,左边是有效填充,右边是相同填充。在相同填充中,超出边界的部分使用补充0的办法,使得输入输出的图像尺寸相同。而在有效填充中,则不使用补充0的方法,不能超出边界,因此往往输入的尺寸大于输出的尺寸。

下图展示了以3x3的网格在28x28的图像上,使用不同步长、填充方法填充所得到的输出图像的尺寸:

下面借助两个动图来理解一下卷积的过程:

第一种是以3x3的网格在5x5的图像上进行有效填充的卷积过程:

第二种是使用3x3的网格在5x5图像上进行相同填充的卷积过程,动图在:http://cs231n.github.io/convolutional-networks/

回顾整个过程,就是一层一层地增加网络深度,最终得到一个又深又窄的表示,然后把其连接到全连接层,然后训练分类器。

二、局部连接与权重共享

 

总体而言,局部连接和权重共享都是减少参数的办法,使得特征提取更为有效。

上图中左半部分,是全连接神经网络的示例。图中是一个1000x1000的图像,下一隐藏层有$10^6$个神经元,那么就会有1000x1000x$10^6$=$10^{12}$个参数。

上图右半部分,是局部连接神经网络的示例。图中依然是一个1000x1000的图像,下一隐藏层有$10^6$个神经元,但是使用了一个10x10的卷积核,连接到了10x10的局部图像,那么则会有10x10x$10^6$=$10^8$个参数。

可见局部连接可以很大幅度减少参数的数量。

 

在实际应用中,有一些情况比较特殊,涉及到了统计不变性的问题。比如我们想识别图像中的动物类别,那么动物在图片中的位置(左上角、中间或是右下角)是不重要的,这叫平移不变性;再比如说,在识别数字的过程中,数字的颜色并不影响结果;又或者说,在语言处理中,一些词汇在句子中的位置并不影响其代表的含义。当两种输入可以获得同样的信息,那么我们就应该共享权重而且利用这些输入来共同训练权重。

在上图中的左半部分,是未使用权重共享的局部连接神经网络的示例。

在上图中的右半部分,则使用了权重共享。图中是一个1000x1000的图像,有100个10x10的卷积核,最终会有100x10x10=10k个参数。使用局部连接和权重共享都大大地减小了参数数量。而共享权重使得统计不变性问题得到了有效解决。

 

三、池化

通过卷积后,为了引入不变性,同时防止过拟合问题或欠拟合问题、降低计算量,我们常进行池化处理。池化过程如上图所示。因此池化过后,通常图像的宽度和高度会变成原来的1/2。

其中包括了Max pooling 、 Mean pooling和Stochastic pooling三种池化方法。

两种较为常用的是:Max pooling和Mean pooling。Max pooling是选择kernel范围之内的最大值;Mean pooling则是选择kernel范围之内的平均值。

 

四、LeNet-5中的卷积与池化分析

在LeNet-5中,输入层是32x32的尺寸。

在第一次卷积中,使用了6个卷积核,得到了C1:6张28x28的特征图。

然后进行下采样,得到S2:特征图宽、高变为原来的1/2,即28/2=14,特征图尺寸变为14x14,特征图张数不变。

再进行第二次卷积,使用了16个卷积核,得到了C3:16张10x10的特征图。

然后进行下采样,得到S4:特征图宽、高变为原来的1/2,即10/2=5,特征图尺寸变为5x5,特征图张数不变。

之后进入卷积层C5,120张1x1全连接后的特征图,与S4全连接。

 


 

本文图片及内容均参考或来自如下资料:

[1]Udacity的Deep Learning课程:https://cn.udacity.com/course/deep-learning--ud730

[2]Krizhevsky A, Sutskever I, Hinton G E. ImageNet Classification with Deep Convolutional Neural Networks[J]. Advances in Neural Information Processing Systems, 2012, 25(2):2012.

[3]Lecun Y, Bottou L, Bengio Y, et al. Gradient-based learning applied to document recognition[J]. Proceedings of the IEEE, 1998, 86(11):2278-2324.

[5]http://www.jeyzhang.com/cnn-learning-notes-1.html 

[6]http://blog.csdn.net/stdcoutzyx/article/details/41596663

[7]

[8]http://ibillxia.github.io/blog/2013/04/06/Convolutional-Neural-Networks/ 

本文是个人的学习笔记,水平有限,如有疏漏,敬请指出,不胜感谢。 

转载于:https://www.cnblogs.com/rgvb178/p/6017991.html

你可能感兴趣的文章
Powershell批量安装SNMP服务
查看>>
SEVERE: Unable to process Jar entry [avassist xxxx.class]
查看>>
spring boot部署中executable的系统服务
查看>>
Django模型层
查看>>
案例:手动输入一个字符串,所有字符反转,大小写相互转
查看>>
oracle 监控
查看>>
Oracle计算时间函数(numtodsinterval、numtoyminterval)
查看>>
虚函数和纯虚函数有以下所示方面的区别(转)
查看>>
遍历中的数组删除数据问题
查看>>
MyEclipse------PreparedStatement使用方法
查看>>
python之路——web(Javascript)
查看>>
POJ2513——Colored Sticks(Trie树+欧拉回路+并查集)
查看>>
伊吹萃香 (Standard IO)
查看>>
localForage——轻松实现 Web 离线存储(转)
查看>>
JS整理
查看>>
使用C#开发ActiveX控件
查看>>
大数据概述
查看>>
C++内存泄漏的调试
查看>>
SharePoint 2013 APP 开发示例 (五)跨域访问 Web Service (REST API)
查看>>
python入门之lambda表达式、内置函数
查看>>