前言
如果你能找到这里,真是我的幸运~这里是蓝白绛的学习笔记,本集合主要针对《百面机器学习——算法工程师带你去面试》这本书。主要记录我认为重要的知识点,希望对大家有帮助。
第九章 前向神经网络
5、深度卷积神经网络
- 卷积神经网络也是一种前馈神经网络,其特点是每层的神经元节点只响应前一层局部区域范围内的神经元(全连接网络中每个神经元节点响应前一层的全部节点)。
- 卷积操作的本质特性:稀疏交互和参数共享。
- 稀疏交互( Sparse Interaction):全连接神经网络任意一对输入与输出神经元之间都产生交互,形成稠密的连接结构。而在卷积神经网络中,卷积核尺度远小于输入的维度,这样每个输出神经元仅与前一层特定局部区域内的神经元存在连接权重(即产生交互),这种特性称为稀疏交互。
稀疏交互使得优化过程的时间复杂度减小几个数量级,过拟合情况也得到较好的改善。
稀疏交互的物理意义是,通常图像、文本、语音等现实世界中的数据都具有局部的特征结构,我们可以先学习局部的特征,再将局部的特征组合起来形成更复杂和抽象的特征。 - 参数共享(Parameter Sharing):参数共享是指在同一个模型的不同模块中使用相同的参数,它是卷积运算的固有属性。全连接神经网络在计算每层的输出时,权值参数矩阵中的每个元素只作用于某个输入元素一次;而卷积神经网络的卷积核中的每一个元素将作用于每一次局部输入的特定位置上,根据参数共享的思想,我们只需要学习一组参数集合,而不需要针对每个位置的每个参数都进行优化,大大降低了模型的存储需求。
参数共享的物理意义是使得卷积层具有平移等变性。加入图像中有一只猫,那么无论它出现在图像中任何位置,都应该将它识别为猫。也就是神经网络的输出对于平移变换来说应当是等变的。
- 常用的池化操作主要针对非重叠区域,有:均值池化(mean pooling)、最大池化(max pooling)等。
- 均值池化:能够抑制由于邻域大小受限造成估计值方差增大的现象,特点是对背景的保留效果好。
-
最大池化:能够抑制网络参数误差造成估计均值偏移的现象,特点是更好地提取纹理信息。
还有一些特殊的池化方式,包括:对相邻重叠区域的池化以及空间金字塔池化。 - 相邻重叠区域的池化:采用比窗口宽度更小的步长,使得窗口在每次滑动时存在重叠的区域。
- 空间金字塔池化:主要考虑了多尺度信息,例如同时计算1*1、2*2、4*4的矩阵池化,并将结果拼接在一起作为下一网络层的输入。
- 池化操作的作用:池化操作的本质是降采样,能显著降低参数量,除此之外还能够保持对平移、伸缩、旋转操作的不变性。
6、深度残差网络
- 深度神经网络的层数决定了模型的容量,但随着层数加深,优化函数越来越陷入局部最优解。同时,随着网络加深,梯度消失的问题更加严重,这是因为梯度在反向传播时会逐渐衰减。特别是利用Sigmoid激活函数时,远离输出层的层不能得到有效学习,影响模型泛化的效果。
改善这一问题的方法有:改进训练算法、利用正则化、设计特殊的网络结构等。其中深度残差网络(Deep Residual Network,ResNet)是一种非常有效的网络结构改进,极大地提高了可以有效训练的深度神经网络层数。 - 通过实验发现,层数更深的神经网络会具有更大的训练误差,这很大程度上归结于深度神经网络的梯度消失问题。当误差由第层传播到除输入意外的第一个隐含层时,会涉及非常多的参数和导数的连乘,这时误差很容易产生消失或者膨胀,影响对该层参数的正确学习。因此深度神经网络的拟合和泛化能力有时甚至不如浅层的神经网络模型精度高。ResNet通过调整网络结构来解决上述问题。
- ResNet将网络结构调整为下图(b)所示:
既然离输入近的神经网络较难训练,那么我们可以将它短接到更靠近输出的层,如图(b)所示。输入经过两个神经网络的变换得到,同时也短接到两层之后,最后这个包含两层的神经网络模型输出这样一来被设计为只需要拟合残差,残差网络名称也由此而来。
小结
这是本章的第二部分,整理深度卷积神经网络和ResNet。具体的前向计算公式以及反向传播公式推导没有写,网上有很多资料。
结尾
如果您发现我的文章有任何错误,或对我的文章有什么好的建议,请联系我!如果您喜欢我的文章,请点喜欢~*我是蓝白绛,感谢你的阅读!