为什么随机权重初始化比在ANN中使用0作为权重要好?

在训练好的神经网络中,权重分布通常会接近于零。因此,我认为将所有权重初始化为零是合理的。然而,像-1到1之间的随机分配和Nguyen-Widrow方法等方法的表现都优于零初始化。为什么这些随机方法比使用零更好呢?


回答:

激活与学习:

除了cr0ss所说的内容外,在一个普通的多层感知器(MLP)中,层n+1的激活是层n的输出与层n和n+1之间权重的点积…所以基本上你会得到层n中神经元i的激活a的这个方程:

其中w是神经元j(父层n-1)与当前神经元i(当前层n)之间连接的权重,o是神经元j(父层)的输出,b是当前层中当前神经元i的偏置。

很容易看出,如果用零初始化权重,实际上会“停用”权重,因为父层输出的权重乘积将等于零,因此(在最初的学习步骤中)你的输入数据将不会被识别,数据将被完全忽略。所以在最初的几个周期中,学习将依赖于偏置提供的数据。

这显然会使网络的学习变得更加困难,并大大增加所需的学习周期数。

初始化应针对你的问题进行优化:

用-1 <= w <= 1的随机浮点数分布来初始化权重是最典型的初始化方法,因为总体来说(如果你没有分析你正在处理的问题/领域),这可以保证一些权重从一开始就相对较好。此外,使用固定初始化和随机初始化可以使其他神经元更快地相互适应,从而确保更好的学习。

然而,-1 <= w <= 1的初始化并不适合所有问题。例如:生物神经网络没有负输出,所以当你试图模仿生物网络时,权重应该是正的。此外,例如在图像处理中,大多数神经元要么有相当高的输出,要么几乎不输出。考虑到这一点,通常将权重初始化在0.2 <= w <= 1之间是一个好主意,有时甚至0.5 <= w <= 2也显示出良好的结果(例如在暗图像中)。

因此,正确学习一个问题所需的周期数不仅取决于层、它们的连接性、传输函数和学习规则等,还取决于你的权重初始化。你应该尝试几种配置。在大多数情况下,你可以找出哪些解决方案是合适的(例如,对于处理暗图像,使用更高、正的权重)。

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中创建了一个多类分类项目。该项目可以对…

发表回复

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