Javascript 神经网络在控制中的应用

Javascript 神经网络在控制中的应用,javascript,neural-network,Javascript,Neural Network,我正在尝试使用brain.js或synapse.js(或任何其他js NN库)来完成以下任务: 我有一个三轴加速度计 我有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,

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

  • 我有一个三轴加速度计
  • 我有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
}
使加速度接近0。我想我可以通过随机调整每个电机的功率,然后检查加速度是否接近0来训练它。如果是,请将其包含在培训集中。如果没有,则不包括在培训集中

这样,随着时间的推移,我将有一个培训集,其中包括我的7个输入的各种状态,以及适当的输出应该是什么,以便在accel中实现我期望的0目标。我的问题是:我该如何构建它?我对安还是比较陌生的。我不是在找人为我写代码或为我解决这个问题,但可能是在正确的方向上的一般指针

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


谢谢

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

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

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


有许多不同的优化函数。模拟退火算法可能是最容易实现的,但也是我能想到的非常有效的优化算法。其他的可能性包括内尔德·米德、遗传算法或爬山

你是对的,我希望输出是电机的功率。我没有
物理函数本身。这将取决于我的机器人的现实。我的机器人是决定物理的东西。所以我认为你所说的在我的基础上行不通,因为我缺少
物理功能。除非我弄错了或误解了你的意思?基本上,训练是为了改变你的体重值,从而达到你的目标。在您的情况下,将加速度值设置为零。通常,这是通过使用包含每组输入的预期输出的训练集来完成的。对于这种情况,很难生成训练数据。“物理函数”只是一种确定加速度值实际值的方法,如果你有其他方法来计算,这很好。因此,也许我的机器人可以从静止输入状态开始,随机调整电机的功率,如果所需的输出比当前状态更接近零,它可以包含在培训集中。这有意义吗?