九、深度卷积模型:实例探究
1、残差网络—Residual Networks (ResNets)
非常非常深的神经网络是很难训练的,因为存在梯度消失和梯度爆炸问题。这节课我们学习跳跃连接(Skip connection),它可以从某一层网络层获取激活,然后迅速反馈给另外一层,甚至是神经网络的更深层。利用跳跃连接构建能够训练深度网络的ResNets,有时深度能够超过100层。ResNets是由残差块(Residual block)构建的,首先看一下什么是残差块。
如上图的紫色部分,我们直接将a^[l]向后,到神经网络的深层,在ReLU非线性激活函数前加上a^[l],将激活值a^[l]的信息直接传达到神经网络的深层,不再沿着主路进行,因此a^[l+2]的计算公式为:
加上a^[l]后产生了一个残差块(residual block)。插入的时机是在线性激活之后,ReLU激活之前。除了捷径,你还会听到另一个术语“跳跃连接”(skip connection),就是指a^[l]跳过一层或者好几层,从而将信息传递到神经网络的更深层。
如果没有残差网络,对于一个普通网络来说,深度越深意味着用优化算法越难训练,随着网络深度的加深,训练错误会越来越多。
2、1 x 1卷积
1×1卷积在深度学习中,特别是在卷积神经网络(CNN)中,有着非常重要的作用。虽然看起来1×1的卷积核似乎没有空间感知能力,因为它只作用于每个单个像素,但实际上1×1卷积具有多种非常有价值的应用,尤其是在处理高维特征图时。
1×1卷积、3×3卷积等操作在改变通道数的过程中,会对输入通道进行线性组合,重新生成新的特征图,并不会丢失特征。通过引入激活函数(如ReLU),可以进一步增加特征的非线性表达能力。
3、Inception网络(Inception network)
Inception网络是一种卷积神经网络架构,它通过引入不同尺寸的卷积核并行工作来提取图像的多种特征,同时通过降低计算量来保持高效。Inception网络的核心思想是通过并行使用不同大小的卷积核,让网络在每一层中同时提取不同尺度的特征。传统的卷积层使用单一的卷积核大小提取特征,但这种设计可能无法捕捉到不同尺度上的重要信息。
Inception模块则在同一层中并行使用多种卷积核,比如1×1、3×3、5×5,甚至还会引入池化操作,从而在不同尺度上提取多样化的特征。具体来说,Inception模块将:
- 1×1卷积:用于降维、信息压缩和通道间的信息融合。
- 3×3卷积和5×5卷积:用于捕捉不同尺度的空间信息。
- 最大池化:提取低频的全局信息。
在这过程中,把得到的各个层的通道都加起来,最后得到一个28×28×256的输出。这就是一个Inception模块(Inception module),而Inception网络所做的就是将这些模块都组合到一起。
4、数据增强
大部分的计算机视觉任务需要很多的数据,所以数据增强(data augmentation)是经常使用的一种技巧来提高计算机视觉系统的表现。下面来看一下计算机视觉中常见的数据增强的方法。
- 如上图第一行,或许最简单的数据增强方法就是垂直镜像对称
- 如上图第二行,另一个常用的技巧是随机裁剪
- 也可以使用旋转(rotation)、剪切(shearing)和局部弯曲(local warping)等等,因为太复杂了所以使用的很少。
还有一种常用方法是彩色转换(color shifting),有这样一张图片,然后给R、G和B三个通道上加上不同的失真值(distortions)。在这个例子中(中间第一张图片),给红色、蓝色通道加值(+20),绿色通道减值(-20)。红色和蓝色会产生紫色,使整张图片看起来偏紫。(中间第二张图片)我们少用了一点红色(-20),更多的绿色和蓝色色调(+20),这就使得图片偏黄一点(yellowish)。(中间第三张图片)使用了更多的蓝色(+50),仅仅多了点红色(+5)。在实践中,R、G和B的值是根据某种概率分布来决定的。颜色失真或者是颜色变换方法,这样会使得你的学习算法对照片的颜色更改更具鲁棒性。
上图右侧的红色标记是对更高级的学习者的一些注意提醒,也可以不理解。对R、G和B有不同的采样方式,其中一种影响颜色失真的算法是PCA,即主成分分析(Principles Components Analysis),有时候被称作PCA颜色增强(PCA color augmentation),大概含义是,如果你的图片呈现紫色,即主要含有红色和蓝色,绿色很少,然后PCA颜色增强算法就会对红色和蓝色增减很多,绿色变化相对少一点,所以使总体的颜色保持一致。