Machine learning 为什么神经网络的权重要初始化为随机数?

Machine learning 为什么神经网络的权重要初始化为随机数?,machine-learning,neural-network,artificial-intelligence,mathematical-optimization,gradient-descent,Machine Learning,Neural Network,Artificial Intelligence,Mathematical Optimization,Gradient Descent,我正试图从头开始建立一个神经网络。 在所有人工智能文献中,有一个共识,即权重应该初始化为随机数,以便网络更快收敛 但为什么神经网络的初始权重初始化为随机数? 我在某个地方读到过这样做是为了“打破对称”,这使得神经网络学习更快。打破对称是如何让它学习得更快的 将权重初始化为0不是更好的主意吗?这样权重就能更快地找到它们的值(无论是正值还是负值) 除了希望权重在初始化时接近其最佳值之外,随机分配权重还有其他一些基本原理吗?答案非常简单。基本的训练算法本质上是贪婪的——它们不会找到全局最优解,而是“最

我正试图从头开始建立一个神经网络。 在所有人工智能文献中,有一个共识,即权重应该初始化为随机数,以便网络更快收敛

但为什么神经网络的初始权重初始化为随机数?

我在某个地方读到过这样做是为了“打破对称”,这使得神经网络学习更快。打破对称是如何让它学习得更快的

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


除了希望权重在初始化时接近其最佳值之外,随机分配权重还有其他一些基本原理吗?

答案非常简单。基本的训练算法本质上是贪婪的——它们不会找到全局最优解,而是“最近的”局部解。因此,从任何固定的初始化开始,都会使您的解决方案偏向某个特定的权重集。如果您随机地(可能多次)这样做,那么您陷入错误表面某些奇怪部分的可能性就会小得多


同样的论点也适用于其他算法,这些算法无法找到全局最优值(k-均值、EM等),也不适用于全局优化技术(如支持向量机的SMO算法)。

这里必须打破对称性,而不是出于性能原因。想象多层感知器的前两层(输入层和隐藏层):

在正向传播过程中,隐藏层中的每个单元获得信号:

也就是说,每个隐藏单元获得输入的总和乘以相应的权重

现在,假设您将所有权重初始化为相同的值(例如,零或一)。在这种情况下,每个隐藏单元将获得完全相同的信号。例如,如果所有权重都初始化为1,则每个单元获得的信号等于输入和(输出
sigmoid(和(输入))
)。如果所有的权值都是零,更糟糕的是,每个隐藏单元将得到零信号无论输入是什么-如果所有权重都相同,则隐藏层中的所有单位也将相同


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

类比:

想象一下,有人把你从直升机上扔到一个不知名的山顶,你被困在那里。到处都是雾。你知道的唯一一件事是你应该设法降低到海平面。你应该朝哪个方向走才能到达最低点

如果你找不到一条通往海平面的路,那么直升机会再次载你到同一个山顶位置。您必须再次选择相同的方向,因为您正在将自己“初始化”到相同的起始位置

然而,每次直升机将你随机地降落在山上的某个地方,你都会采取不同的方向和步骤。因此,你有更好的机会达到可能的最低点

这就是打破对称的意思。初始化是不对称的(这是不同的),因此您可以为同一问题找到不同的解决方案

在这个类比中,着陆的地方是重量。因此,使用不同的权重,有更好的机会达到最低(或更低)点

此外,它还增加了系统中的,因此系统可以创建更多信息来帮助您找到较低的点(局部或全局最小值)


正如你提到的,关键点是打破对称性。因为如果你将所有权重初始化为零,那么你的神经网络中所有隐藏的神经元(单位)将进行完全相同的计算。这不是我们想要的,因为我们想要不同的隐藏单元来计算不同的函数。但是,如果将所有项都初始化为相同的值,则不可能执行此操作

  • 将权重初始化为0不是更好的主意吗?这样权重就能更快地找到它们的值(无论是正值还是负值)

  • 打破对称是如何让它学习得更快的

  • 如果将所有权重初始化为零,那么所有层的所有神经元都执行相同的计算,给出相同的输出,从而使整个深网变得无用。如果权重为零,整个深网的复杂度将与单个神经元的复杂度相同,预测结果也将是随机的

    隐藏层中并排连接到相同输入的节点必须具有不同的权重,以便学习算法更新权重

    通过将权重设置为非零(但接近0,如0.1等),算法将在下一次迭代中学习权重,并且不会被卡住。这样,对称性就被打破了

  • 除了希望权重在初始化时接近其最佳值之外,随机化权重背后还有其他一些基本原理吗
  • 随机优化算法(如随机梯度下降法)在选择搜索起点和搜索过程中使用随机性

    神经网络的搜索或学习过程称为收敛。发现次优解或局部最优解会导致早熟收敛

    如果您使用不同的随机权重多次运行您的算法,而不是依赖于一个局部最优解,那么有一个最佳的可能性
    w=np.random.randn(layer_size[l],layer_size[l-1])*np.sqrt(2/layer_size[l-1])
    
    W_new = W_old + D_loss