基于我上一次question我建立了一个3D游戏,其中两个机器人手臂互相打乒乓球。机器人有六个自由度 州由以下内容组成:
所有值都被归一化,因此它们取[-1,1]之间的值。 连续4帧,我得到37个参数的总输入。
奖励
输出
六个机器人关节中的每一个都可以以一定的速度移动,因此每个关节都可以向正方向移动,保持或向负方向移动。
这导致3 ^ 6 = 729个输出。
通过这些设置,神经网络应该学习机器人的反向运动学并打乒乓球。 我的问题是,我的网络收敛,但似乎陷入局部最小值,并且取决于配置,之后开始收敛。 我首先尝试了具有1000个节点的两个和三个隐藏层的网络,并且在几个时期之后,网络开始收敛。我意识到1000个节点太多并且将它们降低到100,结果是网络表现如上所述,它首先收敛然后稍微偏离。所以我决定添加隐藏的图层。目前,我正在尝试一个有6个隐藏层的网络,每个层有80个节点。目前的损失如下:
那么您如何看待,经验丰富的机器学习专家?您是否看到我的配置有任何问题?您会选择哪种类型的网络?
我很高兴看到每一个建议。
答案 0 :(得分:2)
我过去曾遇到过类似的问题。目标是学习具有神经进化框架NEAT的机器人臂的逆运动学。在左边的图是errorplot。在开始时一切正常,网络改善,但在某一点上,误差值保持在相同的值,甚至在计算30分钟后没有变化。我不认为你的神经网络是错误的,或神经元的数量是错误的。我认为,神经网络一般不能学习逆运动学问题。我也认为着名的论文(使用神经网络玩Atari游戏)是假的。
但回到事实。 OP(平均损失)和我的情节(人口适应度)中的情节显示了开始时的改进和一段时间之后的静止曲线,尽管事实上cpu正在100运行但仍无法改善找到更好的解决方案的%。目前尚不清楚神经网络需要多长时间才能进行优化,直到可以看到显着的改善,甚至可能经过数天或数年的不断计算后,找不到更好的解决方案。对文献的研究表明,对于每个中间或硬问题,结果是正常的,直到现在还没有发明更好的神经网络或更好的学习算法。潜在的问题被称为组合爆炸,意味着有许多可能的网络权重解决方案,并且计算机只能扫描少量的网络权重。如果问题真的很容易像问题" xor问题"像backpropagation或RPropMinus这样的学习算法会找到解决方案。在一些稍微困难的问题上,例如在迷宫中导航,找到反向运动学或钉入孔任务,没有当前的神经网络会找到解决方案。