Suche nach einer Reihe von Indikatoren, die in die Eingänge des neuronalen Netzes eingespeist werden. Diskussion. Ein Instrument zur Bewertung der Ergebnisse. - Seite 5

 
joo писал(а) >>

Warum kann man sie nicht sehen? Die Unterschiede sind sichtbar. Wenn der richtige Suchbereich gewählt wird, kommt es nicht zu einer Übersättigung der Neuronen. "Du weißt nur nicht, wie man sie zubereitet."(c) :)

Wie Sie richtig bemerkt haben (Schraubendreher), sind die Werkzeuge für unterschiedlich komplexe Aufgaben unterschiedlich gut geeignet.

Über die Auswahl der Reichweite lässt sich trefflich streiten. GA ist sehr lang, viel länger als ORO - ein weiterer Nachteil.

Es wäre interessant zu wissen, wie Sie einen Skalenbereich auswählen, oder wovon Sie sich leiten lassen.

joo schrieb >>

Für unterschiedliche Komplexität gibt es unterschiedliche optimale Werkzeuge, wie Sie richtig bemerken (Schraubendreher).

GA ist nicht für NSs. Denn der NS-th hat seine eigenen Methoden der Ausbildung (Optimierung). Zumindest einfach deshalb, weil Sie CV nicht wie bei ORO verwenden können.

 
rip >> :

Richtig, der genetische Algorithmus verwendet die Fehlerfunktion nicht zur Anpassung der Gewichte.

Soweit ich das verstanden habe, könnte man den m5 um den maximalen Gewinn, der in der Geschichte erzielt werden kann, aufwerten und diesen Aufschlag als Fitnessfunktion verwenden.

Genau so sieht die Funktion aus, nach der Sie eine Person einschätzen.

>> so :)

 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 >> :

Es handelt sich um eine Frage des Stichprobenfehlers des Tests. Das heißt, Sie nehmen den nächsten Monat nach der Ausbildungsprobe. Sie markieren sie nach Ihrem Algorithmus. Sie speisen die Ausgaben in das trainierte Netz ein. Sie vergleichen die Ergebnisse. Das ist genau das Schaubild dieser Fehler, an dem wir interessiert sind.


Sie können auch die Fehlerkurve der Trainingsstichprobe abrufen und den Lernprozess Ihres Netzes (oder die Entwicklung der Generationen im genetischen Algorithmus) abschätzen.

Beim Training lerne ich so lange, bis sich die Zielfunktion erhöht oder ich mich (zeitlich) langweile. Ich kümmere mich indirekt um die Umschulung - die Trainingsstichprobe ist viel größer als die Gewichte im neuronalen Netz. dann entlade ich in .mq4 (hier kann ein Fehler auftreten... Ich teste ... alles funktioniert richtig) und beobachte mit dem MT4-Strategietester, was dabei herauskommt.

"Das Ergebnis vergleichen" - das ist der Teil Ihres Gedankens, den ich nicht verstehe... Ich verstehe diesen Teil Ihres Gedankens nicht: Welchen Sinn hat es, das Netz absichtlich neu zu trainieren und sein Ergebnis mit dem Ergebnis des Netzes zu vergleichen, das in früheren Perioden trainiert wurde?

 
rip >> :

Zeigen Sie das Ergebnis, wenn Sie alle Sätze, die Sie den Eingängen zuführen, vergleichen :) Ich denke, dass alle hoch korreliert sein werden. Alle angegebenen Indikatoren verwenden die gleichen Eingangsdaten für die Berechnung.

Ich werde nicht alle Sets vergleichen.... Selbst das Durchgehen von 200 Eingabesätzen - und es gibt noch mehr - ist langwierig und wenig sinnvoll, da man etwas übersehen könnte.

 
iliarr >> :

Beim Training lerne ich so lange, bis die Zielfunktion ansteigt oder ich mich langweile (in der Zeit). Ich kümmere mich indirekt um die Umschulung - die Trainingsstichprobe ist viel größer als die Gewichte im neuronalen Netz. dann entlade ich in .mq4 (hier liegt vielleicht ein Fehler vor... ich teste es) und verwende den MT4-Strategie-Tester, um zu sehen, was das Ergebnis ist.

"Ich verstehe diesen Teil deines Gedankens nicht... Ich verstehe diesen Teil Ihres Gedankens nicht. Was ich tun möchte, ist, das Netz absichtlich neu zu trainieren und sein Ergebnis mit dem Ergebnis des Netzes zu vergleichen, das in früheren Perioden trainiert wurde.


Warum umschulen?! Es gibt ein Beispiel, an dem Sie das Netz trainieren. Simulieren Sie nun den Betrieb des Netzes, füttern Sie es mit einer Probe, die es nicht kennt, und vergleichen Sie das Ergebnis des Netzes mit dem, das für die Testprobe erwartet wird.

 
rip >> :

Warum umschulen?! Es gibt ein Beispiel, an dem Sie das Netz trainieren. Simulieren Sie nun den Betrieb des Netzes, füttern Sie es mit einer Probe, die es nicht kennt, und vergleichen Sie das vom Netz erhaltene Ergebnis mit dem für die Testprobe erwarteten.

Was Sie vorschlagen, bestimmt die Vorhersagefähigkeiten des trainierten Netzes, nicht die Qualität des Trainings... und die Vorhersagefähigkeiten eines Netzes hängen nicht nur von der Qualität des Trainings ab, sondern auch von der Struktur des Netzes, wie das Netz interpretiert, was es produziert und welche Informationen es einspeist.

 
iliarr >> :

Aber in Forex bestimmt das Ergebnis dessen, was Sie vorschlagen, die Vorhersagefähigkeiten des trainierten Netzes, nicht die Qualität des Trainings... während die Vorhersagefähigkeiten eines Netzes nicht nur von der Qualität des Trainings abhängen, sondern auch von der Struktur des Netzes, davon, wie Sie seinen Output interpretieren und von den Informationen, die Sie in das Netz einspeisen.

Ähm ... Was hat das mit Vorhersagefähigkeiten zu tun? Sie haben ein Netzwerk, Sie haben Ihr Netzwerk mit einer angenommenen Interpretation seiner Antworten.

Ausgehend von Ihrem Code simuliert die Klasse Trade() den Handelsprozess auf die eine oder andere Weise. Eröffnen einer Position, Halten einer Position, Schließen einer Position.

>>Auf dieser Grundlage treffen Sie eine Entscheidung darüber, wie geeignet das jeweilige Exemplar für Sie ist. Sie haben also zunächst eine Art Regel aufgestellt

der Interpretation der Ergebnisse.

 
iliarr >> :

Ich kann nicht alle Sets vergleichen.... Selbst 200 Eingabesätze durchzuprobieren, und es sind sogar noch mehr, ist langwierig und wenig sinnvoll, da man etwas übersehen könnte.

Hm ... Die Idee eines Trainingsbeispiels:(Next price predictor using Neural Network )


ntr - der Ausbildungssätze

lb - letzterBalken


// Füllen Sie die Eingabefelder mit Daten; in diesem Beispiel 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 verwenden: 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 >> :

Hm ... Die Idee eines Trainingsbeispiels:(Next price predictor using Neural Network )


ntr - der Ausbildungssätze

lb - letzterBalken


// Füllen Sie die Eingabefelder mit Daten; in diesem Beispiel 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 verwenden: 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;
}
}

Ich danke Ihnen. Ich werde es mir ansehen.

 

IlyaA писал(а) >>

Die Öffentlichkeit muss eine grafische Darstellung der Abhängigkeit des Lernfehlers von der Zeit (Anzahl der Epochen) sehen.

->

iliarr schrieb(a) >>
wir müssen über verschiedene Dinge sprechen... Ich unterrichte nicht mit einem Lehrer (es gibt einen Lernfehler in dieser Art des Unterrichts)... Ich unterrichte das Maximum der Zielfunktion, und ich weiß nicht, was der maximal mögliche Wert der Zielfunktion ist.

->

rip schrieb >>

Wir sprechen hier von einem Stichprobenfehler. D.h. Sie nehmen den nächsten Monat nach der Ausbildungsprobe. Sie bewerten es nach Ihrem Algorithmus. Sie speisen die Ausgaben in das trainierte Netz ein. Sie vergleichen die Ergebnisse. Das ist die Fehlerkurve, an der wir interessiert sind.

Sie können auch eine Fehlerkurve der Trainingsstichprobe erhalten und abschätzen, wie Ihr Netz lernt (oder wie die Entwicklung der Generationen im gen. Algorithmus abläuft).

Es scheint, als würden rip und IlyaA nicht verstehen, dass iliarr eine Lehrmethode ohne Lehrer anwendet. Um welche Art von Lernfehler handelt es sich, wenn die Zielfunktion der Gewinn ist? Oder sind Sie beide der Meinung, dass Sie das Netz, nachdem Sie es mit der Vergangenheit trainiert haben, mit einer Testgeschichte laufen lassen und den erzielten Gewinn vergleichen sollten? Der Gewinn wird anders sein, weniger oder mehr, aber anders. Der Testverlauf ist anders. Nicht zu verwechseln mit der Annäherung, bei der das Kriterium für die Qualität der Annäherung die Standardabweichung der ursprünglichen Funktion und der erhaltenen Funktion ist.


StatBars schrieb :>>

Wenn ein Neuron übersättigt ist, hört ORO praktisch auf, es zu "trainieren", während GA ein Neuron leicht übersättigen und die Gewichte der Neuronen weiter erhöhen kann.

->

StatBars schrieb >>

Über die Auswahl der Reichweite lässt sich trefflich streiten. GA ist sehr lang, viel länger als ORO - ein weiterer Nachteil.

->

StatBars schrieb(a) >>

GA ist nicht für NSs. Für NS gibt es eigene Methoden der Ausbildung (Optimierung). Wenn auch nur, weil man CV nicht wie bei ORO verwenden kann.

Ich verstehe nicht, warum eine so unkritische Haltung?

Hier sind einige Links, die bei einer Suche auftauchten und das Gegenteil besagen:

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


Ich habe nicht behauptet und behaupte auch nicht, dass GA die einzig richtige Optimierungslösung für alle Probleme ist. Sie ist einfach vielseitiger als jede andere Lösung, oft schneller und lässt sich leicht an fast jede Aufgabe anpassen. Eine weitere berechtigte Frage ist, welche Mindestanzahl von Durchläufen einer Fitnessfunktion erforderlich ist, um die optimale Lösung zu finden. Darüber sollten wir reden, nicht über die Geschwindigkeit der Optimierungsalgorithmen selbst. Und hier wird GA die meisten anderen Algorithmen übertreffen.

Falls jemand Interesse hat, kann ich einen separaten Thread eröffnen, in dem ich interessante Testfunktionen für Optimierungsalgorithmen und die Ergebnisse verschiedener Algorithmen veröffentlichen kann. Ich denke, es wird nicht nur für diejenigen sehr nützlich sein, die sich mit NN beschäftigen, sondern für jeden, der ein optimales Ergebnis seiner Bemühungen in vielerlei Hinsicht erzielen möchte.

StatBars schrieb :>>

Es wäre interessant zu erfahren, wie Sie bei der Auswahl der Gewichte vorgehen bzw. wovon Sie sich leiten lassen.

In Maple oder Mathca betrachte ich den Bereich der Gewichte, in dem die Aktivierungsfunktion arbeitet. Wenn der Anwendungsbereich einer Funktion [-1;1] ist, welchen Sinn hat es dann, z. B. in einem solchen Bereich von (-100;100) Variablen zu "suchen"?

Grund der Beschwerde: