缓慢变化的实值函数的在线逼近算法
我正在解决一个有趣的机器学习问题,很想听听是否有人知道一个好的算法来处理以下问题:
- 该算法必须学会近似N个输入和M个输出的函数
- N 非常大,例如 1,000-10,000
- M 非常小,例如 5-10
- 所有输入和输出都是浮点值 >,可以是正数或负数,绝对值可能相对较小,但没有绝对的界限保证
- 每个时间段我得到 N 个输入,需要预测 M 个输出,在时间段结束时 M 的实际值提供输出(即这是一种监督学习情况,其中学习需要在线进行)。
- 底层函数是非线性,但不是太讨厌了(例如,我希望它在大部分输入空间上都是平滑且连续的)
- 函数中会有少量噪声,但信号/噪声可能很好 - 我希望N 个输入将解释 95% 以上的输出值
- 底层函数随时间缓慢变化 - 不太可能在单个时间段内发生巨大变化,但可能在 1000 多个时间段范围内略有变化
- 没有隐藏状态需要担心(除了不断变化的函数),即所需的所有信息都在 N 个输入中,
我目前正在考虑某种具有大量隐藏状态的反向传播神经网络节点可能会起作用 - 但这真的是这种情况的最佳方法吗?它能处理不断变化的功能吗?
I'm tackling an interesting machine learning problem and would love to hear if anyone knows a good algorithm to deal with the following:
- The algorithm must learn to approximate a function of N inputs and M outputs
- N is quite large, e.g. 1,000-10,000
- M is quite small, e.g. 5-10
- All inputs and outputs are floating point values, could be positive or negative, likely to be relatively small in absolute value but no absolute guarantees on bounds
- Each time period I get N inputs and need to predict the M outputs, at the end of the time period the actual values for the M outputs are provided (i.e. this is a supervised learning situation where learning needs to take place online)
- The underlying function is non-linear, but not too nasty (e.g. I expect it will be smooth and continuous over most of the input space)
- There will be a small amount of noise in the function, but signal/noise is likely to be good - I expect the N inputs will expain 95%+ of the output values
- The underlying function is slowly changing over time - unlikely to change drastically in a single time period but is likely to shift slightly over the 1000s of time periods range
- There is no hidden state to worry about (other than the changing function), i.e. all the information required is in the N inputs
I'm currently thinking some kind of back-propagation neural network with lots of hidden nodes might work - but is that really the best approach for this situation and will it handle the changing function?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
根据您的输入和输出数量,我还会选择神经网络,它应该可以很好地近似。这个微小的变化对于反向传播技术来说是有好处的,它不应该“去学习”东西。
With your number of inputs and outputs, I'd also go for a neural network, it should do a good approximation. The slight change is good for a back-propagation technique, it should not have to 'de-learn' stuff.
我认为随机梯度下降(http://en.wikipedia.org/wiki/Stochastic_gradient_descent)这将是直接的第一步,考虑到您所拥有的操作条件,它可能会很好地工作。
I think stochastic gradient descent (http://en.wikipedia.org/wiki/Stochastic_gradient_descent) would be a straight forward first step, it will probably work nicely given the operating conditions you have.
我还会选择 ANN。由于输入空间很大,单层可能就可以了。在添加大量隐藏层之前,您可能想尝试一下。
@mikera 它有什么用?这是ML 课程中的作业吗?
I'd also go for an ANN. Single layer might do fine since your input space is large. You might wanna give it a shot before adding a lot of hidden layers.
@mikera What is it going to be used for? Is it an assignment in a ML course?