我们知道,在统计机器学习中算法中,一个常见的问题是 协变量偏移(Covariate Shift),协变量可以看作是 输入变量。一般的深度神经网络都要求输入变量在训练数据和测试数据上的分布是相似的,这是通过训练数据获得的模型能够在测试集获得好的效果的一个基本保障。
传统的深度神经网络在训练时,随着参数的不算更新,中间每一层输入的数据分布往往会和参数更新之前有较大的差异,导致网络要去不断的适应新的数据分布,进而使得训练变得异常困难,我们只能使用一个很小的学习速率和精调的初始化参数来解决这个问题。而且这个中间层的深度越大时,这种现象就越明显。由于是对层间数据的分析,也即是内部(internal),因此这种现象叫做内部协变量偏移(internal Covariate Shift)。
原文链接:https://blog.csdn.net/mzpmzk/article/details/80043076
于是有了BN的操作,具体解释很多博客都有,不再赘述
但思考后有点疑惑bn标准化和重构会不会把x变成了y又变成了x,看了不少别人的解释与gpt的解释,可以用以下几点考虑:
实际上,Batch Normalization(BN)的标准化和重构是为了实现不同的目标,且是相辅相成的。
-
标准化的目标:BN的标准化过程的主要目的是消除内部协变量偏移,确保每一层的输入数据在训练过程中保持相对稳定的分布。这有助于加快训练速度,提高模型的鲁棒性,减少梯度消失的问题。
-
重构的目标:重构过程(通过引入可学习的缩放因子和偏移量)并不是要将标准化后的数据还原为原始数据,而是允许模型对标准化后的输出进行调整。这样做是为了恢复可能因标准化而丢失的信息,并增强模型对特定数据分布的适应能力。
如何看待这个矛盾
-
互补性:标准化和重构是互补的。标准化提供了一个稳定的输入分布,而重构则允许模型通过学习来适应数据。这意味着模型在稳定的基础上进行学习,同时又不限制模型的表达能力。
-
灵活性:通过标准化,BN层强制输入数据的均值为0,方差为1,而重构则允许模型通过学习合适的参数,恢复特定的特征分布。这种灵活性使得模型能够更好地拟合复杂的数据分布。
-
不完全矛盾:尽管标准化看似在“压缩”数据,但通过重构,BN层实际上是在“扩展”模型的能力,让它可以在标准化的基础上进一步调整输出,达到更好的学习效果。