卷积神经网络的一个实现算法
前言
从开始接触机器学习到现在差不多有两个月了,刚开始看了很多关于概念的东西,之后
研究了一段时间的 BP 神经网络,CNN 这个程序大概看了有一个月左右,大体上的构架基本
理解了,但部分还是有点不明白,现在我就自己的理解讲一下我眼中的卷积神经网络。
卷积神经网络 CNN 是 Deep Learning 的一个重要算法,在很多应用上表现出卓越的效
果,文献[1]中对比多重算法在文档字符识别的效果,结论是 CNN 优于其他所有的算法。CNN
在手写体识别取得最好的效果,文献[2]将 CNN 应用在基于人脸的性别识别,效果也非常不
错。图像超分辨率重建算法也是基于 CNN 的,CNN 很强大能实现很多功能,要是能深刻的理
解并熟练运用 CNN,那么收获一定是很大的。
CNN 的整体网络架构
卷积神经网络是在 BP 神经网络的改进,与 BP 类似,都采用了前向传播计算输出值,反
向传播调整权重和偏置;CNN 与标准的 BP 最大的不同是:CNN 中相邻层之间的神经单元并不
是全连接,而是部分连接,也就是某个神经单元的感知区域来自于上层的部分神经单元,而
不是像 BP 那样与所有的神经单元相连接。CNN 的有三个重要的思想架构:
局部区域感知
权重共享
空间或时间上的采样
局部区域感知
一般认为人对外界的认知是从局部到全局的,而图像的空间联系也是局部的像素联系较
为紧密,而距离较远的像素相关性则较弱。因而,每个神经元其实没有必要对全局图像进行
感知,只需要对局部进行感知,然后在更高层将局部的信息综合起来就得到了全局的信息。
利用局部感知可以减少参数的个数,降低复杂度,如下图所示,左图为全连接,右图为局部
连接,假设隐藏层的神经元的数目为 1000000 个,如果采用全连接那么每个神经元需要与
1000×1000 个像素点相连,那么所需要的连接权重的个数即为 1000000×1000×1000=10^12
个,加入我们采用局部连接,每个神经元只和 10×10 的像素相连接,那么连接权重的个数
将变为 1000000×10×10=10^6,参数数目便一下就降低了很多,局部感知用于发现数据的
一些局部特征,这些特征往往是构成这个数据的一些基本特征。这一步骤实质上就是卷积操