文章 "神经网络变得轻松(第三十一部分):进化算法"

 

新文章 神经网络变得轻松(第三十一部分):进化算法已发布:

在上一篇文章中,我们开始探索非梯度优化方法。 我们领略了遗传算法。 今天,我们将继续这个话题,并将研究另一类进化算法。

优化之后,在策略测试器中测试了模型。 为了测试模型,我用到了 Evolution-test.mq5 EA,它是前几篇文章中的 EA 精确副本。 仅有的影响就是更改了加载模型的文件名。 完整的 EA 代码可在附件中找到。

EA 基于过去 2 周历史数据进行了测试,不包括训练样本。 这意味着 EA 是在接近真实条件下进行测试的。 测试结果展现了所提方法的可行性。 在下面的图表中,您可以看到余额增加的动态。 总体来说,在测试期间执行了107 笔交易。 其中,近 55% 是盈利的。 盈亏交易的比例接近 1:1,但平均盈利比平均亏损高 43%。 因此,生成的盈利因子为 1.69。 抗跌系数已达到 3.39。

已训练模型的测试结果

已训练模型的测试结果


作者:Dmitriy Gizlyk

 


有一个错误。请告诉我如何解决

2022.10.21 18:23:12.259 Evolution (EURUSD,H1) 还剩 1 个未删除的对象
2022.10.21 18:23:12.259 Evolution (EURUSD,H1) 还剩 1 个 CBufferFloat 类型的对象
2022.10.21 18:23:12.259 Evolution (EURUSD,H1) 1280 bytes of leaked memory
2022.10.21 18:23:13.785 Evolution (EURUSD,H1) EURUSD_PERIOD_H1_Evolution.nnw
2022.10.21 18:23:13.858 Evolution (EURUSD,H1) OpenCL: GPU device 'NVIDIA GeForce RTX 3080' selected
2022.10.21 18:23:16.085 Evolution (EURUSD,H1) Error of execution kernel SoftMax FeedForward: 5109
2022.10.21 18:23:16.085 Evolution (EURUSD,H1) Train -> 206


在日志中
2022.10.21 18:23:12.281 Experts experts Evolution (EURUSD,H1) loaded successfully


什么也没发生,一片死寂,我听不到显卡的声音,它在工作时通常会发出噪音(以同样的 Fractal OCL 为例)。
 
Ivan Butko #:


弹出了一个错误。请告诉我如何解决

2022.10.21 18:23:12.259 Evolution (EURUSD,H1) 还剩 1 个未删除的对象
2022.10.21 18:23:12.259 Evolution (EURUSD,H1) 还剩 1 个 CBufferFloat 类型的对象
2022.10.21 18:23:12.259 Evolution (EURUSD,H1) 1280 bytes of leaked memory
2022.10.21 18:23:13.785 Evolution (EURUSD,H1) EURUSD_PERIOD_H1_Evolution.nnw
2022.10.21 18:23:13.858 Evolution (EURUSD,H1) OpenCL: GPU device 'NVIDIA GeForce RTX 3080' selected
2022.10.21 18:23:16.085 Evolution (EURUSD,H1) Error of execution kernel SoftMax FeedForward: 5109
2022.10.21 18:23:16.085 Evolution (EURUSD,H1) Train -> 206


在日志中
2022.10.21 18:23:12.281 Experts experts Evolution (EURUSD,H1) 载入成功


然后什么也没发生,一片死寂,我听不到显卡的声音,它在工作时通常会发出噪音(以同样的 Fractal OCL 为例)。

试着减少种群数量。在实验中将其设置为 5-10。如果错误消失了,那就再增加。并通过实验找到可接受的极限。

 
Dmitriy Gizlyk #:

尝试减少种群数量。实验中将种群数量设为 5-10。如果误差消失了,那就增加误差。并通过实验找到可接受的极限。

我试过了,我把它从 5 调到了 10,然后试了一个。同样的错误:

2022.10.22 01:42:08.768 Evolution (EURUSD,H1) Error of execution kernel SoftMax FeedForward: 5109.


也许是因为这个原因,我注意到:保存模型时,窗口左侧会出现以下提示:"加载模型错误,选择文件,错误 ID:5004"。也许这有一定的影响。


另外,创建的文件应该有 16 兆字节!这种大小在 mql 中并不多见。




UPD

我在笔记本电脑上试了一下,它也不想训练:

2022.10.22 13:07:36.028 Evolution (EURUSD,H1) EURUSD_PERIOD_H1_Evolution.nnw
2022.10.22 13:07:36.028 Evolution (EURUSD,H1) OpenCL: GPU device 'Intel(R) UHD Graphics' selected
2022.10.22 13:07:37.567 Evolution (EURUSD,H1) 保留 9 个未删除对象
2022.10.22 13:07:37.567 Evolution (EURUSD,H1) 保留 1 个 CLayer 类型的对象
2022.10.22 13:07:37.567 Evolution (EURUSD,H1) 保留 1 个 CNeuronBaseOCL 类型的对象
2022.10.22 13:07:37.567 Evolution (EURUSD,H1) 7 个 CBufferFloat 类型的对象已离开
2022.10.22 13:07:37.567 Evolution (EURUSD,H1) 2688 字节泄漏的内存

In log:

2022.10.22 13:07:34.716 Experts expert Evolution (EURUSD,H1) loaded successfully
2022.10.22 13:07:37.568 Experts initialising of Evolution (EURUSD,H1) failed with code 1
2022.10.22 13:07:37.580 Experts expert Evolution (EURUSD,H1) removed


 
Ivan Butko #:

也许是因为这个原因,我注意到:保存模型时,窗口左侧会出现以下提示:"加载模型出错,选择文件,错误 ID:5004"。也许这会产生一些影响。


这不是错误,NetCreator 只是试图在左侧加载模型,并没有指定文件。错误 5004 是打开文件出错。

 
Ivan Butko #:

我试过了,从 5 设置到 10,我还试了一次。同样的错误:

2022.10.22 01:42:08.768 Evolution (EURUSD,H1) Error of execution kernel SoftMax FeedForward: 5109

您是否使用了上一篇文章中的所有文件?

 
Dmitriy Gizlyk #:

您使用了上一篇文章中的所有文件吗?

是的。

如果错误与 OpenCl 有关,也许应该换一下处理器,也许它不想
,我在不同的终端上试过。

 

当重复测试训练 模型的同一段历史时,结果是随机的

附加的文件:
qoymbc.gif  928 kb
 
Ivan Butko #:

当重复测试训练 模型的同一段历史时,结果是随机的

如果模型未经训练,或者分析的数据不允许对某一行动做出偏好选择,就有可能出现这种情况。可以看出,该算法是从概率分布中随机选择一个动作。如果模型为所有行动生成的概率相同,那么输出结果就是随机的。

 
Dmitriy Gizlyk #:

未经训练的模型可以做到这一点

要训练一个模型,是否一定要运行设置中设定的 1000 代?(在 3080 上训练一天以上)

 

您写道:"模型训练过程已在以前的文章中描述过。我就不再赘述了"。

我理解您不想重复,但您能不能至少给读者提供一篇参考文章,让他们在那里可以找到这些信息呢?