神经网络中的批量归一化

我对人工神经网络(ANN)还比较新手,刚刚阅读了批量归一化论文(http://arxiv.org/pdf/1502.03167.pdf),但我不确定自己是否完全理解了他们在做什么(更重要的是,为什么它有效)

假设我有两层L1和L2,其中L1产生输出并将其发送到L2中的神经元。批量归一化只是获取L1的所有输出(即每个神经元的所有输出,得到一个完全连接网络的|L1| X |L2|个数的总向量),将它们归一化为均值为0和标准差为1,然后将它们馈送到L2中各自对应的神经元(再加上论文中讨论的gamma和beta的线性变换)?

如果确实如此,这对神经网络有什么帮助?恒定分布有什么特别之处?


回答:

在网络的标准SGD训练过程中,由于前一隐藏层也在不断变化,隐藏层的输入分布也会发生变化。这被称为协变量偏移,可能是一个问题;例如,请参见这里

已知如果训练数据被“白化”,即以某种方式转换,使每个组件具有高斯分布且彼此独立,神经网络的收敛速度会更快。参见论文中引用的(LeCun等人,1998b)和(Wiesler & Ney,2011)这两篇论文。

作者的想法是,不仅对输入层应用这种白化处理,还对每个中间层的输入进行白化处理。直接对整个输入数据集进行这种处理成本太高,因此他们采用批量处理的方式。他们声称这可以大大加速训练过程,同时也起到一种正则化的作用。

Related Posts

L1-L2正则化的不同系数

我想对网络的权重同时应用L1和L2正则化。然而,我找不…

使用scikit-learn的无监督方法将列表分类成不同组别,有没有办法?

我有一系列实例,每个实例都有一份列表,代表它所遵循的不…

f1_score metric in lightgbm

我想使用自定义指标f1_score来训练一个lgb模型…

通过相关系数矩阵进行特征选择

我在测试不同的算法时,如逻辑回归、高斯朴素贝叶斯、随机…

可以将机器学习库用于流式输入和输出吗?

已关闭。此问题需要更加聚焦。目前不接受回答。 想要改进…

在TensorFlow中,queue.dequeue_up_to()方法的用途是什么?

我对这个方法感到非常困惑,特别是当我发现这个令人费解的…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注