神经网络大小动画系统 [英] Neural Network size for Animation system

查看:275
本文介绍了神经网络大小动画系统的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我决定用一个神经网络中去,从而创造,我有一个动画引擎的行为。神经网络发生在3 vector3s和我有充分的主体部分1欧拉角。第一的Vector3是位置,第二是它的速度,并且第三个是其角速度。欧拉角是轮换主体部是在。我有7个身体部位。这些数据类型每个人都有3浮动。 7 * 4 * 3 = 84,所以我必须为我的神经网络的输入84。的输出被映射到字符的肌肉。它们提供强度的应用到各肌肉的量,并有其中15

I decided to go with a Neural Network in order to create behaviors for an animation engine that I have. The neural network takes in 3 vector3s and 1 Euler angle for every body part that I have. The first vector3 is the position, the second is its velocity, and the third is its angular velocity. The Euler angle is what rotation the body part is at. and I have 7 body parts. Each one of those data types has 3 floats. 7*4*3 = 84, so I have 84 inputs for my neural network. The outputs are mapped to the muscles of the character. They provide the amount of strength to apply to each muscle, and there are 15 of them.

我同时运行15网络10秒,通过计算最低的能源使用,具有Z和X的运动的量最小评级的健身,如果身体部位是在正确的y位置相对于其余(臀部.Y> upperleg.y,upperleg.y> lowerleg.y等),然后通过一个遗传算法的运行它们。我跑每隐层168神经元的神经网络,有8个隐藏层。我想获得字符站直,不走动太多。我跑这3000世代,我甚至没有接近。

I am running 15 networks simultaneously for 10 seconds, rating their fitness by calculating the lowest energy use, having the least amount of z and x movement, and if the body parts are in the correct y position compared to the rest (hips.y > upperleg.y, upperleg.y > lowerleg.y etc.), and then running them through a genetic algorithm. I was running a neural network of 168 neurons per hidden layer, with 8 hidden layers. I'm trying to get the character to stand up straight and not move around too much. I ran this for 3000 generations and I didn't even come close.

神经网络和遗传算法是本教程的C#版本。我改变了交叉法从一个点到融合。

The neural network and genetic algorithm are C# versions of this tutorial. I changed the crossover method from one point to blending.

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

I have 84 inputs and 15 outputs. How large should my Neural Network be?

推荐答案

要解决的问题是一个相当棘手的,我怀疑任何的香草气(尤其是使用网络的固定架构)将解决它(在合理的时间)。我不认为你会找到隐藏层中的神经元的权数。

The problem you want to solve is a quite tricky one, I doubt that any "vanilla" GAs (especially that use a fixed architecture for the networks) will solve it (in a reasonable time). I also don't think that you will ever find the "right number of neurons" in the hidden layer.

不过,如果你愿意在这上面花一些时间看看的为洁癖运动控制的模块化机器人这或多或少同样的问题涉及。
他们使用一种称为一个洁癖相当先进GA技术,并报告了一些不错的成绩。

However, if you are willing to spend some time on it have a look at HyperNEAT for Locomotion Control in Modular Robots which deals with more or less the same problem. They use a quite advanced GA technique called HyperNEAT and report some good results.

是洁癖建立在NEAT顶部( Neuroevolution充实拓扑的)。 NEAT是能够进化,不仅人工神经网络的权重,而且它们的结构。它从简单的网络,慢慢地使他们更加复杂,直到你达到你的目标(或放弃)。

HyperNEAT is built on top of NEAT (Neuroevolution of augmenting topologies). NEAT is able to evolve not only the weights of ANNs, but also their structure. It starts with simple networks and slowly makes them more complex until you reach your goal (or give up).

然后NEA​​T稍有改变,以便能够使用各种活化功能。这将使它能够产生各种各样的模式时,它的应用到一组点如在一个坐标系。图案可以具有一些有趣的特征,像完美/不完善对称,也可以是周期性的。这种变异被称为构图模式生产网络或CPPN。这一技术的应用壮观 PicBreeder 那里的网络来画的照片。

Then NEAT is slightly altered, to be able to use various activation functions. It will enable it to produce a wide variety of "patterns" when it's applied to a set of points e.g. in a coordinate system. The patterns can have some interesting traits, like perfect/imperfect symmetry or they can be periodic. This variant is called Compositional pattern-producing network or CPPN. A spectacular application of this technology is PicBreeder where the networks are used to "draw" pictures.

洁癖的CPPNs用于创建其他人工神经网络。新网络的隐含层是由所谓的基板,其可以仿佛层的神经元被放至一个2D / 3D坐标系统可想而知psented重新$ P $。然后,对于每个可能的一对神经元的(所有从输入层至所有隐藏,从所有隐藏到所有输出)CPPN用于确定的重量。因此,我们有一个间接编码,

In HyperNEAT the CPPNs are used to create other ANNs. The hidden layer of the new networks is represented by a so called substrate, which can be imagined as if the neurons of the layer are put to a 2D/3D coordinate system. Then for each possible pair of the neurons (all from input layer to all hidden, from all hidden to all output) the CPPN is used to determine the weight. Thus we have an indirect encoding, which


  • 在本身很小

  • 可以在年底产生任意大的网络

  • 这也可以显示非常复杂的行为

  • 的模式,在现实中/性质(再次,对称性,周期性的行为)显示可以相对容易地出现。请注意,对于动画/有效运动两者都是非常有利的(如果不是必须的)。

所有的一切,将让你有机会为您解决复杂的问题。

All in all it would give you a chance to solve your complex problem.

正如你可以看到有这种技术的不同层,所以实现它为自己的不容易。幸运的是有一些很好的实现,你可以找到他们的NEAT 首页,有很多其他的文档,文件和教程在一起。

As you can see there are various layers of this technique, so implementing it for your own is not that easy. Luckily there are some good implementations of it, you can find them on the NEAT home page, together with a lot of other docs, papers and tutorials.

这篇关于神经网络大小动画系统的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆