DrS*_*myD 8 animation physics machine-learning neural-network genetic-algorithm
我决定使用神经网络来创建我拥有的动画引擎的行为.神经网络为我拥有的每个身体部位提供3个vector3s和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#版本.我将交叉方法从一个点改为混合.
我有84个输入和15个输出.我的神经网络应该有多大?
你要解决的问题是一个非常棘手的问题,我怀疑任何"vanilla"GA(特别是那些使用固定架构的网络)都会解决它(在合理的时间内).我也不认为你会在隐藏层中找到"正确数量的神经元".
但是,如果你愿意花一些时间在它上面看一下HyperNEAT用于模块化机器人中的运动控制,它可以处理或多或少相同的问题.他们使用一种名为HyperNEAT的非常先进的GA技术并报告了一些好的结果.
HyperNEAT建立在NEAT(增强拓扑的神经进化)之上.NEAT不仅能够发展人工神经网络的权重,还能够发展其结构.它从简单的网络开始,慢慢使它们变得更加复杂,直到你达到目标(或放弃).
然后稍微改变NEAT,以便能够使用各种激活功能.当它应用于一组点时,例如在坐标系中,它将使它能够产生各种各样的"模式".模式可以具有一些有趣的特征,例如完美/不完美的对称性,或者它们可以是周期性的.该变体称为组合模式生成网络或CPPN.这种技术的一个引人注目的应用是PicBreeder,其中网络用于"绘制"图片.
在HyperNEAT中,CPPN用于创建其他ANN.新网络的隐藏层由所谓的基板表示,可以将其想象为层的神经元被放置到2D/3D坐标系.然后,对于每对可能的神经元(从输入层到所有隐藏,从所有隐藏到所有输出),CPPN用于确定权重.因此我们有一个间接编码,它
总而言之,它将为您提供解决复杂问题的机会.
正如您所看到的,这种技术有各种层次,因此为您自己实现它并不容易.幸运的是,有一些很好的实现,你可以在NEAT 主页上找到它们,以及许多其他文档,论文和教程.
| 归档时间: |
|
| 查看次数: |
1058 次 |
| 最近记录: |