避免与神经网络 (EA) 的过早收敛

数据挖掘 机器学习 优化 毫升 进化算法 基因编程
2022-03-07 12:49:44

我目前正在编写一个能够在 25*25 网格上玩蛇的程序。它通过在进化策略的帮助下优化一组 300 个不同解决方案的权重(每个解决方案将是一个不同的神经网络),从而通过随机突变和父选择来工作。由于涉及 MLP 和其他神经网络的黑盒问题,我决定不对父池应用交叉。我的人口规模是 300,每代选择 10 位父母(总共 200 代)。所有其他不是父解决方案的解决方案都将被删除,以便为 290 个基于父解决方案的新变异解决方案腾出位置。

我的网络结构(MLP)如下:6 个输入节点,(10,10)个隐藏节点,3 个输出节点。

使用我当前版本的程序,我能够达到吃掉 60 个苹果(或分数)的稳定分数(大约 15/200 的分数高于 60)。而这仅在 50 代之后!但是现在,我似乎遇到了一个我无法克服的局部最小值。有没有人知道是否仍有可能取得进一步的进展,或者我可能已经达到了天花板?快速提升的性能可能表明我的探索/开发平衡可能并不理想,但是每个解决方案都包含 190 个权重,更多的探索似乎在计算上过于昂贵,并且在我的 i7 10gen 笔记本电脑上会永远花费:/。

我可以称这为过早收敛吗?有没有办法解决这个问题,或者我已经达到了我的想法的极限?

1个回答

你可以看看 dropout,它会让你摆脱陷入困境的局部最小值。