文章 "神经网络轻松制作" - 页 7

 

不幸的是,神经网络并不是万能的。从这个意义上说,如果你向它的输入端输入垃圾,那么无论你如何训练它,无论你不做多少层,你都会在输出端得到垃圾。

我把交易终端内置的所有指标和所有常见的茶分析方法都称为 "垃圾",它们都试图根据过去的价格行为预测未来。

这就是为什么在交易中使用 NS 时,正确选择输入信号是成功的基础。即使是 NS 的结构也没有好的输入信号重要(您可以向我扔石头:)。


附注:我希望看到一篇关于使用强化学习 的文章。

我自己也在尝试朝这个方向发展,所以我需要更多来自有识之士的信息。

 
如果有人能实际利用这篇文章,那就太好了
 

反向传播函数有什么问题吗?

我正在使用这个库构建一个非常简单的专家,但输出层总是输出相同的值......我只使用了两个输出层。

//--- 打开
   m_Trade.SetExpertMagicNumber(symbol.magicnumber);
   
   BackPropagation(symbol);
   
   CArrayDouble *inputVals = new CArrayDouble();
   
   for(int i=0;i<inputNeurons;i++)inputVals.Add((iClose(symbol.name,PERIOD_CURRENT,i)-iClose(symbol.name,PERIOD_CURRENT,i+1))/iClose(symbol.name,PERIOD_CURRENT,i+1));
   
   symbol.Net.feedForward(inputVals);
   
   CArrayDouble *results = new CArrayDouble();
   
   symbol.Net.getResults(results);
   
   Print(results.At(0)," ",results.At(1));
//+------------------------------------------------------------------+
//||
//+------------------------------------------------------------------+
void BackPropagation(CSymbol &symbol)
{
   
   CArrayDouble *targetVals = new CArrayDouble();
     
   if(iClose(symbol.name,PERIOD_CURRENT,0)-iClose(symbol.name,PERIOD_CURRENT,1) > 0)
   {
      targetVals.Add(1);targetVals.Add(0);
   }
   else
   {
      targetVals.Add(0);targetVals.Add(1);
   }
   
   symbol.Net.backProp(targetVals);
}


如果有人能告诉我,我是否在这个过程中遗漏了某个步骤,那就太好了。

谢谢。

[删除]  
一直出现内存泄漏。我正在开发自己的模型 rynna
[删除]  
Vitaliy davydov :

遗憾的是,神经网络并不是万能的。从这个意义上说,如果向它的输入端输入垃圾,那么输出端就会收到垃圾,不管有多少人没有训练它,也不管有多少层没有训练它。

我把交易终端内置的所有指标,以及试图根据过去的价格行为预测未来的所有常用技术分析方法都称为垃圾。

因此,在交易中使用 NS 时,正确选择输入信号是成功的基础。即使是 NS 的结构也不如良好的输入信号重要(您可以把石头留给我:))。


PS 我希望看到一篇关于强化训练的文章。

我自己也正试图朝这个方向发展,因此我需要更多来自有识之士的信息。

我也是。但我想,理解和创建我自己的强化学习算法的最佳途径是先了解神经网络是如何学习的。

附注:我根据纯粹的价格行为创建自定义指标,并从 EA 中读取计算结果。这是使用两个线程的好方法。

[删除]  
Nelson Wanyama:
一直出现内存泄漏。我正在制作自己的模型 rynna

模型已准备就绪。请从https://www.mql5.com/en/forum/338341/page4#comment_17770620 找到源代码和一个简单的工作示例。

这是一个正在进行中的项目。您不妨偶尔访问一下该主题,了解一些仍在开发中的惊人升级。

The Ultimate AI EA Project
The Ultimate AI EA Project
  • 2020.07.14
  • www.mql5.com
Hello everyone. I would like to call upon every worthy programmer and trader to a crucial mission...
 
Dmitriy Gizlyk:

5 个为什么 "技术建立在连续问题的基础上,每个问题都回答了前一个问题的原因。例如,我们看一张图表和一张价格上涨图表,然后构建问题(抽象地回答问题,以解释该技巧):
1.在哪里交易 - 买入
2.为什么买入?- 因为它是上升趋势
3.为什么是上升趋势?- MA50 正在上升
4.为什么 MA50 上升?- 移位为 1 的 50 根蜡烛 平均收盘价 低于最后 50 根蜡烛的平均收盘价。

等等。
因为问题是有顺序的,而且有因果关系,所以我们按照这种关系创建层。如果我们只使用 2 层,就会失去因果关系,神经网络会分析多个独立选项并选择最佳选项。

读到这里,我想:这似乎有道理。

但事实并非如此!我做了一个只有一层的神经网络,结果很好。我增加了第二层,结果却更糟。

所以,层数不是由逻辑推理决定的,而是由工作结果决定的。你没有工作的结果,你也没有想过这是否是一种策略,所以在你看来,这就是有什么用什么。

还有。你为什么认为买和卖是不同的神经网络决策?买入和卖出是同一个购买资产的决策。否则,这完全是无稽之谈。难道你要把振荡器的负值输入到输入端,以得到小于零的输出,而正值输入到输入端,以得到大于零的输出?但实际上,如果振荡器低于零,那就是超卖区,你应该买入,而不是卖出。

总之,想想结果,事情马上就会朝着不同的方向发展。可怜的罗森布拉特

 
Evgeniy Scherbina:

我读到这里,心想:这似乎很有道理。

但事实并非如此!我做了一个只有一层的神经网络,结果很好。我添加了第二层,结果却更糟。

所以,层数不是由逻辑推理决定的,而是由工作结果决定的。你没有工作的结果,你没有想过这是否是一种策略,所以你认为它是有什么用什么。

还有。为什么说买和卖是不同的神经网络决策?买入和卖出是同一个购买资产的决策。否则,这完全是无稽之谈。难道你要把振荡器的负值输入到输入端,以得到小于零的输出,而正值输入到输入端,以得到大于零的输出?但实际上,如果振荡器低于零,就是超卖区,我们应该买入,而不是卖出。

总之,想想这个结果,事情就会立刻朝着不同的方向发展。可怜的罗森布拉特

使用 1 个神经元就能得出自相关 函数。
而说到买入和卖出,是的,在这两种情况下,都只是买入不同的资产。神经网络根据对输入的相同数据的分析,决定购买一种或另一种资产。而决策是在分析训练样本的基础上做出的。在训练过程中,加权系数会发生变化,其符号也可能变为相反的符号。

 
Aleksey Mavrin:

方法 5 类似于决策树,也是逐渐缩小寻找解决方案/原因的范围。不过,还不清楚这与 NS 在这种结构中使用了 4 层有什么关系。据我所知,这种结构会比较复杂,例如,第二层由第一层的输出和不变的输入信号组成,等等。

您能告诉我,您是否参考过其他使用这种基础来选择层数的工作?或者这就是你的诀窍?

s.s. 作品很好,谢谢。

你能回答这个问题吗?

 
Aleksey Mavrin:

你能回答这个问题吗?

方法 5--为什么要形象地给出。层数通常是通过实验选择的。文献中提到,只有一个隐藏层的网络适用于对象可线性分为两部分的问题。增加层数可以解决更复杂的问题。