Batch Normalization批量归一化:它是一种用于提高人工神经网络性能和稳定性的技术。BN通过对神经网络中每一层的输入进行标准化,使其更易于训练,减少了梯度消失和梯度爆炸等问题,并且可以加速神经网络的训练速度。
BN 层使训练更快,并允许更广泛的学习率,而不会影响训练收敛。
当输入的特征,每一个维度的值,它的范围差距很大的时候,我们就可能产生像这样子的误差表面,就可能产生不同方向,斜率非常不同,坡度非常不同的误差表面所以怎么办呢,有没有可能给特征里面不同的维度,让它有同样的数值的范围。如果我们可以给不同的维度,同样的数值范围的话,那我们可能就可以制造比较好的误差表面,让训练变得比较容易一点其实有很多不同的方法,这些不同的方法往往就合起来统称为特征归一化(feature normalization)。
常见的归一化
Z 值归一化:z-score考虑到了不同样本对表达量的影响,计算z-score时,消除到了表达的平均水平和偏离度的影响。转换后表达量符合正态分布分布,Z-score只是一个临界值,是标准化的结果,本身没有意义,有意义的在于在标准正态分布模型中它代表的概率值。 所以只要知道Z值, 查对应的正态分布表,就可以知道表达量偏离平均水平的程度。像这样子的特征归一化方式往往对训练有帮助,它可以让在做梯度下降的时候,损失收敛更快一点,训练更顺利一点。
归一化的作用:加速收敛,提高稳定性,每一维度的范围相同
3.7.1 考虑深度学习
在做批量归一化的时候可以有如下操作:
r,β:改变z平均值=0产生的负面影响。一般在训练后期找到比较好的误差表面后加入。
3.7.2测试时的批量归一化
各个批量计算出来的μ有所不同,需要根据因子进行计算。得到μ拔。σ同理。
在测试的时候用μ拔和σ拔这两个移动平均来取代μ和σ
3.7.3内部协变量偏移
内部协变量偏移(Internal Covariate Shift)指的是在训练神经网络时,随着网络参数的更新,隐藏层的输入分布发生变化的现象。通俗来说,它是指神经网络的各层在训练过程中,输入数据的分布不断变化,这种变化可能会使训练变得更加困难和缓慢。
第 4 章 卷积神经网络
图像分类:就是给机器一张图像,由机器去判断这张图像里面有什么样的东西。
怎么把图像当做模型的输入呢?对于机器,图像可以描述为三维张量(张量可以想成维度大于 2 的矩阵)。一张图像是一个三维的张量,其中一维代表图像的宽,另外一维代表图像的高,还有一维代表图像的通道(channel)的数目。
模型的目标是分类,因此可将不同的分类结果表示成不同的独热向量 y′。在这个独热向量里面,类别对应的值为 1,其余类别对应的值为 0
4.1 观察 1:检测模式不需要整张图像
假设我们的任务是让网络识别出图像的动物。对一个图像识别的类神经网络里面的神经元而言,它要做的就是检测图像里面有没有出现一些特别重要的模式(pattern),这些模式是代表了某种物体的。
4.2 简化 1:感受野
根据观察 1 可以做第 1 个简化,卷积神经网络会设定一个区域,即感受野(receptivefield),每个神经元都只关心自己的感受野里面发生的事情,感受野是由我们自己决定的。
感受野可以有大有小,因为模式有的比较小,有的比较大。有的模式也许在 3 × 3 的范围内就可以被检测出来,有的模式也许要 11 × 11 的范围才能被检测出来。此外,感受野可以只考虑某些通道。目前感受野是 RGB 三个通道都考虑,但也许有些模式只在红色或蓝色的通道会出现,即有的神经元可以只考虑一个通道。之后在讲到网络压缩的时候,会讲到这种网络的架构。感受野不仅可以是正方形的,例如刚才举的例子里面 3 × 3、11 × 11,也可以是长方形的,完全可以根据对问题的理解来设计感受野。我们希望感受野可以高度重叠是因为可能有的模式会出现在不同两个感受野上,我们不能忽略这种情况。
4.3 观察 2:同样的模式可能会出现在图像的不同区域
由于目标模式可能出现在图像的所有区域内,给每一个感受野加上一个检测的神经元实在是没有必要,且会增加工作量,所以下面提出了简化:
4.4 简化 2:共享参数
参数共享指的是在模型的不同部分使用相同的参数。在传统的机器学习算法中,每个特征都有自己独立的参数,而在深度学习算法中,通过参数共享,多个特征可以共享同一个参数,从而减少参数的数量。这种共享参数的方式可以有效地减少模型的复杂度,并提高模型的训练速度和泛化能力。这些参数称为滤波器。
4.5 简化 1 和 2 的总结
感受野加上参数共享就是卷积层(convolutional layer),用到卷积层的网络就叫卷积神经网络。
下面这一段话一开始没看懂,但是后面和学长交流以后懂了。
这段话的意思是:由于每一个卷积核的输出只是这个图像的一部分的信息。所以对于一个卷积层,其输出为64维,那么一个输入经过这个卷积层处理后,它的输出就是一个规模为64维的张量,如果想对这个张量再经过一个卷积层的处理,那么这个二次处理的卷积层的输入维度就得是64。就跟两个全连接层的参数矩阵一样,列数和行数相等。
举个例子:
conv1和conv2是两个卷积层。然后前一个通过32个滤波器输出了32维。后一层就需要设置高度是32的滤波器用于读取。最后两层卷积下来输出了64层。
(同时还经历了两次池化。)
4.7 简化 3:汇聚
汇聚就是把图像变小。做完卷积以后会得到一张图像,这张图像里面有很多的通道。做完汇聚以后,这张图像的通道不变。