引言
- 对于全连接神经网络,这种结构的网络对于图像识别任务来说并不是很合适。本文将要介绍一种更适合图像、语音识别任务的神经网络结构——卷积神经网络(Convolutional Neural Network, CNN)
1 新的激活函数----Relu
图像如下:
优势(个人理解):
- 计算相对简单,计算代价较小
- 减轻梯度消失问题,使用sigmoid函数时由于其本身特性在网络结构较深的时候就容易出现梯度消失问题,而该函数的倒数是1,可以很大程度减轻梯度消失问题,可以训练更深的网络
2 全连接VS卷积网络
- 参数数量太多,对于图像来说,一个像素就是一个节点,那么参数的数量增长是爆炸性的
- 没有利用到像素之间的位置信息,一个图片中主要内容不会均匀分布,所以全连接的学习方式是非常低效的
- 网络层数的限制:一般来说网络层面越多其表达能力也越强,但是全连接很难传递超过三层,这也就限制了其能力的发挥
对应的解决方法:
- 局部连接:每个神经元不再和上一层所有的神经元相连,而只是部分,这样就会减少很多参数
- 权值共享:一组连接共享同一个权重,而不是一个连接一个权重,又减少了很多参数
- 下采样:使用pooling层减少每层的样本数,同时提高模型鲁棒性
对于图像识别任务来说,卷积神经网络通过尽可能保留重要的参数,去掉大量不重要的参数,来达到更好的学习效果。
3 卷积神经网络示意图
- 结构:输入 - 卷积 - 池化 -卷积 - 池化 -全连接
- 个人解析:输入层我们只以一层举例,卷积层和池化层所做的操作就是将输入根据卷积计算后的映射结果,当然卷积层可以是多层,输入也可以是多层,殊途同归,个人理解可以作为从图片上抽取重要信息,就像下图所示:
- 多层输入和卷积例子:
4 卷积神经网络输出值计算
简单例子:
- 结果如下:
- 整个过程如图所示(此时步长是1)
- 当步长为2时候,计算过程如下:
5 关于输入层与输出层像素关系
- 其中,关于p,也就是Zero padding的值,个人搜索了很久如何计算,但大都是根据图中的公式,输入输出来倒推p,如果有知道如何计算的大佬可以多多指教
- Zero padding指的是不零的个数,个人理解类似于数据处理中的填充,但是不太一样该部分如果进行填充主要是为了避免采集处理图片信息的时候遗漏重要信息,其中填充方法分为三种,三种方法的区别
关于填充,多层输入,多层卷积的示意图
- 以上就是卷积层的计算方法。这里面体现了局部连接和权值共享:每层神经元只和上一层部分神经元相连(卷积计算规则),且filter的权值对于上一层所有神经元都是一样的。对于包含两个333的fitler的卷积层来说,其参数数量仅有(333+1)*2=56个,且参数数量与上一层神经元个数无关。与全连接神经网络相比,其参数数量大大减少了。
结语
- 当前只是简单介绍卷积的网络结构以及卷积的计算,接下来将是卷积的正向,反向传播以及训练部分,此处分开介绍。
- 提示:该部分是个人觉得比较重要的部分的提炼,如果有不懂的地方可以见下方主要参考资料,介绍的的更加详细,使用VX打开不会造成图片的丢失,用浏览器可能看不到图。