文章 "神经网络变得轻松(第二十一部分):变分自动编码器(VAE)"

 

新文章 神经网络变得轻松(第二十一部分):变分自动编码器(VAE)已发布:

在上一篇文章中,我们已熟悉了自动编码器算法。 像其它任何算法一样,它也有其优点和缺点。 在其原始实现中,自动编码器会尽可能多地将对象与训练样本分开。 这次我们将讨论如何应对它的一些缺点。

为了测试变分自动编码器的操作,我们将取用之前文章中的模型。 将其保存为新文件“ "vae.mq5"。 在该模型中,编码器在第 5 个神经层上返回 2 个值。 为了正确规划变分自动编码器的操作,我将编码器输出端的层大小增加到 4 个神经元。 我还插入了新神经层,将变分自动编码器的潜伏状态作为第 6 个神经元。 该模型基于 EURUSD 数据,和 H1 时间帧进行了训练,未更改参数。 模型训练的时间区间取过去 15 年。 多层和变分自动编码器的学习动态的比较图如下图所示。

比较学习结果

 

如您所见,根据模型训练的结果,变分自动编码器在整个训练期间显示的数据恢复误差显著降低。 此外,变分自动编码器展示出更高的误差降低态势。

基于测试结果,我们可以得出结论,以 EURUSD 价格动态为例,解决提取时间序列特征的问题,变分自动编码器在提取单个形态描述特征方面具有巨大的潜力。

作者:Dmitriy Gizlyk

 

您好、

当我编译本文末尾附带的 NeuroNet.mqh 文件时,出现了 6 个错误,所有错误都报告说:'pow' - 对重载函数的模糊调用。具体行数为 3848、4468 和 6868。谁能帮帮我?


非常感谢

 
jirivokurka #:

你好

当我编译本文末尾附带的 NeuroNet.mqh 文件时,出现了 6 个错误,所有错误都报告说:'pow' - 对重载函数的模糊调用。具体行数为 3848、4468 和 6868。谁能帮帮我?


非常感谢

尝试在 t 之前添加浮点数
         lt = (float)(eta * sqrt(1 - pow(b2, (float) t)) / (1 - pow(b1, (float) t)));