Datawhale X 李宏毅苹果书AI夏令营-进阶版 Task 3

3.7 批量归一化

        1. 问题来源:如果误差表面很崎岖,它比较难训练批量归一化(Batch Normalization,BN)就是其中一个“把山铲平”的想法,让它变得比较好训练。

        2. 如果可以给不同的维度同样的数值范围的话,那我们就可能制造比较好的误差表面,让训练变得比较容易一点。这种方法往往就合起来统称为特征归一化(feature normalization)(下图)。

        3. Z 值归一化(Z-score normalization),也称标准化(standardization):把不同数据即不同特征向量同一个维度里面的数值,把它取出来,对于每个维度 i,计算其平均值(mean) mi和标准差(standard deviation)σi。把这边的某一个数值 x,减掉这一个维度算出来的平均值,再除掉这个维度,算出来的标准差,得到新的数值 x˜。得到新的数值以后,再把新的数值把它塞回去。公式见下:

        4. 归一化以后,这个维度上面的数值就会平均是 0,其方差是 1,所以这一排数值的分布就都会在 0 上下。可能制造一个比较好的误差表面。

        5. 特征归一化方式往往对训练有帮助,它可以让在做梯度下降的时候,损失收敛更快一点,训练更顺利一点

3.7.1 考虑深度学习

        1. 问题如下:

        2. 解决方法如下:

        3. 在实现的时候,不会考虑整个训练数据的所有样本,而是只会考虑一个批量的样本。实际实现的时候,只对一个批量里面的数据做归一化,所以技巧称为批量归一化。一定要有一个够大的批量,才算得出 µ,σ。所以批量归一化适用批量大小比较大的时候,数据就足以表示整个数据集的分布。这时不需要对整个数据集做特征归一化,而改成只在一个批量上做特征归一化作为近似。见下图。

        4. 实际操作情况如下:

        原因:做归一化以后,z˜ 的平均值一定是 0,如果平均值是 0 ,会给网络一些限制,可能会带来负面的影响,所以需要把 β, γ 加回去,让网络隐藏层的输出平均值不是 0让网络学习 β, γ 来调整一下输出的分布,从而来调整 zˆ 的分布。实际上在训练的时候,γ 的初始值都设为 1,所以 γ 值都为 1 的向量。β 是值全部都是 0 的向量,即零向量。所以让网络在一开始训练的时候,每一个维度的分布,是比较接近的,也许训练到后来,已经找到一个比较好的误差表面,走到一个比较好的地方以后,再把 γ, β 慢慢地加进去,所以加了 γ, β 的批量归一化,往往对训练是有帮助的。

3.7.2 测试时的批量归一化

        1. 问题:如果在测试的时候,根本就没有批量,如何算 µ,σ 呢?批量归一化在测试的时候,并不需要做什么特别的处理,PyTorch 已经处理好了。在训练的时候,如果有在做批量归一化,每一个批量计算出来的 µ,σ,都会拿出来算移动平均(moving average)

        p 是因子,也是一个常数,一个超参数,也是需要调的那种。在 PyTorch 里面,p 设 0.1。计算滑动平均来更新 µ 的平均值。

3.7.3 内部协变量偏移

        1. 批量归一化为什么会有帮助呢?因为内部协变量偏移(internal covariate shift)。也有持不同意见。注:协变量偏移(covariate shift),训练集和预测集样本分布不一致的问题就叫做协变量偏移现象,这个词汇是原来就有的,内部协变量偏移是批量归一化的作者自己发明的

        2. 但至少支持批量归一化可以改变误差表面,让误差表面比较不崎岖这个观点。

第 4 章 卷积神经网络

        1.  什么是通道(channel)彩色图像的每个像素都可以描述为红色(red)、绿色(green)、蓝色(blue)的组合,这 3 种颜色就称为图像的 3 个色彩通道。这种颜色描述方式称为 RGB 色彩模型,常用于在屏幕上显示颜色。图片拆分见下图:

4.1 观察1:检测模式不需要整张图像

        在判断一个物体的时候,往往也是抓最重要的特征。只需要把图像的一小部分当作输入,就足以让它们检测某些特别关键的模式是否出现。

4.2 简化 1:感受野

        1. 根据观察 1 可以做第 1 个简化,卷积神经网络会设定一个区域,即感受野(receptive field),每个神经元都只关心自己的感受野里面发生的事情,感受野是由自己决定的。

        2. 感受野的范围不一定要相连,理论上可以有一个神经元的感受野就是图像的左上角跟右上角。但是就要想想为什么要这么做,会不会有什么模式也要看一个图像的左上角跟右下角才能够找到。如果没有,这种感受野就没什么用

        3. 把感受野往右移一个步幅,就制造出一个新的守备范围,即新的感受野。移动的量称为步幅(stride)希望感受野之间是有重叠的。假设感受野完全没有重叠,如果有一个模式正好出现在两个感受野的交界上面,就没有任何神经元去检测它,这个模式可能会丢失,所以希望感受野彼此之间有高度的重叠。

        4. 如果不在超过图像的范围“摆”感受野,就没有神经元去检测出现在边界的模式,这样就会漏掉图像边界的地方,所以一般边界的地方也会考虑的。超出范围就做填充(padding)

4.3 观察 2:同样的模式可能会出现在图像的不同区域

4.4 简化 2:共享参数

        让不同感受野的神经元共享参数,也就是做参数共享(parameter sharing)。每个感受野都只有一组参数而已,这些参数称为滤波器(filter)

 4.5 简化 1 和 2 的总结

        全连接层(fully-connected layer)可以自己决定看整张图像还是一个小范围。但加上感受野的概念以后,只能看一个小范围,网络的弹性是变小的。参数共享又进一步限制了网络的弹性。感受野加上参数共享就是卷积层(convolutional layer),用到卷积层的网络就叫卷积神经网络。关系见下图:

4.6 观察 3:下采样不影响模式检测

        第 3 个观察是下采样不影响模式检测。把一张比较大的图像做下采样(downsampling),把图像偶数的列都拿掉,奇数的行都拿掉,图像变成为原来的 1/4,但是不会影响里面是什么东西

4.7 简化 3:汇聚

        1. 汇聚没有参数,所以它不是一个层,它里面没有权重,它没有要学习的东西,汇聚比较像 Sigmoid、ReLU 等激活函数。因为它里面是没有要学习的参数的,它就是一个操作符(operator),其行为都是固定好的,不需要根据数据学任何东西

        2. 汇聚有很多不同的版本,如最大汇聚(max pooling),在每一组里面选一个代表,选的代表就是最大的一个,还有平均汇聚(mean pooling),平均汇聚是取每一组的平均值。

4.8 卷积神经网络的应用:下围棋

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值