残差网络、Dropout正则化、Batch Normalization浅了解

残差网络:

为什么需要残差网络:

残差网络的目的是为了解决深度神经网络在训练过程中遇到的退化问题,即随着网络层数的增加,训练集的误差反而增大,而不是过拟合。残差网络的优点有以下几点:

  • 残差网络可以有效地缓解梯度消失或爆炸的问题,因为跳跃连接可以提供一条更短的反向传播路径,使得梯度可以更容易地流动到较浅的层。
  • 残差网络可以提高网络的表达能力,因为残差块可以近似任何复杂的函数,而且可以通过增加网络深度来提高模型性能,而不会降低训练效率。
  • 残差网络可以更容易地优化,因为残差块可以看作是对恒等映射的微小扰动,这样可以使得网络的初始化更接近于最优解,而且可以使用较大的学习率来加速收敛。

从信息论的角度讲,由于DPI(数据处理不等式)的存在,在前向传输的过程中,随着层数的加深,Feature Map包含的图像信息会逐层减少,而ResNet的直接映射的加入,保证了 L+1 层的网络一定比 L层包含更多的图像信息。

基于这种使用直接映射来连接网络不同层直接的思想,残差网络应运而生。

什么是残差网络:

残差网络是一种深度神经网络,它的特点是在每个卷积层后面添加了一个跳跃连接,使得输入可以直接加到输出上,形成一个残差块。

残差块:

残差网络是由一系列残差块组成的(下图)。一个残差块可以用表示为:

 残差块分成两部分直接映射部分和残差部分。 h(xl) 是直接映射,反应在图1中是左边的曲线; F(xl,Wl) 是残差部分,一般由两个或者三个卷积操作构成,即图1中右侧包含卷积的部分。

上图中的Weight在卷积网络中是指卷积操作,addition是指单位加操作。

在卷积网络中, xl 可能和 xl+1 的Feature Map的数量不一样,这时候就需要使用 1×1 卷积进行升维或者降维(下图)。这时,残差块表示为:

 其中 h(xl)=Wl′x 。其中 Wl′ 是 1×1 卷积操作,但是实验结果 1×1 卷积对模型性能提升有限,所以一般是在升维或者降维时才会使用。

Dropout正则化:

为什么要正则化:

在深度学习领域中,众所周知所有的神经网络都可能会发生过拟合的现象,即模型容易过拟合。而过拟合通过采集海量数据,并配合Dropout正则化等方法也可以有效避免。

什么是正则化:

Dropout就是在每层神经网络中随机去掉一部分的神经元,在训练过程中,被去掉的神经元不参与前向传播和后向传播,即该神经元对神经网络的权重更新没有贡献,从而减少了参数之间的共适应,提高了网络的泛化能力。

Dropout正则化的作用有以下几点:

  • Dropout正则化可以有效地缓解梯度消失或爆炸的问题,因为它降低了网络的复杂度,使得梯度可以更容易地流动到较浅的层。
  • Dropout正则化可以增强网络的表达能力,因为它相当于对网络进行了集成学习,即每次训练时使用的是网络的一个子集,而测试时使用的是所有子集的平均,这样可以提高网络的鲁棒性和稳定性。
  • Dropout正则化可以更容易地优化,因为它相当于对网络添加了一个正则项,即每个权重乘以一个伯努利分布的随机变量,这样可以防止权重过大或过小,从而避免过拟合或欠拟合。

Batch Normalization(批量归一化):

为什么需要Batch Normalization:

深度学习中,在训练过程中,网络层数增多,权重在不断更新,导致激活层输出(输入)的分布会一直变化,可能无法一直保持zero mean unit variance分布,会有梯度消失和梯度爆炸的问题产生。这时候可以通过Batch Normalization也可以避免。

什么是Batch Normalization:

Batch Normalization是一种用于深度神经网络的技术,它可以加速网络的训练,提高模型的泛化能力,防止梯度消失或爆炸,减少对初始化和正则化的依赖。Batch Normalization的原理是对每个mini-batch中的数据进行归一化处理,使得每个神经元的输入服从标准正态分布,然后再通过可学习的缩放和平移参数来恢复数据的原始分布。Batch Normalization的作用有以下几点:

  • Batch Normalization可以降低数据之间的相关性,减少内部协变量偏移,使得每层的输入分布更加稳定,从而加快网络的收敛速度。
  • Batch Normalization可以增强网络的表达能力,因为它相当于对每层的输入添加了噪声,增加了数据的多样性,起到了一定的正则化作用,防止过拟合。
  • Batch Normalization可以缓解梯度消失或爆炸的问题,因为它使得每层的输入分布接近标准正态分布,避免了数值过大或过小导致的梯度变化剧烈。
  • Batch Normalization可以减少对初始化和正则化的依赖,因为它使得网络对权重和偏置的初始值不敏感,也使得网络可以使用更大的学习率和更少的Dropout。

参考文章:详解残差网络 - 知乎

https://www.baidu.com/link?url=7YpsN6GhUbDwH2vaLjI6GVLC7zjN-OSt1kmbjdNtsozBOf6nOZeZe5T7m529lLFR8bTvwaE32Hi3gPU5cY8FP_&wd=&eqid=aa78e975000062e40000000664ed64bc

猜你喜欢

转载自blog.csdn.net/weixin_45819759/article/details/132551183