【问题标题】:Neural network for control application用于控制应用的神经网络
【发布时间】:2014-12-12 00:07:55
【问题描述】:

我正在尝试使用 brain.jssynapse.js(或任何其他 JS NN 库)来完成以下操作:

  • 我有一个 3 轴加速度计
  • 我有 4 个电机

我的输入看起来像:

{
  accelX: 0.12,
  accelY: 0.25,
  accelZ: 0.91,
  powerA: 1,
  powerB: 0.75,
  powerC: 0.44,
  powerD: 0.92
}

我希望输出是电机功率:

{
  powerA: 1,
  powerB: 0.75,
  powerC: 0.44,
  powerD: 0.92
}

这样accel 接近 0。我想我可以通过随机调整每个电机的功率来训练它,然后检查加速度是否接近 0。如果是,将其包含在训练集中.如果不是,则不包含在训练集中。

这样,随着时间的推移,我将拥有一个包含我的 7 个输入的各种状态的训练集,以及应该是什么合适的输出来实现我期望的 0 目标。我的问题是:我该如何构建它?我对 ANN 还是比较陌生。我不是在找人为我编写代码或为我解决这个问题,但也许是正确方向的一般指针。

如果有任何不清楚的地方,请添加评论,我会更新问题以澄清。

谢谢

【问题讨论】:

    标签: javascript neural-network


    【解决方案1】:

    首先,我看到您在输入和输出中都有电机功率。我假设您的意思是您正在传递电机的当前功率以及当前的加速度值,以确定电机的下一个功率设置。我还假设您有某种“物理函数”,它从神经网络(电机功率)获取输出,并根据引起运动的电机使加速度值适当变化。最终目标是以每个加速度的 0 值停止。

    我不建议使用训练集。您需要做的是创建一个评分函数来评估神经网络的有效性。一个非常简单的方法可能是将神经网络运行 100 个周期,然后将该神经网络的平均加速度作为分数。现在的目标变成了最小化分数。

    将神经网络权重设置为随机值。并将优化算法应用于神经网络的权重。优化算法调整参数(权重)以降低得分函数。不需要训练数据。

    有许多不同的优化功能。模拟退火可能是我能想到的最容易实现但非常有效的优化算法。其他可能性包括 Nelder Mead、遗传算法或爬山。

    【讨论】:

    • 你说得对,我希望输出为电机供电。我本身没有physics function。这将由我的机器人的现实决定。我的机器人将决定物理学。所以我认为你所说的不会在我的基地中起作用,因为我缺乏physics function。除非我弄错或误解了你在说什么?
    • 基本上,训练旨在改变您的体重值以实现您的目标。在您的情况下,将加速度值设为零。通常这是通过使用包含每组输入的预期输出的训练集来完成的。对于这种情况,很难生成训练数据。 “物理函数”只是一种确定加速度值实际值的方法,如果您有其他方法来计算它,那很好。
    • 所以也许我的机器人可以从静止输入状态开始并随机调整电机的功率,如果所需的输出比当前状态更接近零,它可以包含在训练集中。这有意义吗?
    猜你喜欢
    • 2014-07-06
    • 2017-08-27
    • 2018-11-01
    • 2017-02-03
    • 2012-12-29
    • 2018-05-08
    • 2017-04-04
    • 2016-12-23
    相关资源
    最近更新 更多