找到一组指标来输入神经网络的输入。讨论。一个评估结果的工具。 - 页 5

 
joo писал(а)>>

为什么他们不能被看到?差异是显而易见的。在选择合适的搜索范围时,不会出现神经元过饱和的情况。"你只是不知道如何烹饪它们。"(c) :)

对于不同复杂的任务,会有不同的优化工具,正如你已经正确注意到的(螺丝刀)。

关于范围选择的问题是非常值得商榷的。GA非常长,比ORO长很多--这是另一个缺点。

很想知道你选择音阶范围的技巧,或者你的指导思想是什么?

joo 写道>>

正如你正确指出的(螺丝刀),不同的复杂性会有不同的最佳工具。

GA不适合NS。因为NS-th有自己的训练(优化)方法。至少只是因为你不能像使用ORO那样使用CV。

 
rip >> :

正确,遗传算法不使用误差函数来调整权重。

根据我的理解,你可以按历史上的最大利润来标示M5,并将这个标示作为一个健身函数。

这正是你估计一个人的函数的模样。

>>所以 :)

 public double evaluate( IChromosome a_subject) {
        this. NNWeights=new double[ a_subject. size()]; //создаем вектор весов для нейросети
        for (int i=0; i<this. NNWeights. length; i++)
        {
            DoubleGene g= ( DoubleGene) a_subject. getGene( i);
            this. NNWeights[ i]= g. doubleValue(); //заполняем вектор весов для нейросети
        }
        net. SetWeights(this. NNWeights); //устанавливаем веса нейросети
        Trade trade =new Trade();
        for ( int i=0; i<this. csv. CSVInputs. length; i++)
        {
            trade. TradeCurrentSignal( net. ComputeForOneNeuronOutLayer(this. csv. CSVInputs[ i]),this. csv. CSVPrice[ i]);
        }
        
      return 1000000+ trade. Profit; //целевая функция должна быть >0
    }
 
rip >> :

这是一个测试抽样误差的问题。也就是说,你在训练样本后的下一个月。你根据你的算法来标记它。你把输出输入到训练好的网络。你比较一下结果。这正是我们感兴趣的这些错误的图表。


你也可以得到训练样本的误差图,并估计你的网络的学习过程(或遗传算法中世代的发展)。

当训练时,我学习直到目标函数增加或直到我感到厌倦(在时间上)。 我间接地照顾再训练 - 训练样本比神经网络中的权重大得多。然后,我卸载到.mq4(这里,可能有一个错误...我正在测试......一切工作正常),用MT4策略测试器观察它的结果。

"比较结果"--这是我不理解的部分思想...我不明白你的这部分想法。 故意重新训练网络并将其结果与前段时间训练的网络的结果进行比较有什么意义?

 
rip >> :

当你把所有你喂养的集子与输入的集子进行比较时,显示结果 :)我认为所有这些都将是高度相关的。所有给出的指标都使用相同的输入数据进行计算。

我不是在比较所有的套装....即使翻阅200组输入,事实上还有更多,也是漫长的,而且没有什么意义,因为你可能会错过一些东西。

 
iliarr >> :

当训练时,我学习直到目标函数增加或直到我感到厌倦(在时间上)。 我间接地照顾再训练 - 训练样本比神经网络的权重大得多。然后,我卸载到.mq4(这里,也许,有一个错误...我测试它),用MT4策略测试器看看我得到什么。

"我不明白你这部分的想法......我不明白你的这部分想法。 我想做的是有目的地重新训练网络,并将其结果与之前训练的网络的结果进行比较。


为什么要重新培训?有一个样本,你在上面训练网络。现在模拟它的操作,给网络提供一个它不熟悉的样本,并将从网络获得的结果与测试样本的预期结果进行比较。

 
rip >> :

为什么要重新培训?有一个样本,你在上面训练网络。现在模拟它的操作,给网络提供一个它不熟悉的样本,并将从网络获得的结果与测试样本的预期结果进行比较。

你所建议的将决定训练过的网络的预测能力,而不是训练的质量......而一个网络的预测能力不仅取决于训练的质量,还取决于网络的结构,网络如何解释它产生的东西以及它输入的信息。

 
iliarr >> :

但在外汇交易中,你建议的结果决定了训练过的网络的预测能力,而不是训练的质量......而网络的预测能力不仅取决于训练的质量,还取决于网络的结构,取决于你如何解释其输出,以及你输入网络的信息。

咳咳...这与预测能力有什么关系呢?你有一个网络,你有你的网络,对其反应有一个假定的解释。

根据你的代码,Trade()类以这种或那种方式模拟交易过程。开仓,持仓,平仓。

>>在此基础上,你决定给定的个人对你的适合程度。所以你最初制定了某种规则

解释产出的方法。

 
iliarr >> :

我无法比较所有的套装....。即使是200组输入,事实上还有更多,也是漫长的,而且没有什么意义,因为你可能会错过一些东西。

嗯...训练样本的想法:(使用神经网络的下一个价格预测器)


ntr - 训练集的数量

lb - lastBar


// 在输入数组中填入数据;在本例中,nout=1
for(i=ntr-1;i>=0;i--)
{
outTarget[i]=(Open[lb+ntr-1-i]/Open[lb+ntr-i]-1.0);
int fd2=0。
int fd1=1。
for(j=nin-1;j>=0;j--)
{
int fd=fd1+fd2; // 使用Fibonacci: 1,2,3,5,8,13,21,34,55,89,144...。
fd2=fd1。
fd1=fd。
inpTrain[i*nin+j]=Open[lb+ntr-i]/Open[lb+ntr-i+fd]-1.0;
}
}

 
rip >> :

嗯...训练样本的想法:(使用神经网络的下一个价格预测器)


ntr - 训练集的数量

lb - lastBar


//在输入数组中填入数据;在本例中,nout=1
for(i=ntr-1;i>=0;i--)
{
outTarget[i]=(Open[lb+ntr-1-i]/Open[lb+ntr-i]-1.0);
int fd2=0。
int fd1=1。
for(j=nin-1;j>=0;j--)
{
int fd=fd1+fd2; // 使用Fibonacci: 1,2,3,5,8,13,21,34,55,89,144...。
fd2=fd1。
fd1=fd。
inpTrain[i*nin+j]=Open[lb+ntr-i]/Open[lb+ntr-i+fd]-1.0;
}
}

谢谢你。我去看看。

 

IlyaA писал(а) >>

公众需要看到学习误差对时间(epochs的数量)的依赖图。


生男子写道(a) >>
我们一定是在谈论不同的事情...我没有和老师一起教学(这种教学方式有一个学习错误)......我在教目标函数的最大值,我不知道目标函数的最大可能值是什么。


撕裂 写道>>

我们谈论的是测试抽样误差。也就是说,你在培训样本后的下个月采取。你根据你的算法,把它标记出来。你把输出输入到训练好的网络。你比较一下结果,这就是我们感兴趣的误差图。

你也可以得到训练样本的误差图,并估计你的网络是如何学习的(或基因算法中的代数发展是如何进行的)。

看来ripIlyaA 不明白,iliarr 在使用一种没有老师的教学方法。当目标函数是利润时,我们谈论的是什么样的学习误差?还是你们都认为,在历史上训练了网络后,应该在测试历史上运行它,并比较获得的利润?利润将是不同的,或少或多,但都不同。测试历史是不同的。请不要与近似相混淆,近似质量的标准是原始函数和获得的函数的标准偏差。


StatBars 写道:>>

ORO当一个神经元变得过饱和时,实际上就停止了对它的 "训练",而GA可以很容易地使一个神经元过饱和并继续进一步增加神经元的权重。


StatBars 写道>>

关于射程选择的问题,这是非常值得商榷的。GA非常长,比ORO长很多--这是另一个缺点。


StatBars wrote(a)>>

GA不适合NS。对于NS来说,有他们自己的训练(优化)方法。如果只是因为你不能像使用ORO那样使用CV。

我不明白为什么会有这样一种不置可否的态度?

这里有一些搜索出来的链接,说的是相反的情况。

http://alglib.sources.ru/dataanalysis/neuralnetworks.php

http://network-journal.mpei.ac.ru/cgi-bin/main.pl?l=ru&n=13&pa=10&ar=3

http://masters.donntu.edu.ua/2004/fvti/solomka/library/article2.htm

http://www.neuropro.ru/memo314.shtml


我没有也没有声称GA是所有问题的唯一正确的优化方案。它只是比任何其他解决方案更通用,而且往往更快,容易适应几乎任何任务。另一个问题,也是一个合理的问题,就是找到最优解所需的健身函数的最小运行次数是多少。这就是我们应该讨论的,而不是优化算法本身的速度。而在这里,GA将超过大多数其他算法。

如果有人感兴趣,我可以单独开一个主题,在那里我可以发布有趣的优化算法的测试函数和各种算法的结果。我认为它不仅对那些与NN打交道的人非常有用,而且对任何想在许多方面获得最佳努力结果的人也非常有用。

StatBars 写道:>>

很想听听你选择一系列重量的技巧,或者你的指导思想是什么?

在Maple或Mathca中,我看了激活函数工作的权重范围。如果某个函数的范围是[-1;1],那么在这样一个(-100;100)的变量范围内 "搜索 "的意义何在?