machine-learning - 神经网络学习悬停。时间延误?

标签 machine-learning lua neural-network torch

我正在深入研究神经网络的机器学习,在阅读了一些理论并研究了 torch 之后,我现在想使用神经网络来了解一架具有未知模型的简单直升机需要产生多少推力才能悬停在放置在引用高度。

我有控制背景,我知道人们通常不会为此使用神经网络或机器学习,但我认为这将是一个很好的第一个任务。

我认为我所需要的只是一个简单的线性回归(NN 形式)来学习将测量高度映射到推力的函数(产生精确的推力以抵消引用高度处的重力)。

但这看起来已经有点复杂了。假设我有一个简单的动力学模拟器,并且每隔 fs Hz 进行一次高度测量。我对模型进行前向传递(请参阅下面的模型代码)来计算模型的推力。到目前为止,一切都很好。然而,效果不会立即可见,因此使用当前测量来对损失函数执行前向和后向传递似乎是错误的做法。或者是吗?

最终的问题是:我可以用我提出的简单线性回归来解决上述问题吗?还是需要更复杂的东西来捕获模型的“响应时间”。

require 'torch'
require 'nn'

local model = nn.Sequential()
model:add(nn.Linear(1, 1)) -- Simple linear regression with one input (measured height) and one output (thrust)

local criterion = nn.MSECriterion -- Simple mean squared error loss function.

heigh_ref = 1

function height_measurement_callback(height_meas)
    local thrust = model:forward(height_meas)

    criterion:forward(height_meas, heigh_ref) -- ??
    local grad = criterion:backward(height_meas, heigh_ref) -- ??
    model:backward(height_meas, grad) -- ??

    return thrust
end

最佳答案

问题:设置特定高度 h_desired并让程序找到相应的推力值。假设推力和高度之间存在一一对应的关系。

<小时/>

合理的解决方案:最小化h_desired - h_current根据当前高度差调整推力。

<小时/>

机器学习解决方案:进行大量测量,对它们进行回归,尝试使用获得的模型来预测新值,验证预测,将实际值添加到训练集中。

假设“神经网络的前向路径”是预测值与实际值偏差的计算:delta_i=(y_predicted_i - y_observed_i) ,向后传递是k的计算和by_predicted_i = k * x_i + b ,没有必要将它们分开。实际上,我很难想出在这些操作之间进行任何合理的操作。

现在,使用更新后的模型,您可以预测新的推力值,这应该会将您带到所需的高度,然后进行新的测量,设置新的推力值并查看它对应的高度值。显然,您必须等到直升机停止移动,然后才能将新的推力高度对放入训练数据并进行下一次线性回归迭代。这与其说是关于“神经网络模型”,不如说是关于数据采集过程。你不应该将它们混淆在一起。在将数据添加到模型的体验中之前,您必须始终完成测量。

关于machine-learning - 神经网络学习悬停。时间延误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43125707/

相关文章:

python - 如何在 Keras Python 中合并多个顺序模型?

r - PAM 聚类 - 使用另一个数据集中的结果

python - Spark ML 中的维度不匹配错误

python - brew install vim --with-lua 失败

python - 如何定义神经网络的问题

python - TensorFlow 无法将 apply_gradients 与 AdamOptimizer 一起使用

arrays - Lua如何从表中获取数据

c++ - 这个脚本会导致很多很多关闭吗?如果是,有什么替代方案?

machine-learning - 求解器参数 'test_iter' 在测试阶段更改标签值

python - 从 POST 请求获取对神经网络 web.py 包装器的响应