浅谈卷积神经网络

1、激活函数

在多层神经网络中,上层节点的输出和下层节点的输入之间具有一个函数关系,这个函数称为激活函数(又称激励函数)。在这种情况下你每一层节点的输入都是上层输出的线性函数,很容易验证,无论你神经网络有多少层,输出都是输入的线性组合,与没有隐藏层效果相当,这种情况就是最原始的感知机(Perceptron)了,那么网络的逼近能力就相当有限。正因为上面的原因,我们决定引入非线性函数作为激励函数,这样深层神经网络表达能力就更加强大(不再是输入的线性组合,而是几乎可以逼近任意函数)。

2、端到端

深度学习模型在训练过程中,从输入端(输入数据)到输出端会得到一个预测结果,与真实结果相比较会得到一个误差,这个误差会在模型中的每一层传递(反向传播),每一层的表示都会根据这个误差来做调整,直到模型收敛或达到预期的效果才结束,这是端到端的。

3、卷积层

卷积是一种有效提取图片特征的方法 。 一般用一个正方形卷积核,遍历图片上的每一个像素点。图片与卷积核重合区域内相对应的每一个像素值,乘卷积核内相对应点的权重,然后求和, 再加上偏置后,最后得到输出图片中的一个像素值。

卷积层:这使得数据量降低,进而在计算能力核内存有限的情况下能够实现深层的网络。

 输入是长宽都是5的灰度图像,通过一个卷积核大小为3*3*1的卷积,卷积核的通道数等于输入图像的通道数,得到一个3*3*1特征图。

解释一下,这里的3*3*1代表的是height,width,depth

特征图的个数等同于卷积(滤波器)个数,也就是特征图的通道数等于卷积个数。

偏置数=卷积核数。

填充padding

为了使卷积操作后能得到满意的输出图片尺寸,经常会使用padding对输入进行填充操作。默认在图片周围填充0。

全零填充padding='same’:会自动对原图进行全0填充,当步长为1时,可以保证输出的图片与输入的图片尺寸一致。输出尺寸计算公式:输入长/步长 (向上取整)

不填充padding='valid’:输出尺寸计算公式:(特征图height-核长)/步长+1 (向下取整)

自定义填充:略,用到的不多。

上面两种各有好处,看自己电脑配置等实际情况而定。

4、池化层

在卷积层中,可以通过调节步长参数 s 实现特征图的高宽成倍缩小,从而降低了网络的参数量。实际上,除了通过设置步长,还有一种专门的网络层可以实现尺寸缩减功能,它就是我们要介绍的池化层(Pooling layer)。

池化层同样基于局部相关性的思想,通过从局部相关的一组元素中进行采样或信息聚合,从而得到新的元素值。通常我们用到两种池化进行下采样:
(1)最大池化(Max Pooling),从局部相关元素集中选取最大的一个元素值。
(2)平均池化(Average Pooling),从局部相关元素集中计算平均值并返回。

(3)Stochastic-pooling(随机池化),只需对feature map中的元素按照其概率值大小随机选择,即元素值大的被选中的概率也大。而不像max-pooling那样,永远只取那个最大值元素。

(4)global average pooling(全局平均池化)

思想:对于输出的每一个通道的特征图的所有像素计算一个平均值,经过全局平均池化之后就得到一个 维度==类别数 的特征向量,然后直接输入到softmax层

作用:代替全连接层,可接受任意尺寸的图像

1)可以更好的将类别与最后一个卷积层的特征图对应起来(每一个通道对应一种类别,这样每一张特征图都可以看成是该类别对应的类别置信图)

2)降低参数量,全局平均池化层没有参数,可防止在该层过拟合

3)整合了全局空间信息,对于输入图片的spatial translation更加鲁棒
(5)Mix Pooling(混合池化),基于最大池化和平均池化的混合池化。

(6)SoftPool是一种变种的池化层,它可以在保持池化层功能的同时尽可能减少池化过程中带来的信息损失。如下图所示,P1、P2、P3和P4表示原图上的一个2*2大小的区域,首先利用公式将P1、P2、P3和P4转换成蓝色的区域;然后将将绿色区域的2*2矩阵与蓝色区域的2*2进行相乘与相加,从而获得最终的结果。

5、全连接层

全连接层简称FC。之所以叫全连接,是因为每个神经元与前后相邻层的每一个神经元都有连接关系。如下图所示,是一个简单的两层全连接网络,输入时特征,输出是预测的结果。

在实际应用中,会先对原始图像进行卷积特征提取,把提取到的特征喂给全连接网络,再让全连接网络计算出分类评估值。 

6、丢弃层Dropout

Dropout说的简单一点就是:我们在前向传播的时候,让某个神经元的激活值以一定的概率p(伯努利分布)停止工作,这样可以使模型泛化性更强,因为它不会太依赖某些局部的特征,如下图所示。

 7、归一化(Normalization)层

作用:简单来说,层层网络,各种变换,数据分布会带来很大变化, 就是每一点偏移累计起来就多了。使得高层需要很精细的训练才能适应底层。使得输入处于不饱和区域,缓解梯度消失问题,更平滑更稳定——更大的学习率,更快收敛。

BN层在图像领域颇有成效,它的作用可以归纳为以下几点:

加速网络收敛速度,可以使用较大的学习率来训练网络;

改善梯度弥散;

提高网络的泛化能力;

BN层一般用在线性层和卷积层后面,而不是放在非线性单元后。

8、优化器

常见的优化器有Adam,SGD

需要注意的是每次更新后的学习率衰减值,decay的值。

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值