卷积神经网络
是深度学习技术中极具代表的网络结构之一,CNN相较于传统的算法避免了对图像复杂的前期预处理过程(提取人工特征等),
可以直接输入原始图像
CNN中的局部连接和权值共享方法,下图是一个很经典的图示,左边是全连接,右边是局部连接
对于一个1000 X 1000的输入图像而言,如果下一个隐藏层的神经元数目为10^6个,采用全连接
则有1000 X 1000 X 10^6 = 10^12个权值参数,如此数目巨大的参数几乎难以训练,而采用
局部连接,隐藏层的每个神经元仅与图像中10 X 10 的局部图像相连接,那么此时的权值参数
数量为10 X 10 X 10^6 = 10^8,将直接减少4个数量级。
尽管减少了几个数量级,但参数数量依然较多,请看权值共享继续减少参数,具体做法是,在局部连接中
掩藏层的每一个神经元连接的是一个10 X 10的局部图像,因此有10 X 10 个权值参数,将这10 X 10个权值
参数共享给剩下的神经元,也就是说隐藏层中10^6个神经元的权值参数相同,那么此时不管隐藏层神经云的数目
是多少,需要训练的参数就是这10 X 10 个权值参数(也就是卷积核)
这大概即使CNN的一个神奇之处,尽管只有这么少的参数,依旧有出色的性能,但是,这样仅
提取了图像的一种特征,如果要多提取出一些特征,可以增加多个卷积核,不同的卷积核能够
得到图像的不同映射下的特征,称之为Feature Map。如果有100个卷积核,最终的权值参数也
仅为100 X 100 = 10^4个而已,另外,偏置参数也是共享的,同一个滤波器共享一个。
卷积神经网络由输出层,卷积层,激活函数,池化层,全连接层组成
卷积
卷积层是卷积核在上一级输入层上通过逐一滑动窗口计算而得,卷积核中的每一个参数都相当于传统神经网络中的权值参数,
与对应的局部像素相连接,将卷积核的各个参数与对应的局部像素值相乘之和,(通常还要在加上一个偏置参数),得到卷积
层上的结果。
高维度卷积层
输入图像和卷积核的对应位置元素相乘再求和,最后加上b,得到特征图,w0的第一层深度和输入图像的蓝色方框中对应元素相乘在
求和得到0,其他两个深度得到2,0,则有0+2+0+1 = 3即图中右边特征图的第一个元素2,卷积过后,输入图像的蓝色方框在滑动,
stride=2,
正则化和dropout
regularization:正则化,通过降低模型的复杂度,通过在cost函数上添加一个正则项的方式来降低overfitting,主要有L1和
L2两种方式
Dropout:通过随机删除神经网络中的神经元来解决overflitting问题,在每次迭代的时候,只使用部分神经元训练模型获取w和
d的值
对于同一组训练数据,利用不同的神经网络训练之后,求其输出的平均值可以减少过拟合.Dropout就是利用这个原理,每次丢掉
一半左右的隐藏层神经元,相当于在不同的神经网络上进行训练,这样就减少了神经元之间的依赖性,即每个神经元不能依赖于
某几个其他的神经元(指层与层之间相连接的神经元),使神经网络更加能学习到与其他神经之间的更加健壮的特征.另外Dropout
不仅减少过拟合,还能提高准确率
正则化通过给cost函数添加正则项的方式来解决过拟合,Dropout是通过直接修改神经网络的结构来解决过拟合..