为什么随机权重初始化比在 ANN 中仅使用 0 作为权重更好?
How come random weight initiation is better then just using 0 as weights in ANN?
在经过训练的神经网络中,权重分布将接近于零。所以对我来说,将所有权重初始化为零是有意义的。然而,有一些方法,例如 -1 到 1 的随机分配和 Nguyen-Widrow 优于零启动。为什么这些随机方法比只使用零更好?
看了Nguyen的文章,我会说是因为当你把权重从-1赋给1的时候,你已经定义了一个"direction"的权重,它会学习方向是不是正确,走或不走另一条路很重要。
如果您将所有权重分配给零(在 MLP 神经网络中),您不知道它可能会走向哪个方向。零是一个 neutral
数字。
因此,如果您为节点的权重分配一个较小的值,网络将学习得更快。
阅读文章的 Picking initial weights to speed training
部分。它指出:
First, the elements of Wi are assigned values from a uniform random distributation between -1 and 1 so that its direction is random. Next, we adjust the magnitude of the weight vectors Wi, so that each hidden node is linear over only a small interval.
希望对您有所帮助。
激活与学习:
除了 cr0ss 所说的之外,在正常的 MLP 中(例如)第 n+1 层的激活是第 n 层的输出与第 n 层和 n+1 层之间的权重的点积...所以基本上你得到这个等式激活 a 神经元 i 在层 n:
&space;=&space;%5Csum_j&space;w_%7Bi,j%7D%5E%7Bn,&space;n-1%7D&space;*&space;o_%7Bj%7D&space;+&space;b_%7Bi%7D%5E%7Bn%7D)
其中w是神经元j(父层n-1)到当前神经元i(当前层n)的连接权重,o是神经元j(父层)的输出,b是偏置当前层的当前神经元i。
很容易看出用零初始化权重实际上会 "deactivate" 权重,因为父层输出的权重将等于零,因此(在第一个学习步骤中)您的输入数据将 不被识别,数据将被完全忽略。
因此,学习将 仅 具有第一个时期中偏差提供的数据。
这显然会使网络的学习更具挑战性,并扩大大量学习所需的时期。
初始化应该针对你的问题进行优化:
使用 -1 <= w <= 1 的随机浮点分布初始化权重是最典型的初始化,因为总的来说(如果您不分析您正在处理的问题/领域)这保证了一些权重从一开始就相对较好。此外,固定初始化和随机初始化确保更好的学习,其他神经元相互适应更快。
但是 -1 <= w <= 1 的初始化并不是对每个问题都是最优的。例如:生物神经网络没有负输出,所以当你试图模仿生物网络时,权重应该是正的。此外,例如在图像处理中,大多数神经元要么有相当高的输出,要么几乎什么都不发送。考虑到这一点,在 0.2 <= w <= 1 之间初始化权重通常是个好主意,有时甚至 0.5 <= w <= 2 也会显示出良好的结果(例如在暗图像中)。
因此,正确学习一个问题所需的时间不仅取决于层、它们的连通性、传递函数和学习规则等,还取决于权重的初始化。
您应该尝试几种配置。在大多数情况下,您可以找出适合的解决方案(例如用于处理深色图像的更高的正权重)。
在经过训练的神经网络中,权重分布将接近于零。所以对我来说,将所有权重初始化为零是有意义的。然而,有一些方法,例如 -1 到 1 的随机分配和 Nguyen-Widrow 优于零启动。为什么这些随机方法比只使用零更好?
看了Nguyen的文章,我会说是因为当你把权重从-1赋给1的时候,你已经定义了一个"direction"的权重,它会学习方向是不是正确,走或不走另一条路很重要。
如果您将所有权重分配给零(在 MLP 神经网络中),您不知道它可能会走向哪个方向。零是一个 neutral
数字。
因此,如果您为节点的权重分配一个较小的值,网络将学习得更快。
阅读文章的 Picking initial weights to speed training
部分。它指出:
First, the elements of Wi are assigned values from a uniform random distributation between -1 and 1 so that its direction is random. Next, we adjust the magnitude of the weight vectors Wi, so that each hidden node is linear over only a small interval.
希望对您有所帮助。
激活与学习:
除了 cr0ss 所说的之外,在正常的 MLP 中(例如)第 n+1 层的激活是第 n 层的输出与第 n 层和 n+1 层之间的权重的点积...所以基本上你得到这个等式激活 a 神经元 i 在层 n:
其中w是神经元j(父层n-1)到当前神经元i(当前层n)的连接权重,o是神经元j(父层)的输出,b是偏置当前层的当前神经元i。
很容易看出用零初始化权重实际上会 "deactivate" 权重,因为父层输出的权重将等于零,因此(在第一个学习步骤中)您的输入数据将 不被识别,数据将被完全忽略。 因此,学习将 仅 具有第一个时期中偏差提供的数据。
这显然会使网络的学习更具挑战性,并扩大大量学习所需的时期。
初始化应该针对你的问题进行优化:
使用 -1 <= w <= 1 的随机浮点分布初始化权重是最典型的初始化,因为总的来说(如果您不分析您正在处理的问题/领域)这保证了一些权重从一开始就相对较好。此外,固定初始化和随机初始化确保更好的学习,其他神经元相互适应更快。
但是 -1 <= w <= 1 的初始化并不是对每个问题都是最优的。例如:生物神经网络没有负输出,所以当你试图模仿生物网络时,权重应该是正的。此外,例如在图像处理中,大多数神经元要么有相当高的输出,要么几乎什么都不发送。考虑到这一点,在 0.2 <= w <= 1 之间初始化权重通常是个好主意,有时甚至 0.5 <= w <= 2 也会显示出良好的结果(例如在暗图像中)。
因此,正确学习一个问题所需的时间不仅取决于层、它们的连通性、传递函数和学习规则等,还取决于权重的初始化。 您应该尝试几种配置。在大多数情况下,您可以找出适合的解决方案(例如用于处理深色图像的更高的正权重)。