繁体   English   中英

神经网络在线培训

[英]Neural network online training

我想实现一个简单的前馈神经网络,以近似函数y = f(x)= ax ^ 2 ,其中a是一些常数, x是输入值。

NN具有一个输入节点一个具有1-n个节点的隐藏层一个输出节点 例如,我输入值2.0-> NN产生4.0,然后再次输入3.0-> NN产生9.0或接近9.0,依此类推。

如果我理解“在线训练”,则将训练数据一一馈入-表示我输入了值2.0->用适当的梯度进行了100次迭代,然后又通过了值3.0,又进行了100次迭代。

但是,当我尝试使用实验性/学习型NN进行操作时-输入值2.0->误差变得很小->输出非常接近4.0。

现在,如果我要预测输入3.0-> NN会生成4.36左右的值而不是9.0。 因此,NN只学习最后的训练值。

如何使用在线培训来获得一个在[-d,d]范围内近似所需功能的神经网络? 我想念什么?

我喜欢在线培训的原因是,最终我想输入一个时间序列-并将该序列映射到所需的功能。 这不是重点,但万一有人想知道。

任何建议将不胜感激。

更多信息-我正在使用Sigmoid函数激活隐藏层,并使用线性函数激活输出层。

我喜欢在线培训的原因是,最终我想输入一个时间序列-并将该序列映射到所需的功能。

递归神经网络 (RNN)是对时间序列建模的最新技术。 这是因为它们可以接受任意长度的输入,并且还可以使用内部状态来建模序列随时间变化的行为。

为时间序列训练前馈神经网络是一种旧方法,通常效果不佳。 它们需要固定大小的输入,因此您必须选择固定大小的滑动时间窗口,并且它们也不保留状态,因此很难学习时变函数。

除了一些非常模糊的参考文献之外,我几乎没有发现关于具有随机梯度下降来模拟非平稳行为的前馈神经网络的“在线训练”。 除了让您一次获得一个数据流时进行实时训练之外,我认为这没有任何好处。 我认为它实际上不会帮助您建立时间相关行为的模型。

我可以在文献中找到的有关神经网络在线学习的大多数较旧的方法都使用神经网络的混合方法以及其他一些有助于捕获时间依赖性的方法。 同样,这些都应该不如RNN,更不用说在实践中更难实施了。

此外,我认为您没有正确实施在线培训。 它应该是最小批量大小为1的随机梯度下降。因此,在每个训练纪元的每个训练示例上,您只能运行一次梯度下降的迭代。 由于在继续进行下一个训练示例之前要运行100次迭代,因此相对于单个示例而言,误差梯度太低了,导致严重地过度拟合单个数据点。 这就是为什么您在下一个输入中获得较差结果的原因。 我认为这不是合理的培训方法,也不认为它适用于时间序列。

您没有提到激活是什么或丢失函数是什么,因此我无法评论激活是否适合该任务。

另外,我认为学习y=ax^2对于时间序列预测不是一个很好的类比。 这是一个静态函数,始终为给定输入提供相同的输出,而不管输入的索引或先前输入的值如何。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM