gpt4 book ai didi

java - 使用 Encog 自学习神经网络

转载 作者:行者123 更新时间:2023-11-30 04:13:54 24 4
gpt4 key购买 nike

神经网络(BP FF)能否通过尝试自学(自主)控制螺旋桨以避免坠落和稳定?

神经网络类型:多层、反向传播前馈、Sigmoid 激活。

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

输入:垂直速度。

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

既然反向传播神经网络会因输出与期望输出的差异而产生误差,那么它如何在不知道期望输出的情况下自学(实际上,它需要学习期望输出)。

如果我将误差视为垂直速度(stopped=no error),那么它会更合适,但是如何更改Encog的ResilientPropagation或BackPropagation类的误差函数?

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

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

最佳答案

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

  • 参与者网络:学习代理在给定的状态(在本例中为垂直速度)下应该采取什么 Action (在本例中为螺旋桨功率) )

  • 批评者网络:学习值(value)观,就 future 的强化而言代理可以“希望”从这个状态

    实现
  • >

这种方法被称为 Actor-Critic方法。您额外需要做的就是设计强化函数。在你的情况下,它看起来很简单,因为它可能等于垂直速度,并因偏离某个预定义的高度而受到额外的惩罚(否则网络将学会等待一段时间,直到螺旋桨落下并自行停止)。

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

关于java - 使用 Encog 自学习神经网络,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18896380/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com