本文共 2179 字,大约阅读时间需要 7 分钟。
一、卷积神经网络分为以下层次:
各层参数的个数:
常用数据处理方式:
图像里只用去均值---中心化--加减某值--目的就是把样本的中心拉回到坐标系原点上
1)227x227x3---去均值----像素相加/像素个数得到均值矩阵,每次减去矩阵-------Alexnet的方法!
2)VGG方法!----三个颜色通道均值,分别减去三个均值!
每个神经元---->一个filter滤波器-----窗口滑动,即filter对局部数据计算;
深度/depth----图中圆圈的个数,即神经元个数,每个圆圈代表一个滑动窗口,窗口内每个像素都有一个权重w;
步长/stride-------窗口每次滑动的像素个数;
填充值/zero-padding-----为了整除,边缘补0;
计算方法:
y = wx + b;
w即图中3x3的矩阵;b是指偏置项;
三通道分别求卷积,然后求和,得到输出的图像,所以有几个卷积核就有几个输出。
在卷积层中每个神经元连接数据窗的权重是固定的,每个神经元只关注一个特性。神经元就是图像处理中的滤波器,比如边缘检测专用的Sobel滤波器,即卷积层的每个滤波器都会有自己所关注一个图像特征,比如垂直边缘,水平边缘,颜色,纹理等等,这些所有神经元加起来就好比就是整张图像的特征提取器集合。
actvation function---激活函数去过滤!---f()
用的多的是Relu----如艾路---(The Rectified Linear Unit/修正线性单元),它的特点是收敛快,求梯度简单,但较脆弱。
Relu---0~正无穷---输入小于0的坏的部分删除,只取正的部分;
缺点---全部数据都在小于0部分---概率小!-----leak Relu来修正!小于0部分斜率很小!放一部分进去!
夹在连续的卷积层之间---作用是下采样!-----压缩数据和参数的量,减小过拟合!
方法是----求均值或者求最大值!----图像一般用Max pooling!
关于池化层的理解:
1. 特征不变性,也就是我们在图像处理中经常提到的特征的尺度不变性,池化操作就是图像的resize,平时一张狗的图像被缩小了一倍我们还能认出这是一张狗的照片,这说明这张图像中仍保留着狗最重要的特征,我们一看就能判断图像中画的是一只狗,图像压缩时去掉的信息只是一些无关紧要的信息,而留下的信息则是具有尺度不变性的特征,是最能表达图像的特征。
2. 特征降维,我们知道一幅图像含有的信息是很大的,特征也很多,但是有些信息对于我们做图像任务时没有太多用途或者有重复,我们可以把这类冗余信息去除,把最重要的特征抽取出来,这也是池化操作的一大作用。
3. 在一定程度上防止过拟合,更方便优化。
两层之间所有神经元权重连接;---一般在CNN的尾部!
M是以上结构的个数 ;N是卷积层个数;
卷积层1后留下学习后的东西---轮廓,颜色等!
卷积层2----?。。。。。。解释不清楚!
二、CNN的训练算法
1)Loss函数
2)找到最小化损失函数的W和b-------SGD算法/随机梯度下降法(求W和b的偏导数-----BP算法--求导的链式法则求dW和db)
除了SGD还有---Adam........
三、优缺点
就是整张图片在使用同一个卷积核内的参数,比如一个3*3*1的卷积核,这个卷积核内9个的参数被整张图共享,而不会因为图像内位置的不同而改变卷积核内的权系数。
无论图像的尺寸是多大,都可以选择固定尺寸的卷积核,LeNet中最大的卷积核只有5*5*1,而在AlexNet中最大的卷积核也不过是11*11*3。而卷积操作保证了每一个像素都有一个权系数,只是这些系数是被整个图片共享的,着大大减少了卷积核中的参数量。此外卷积操作利用了图片空间上的局部相关性,这也就是CNN与传统神经网络或机器学习的一个最大的不同点,特征的自动提取。
通俗点的解释是,特征图上的一个点对应输入图上的区域;
对感受野的理解:
结论: 随着卷积层数的逐渐增加,感受野的范围在逐渐扩大,也就是说,越靠近后面的输出,所受到的图像的像素影响的范围更加宽阔。卷积神经网络正是通过这种层层推进的方式,每一个卷基层都能学习到不同的特征,最后实现相关的识别、分类等功能的。
约束过拟合!----Dropout-----训练时关掉一部分学习单元!
AlexNet结构
ZFnet只是比上一个调了参数!
w参数用别人训练好的初始化。------fine-tuning就是使用已用于其他目标、预训练好模型的权重或者部分权重,作为初始值开始训练。
那fine-tuning的具体做法是?
• 复用相同层的权重,新定义层取随机权重初始值 • 调大新定义层的的学习率,调小复用层学习率
参考:
转载地址:http://ussc.baihongyu.com/