前言
本次任务主要是针对批量归一化来进行学习研究,从几个方面来进一步学习批量归一化。
一、批量归一化
是一种用于训练深度神经网络的技术,旨在通过标准化每一层的输入来加速训练过程并提高模型的稳定性。 批量归一化的核心思想是在每一层的输入数据上计算均值和方差,然后对这些数据进行归一化处理,使得输入数据的分布保持一致,从而减少内部协变量偏移的问题。
二、测试时的批量归一化
在测试的时候,我们一次会得到所有的测试数据,确实也可以在测试的数据上面,制造一个一个批量。但是假设系统上线,做一个真正的线上的应用,比如批量大小设 64,我一定要等 64 笔数据都进来,才做一次做运算,这显然是不行的。
三、内部协变量偏移
论文“How Does Batch Normalization Help Optimization?” 认为内部协变量偏移有问题。这篇论文从不同的角度来说明内部协变量偏移不一定是训练网络的时候的一个问题。批量归一化会比较好,可能不一定是因为它解决了内部协变量偏移。这篇论文里面做了很多实验,比如其比较了训练的时候 a 的分布的变化,发现不管有没有做批量归一化,其变化都不大。就算是变化很大,对训练也没有太大的伤害。不管是根据 a 算出来的梯度,还是根据 a ′ 算出来的梯度,方向居然都差不多。内部协变量偏移可能不是训练网络的时候,最主要的问题,它可能也不是批量归一化会好的一个的关键