番外篇2.2:图像处理与深度学习-CNN的发展和结构

本文详细介绍了卷积神经网络(CNN)的基础组件,如卷积层、池化层、全连接层和激活函数,并探讨了从早期的LeNet5到现代的DenseNet等经典CNN结构。通过这些结构,CNN能够处理图像识别任务,提高深度学习模型的精度。文中提到,ResNet通过残差学习框架解决了深度网络的训练难题,而DenseNet通过密集连接进一步优化了特征的利用。
摘要由CSDN通过智能技术生成

ok,我可是没有暂停啊!
在说cnn之前,要先总结卷积层、池化层、激活函数、全连接层等层的作用。

0.1 卷积层

卷积层其实就是对输入进来的图像做卷积,这层和上一层不是全连接,而是只有卷积核大小的区域连接,它的作用是模拟不同神经元对同样的刺激会有不同的反应,这个反应就是卷积,不同点就在于卷积核的不同。
卷积的时候会使图像缩小,为了方便并且不丢失边缘区域的信息,我们在图像外面加几圈0(3*3卷积核就加一圈,5*5就加两圈,以此类推),保证处理后的图像大小不变。而有时候我们扫描的是一个三维图像(rgb),我们所用的卷积核也是一个三维的,可能对每个通道信息的刺激反应也不相同。
卷积核和全连接层相比,一个显著的优点就是省内存。(因为连接的比较少嘛)
还有经过卷积核卷积后的图片叫做特征图,理论上卷积核越多,特征图越多,精度也会越高,不过运算量也会相应增大。具体多少个合适呢?具体情况具体分析,我不太清楚,不敢乱说,希望知道的人可以解答一下w

0.2 池化层

听着还是很厉害的,不过以2*2的池化层举例,其实就是2*2的矩阵并成一个元素,有下采样、上采样、平均采样等多种采样方法,具体操作如名字所示,取最大最小平均值。
池化层的作用,首先我认为肯定有缓解内存压力的作用,这个操作不影响channel数,而且可以较为高效的进行数据压缩。

0.3 全连接层

全连接层的每一个输出与上层的每一个节点相连,用来把前边提取到的特征综合起来。由于其全相连的特性,一般全连接层的参数也是最多的。它将从父层(特征图)那里得到的高维数据铺平以作为输入、进行一些非线性变换(用激活函数作用)、然后将结果输进跟在它后面的各个普通层构成的系统中。
很多地方说,全连接层在整个cnn中起到了分类器的作用,深以为然。然而全连接层参数冗余,(占整个网络80%左右)ResNet等已经使用了全局平均池化取代FC,来融合深度特征,仍用softmax等损失函数作为目标函数来指导学习过程。这种方法通常也有较好的预测性能。好像也有用svd来减少参数的。

0.4 激活函数

激活函数主要有sigmoid,tanh,ReLU三种,还有ReLU的几个变体。
sigmoid函数是f(x) = 1/(1+exp(-x)),由于其单增以及反函数单增等性质,Sigmoid函数常被用作神经网络的阈值函数,将变量映射到0,1之间。这个函数曾经比较流行,可以想象成一个神经元的放电率,导数大的位置为敏感区,平滑的地方叫抑制区。
当输入稍微远离坐标原点,函数梯度变得很小,况且还可能经过很多个sigmod函数,最后会导致权重w对损失函数几乎没影响,这种情况叫做梯度饱和(梯度弥散)。
还有此函数输出不是以0为中心的,这样会使权重更新效率降低。不过有一个变体,是把这个值减0.5,不过上一个问题还是没法解决。而且指数运算对于计算机来说也很慢。
tanh就是双曲正切,f(x) = (exp(x)-exp(-x))/(exp(x)+exp(-x))。
它把变量映射到-1,1之间,除了输出是以0为中心以外,几乎包括了sigmoid函数的所有缺点。
ReLU函数是f(x)=max(0,x),目前算是比较火的激活函数。它有一些优点:
当输入为正数的时候,不存在梯度饱和问题;
只有线性变化,计算快很多。
当然,缺点也是有的:
当输入是负数的时候,ReLU是完全不被激活的,这就表明一旦输入到了负数,ReLU就会死掉。这样在前向传播过程中,还不算什么问题,有的区域是敏感的,有的是不敏感的。但是到了反向传播过程中,输入负数,梯度就会完全到0,这个和sigmod函数、tanh函数有一样的问题;
我们发现ReLU函数的输出要么是0,要么是正数,这也就是说,ReLU函数也不是以0为中心的函数。
第一个问题,有几种变体可以解决:
首先有PReLU,函数是f(x)=max(ax,x),这个a是一个很小的数,保证不会死掉就可以。当a=0.01,叫做Leaky ReLU,当a从高斯分布中随机产生,叫Random ReLU。
还有ELU,函数是f(x)=a(exp(x)-1) (x<=0), x (x>0).。这种方法平均激活均值趋近与0,对噪声更有鲁棒性。但由于引入了指数,所以计算量又变大了。当ELU乘一个系数,就变成了SELU,本质上差不多。
还有swish和maxout,我还没搞太懂,不过公式可以给出来:
swish是f(x) = x*sigmoid(βx),这个β可以是训练的参数,也可以是常数。Swish 具备无上界有下界、平滑、非单调的特性。Swish 在深层模型上的效果优于 ReLU。例如,仅仅使用 Swish 单元替换 ReLU 就能把 Mobile NASNetA 在 ImageNet 上的 top-1 分类准确率提高 0.9%,Inception-ResNet-v 的分类准确率提高 0.6。
Maxout可以看做是在深度学习网络中加入一层激活函数层,包含一个参数k.这一层相比ReLU,sigmoid等,其特殊之处在于增加了k个神经元,然后输出激活值最大的值.
优点:
Maxout的拟合能力非常强,可以拟合任意的凸函数。
Maxout具有ReLU的所有优点,线性、不饱和性。
同时没有ReLU的一些缺点。如:神经元的死亡。
缺点:
从上面的激活函数公式中可以看出,每个神经元中有两组(w,b)参数,那么参数量就增加了一倍,这就导致了整体参数的数量激增。
(出处:https://www.cnblogs.com/makefile/p/activation-function.html
好好好,直接进入主题:

1 LeNet5

为啥叫LeNet5呢?因为这个神经网络只有5层,然后提出的人叫LeCun(1994提出)。
这个神经网络的组成如图下:
这里写图片描述
这里写图片描述
这个神经网络首次引入卷积层,但它的池化器是下采样的。后面的cnn多以卷积+池化+非线性激活作为典型特征,人称机器学习三剑客。

2 AlexNet

AlexNet是2012 ImageNet比赛的冠军,深度为8层。
它使用ReLU作为非线性激活函数,使用了后面常用的最大池化。而且使用了dropout来防止过拟合,用softmax作为输出层。
图像分类的样本都是将分类对象置于中心的,虽然池化考虑到了特征的相对空间关系,但是物体有太大的平移或旋转时分类效果难以保证,所以有时候训练时需要做数据扩增。AlexNet也使用了数据扩增。而且还利用了GPU来缩短了训练时间。
这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值