9

我决定和神经网络一起创建一个动画引擎的行为。神经网络为我的每个身体部位提供3个矢量3和1欧拉角。第一个vector3是位置,第二个是速度,第三个是角速度。欧拉角是身体部位的旋转角度。我有7个身体部位。每种数据类型都有3个浮点数。 7 * 4 * 3 = 84,所以我有84个神经网络输入。输出映射到角色的肌肉。它们提供了适用于每个肌肉的力量,其中有15个。动画系统的神经网络尺寸

我正在同时运行15个网络10秒,通过计算最低能量使用来评估它们的适应性,具有最少量的z和x移动,并且如果身体部位与其余部位相比处于正确的y位置hips.y> upperleg.y,upperleg.y> lowerleg.y等),然后通过遗传算法运行它们。我运行的是每个隐藏层有168个神经元的神经网络,有8个隐藏层。我试图让角色挺身而出,而不是四处走动。我跑了3000代,我甚至都没有接近。

神经网络和遗传算法是C#版本this tutorial。我将交叉方法从一点改为混合。

我有84个输入和15个输出。我的神经网络应该有多大?

回答

5

你想解决的问题是一个相当棘手的问题,我怀疑任何“香草”GA(特别是那些使用固定架构的网络)将解决它(在合理的时间内)。我也不认为你会在隐藏层找到“正确数量的神经元”。

但是,如果你愿意花一些时间在它上看看HyperNEAT for Locomotion Control in Modular Robots,它或多或少地处理相同的问题。 他们使用相当先进的GA技术,称为HyperNEAT并报告一些好的结果。

HyperNEAT建立在NEAT之上(Neuroevolution of augmenting topologies)。 NEAT不仅能够演化人工神经网络的权重,而且能够演化他们的结构。它从简单的网络开始,慢慢地让它们变得更复杂,直到你达到目标(或放弃)。

然后NEAT稍作修改,以便能够使用各种激活功能。当它被应用于一组点时,它将使其能够产生各种各样的“模式”,例如,在一个坐标系中。这些模式可以有一些有趣的特征,如完美/不完美的对称性,或者它们可以是周期性的。该变体称为Compositional pattern-producing network或CPPN。该技术的一个引人注目的应用是PicBreeder,其中网络用于“绘制”图片。

HyperNEAT CPPN用于创建其他人工神经网络。新网络的隐藏层由所谓的衬底表示,可以想象该层的神经元被放置到2D/3D坐标系中。然后,对于每个可能的神经元对(全部从输入层到全部隐藏,从全部隐藏到全部输出),CPPN用于确定权重。因此,我们有一个间接的编码,这

    本身
  • 可以在年底
  • 这也可以显示十分复杂的行为
  • 模式,在现实中显示产生任意大的网络/自然(再次,对称性,周期性行为)可以相对容易地出现。请注意,对于动画/有效运动,它们都非常有利(如果不是必须的话)。

总而言之,它会给你一个机会来解决你的复杂问题。

正如你所看到的,这种技术有各种各样的层次,所以为你自己实现它并不那么容易。幸运的是,它有一些很好的实现,你可以在NEAT home page上找到它们,以及许多其他文档,论文和教程。

+0

我不喜欢你的答案,但它似乎是真的。尽管感谢您的领导。看完文献后我很好奇。 NEAT和HyperNEAT的区别在于CPPN,对吗? CPPN能够创建神经网络,但本身不是神经网络?或者它是一个发展并创建其他神经网络的神经网络? 非常有帮助,谢谢。 – DrSammyD 2010-08-19 02:40:07

+0

NEAT使用直接编码,这意味着对于基因组中的每个神经元和连接,您将在最终网络中具有相同的编码。 HyperNEAT使用间接编码。基因组是一个网络(CPPN随NEAT发展而来),当你将其应用于底物的神经元对(第二网络的神经元+更多信息,通常是2D/3D坐标系中的坐标)时,连接权重。我认为技术上CPPN也是一个NN,但它可以使用奇特的激活函数,而不是通常的S形/ tanh。但是,可能会有一些其他的细微差别。 – 2010-08-19 07:18:50

0

你可以简化这个到最基本的必需品吗?有一只脚和一只小腿,就是这样;两个身体部位,两个角度,并让它站立。

0

有趣的方法!我一直在想一些类似的东西,很想听听你会得到什么结果。

你必须测试,但我猜你有太多的隐藏层。我认为这个应用程序最多可以使用一两个。

你还应该看看你的健身功能 - 我认为提供学习可能“太困难”,因为在开始时它没有希望站起来。因此,你陷入的“本地最低限度”是学习如何以最小的努力倒下。不是很有用。一般来说,GAs受到当地最低标准的限制。

为了提高你的健身功能,我会尝试像处罚直立每帧的偏差。这将对管理局部平衡的解决方案有所贡献,所以应该有一个改进途径。除非你有足够的能量平衡,否则我根本就不会为能量使用而烦恼。

+0

实际上,我摆脱了常规指标,只专注于最小化能量并保持在一个x z位置。即使那不过是在30代以内。 – DrSammyD 2010-08-16 19:15:16

+0

我的遗传算法可能有问题。 – DrSammyD 2010-08-16 19:19:26

+0

我在计算健身方式时出了点问题。它开始为低能量工作并停留在一个x z位置。我让你知道它如何与站立。 – DrSammyD 2010-08-16 20:58:10