批量归一化
为什么不同的参数在更新时其梯度变化如此之大?
首先,对于模型中w1,w2两个参数,可以看到其w1参数的梯度变化较为平滑,w2梯度变化较为陡峭,原因是x1较小时,当w1变化较大,由于x1较小,其整体乘积较小,对损失值影响不大;x2较大时,w2发生变化,其乘积较大,其对损失值变化很大,影响较大。
如何解决这一问题呢?
可以考虑采用特征归一化,出现上述问题,其归根到底是因为输入数值的变化范围太大,将其范围设限在相同范围内,可以很好的解决误差表面较差的问题。
对于x进行归一化处理,但是其W1层输出结果作为新的输入时,其范围仍然可能不同,所以应该在输入到W2层前再次进行归一化处理,那么归一化处理在激活函数前处理还是在激活函数后处理呢?这个问题,其实往往都可以,但sigmoid激活函数往往希望在前面进行处理,即对z进行处理。
进行归一化处理时,需要计算数据集的均值和标准差?
整体数据集较大时,其GPU可能算力不够,所以往往采用批量归一化,即对一个批次的数据进行均值和标准差的计算,(如果一个批次的数据规模较大,其分布和全部数据的分布相似,可以用该批次的均值和标准差进行之后的归一化,但注意规模较大这一条件)。
如果考虑不希望归一化均值不是0,可以进行如下处理:即引入两个参数
Q:为什么要加上 β 跟 γ 呢?
A:如果做归一化以后,z˜ 的平均值一定是 0,如果平均值是 0 的话,这会给网络一些 限制,这个限制可能会带来负面的影响,所以需要把 β, γ 加回去,让网络隐藏层的输 出平均值不是 0。让网络学习 β, γ 来调整一下输出的分布,从而来调整 zˆ 的分布。
Q:批量归一化是为了要让每一个不同的维度的范围相同,如果把 γ 跟 β 加进去,这 样不同维度的分布,其范围不会又都不一样了吗?
A:有可能,但是实际上在训练的时候,γ 的初始值都设为 1,所以 γ 值都为 1 的向 量。β 是值全部都是 0 的向量,即零向量。所以让网络在一开始训练的时候,每一个 维度的分布,是比较接近的,也许训练到后来,已经训练够长的一段时间,已经找到一 个比较好的误差表面,走到一个比较好的地方以后,再把 γ, β 慢慢地加进去,所以加 了 γ, β 的批量归一化,往往对训练是有帮助的。
假设系统上线,做一个真正的线上的应用,比如批量 大小设 64,我一定要等 64 笔数据都进来,才做一次做运算,该怎么改进?
PyTorch 已经处理好了。在训练的时候,如果有在做 批量归一化,每一个批量计算出来的 µ,σ,都会拿出来算移动平均(moving average)。假 设现在有各个批量计算出来的 µ 1 , µ 2 , µ 3 , · · · · · · , µ t,则可以计算移动平均 µ¯ ← pµ¯ + (1 − p)µ t。
其中,µ¯ 是 µ 的个平均值,p 是因子,这也是一个常数,这也是一个超参数,也是需要调的 那种。
卷积神经网络
Q:什么是通道?
A:彩色图像的每个像素都可以描述为红色(red)、绿色(green)、蓝色(blue)的组 合,这 3 种颜色就称为图像的 3 个色彩通道。这种颜色描述方式称为 RGB 色彩模型, 常用于在屏幕上显示颜色。
图像有大有小,而且不是所有图像尺寸都是一样的。常见的处理方式是把所有图像先 调整成相同尺寸,再“丢”到图像的识别系统里面。以下的讨论中,默认模型输入的图像 尺寸固定为 100像素 × 100像素。
一张图像是由 100×100×3 个数字所组成的,把这些数字排成一排就是一个巨大的向量。
检测模式不需要整张图像
对一个图像识别的类神经网络里面的神经 元而言,它要做的就是检测图像里面有没有出现一些特别重要的模式(pattern),这些模式是 代表了某种物体的。比如有三个神经元分别看到鸟嘴、眼睛、鸟爪 3 个模式,这就代表类神 经网络看到了一只鸟
感受野
卷积神经网络会设定一个区域,即感受野,感受野的引入就是为了实现检测模式不需要整张图像,借助 局部特征 可以判断图像的实物。
Q: 感受野一定要相连吗?
A: 感受野的范围不一定要相连
左上角的感受野往右移一个步幅,就制造出一个新的守备范围,即新的感受野。 移动的量称为步幅(stride)
Q: 为什么希望感受野之间是有重叠的呢?
A: 因为假设感受野完全没有重叠,如果有一个模式正好出现在两个感受野的交界上面, 就没有任何神经元去检测它,这个模式可能会丢失,所以希望感受野彼此之间有高度 的重叠。
超出范围就做填充(padding),填充就是补值,一般使用零填充(zero padding),超出范围就补 0,如果感受野有一部分超出图像的范围 之外,就当做那个里面的值都是 0。其实也有别的补值的方法,比如补整张图像里面所有值的 平均值或者把边界的这些数字拿出来补没有值的地方。
同样的模式可能会出现在图像的不同区域
共享参数
如果放在图像处理上,则可 以让不同感受野的神经元共享参数,也就是做参数共享(parameter sharing)
上面感受野的第 1 个神经元会跟下面感受野的第 1 个神经元共 用参数,上面感受野的第 2 个神经元跟下面感受野的第 2 个神经元共用参数 · · · · · · 所以每个 感受野都只有一组参数而已,这些参数称为滤波器(filter)。
如果有 64 个滤波器,就可 以得到 64 组的数字。这组数字称为特征映射(feature map)。
Q:如果滤波器的大小一直设 3 × 3,会不会让网络没有办法看比较大范围的模式呢?
A:不会。如图 4.23 所示,如果在第 2 层卷积层滤波器的大小一样设 3 × 3,当我们看 第 1 个卷积层输出的特征映射的 3 × 3 的范围的时候,在原来的图像上是考虑了一个 5 × 5 的范围。虽然滤波器只有 3 × 3,但它在图像上考虑的范围是比较大的是 5 × 5。 因此网络叠得越深,同样是 3 × 3 的大小的滤波器,它看的范围就会越来越大。所以网 络够深,不用怕检测不到比较大的模式。
下采样不影响模式检测
把一张比较大的图像做下采样(downsampling), 把图像偶数的列都拿掉,奇数的行都拿掉,图像变成为原来的 1/4,但是不会影响里面是什么 东西。
汇聚
以最大汇聚(max pooling)为例。最大汇聚在每一组里面选一个代表, 选的代表就是最大的一个,如图 4.28 所示。除了最大汇聚,还有平均汇聚(mean pooling), 平均汇聚是取每一组的平均值。
扁平化
扁平化就是把图像里面本来排成矩阵样子的东西“拉直”,即把所有的数值“拉直”变成一 个向量。
标签:进阶,批量,AI,李宏毅,归一化,感受,参数,图像,范围 From: https://blog.csdn.net/qq_51925699/article/details/141832438