我正在尝试从头开始构建神经网络。 在所有AI文献中,人们都认为权重应该初始化为随机数,以便网络更快收敛。
但为什么神经网络的初始权重被初始化为随机数?
我曾在某处读到这样做是为了“打破对称性”,这使神经网络学得更快。打破对称性如何让它学得更快?
不会将权重初始化为0是一个更好的主意吗?这样,权重能够更快地找到它们的值(无论是正面还是负面)?
除了希望在初始化时它们接近最佳值时,还有一些其他潜在的哲学背后的权重吗?
答案 0 :(得分:111)
在这里打破对称性至关重要,而不是出于性能原因。想象一下前两层多层感知器(输入和隐藏层):
在向前传播期间,隐藏层中的每个单元都会获得信号:
也就是说,每个隐藏单元获得输入的总和乘以相应的权重。
现在假设您将所有权重初始化为相同的值(例如零或一)。在这种情况下,每个隐藏单元将获得完全相同的信号。例如。如果所有权重都初始化为1,则每个单位的信号等于输入的总和(和输出sigmoid(sum(inputs))
)。如果所有权重都为零,则更糟糕的是,每个隐藏单元将获得零信号。 无论输入是什么 - 如果所有权重都相同,隐藏层中的所有单位也将相同。
这是对称性的主要问题,以及为什么要随机初始化权重(或者至少使用不同的值)。请注意,此问题会影响使用每个到每个连接的所有体系结构。
答案 1 :(得分:58)
<强>打个比方:强>
我希望这是一个很好的类比。我试图尽可能简单地解释它。
想象一下,有人把你从直升机上摔到了一个不知名的山顶,你被困在那里。到处都是迷雾。你唯一知道的是你应该以某种方式下到海平面。你应该采取哪个方向来达到最低点?
如果你找不到通往海平面的路,那么直升机会再次带你到达同一山顶位置。您必须再次采用相同的指示,因为您正在“初始化”自己到相同的起始位置。
然而,每次直升机降落在山上随机的地方时,你会采取不同的方向和步骤。因此,您可以获得更好的机会来达到最低点。
这是打破对称性的意思。初始化为非对称(不同),因此您可以找到针对同一问题的不同解决方案。
在这个比喻中,你降落的地方是权重。因此,使用不同的权重,更有可能达到最低点(或更低)。
此外,它还会增加系统中的熵,以便系统可以创建更多信息来帮助您找到较低的点(本地或全局最小值)。
答案 2 :(得分:27)
答案很简单。基本的训练算法本质上是贪婪的 - 它们找不到全局最优,而是 - “最近”的局部解。结果,从任何固定的初始化开始,将您的解决方案偏向某个特定的权重集。如果你随机(也可能多次)这样做,那么你很可能会陷入错误表面的一些奇怪的部分。
同样的论点适用于其他算法,这些算法无法找到全局最优(k-means,EM等),也不适用于全局优化技术(如SVM的SMO算法)。
答案 3 :(得分:1)
正如您提到的,关键点是打破对称性。因为如果将所有权重初始化为零,那么神经网络中所有隐藏的神经元(单位)将进行完全相同的计算。这不是我们想要的,因为我们希望不同的隐藏单元计算不同的函数。但是,如果将所有都初始化为相同的值,则不可能。
答案 4 :(得分:1)
除了使用随机值进行初始化外,初始权重也不应从大值开始。这是因为我们经常在隐藏层和输出层中使用tanh和Sigmoid函数。如果查看两个函数的图,则在第一次迭代中进行正向传播后,将得到更高的值,这些值对应于将导数收敛为零的S型和tanh函数中的位置。这导致学习过程的冷启动和学习时间的增加。结果,如果您随机开始权重,则可以通过将这些值乘以“ 0.01”或“ 0.001”之类的值来避免这些问题。
答案 5 :(得分:1)
首先,即使初始权重为零,某些算法也会收敛。一个简单的例子是线性感知器网络。当然,许多学习网络都需要随机初始加权(尽管这不是不能保证获得最快,最好的答案)。
神经网络使用反向传播来学习和更新权重,问题在于这种方法中,权重收敛到局部最优(局部最小成本/损失),而不是全局最优
随机权重帮助网络在可用空间中的每个方向抓住机会,并逐步改善它们,以获得更好的答案,并且不限于一个方向,或者答案。
[下图显示了如何收敛的一维示例。给定初始位置,可以实现局部优化,但不能实现全局优化。在较大的维度上,随机加权可以增加在正确位置或开始更好的机会,从而使权重收敛到更好的值。] [1]
[1]:https://i.stack.imgur.com/2dioT.png [Kalhor,A.(2020)。分类和回归神经网络。演讲。]
在最简单的情况下,新的权重如下:
W_new = W_old + D_loss
此处,将成本函数梯度添加到先前的权重以获取新的权重。如果所有先前的权重都相同,则在下一步中所有权重都可以相等。结果,在这种情况下,从几何角度来看,神经网络在一个方向上倾斜并且所有权重都相同。但是,如果权重不同,则可以将权重更新不同的数量。 (取决于每个权重对结果的影响因素,它会影响成本和权重的更新。因此,甚至可以解决初始随机权重中的很小误差)。
这是一个非常简单的示例,但它显示了随机加权初始化对学习的影响。这使神经网络可以转到不同的空间,而不是转到一侧。因此,在学习过程中,请充分利用这些空间
答案 6 :(得分:0)
将权重初始化为0会不是一个更好的主意?这样权重就能更快地找到其值(正负)?
如何打破对称性使其学习更快?
如果将所有权重初始化为零,则所有层的所有神经元都会执行相同的计算,并通过使整个深网无用给出相同的输出。如果权重为零,则整个深网的复杂度将与单个神经元的复杂度相同,并且预测将不会比随机更好。
连接到相同输入的隐藏层中并排的节点必须具有不同的权重,以便学习算法可以更新权重。
通过将权重设置为非零值(但接近0,如0.1等),该算法将在下一次迭代中学习权重,而不会被卡住。这样,发生了破坏对称的情况。
- 在权重随机化之后,除了希望它们在初始化时会接近最佳值之外,还有其他潜在的基本哲学吗?
随机梯度下降等随机优化算法在选择搜索起点和搜索过程中会使用随机性。
神经网络的搜索或学习过程被称为收敛。发现次优解或局部最优会导致过早收敛。
如果不使用一个局部最优值,而是使用不同的随机权重多次运行算法,则最有可能找到全局最优值而不会陷入局部最优状态。
2015年后,由于机器学习研究的进步,引入了 He-et-al初始化 n来代替随机初始化
w=np.random.randn(layer_size[l],layer_size[l-1])*np.sqrt(2/layer_size[l-1])
权重仍然是随机的,但范围取决于神经元前一层的大小。
总而言之,非零随机权重可以帮助我们
参考文献:
答案 7 :(得分:0)
让我们更加数学化。实际上,我回答的原因是我发现其他答案中缺少这一点。 假设您有2层。如果我们看向后传播算法,
的计算dZ2 = A2-Y
dW2 =(1 / m)* dZ2 * A2.T
让我们忽略db2。 (对不起,对不起;))
dZ1 = W2.T * dZ2。* g1'(Z1)
...
您看到的问题以粗体显示。计算dZ1(计算dW1所必需)中的W2为0。我们从来没有机会将权重更改为大于0的任何值,而我们永远也不会。因此,从本质上讲,神经网络不会学习任何东西。我认为这比逻辑回归(单个单元)差。在逻辑回归的情况下,由于使用X获得了不同的输入,因此您可以进行更多的迭代学习。在这种情况下,其他层始终提供相同的输出,因此您根本不会学习。
答案 8 :(得分:0)
我学到了一件事:如果将权重初始化为零,则很明显,同一层中的激活单位将相同,这意味着它们将具有相同的值。反向倾斜时,您会发现梯度dW的所有行也都相同,因此权重矩阵W的所有行在梯度下降后都相同。通常,将所有权重初始化为零会导致网络无法打破对称性。这意味着每一层中的每个神经元都将学习相同的东西,并且您不妨在每一层上使用n[l]=1n[l]=1
来训练神经网络,并且该网络的功能不如线性分类器(例如逻辑回归)强大。
吴镇宇课程: