让所有节点值从0
开始还是让它们在0和1之间随机变得更好?例如,从0开始将更加一致,但随机他们可以更快地接近正确的值。
答案 0 :(得分:2)
正如其他提到的网络初始化非常重要,可以决定您的网络是否会收敛,收敛速度等等。
文献中有相当多的初始化方案,并且每隔一段时间就会出现更多。 您可以在MIT Deep Learning text book中看到有关这些方案的扩展讨论以及我在下面讨论的内容。
在讨论随机初始化时,您需要考虑a)您将从中采样的分布b)您将从中采样的比例或范围。
关于分布,通常使用均匀分布或高斯分布,并且它们之间的选择似乎没有大的影响。
然而,随机权重的范围或范围会对您的结果产生非常大的影响。
最后,它非常依赖于您的架构选择,但选择范围的两种非常常见的策略是:
和
其中m
是图层的输入数量,n
是输出数量。
注意,这不一定是您可以选择的“完美”初始化,您应该尝试一些并找到适合您需求的初始化。
答案 1 :(得分:1)
如果你将所有参数都设置为零,那么由于神经网络由线性部分组成,所以它们都将输出零,最终的神经网络输出将为零。渐变也将为零,网络将无法学习。
这听起来并不好。
这就是为什么我们随机初始化神经网络参数,这是打破对称性的一种方法。它通常在[-1,1]范围内初始化,但这不是唯一的方法。例如,Glorot的方法通过神经元的1 /(输入+输出)来扩展此范围,还有其他方法,但绝对所有方法都使用随机初始化。
答案 2 :(得分:0)
许多计算结构对初始条件非常敏感。改变初始条件是探索解空间以找到更多全局最大值的好方法。您应该随机设置它们,每次运行都不同。