为什么要将neural network的权重初始化为随机数?

我正试图从头开始build立一个neural network。 在所有人工智能文献中都有一个共识,即应该将权重初始化为随机数,以便networking更快地收敛。

但是,为什么neural network初始权值初始化为随机数?

我曾经在某处读过这样做是为了“打破对称”,这使得neural network学得更快。 如何打破对称使得学习速度更快?

不会将权重初始化为0是一个更好的主意? 这样权重就能够更快地find它们的值(无论是正值还是负值)?

有没有其他的背后的理念背后随机化的权重,希望他们会接近最佳值时初始化?

打破对称是必不可less的,而不是性能的原因。 设想前两层多层感知器(input层和隐藏层):

在这里输入图像说明

在前向传播中,隐藏层中的每个单元都获得信号:

在这里输入图像说明

也就是说,每个隐藏的单位获得input的总和乘以相应的权重。

现在设想你将所有权重初始化为相同的值(例如0或1)。 在这种情况下, 每个隐藏的单元将获得完全相同的信号 。 例如,如果所有权重初始化为1,则每个单位的信号等于input的总和(并输出sigmoid(sum(inputs)) )。 如果所有权重都是零,甚至更糟,每个隐藏的单位都会得到零信号。 不pipeinput是什么 – 如果所有权重相同,隐藏层中的所有单位也将是相同的

这是对称性的主要问题,也是为什么你应该随机初始化权重(或者至less用不同的值)。 请注意,这个问题会影响所有使用每个连接的体系结构。

答案很简单。 基本的训练algorithm本质上是贪婪的 – 他们没有find全局最优,而是“最近”的局部解。 因此,从任何固定的初始化开始,您的解决scheme都会偏向某个特定的权重集合。 如果你是随机的(也可能是多次),那么你很可能会陷入错误表面的一些奇怪的部分。

同样的观点适用于其他algorithm,它们不能find全局最优(k-means,EM等),不适用于全局优化技术(如SVM的SMOalgorithm)。

比喻:

我希望这是一个很好的比喻。 我试图尽可能简单地解释它。

想象一下,有人把你从一架直升机丢到了一座不知名的山顶,而你被困在那里。 到处都是雾。 只有你知道的是,你应该以某种方式下到海平面。 你应该采取哪一个方向来达到最低点?

如果你找不到通往海平面的路,那么直升机会再次把你带到山顶的位置。 您将不得不再次采取相同的方向,因为您正在将自己初始化到相同的位置。

但是,每当直升机将你随机放在山上,你将采取不同的方向和步骤。 所以,你可以有更好的机会达到最低点。

这是打破对称的意思。 初始化是不对称的(这是不同的),所以你可以find同样的问题不同的解决scheme。

在这个比喻中,你登陆的是权重。 所以,用不同的权重有更好的机会达到最低( 或更低 )的点。

此外,它增加了系统中的系统,使系统可以创build更多的信息来find更低的点。

在这里输入图像说明