文章 "神经网络变得轻松(第六部分):神经网络学习率实验"

 

新文章 神经网络变得轻松(第六部分):神经网络学习率实验已发布:

我们之前已研究过各种类型的神经网络及其实现。 在所有情况下,训练神经网络时都使用梯度下降法,为此我们需要选择学习率。 在本文中,我打算通过示例展示正确选择学习率的重要性,及其对神经网络训练的影响。

第三个实验与本文的主题略有偏离。 其思路来自前两个实验。 因此,我决定与您分享。 在观察神经网络训练的同时,我注意到不存在分形的概率在 60-70% 左右波动,且很少低于 50%。 无论买入或卖出,出现分形的可能性均约为 20% 至 30%。 这是很自然的,因为图表上的分形比趋势内的烛条少得多。 因此,我们的神经网络被过度训练,且我们获得了以上结果。 几乎 100% 的分形都遗漏了,且只能捕获罕有的分形。  

以 0.01 的学习率训练 EA

为了解决这个问题,我决定稍微补偿样本的不均匀性:由于参考值中缺乏分形,因此在训练网络时我指定了 0.5 来替代 1。

            TempData.Add((double)buy);
            TempData.Add((double)sell);
            TempData.Add((double)((!buy && !sell) ? 0.5 : 0));

该步幅产生了良好的效果。 以 0.01 的学习率和从之前的实验获得的权重矩阵运行 智能交易系统,在 5 个训练迭代后显示出约 0.34 的稳定误差。 分形遗漏的比例下降到 51%,命中百分比则增加到 9.88%。 从图表中可以看出,EA 生成的信号会成组出现,从而显示某些特定区域。 显然,这个想法需要额外的开发和测试。 但结果表明这种方法很有前途。 

无分形则学习率为 0.5

作者:Dmitriy Gizlyk

 
我只是路过)))))当你学习????,错误就会增加,这难道不会让你感到困惑吗?)))))
 
Александр Алексеевич:
我只是路过))))误差会随着训练的增加而增加,这难道不会让你感到困惑吗?应该是相反的)))))
在使用随机值初始化后的第一次训练中,误差会增加。经过几次训练后,误差开始减小。这可能是由于初始值与目标函数的水平相差很大。此外,我们还可以注意到,在误差普遍下降的背景下,误差略有增长,这可以用目标函数的非光滑性来解释。
 

你好,德米特里、


我非常喜欢这个系列,它是我学习神经网络的 工具。我使用 MT4,包括找到 SymbolInfo 的实现。我猜这就是问题所在,因为它正在运行,但在学习过程中没有任何操作。您知道在 MT4 中运行它需要什么吗?谢谢!

 

下午好!

您能告诉我,您是否只根据收盘价 来训练 NS?还是也使用给定 TM 的交易量?

 
Oleg Mazurenko:

下午好!

您能告诉我,您是否只根据收盘价 来训练 NS?还是也使用给定 TM 的交易量?

在所述示例中,神经网络 接收开盘价、收盘价、最高价、最低价、成交量、时间和 4 个指标的读数。向神经网络传输初始数据的过程在链接 中有所描述。

Нейросети — это просто (Часть 2): Обучение и тестирование сети
Нейросети — это просто (Часть 2): Обучение и тестирование сети
  • www.mql5.com
В данной статье мы продолжим изучение нейронных сетей, начатое в предыдущей статье и рассмотрим пример использования в советниках созданного нами класса CNet. Рассмотрены две модели нейронной сети, которые показали схожие результаты как по времени обучения, так и по точности предсказания.
 

请注意,第一个示例 Fractal_OCL1.mql 无法编译。

您需要修改

//#define lr 0. 1

double eta=0.1;

 
主要问题并不在于选择训练系数,毕竟 Tensor Flo 有一个函数可以在训练过程中将系数逐渐减小到指定值,从而选择最佳系数。问题在于神经网络找不到稳定的模式,它没有什么可以依托的。我使用过从全连接层到新式 ResNet 和 Attention 等各种模型。效果不超过 60%,而且这是在一个狭窄的区域,一般来说,一切都会下滑到 50/50。有了神经网络,我们就需要考虑可以分析哪些方面。仅仅是价格和数量的数组,无论如何组合,都不会产生结果。
 
eccocom #:
主要问题并不在于选择训练系数,毕竟 Tensor Flo 有一个函数可以在训练过程中将系数逐渐减小到指定值,从而选择最佳系数。问题在于神经网络找不到稳定的模式,它没有什么可以依托的。我使用过从全连接层到新式 ResNet 和 Attention 等各种模型。效果不超过 60%,而且这是在一个狭窄的区域,一般来说,一切都会下滑到 50/50。有了神经网络,我们就需要考虑可以分析哪些方面。仅仅是价格和交易量的数组,无论如何组合,都无法得出结果。

尝试分析初始数据和目标结果之间的相关性。

 

"......在参考值没有分形的情况下,我在训练网络 时指定了 0.5 而不是 1"。

为什么是 0.5,这个数字从何而来?

 
Gexon 训练网络 时指定 0.5 而不是 1 的参考值中没有分形"。

为什么正好是 0.5,这个数字从何而来?

在训练过程中,模型会学习 3 个事件中每个事件的概率分布。由于分形缺失的概率远高于其出现的概率,我们人为地低估了它。我们之所以指定 0.5,是因为在这个值上,事件的最大概率大致相等。
我同意这种方法很有争议,而且是由训练样本的观察结果决定的。