【问题标题】:How to determine optimum hidden layers and neurons based on inputs and outputs in a NN?如何根据 NN 中的输入和输出确定最佳隐藏层和神经元?
【发布时间】:2015-05-10 06:31:22
【问题描述】:

我在这里主要指的是这篇论文: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 个婴儿。每个新生代的其余新种群是在旧种群中随机选择的,包括最适合的基因组不适合的人群。

这对于启动 AI 非常有效,在 50-100 代之后,它在 Breakout 克隆和一个可以射击和四处移动的小型坦克游戏中几乎是人类无法击败的。 p>

因为我有想法为每种“代理类型”使用进化种群,所以现在的问题是是否有可能确定隐藏层的数量和隐藏层中神经元的数量。

我的坦克游戏设置是 4 个输入、3 个输出和 1 个隐藏层,其中 12 个神经元工作得最好(大约 50 代才能真正强大)。

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

完成研究

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

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

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

在突围游戏中,它类似于我有一个 AI 可以移动并收集积分的桨。这里的“中枪”或负面处理是它忘记了接球。因此,潜在的噪声输入将是 2 个输出值(左移、右移),取决于 4 个输入值(球 x、y、degx、degy)。

问题

那么,您认为对于隐藏层的数量和神经元的数量进行哪种计算可以是一个很好的折衷方案,以消除干扰基因组进化的噪音?

在您可以说“它会进一步发展”之前,最少的代理数量是多少?我目前的训练设置总是围绕 50 个并行学习的代理(因此它们基本上在“幕后”并行模拟 50 个游戏)。

【问题讨论】:

    标签: artificial-intelligence neural-network biological-neural-network


    【解决方案1】:

    总而言之,对于大多数问题,通过仅使用两条规则设置隐藏层配置,可能会获得不错的性能(即使没有第二个优化步骤):(i)隐藏层的数量等于 1; (ii) 该层中神经元的数量是输入和输出层中神经元的平均值。

    -doug

    简而言之。这是一个正在进行的研究领域。大多数(我所知道的)使用大量神经元和 H 层的 ANN 并没有设置任何一个的静态数量,而是使用算法来不断修改这些值。通常在输出收敛/发散时构造和销毁。

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

    【讨论】:

    • 感谢本文的链接,这是对不同方法的一个非常有趣的比较。我已经尝试了隐藏神经元的级联添加,但可能是我根本没有正确理解它。可能是出于游戏目的,我尝试提供一些关于如何通过类型化对象 API 或类似方法设置 NN 的“默认值”。因此,常见情况通过简单的 API 提供,而无需在以后与游戏开发人员对抗使用哪种 NN 设置。
    猜你喜欢
    • 2011-07-31
    • 1970-01-01
    • 2017-12-20
    • 1970-01-01
    • 1970-01-01
    • 2018-01-30
    • 2020-09-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多