如何处理超参数调整中的随机权重初始化?

人工智能 神经网络 训练 随机性
2021-11-04 03:24:24

在调整我的神经网络的步骤中,我经常遇到一个问题,每次我训练完全相同的网络时,由于权重的随机初始化,它会给我不同的最终误差。有时差异很小且可以忽略不计,有时差异很大,具体取决于数据和架构。

当我想调整一些参数(如层数或神经元数)时,我的问题就出现了,因为我不知道最终误差的变化是由最近网络架构的变化引起的,还是仅仅是上述随机性的影响。

我的问题是如何处理这个问题?

3个回答

我不认为你可以。

假设一个 3 层的 NN 的准确率为 95.3%,另一个 4 层的 NN 的准确率为 95.4%。那么就不能保证 4 层 NN 就比 3 层 NN 好。由于使用不同的初始值,3 层 NN 可能会表现得更好。

您可以运行多次并概率性地说这更好,但这是计算密集型的。

神经网络有两种权重初始化方法: 1-零初始化 2-随机初始化

https://towardsdatascience.com/weight-initialization-techniques-in-neural-networks-26c649eb3b78

如果您在每个训练循环中选择零初始化方法,您可能会得到相同的结果,或者您可以根据您的问题使用迁移学习,它允许启动相同的参数。最后,作为最糟糕和最困难的选择,您可以编写自己的权重数组并提供图层。

你提到的问题是神经网络性能评估中最有趣的问题之一。您可以使用交叉验证方法来验证模型的准确性!它将给出更可靠的结果!

除了权重初始化之外,还有其他来源会导致不同的结果。例如辍学层。确保指定随机种子。此外,使用目录中的流读取数据,确保将 shuffle 设置为 False,或者如果不设置随机种子。如果您使用迁移学习,则使您的网络的那部分不可训练。一些网络中有 dropout,并且不提供设置随机种子的方法。如果您使用的是 GPU,则还有更多问题需要解决。