神经网络中的批量归一化

我对人工神经网络(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

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

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