文章:用神经网络进行价格预测 - 页 14

 
中子,增加输入数量的平滑效果是合法的。但是,滞后性可以由很多因素决定,既有这些输入的缺乏,也有可能是网络的不完善,也许是训练不足。如果这样做,加上对上述标准的所有 "+",就会产生滞后性,这是另一回事。
 
Neutron:

这显示了测试两个NS的预测能力的结果。


图中红色显示的是原始时间序列(RT),蓝色显示的是线性单层网络在1bar前的预测,绿色显示的是非线性双层网络。在这两种情况下,浸泡的深度是相同的。可以看出,对于这个人工案例,在BP趋势部分的预测数据有一个明显的残留。我不知道我有经验的同事是否观察到这种效果,如果是的话,这可能与什么有关?

你的网络在某种程度上表现得很奇怪--它在趋势部分得到同一组输入数据,却得到不同的预测结果(它在图表上得到一条断线,而它应该是直线)。在这方面,问题是。

1)中间网络层中有多少个神经元?

2)有多少个输入?

3)输入的是什么?


关于对趋势的预测的滞后性。这就是它应该工作的方式。你向网络输入了大约30个训练向量,其中连续的上升值为0.1,产生了0.1的上升,并输入了一个向量,同样的连续上升值产生了3的下降。你在不一致的数据上训练网络。所以它平均了你的那31个矛盾的预测......


我还建立了一个2层的NS。有3个输入和3个中间神经元。输入的是增量值。为了比较,我在所有数据上训练了这个网络一次,第二次我在训练中排除了异常值--即所有在输入中包含过大数值的训练向量,即非常突然地崩溃了3。差异是显而易见的。

 
rip:
slava1:
好吧,你可以为这个问题争论很久,谁理解他们的理解,或者不理解。谈话的内容是关于数据准备。我明白,没有人愿意在这里讨论这个问题。遗憾的是

如果你想做一个关于如何为NS训练准备数据的讲座,我认为不应该在这个论坛上进行,没有多少人会对这里感兴趣。

好吧,你错了!我认为阅读实践者的经验会很有趣,他们是如何做到的。

 
ds2:

你的网络表现得很奇怪--它在趋势部分接收相同的输入数据集,但却给出不同的预测(它在图上显示为一条断线,而它应该是直线)。在这方面,问题是。

1)中间网络层中有多少个神经元?

2)有多少个输入?

3)输入的是什么?


关于对趋势预测的滞后性。这就是它应该工作的方式。你向网络输入了大约30个训练向量,其中连续的上升值为0.1,产生了0.1的上升,并输入了一个向量,同样的连续上升值产生了3的下降。你在不一致的数据上训练网络。所以它平均了你的那31个矛盾的预测......


我还建立了一个2层的NS。有3个输入和3个中间神经元。输入的是增量值。为了比较,我在所有数据上训练了这个网络一次,第二次我在训练中排除了异常值--即所有在输入中包含过大数值的训练向量,即非常突然地崩溃了3。差异是显而易见的。

ds2,以及 所有回应的人,非常感谢你们的关注和明智的建议--这真的很有帮助。问题是,我把训练周期的数量(我相信它叫做Epochs)限制在100次,以加快我的网络的预测速度。当然,这还不够,所以网络没有正常学习。在将历时数增加到1000后,一切都运行良好--滴答到滴答(好吧,几乎如此)。

我有一个两层网络,具有双曲正切形式的非线性,隐藏层的神经元数量为2,突触数量为d*2+2,其中d是NS输入的一个维度。对于图中所示的情况,我有d=2,训练向量的数量是6。训练样本中的向量数量等于突触的数量,所以我看到,网络没有重新训练,也没有尝试平滑预测,这可以更有效地跟踪价格跳动。为了训练,我还输入了一连串的增量值作为输入。我还不熟悉准备输入数据的精细艺术(我指的是你的 "第二次训练时排除尖峰"),但我希望能很快掌握这门艺术。

这里有一个预先感兴趣的结果:


这是一个单层非线性NS的单步预测,每一步都要重新训练,只有一个输入!而训练样本=2个向量,每个都有一个元素。

我被吓到了....

事实证明,奈伦网络和人工智能并不简单,而是非常简单

 
Neutron:
ds2

你的网络表现得很奇怪--它在趋势部分接收相同的输入数据集,但却给出不同的预测(它在图上显示为一条断线,而它应该是直线)。在这方面,问题是。

1)中间网络层中有多少个神经元?

2)有多少个输入?

3)输入的是什么?


关于对趋势预测的滞后性。这就是它应该工作的方式。你向网络输入了大约30个训练向量,其中连续的上升值为0.1,产生了0.1的上升,并输入了一个向量,同样的连续上升值产生了3的下降。你在不一致的数据上训练网络。所以它平均了你的那31个矛盾的预测......


我还建立了一个2层的NS。有3个输入和3个中间神经元。输入的是增量值。为了比较,我在所有数据上训练了这个网络一次,第二次我在训练中排除了异常值--即所有在输入中包含过大数值的训练向量,即非常突然地崩溃了3。差异是显而易见的。

ds2,以及 所有回应的人,非常感谢你们的关注和明智的建议--这真的很有帮助。问题是,我把训练周期的数量(我相信它叫做Epochs)限制在100次,以加快我的网络的预测速度。当然,这还不够,所以网络没有正常学习。在将历时数增加到1000后,一切都运行良好--滴答到滴答(好吧,几乎如此)。

我有一个两层网络,具有双曲正切形式的非线性,隐藏层的神经元数量为2,突触数量为d*2+2,其中d是NS输入的一个维度。对于图中所示的情况,我有d=2,训练向量的数量是6。训练样本中的向量数量等于突触的数量,所以我看到,网络没有重新训练,也没有尝试平滑预测,这可以更有效地跟踪价格跳动。为了训练,我还输入了一连串的增量值作为输入。我离输入数据准备的精细艺术还很远(我指的是你的 "在第二次训练中排除尖峰"),但希望我很快就能学会这个技巧。

为了改善样本,尝试扩大训练序列,比如说,按照这个原则。

有两个相邻的数列值 - x1,x2在它们相加的区间内 x1,2 = (x1+x2)/2


这种方法对于相邻数值高度相关的时间序列 效果很好。

语录流的情况就是如此。

 
Neutron:


这里有一个预先感兴趣的结果:


这是一个单层非线性NS的单步预测,每一步都进行再训练,只有一个输入!而训练样本=2个向量,每个向量有一个元素。

我被吓到了...


我可以请你公布生成训练向量的原始数据文件吗?

 

文件的格式应该是什么样子的,以便你能读懂它。重点是,我从头开始写自己的NS,并以我觉得舒服的格式使用数据。


Для улучшения выборки попробуйте расширить обучающий ряд, скажем по такому принципу:

有两个相邻的数列值--x1,x2在它们之间加x1,2=(x1+x2)/2

这种方法在时间序列上效果很好,相邻值的相关性很高。

流媒体报价的情况就是如此。

这种情况适用于正相关的系列。价格VR在相邻的样本之间有明显的负相关,所以这种方法不会正确。

还有一件事。如果尊敬的论坛用户能够发表有根据的论据,支持在其他条件相同的情况下,2层NS比单层NS有更大的预测能力,那就更好了。

作为一种选择。下面你可以找到一个带有测试矢量的压缩文件,如图所示,你可以根据自己的需要来剪裁它。

附加的文件:
rnd.zip  1 kb
 
Neutron:

我被吓到了...

事实证明,尼禄网络和人工智能并不只是,而是非常简单!


我还没有尝试实际应用NS(尽管在最后一个想法的背景下,我似乎被带到了那里),但从人类的角度来看,测试向量由非常简单的依赖关系组成(大约两三个参数),应该非常容易被片断地逼近。 我怀疑这正是NS的工作。快速重排可能是NS简单化的结果,也就是说,在这种情况下,短时记忆是一种福气。

 

总的来说,Candid,我同意你的观点,但我想深入挖掘......例如,NS(隐藏层)的复杂性有多大的合理性。

而且,实际上,我是个疯子!"。重点是,如果你以某种形式表示NS的非线性,你可以得到权重的精确分析解。这反过来意味着,它将有可能拒绝采用误差反向传播的方法进行网络训练,并在一次行动中获得尽可能准确的结果,而不需要任何有1000个纪元的训练!!。


P.S.我忘了提醒你,我在每个神经元中使用了一个具有恒定兴奋水平的突触。


补遗。

带着它,带着它,带着它;-)

这是一个单层非线性NS的尺度的 "精细 "分析解决方案。

这让我微笑。

但整个计算过程需要一毫秒。
 

作为一个 "神经科学家 "的新手,请向我解释这个问题。据我所知,有关的网络是一个多层感知器。

选择这种类型的网络的原因是什么?为什么不是霍普菲尔德或科霍宁或其他的东西?