Artificial intelligence 如何根据神经网络的输入和输出确定最佳隐藏层和神经元?

Artificial intelligence 如何根据神经网络的输入和输出确定最佳隐藏层和神经元?,artificial-intelligence,neural-network,biological-neural-network,Artificial Intelligence,Neural Network,Biological Neural Network,我在这里主要指的是这篇论文: 当前设置: 我目前正在尝试移植神经遗传AI解决方案,我已经准备好进入一个多用途多代理工具。因此,例如,它应该作为游戏引擎中的AI在实体周围移动,让它们射击并摧毁敌人(例如,4个输入,如距离x、y和角度x、y,以及2个输出,如向左、向右加速) 到目前为止,我使用的基因组数量与使用的试剂数量相同,以确定最适合的试剂。20%的最合适的试剂相互结合(选择zz、zw基因组),并为每个新群体创造2个婴儿。每新一代剩余的新群体是在老群体中随机选择的,包括基因组不合适的适者 在50

我在这里主要指的是这篇论文:

当前设置

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

到目前为止,我使用的基因组数量与使用的试剂数量相同,以确定最适合的试剂。20%的最合适的试剂相互结合(选择zz、zw基因组),并为每个新群体创造2个婴儿。每新一代剩余的新群体是在老群体中随机选择的,包括基因组不合适的适者

在50-100代之后,这对AI来说非常有效,在突破性克隆和一个小型坦克游戏中,它几乎是人类无敌的,你可以射击和移动

正如我在进化群体中使用每种“代理类型”的想法一样,现在的问题是,是否有可能确定隐藏层的数量以及隐藏层中神经元的数量

我的坦克游戏设置为4个输入,3个输出和1个隐藏层,其中12个神经元工作得最好(大约50代,非常强大)

我的突破游戏设置为6个输入、2个输出和2个隐藏层,其中12个神经元似乎工作得最好

完成研究

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

目前,我只在成功超越上次尝试的基础上,使用体能提升来为我的AI注入能量

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

在突破游戏中,它类似于我有一个桨,AI可以移动,它可以收集点。这里的“被射中”或负面处理是它忘了接球。所以潜在的噪声输入将是2个输出值(向左移动,向右移动),这取决于4个输入值(球x,y,degx,degy)

问题

那么,对于隐藏层的数量和神经元的数量,你认为什么样的计算可以是一个很好的折衷方案,以确保没有破坏基因组进化的噪音

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

总之,对于大多数问题,只需使用两个规则设置隐藏层配置,就可能获得良好的性能(即使没有第二个优化步骤):(i)隐藏层的数量等于1;(ii)该层神经元的数量是输入和输出层神经元的平均数

-

简而言之。这是一个正在进行的研究领域。大多数(据我所知)使用大量神经元和H层的人工神经网络都没有设置它们的静态数量,而是使用算法不断修改这些值。通常在输出收敛/发散时构造和破坏


<> P>因为听起来你已经在使用一些进化计算,考虑一下,我记得它在与你的工作类似的基准上得到了相当不错的改进。

谢谢链接到论文,这是一个有趣的比较不同的方法。我已经尝试过隐藏神经元的级联添加,但可能是因为我没有正确理解它。可能是出于游戏的目的,我尝试提供一些关于如何通过类型化对象API或类似设置NN的“默认设置”。因此,常见的情况是通过一个简单的API提供的,而不需要向gamedev询问以后要使用什么样的NN设置。