【卷积层、BN层(Batch Normalization)、激活函数理解】

【卷积层、BN层(Batch Normalization)、激活函数理解】主要是由于目前主流的梯度更新方式是 mini batchgradien 小批的梯度下降 这种方法把数据分为若干个批 按批来更新参数 这样 一个批中的一组数据共同决定了本次梯度的方

大家好,欢迎来到IT知识分享网。

一、卷积层

1. 卷积核

1.1 卷积操作

在这里插入图片描述
上图中的蓝色矩阵为输入的图像,维度为[5, 5, 3],经过0值填充后(灰色值为0部分),维度变为[7, 7, 3],粉色矩阵为卷积层的神经元,这里有两个神经元(w0, w1),每个神经元的维度为[3, 3, 3],步长设置为2,即每个窗口滑动的长度。

蓝色矩阵的输入数据,与filter(粉色矩阵)的权重数据进行矩阵内积计算,将结果与偏置值bias相加,得到的结果为绿色输出矩阵中的一个值。

以第一个窗口计算为例:

[0x1+0x1+0x(-1)+0x(-1)+0x0+1×1+0x(-1)+0x(-1)+1×0] +[0x(-1)+0x0+0x(-1)+0x0+1×0+1x(-1)+0x1+0x(-1)+2×0] + [0x0+0x1+0x0+0x1+2×0+0x1+0x0+0x(-1)+0x1] + 1 = 1

2. 输出层计算公式

3.计算量分析

输入图像C×H×W,卷积核为Cf× K1×K2,N表示卷积核的个数。
计算量= C×H×W×Cf×K1×K2
有bias
计算量 = C×H×W×(Cf×K1×K2 +1)


4.参数量计算

参数量= Cf×K1×K2×C
bias参数量Cout
总参数量 = Cf×K1×K2×C +Cout

二、BN层

1. 为什么要进行BN?

为了训练参数更好更有效地向前传播
为什么参数会出现不好传播的情况呢?主要原因是激活函数的使用。为了增加模型的非线性表达能力,在层与层之间常常加上一层激活函数。而这层激活函数的存在会使得数据分布产生变化,大部分激活函数都会有一个敏感区间,而非敏感区间的数据有可能就在多层的参数传递后丢失了。尤其是在层数特别深的情况下,未经过标准化的数据起到的作用相当有限。

所以,BN层的作用是把一个mini-batch内的所有数据,从不规范的分布拉到正态分布。这样做的好处是使得数据能够分布在激活函数的梯度较大的区域,因此也提高了泛化能力,可以在一定程度上解决梯度消失的问题,同时可以减少dropout的使用。

当参数更好地向前传播后,梯度的下降会更加稳定,可以使用更大的学习率来加快学习。对数据分布的不断调整也减轻了对参数初始化的依赖,利于整体调参。

2.BN操作步骤

在这里插入图片描述

  • 计算mini-batch中的均值
  • 计算mini-batch内的方差
  • 对每一个元素进行归一化(normalize)
  • 进行尺度缩放与偏移操作(scale and shift):偏移和尺度为参数,通过训练来学习,目的是为了补偿网络的非线性表达能力。

2.1 为什么是mini-batch?

主要是由于目前主流的梯度更新方式是mini-batch gradient decent,小批的梯度下降,这种方法把数据分为若干个批,按批来更新参数,这样,一个批中的一组数据共同决定了本次梯度的方向,下降起来就不容易跑偏,减少了随机性。另一方面因为批的样本数与整个数据集相比小了很多,计算量也不是很大。

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

因为非线性单元的输出分布形状会在训练过程中变化,归一化无法消除它的方差偏移,相反的,全连接和卷积层的输出一般是一个对称,非稀疏的一个分布,更加类似高斯分布,对他们进行归一化会产生更加稳定的分布。

3. Batch Normalization 优缺点

3.1 Batch Normalization 优点

  • 可以加快模型收敛速度 ,不再依赖精细的参数初始化过程。
  • 可以调大学习率,控制梯度爆炸,防止梯度消失等。
  • 同时引入的随机噪声 能够起到对模型参数进行正则化的作用,有利于增强模型泛化能力,防止过拟合。
  • 不仅仅极大提升了训练速度,收敛过程大大加快,还能增加分类效果,一种解释是这是类似于Dropout的一种防止过拟合的正则化表达方式,所以不用Dropout也能达到相当的效果。另外调参过程也简单多了,对于初始化要求没那么高,而且可以使用大的学习率等。总而言之,经过这么简单的变换,带来的好处多得很,这也是为何现在BN这么快流行起来的原因。

3.2 Batch Normalization 不足

  • 如果 Batch Size 太小,则 BN 效果明显下降。因为在小的 BatchSize 意味着数据样本少,因而得不到有效统计量,也就是说噪音太大。
  • 对于有些像素级图片生成任务来说,BN 效果不佳;对于图片分类等任务,只要能够找出关键特征,就能正确分类,这算是一种粗粒度的任务,因为在 Mini-Batch 内多张无关的图片之间计算统计量,弱化了单张图片本身特有的一些细节信息
  • RNN 等动态网络使用 BN 效果不佳且使用起来不方便
  • 训练时和推理时统计量不一致

三、激活函数

1.激活函数定义?

激活函数 (Activation functions) 对于人工神经网络模型去学习、理解非常复杂和非线性的函数来说具有十分重要的作用。

2.激活函数必要性

3.常用激活函数

3.1 Sigmoid 函数

3.2 正切函数

3.3 Relu激活函数

一般可以采用Xavier初始化方法,同时将learning rate设置为合理的范围,可以避免Dead ReLU Problem现象。

3.4 Leaky ReLU函数

3.4 ELU(Exponential Linear Units)函数

函数表达式:

f ( x ) = { x , x > 0 α ( e 2 − 1 ) , o t h e r w i s e f(x) = \begin{cases} x , & x>0 \\ \alpha (e^2 -1), &otherwise \\ \end{cases} f(x)={
x,α(e21,x>0otherwise

函数与导数图像如下:
在这里插入图片描述
ELU也是为解决ReLU存在的问题而提出,显然,ELU有ReLU的基本所有优点,以及不会有Dead ReLU问题和输出的均值接近0,zero-centered。


免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/117979.html

(0)
上一篇 2025-11-16 18:26
下一篇 2025-11-16 18:45

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信