如何根据 NN 中的输入和输出确定最佳隐藏层和神经元?

How to determine optimum hidden layers and neurons based on inputs and outputs in a NN?

我在这里主要指的是这篇论文:http://clgiles.ist.psu.edu/papers/UMD-CS-TR-3617.what.size.neural.net.to.use.pdf

当前设置:

我目前正在尝试将我准备好的 神经遗传 AI 解决方案移植到 多用途多代理 工具。因此,例如,它应该作为游戏引擎中的 AI 在实体周围移动并让他们射击并摧毁敌人(例如 4 个输入,如距离 x、y 和角度 x、y 和 2 个输出,如向左加速,对)。

到目前为止的状态是,我使用的基因组数量与代理人数量相同,以确定最合适的代理人。 20% 的最适者相互组合(选择 zz、zw 基因组)并为每个新种群创造 2 个婴儿。每新一代的其余新种群是在旧种群中随机选择的,包括具有不适合基因组的最适者。

50-100 代 之后,这对启动 AI 非常有效走动。

正如我想对每个 "type of Agent" 使用进化种群的想法,现在的问题是是否有可能确定隐藏层的数量和隐藏层中神经元的数量。

我的坦克游戏设置是 4 个输入、3 个输出和 1 个隐藏层,其中有 12 个神经元效果最好(大约 50 代非常强大)。

我的突破游戏设置是 6 个输入、2 个输出和 2 个隐藏层以及 12 个神经元,这似乎效果最好。

完成研究:

所以,回到论文:在第 32 页你可以看到,似乎每个隐藏层的神经元越多,当然需要更多的时间来启动,但中间的神经元越多,得到的机会就越大进入没有噪音的功能。

我目前只在成功比上次尝试更好时使用适应度增加来启动我的 AI。

所以在坦克游戏中,这意味着他成功击中了另一辆坦克(打伤他 4 次更好,然后敌人就死了)并赢得了这一局。

在breakout游戏中,它类似于我有一个桨,AI可以四处移动并且可以收集积分。 "Getting shot"这里还是否定处理,就是忘记接球了。因此,潜在的噪声输入将是 2 个输出值(向左移动、向右移动),这取决于 4 个输入值(球 x、y、degx、degy)。

问题:

那么,对于隐藏层的数量和神经元的数量,您认为什么样的计算可以是一个很好的权衡,没有噪声会扼杀基因组进化?

在您可以说 "it evolves further" 之前,代理的最低数量是多少?我目前的训练设置总是有 50 个并行学习的代理(所以他们基本上并行模拟 50 个游戏 "behind the scenes")。

In sum, for most problems, one could probably get decent performance (even without a second optimization step) by setting the hidden layer configuration using just two rules: (i) number of hidden layers equals one; and (ii) the number of neurons in that layer is the mean of the neurons in the input and output layers.

-doug

简而言之。这是一个正在进行的研究领域。大多数(据我所知)使用大量神经元和 H 层的 ANN 都没有设置任何一个的静态数量,而是使用算法不断修改这些值。通常在输出 converge/diverge.

时构建和销毁

由于听起来您已经在使用一些进化计算,请考虑研究 Andrew Turner's work on CGPANN,我记得它在与您的工作类似的基准测试中取得了相当不错的改进。