Encog自学习神经网络

时间:2013-09-19 13:44:27

标签: java neural-network encog

神经网络(BP FF)可以自学(自主)如何控制螺旋桨以避免因试验而跌落和稳定吗?

神经网络类型:多层,反向传播前馈,S形激活。

为简单起见,只采用垂直螺旋桨控制和垂直速度。

nnput:垂直速度。

输出:螺旋桨功率(仅向下瞄准,因此仅向上推动)

由于反向传播NN从输出和所需输出的差异中获得误差,如何在不知道所需输出的情况下自我教导(实际上,它需要学习所需的输出)。

如果我将错误视为垂直速度(停止=无错误),那么它会更合适但是如何更改Encog的ResilientPropagation或BackPropagation类的错误功能?

我是否需要自己编写整个网络课程来实现这种类型的学习?因为没有初始训练数据。只有来自发动机功率和速度的新创建的数据。(如果我可以生成训练数据,那么我就知道如何控制引擎,因此不需要NN)

这项工作最合适的神经网络类型是什么?

1 个答案:

答案 0 :(得分:2)

如@larsmans的评论中所述,这可以通过Reinforcement Learning范例来解决。在神经网络的背景下,目前最流行的(也是唯一的?)方法是使用两个神经网络:

  • 演员网络:了解代理在给定的状态下应该采取什么行动(在这种情况下是螺旋桨力)(在这种情况下垂直速度) )

  • 评论家网络:学习价值观,未来强化代理商可以“希望”从这个州实现

这种方法称为Actor-Critic方法。您还需要做的就是设计增强功能。在你的情况下,它似乎很简单,因为它可能等于垂直速度,并且偏离某些预定高度会有额外的惩罚(否则网络将学习等待一段时间直到螺旋桨下降并停止自身)。

主要问题是调整所有这些参数以使其正常工作,但问题看起来非常简单,因此可能不是很难。