用于神经网络训练的反向传播与遗传算法

机器算法验证 神经网络 遗传算法 反向传播
2022-02-05 19:41:51

我读过几篇讨论每种方法的优缺点的论文,一些人认为 GA 在寻找最佳解决方案方面没有任何改进,而另一些人则表明它更有效。似乎 GA 在文献中通常是首选(尽管大多数人以某种方式对其进行修改以达到他们需要的结果),那么为什么大多数软件解决方案似乎只使用反向传播?

何时使用一种或另一种是否有一些一般的经验法则?也许这取决于 NN 的类型,或者存在一些通常优于其他解决方案的最先进的解决方案?

如果可能的话,我正在寻找一般的答案:即“如果 NN 很大,GA 更好”,或者“GA 总是更好,但存在计算性能问题”等......

4个回答

如果您仔细查看科学文献,您会发现对比鲜明的结果。显然,在某些情况下,遗传算法(更一般地说,进化算法)可能会帮助您找到最佳的神经网络设计,但通常它们有很多缺点(算法参数的调整、计算复杂性等),并且它们的使用对于现实来说是不可行的。世界应用。当然,您可以找到 GA/EA始终存在的一组问题比反向传播更好。鉴于找到最佳 NN 设计是一个复杂的多模态优化问题,GA/EA 可能有助于(作为元启发式)改进使用“传统”算法获得的结果,例如使用 GA/EA 仅找到初始权重配置或帮助传统算法逃离局部最小值(如果你有兴趣,我写了一篇关于这个主题的论文)。

我在这个领域做了很多工作,我可以告诉你,有很多关于 GA/EA 的科学著作应用于 NN,因为它们是(或者更好的是,它们曾经是)一个新兴的研究领域。

神经网络的一个关键问题是过拟合,这意味着算法会非常努力地找到一个基于有限数据样本来最小化某些标准的网络,最终会得到一个非常适合该特定样本的网络数据,但泛化能力较差。出于这个原因,我对使用 GA 设计神经网络相当谨慎,特别是如果它们在优化权重的同时进行架构优化。我通常发现,从多个(比如 20 个)随机初始权重向量中训练网络(使用正则化)然后形成所有结果网络的集合通常是一种很好的方法。

本质上,优化是机器学习中万恶之源,你做的越多,你就越有可能最终过度拟合数据。

每当您处理大量数据并希望使用前馈神经网络解决监督学习任务时,基于反向传播的解决方案更加可行。原因是,对于复杂的神经网络,自由参数的数量非常多。我目前正在从事的一个行业项目涉及一个前馈神经网络,它有大约 1000 个输入、两个隐藏层、每个 384 个神经元和 60 个输出。这导致 1000*384 + 384*384 + 384*60 = 554496 个要优化的权重参数。在这里使用 GA 方法会非常慢。

第二个答案是错误的。过度拟合不是由优化引起的。当您的模型过于复杂并且可以拟合所有数据点而无需学习创建它们的实际规则(即在极端情况下仅记住它们)时,就会发生过度拟合。有很多方法可以防止过度拟合,例如选择更简单的模型、dropout、 dropconnect,权重衰减,并且只使用更多数据。目标应该是优化您的网络并使其尽可能准确,同时考虑到这些限制。

为了回答这个问题,反向传播据说比随机优化(遗传算法等)快得多。我的猜测是,这是因为它利用了实际输出应该是什么,并根据该结果在正确的方向上调整权重,其中随机优化尝试完全随机变化并忽略该信息。

然而,通过探索更大的区域,从长远来看,GA 可能会通过避免局部最优来做得更好,只是需要更长的时间来训练。

我很好奇 GA 比反向传播慢多少,如果有人知道混合算法(分散搜索似乎是理想的选择。)