卷积神经网络

2019-04-14 19:09发布

引言

1962年,Hubel&Wiesel[1]研究猫的视觉神经时,意外发现,当给猫展示一张鱼或老鼠的照片的时候,猫的大脑并没有哪一块是有信号响应,而当照片在切换的时候,猫的神经则发现了对信号的响应。两人继续研究,提出了感受野的概念,并进一步发现了视觉皮层通路中对于信息的分层处理机制,由此获得了诺贝尔生理学或医学奖。视觉皮层的细胞可以基本分为简单细胞(Simple cell)和复杂细胞(Complex cell)。这些细胞对视觉输入空间的子区域非常敏感,我们称之为感受野,以这种方式平铺覆盖到整个视野区域。
受到神经生物学的启发,便设计实现了卷积神经网络(Convolutional Neural Network)。

简述

CNN本质上是一种多层感知机(MLP),但其具有以下三大特性
- 局部感受野
- 权值共享
- 空间子采样
正是因为这些特性,降低了网络复杂度,降低了过拟合的风险,使得网络更易调优。

局部感受野(Local Receptive Fields)

图像在空间上是有组织结构的,相距太远的像素在空间联系上并不是很密切。每一个神经元对应一个感受野,只要感知一个区域内的像素信息即可。
假设以下图片像素为1000 * 1000,并且是黑白图像,只有一个颜 {MOD}通道,那么输入图片的维度则为1000 * 1000 = 10^6 维,如果连接一个相同大小的隐藏层,用左图全连接的方式,那么就有100万个隐含神经元。则连接数为10^12 个,参数个数则有10^12 + 10^6 个,仅一个隐含层就拥有如此多的权重,已经远远超出了硬件的运算能力。
若用右图局部连接的方式,假设感受野大小为10 * 10,每个隐含神经元就只有10 * 10 = 100个连接,所有只需要10 * 10 * 10^6 = 10^8 个连接,相比之前就缩小了10000倍。
左为全连接,右为局部连接

权值共享(Weight Sharing)

现在,每一个节点都有100个参数,假设局部连接的方式是卷积操作,则每个神经元对应的参数都是相同的,即100万个神经元有共同的参数,则又大大降低了参数量。
卷积操作其实是对输入图像特征提取的方式,该方式与位置无关。这其中隐含的原理则是:图像的一部分的统计特性与其他部分是一样的。这也意味着我们在这一部分学习的特征也能用在另一部分上,所以对于这个图像上的所有位置,我们都能使用同样的学习特征。

图像的基本特征是点和边,人对于物体的识别,也是在从点边的特征中不断抽象完成的。第一层的神经元从像素特征提取到点边信息输入下一层,第二层则从点边中识别出三角形圆形等信息,再继续抽象,得到气球,风筝等现实物体的匹配。所以,只要卷积类型足够多,提取出我们所需要的各个方向的边或各种形态的点,就可以逐步抽象出高层特征。利用卷积神经网络自动提取特征,能更好的利用图片的像素信息,比人工构造的特征更优。

空间子采样(Pooling)

在通过卷积获得了特征 (features) 之后,下一步我们希望利用这些特征。理论上讲,人们可以用所有提取得到的特征,但无疑复杂度还是比较大,并且容易出现过拟合。如何保留卷积之后有效的特征呢?可以利用下采样的方式,来降低特征维度,保留有效信息,防止过拟合。
根据采样的方式不同,一般有最大池化、平均池化等方式

总结

局部连接和权值共享降低了参数量,使训练复杂度大大下降,并减轻了过拟合。Pooling操作降低了输出参数量,提高了模型的泛化能力。相比于传统的机器学习算法,无须手动提取特征,可在训练中自动完成特征的提取和抽象,并同时进行模式分类,大大降低了图像识别的应用难度。相比于一般的神经网络,CNN的卷积连接方式和人的视觉神经处理信号的模式相似,和图片的空间结构更为贴近。

实验

建立含有一层卷积的神经网络,训练测试Mnist数据集。