Diskussion zum Artikel "Programmierung eines Tiefen Neuronalen Netzes von Grund auf mit der Sprache MQL" - Seite 2

 
Anddy Cabrera #:

Hallo Li,

Ich habe den Artikel mit 2 Demodateien aktualisiert. Eine für MQL5 und eine für MQL4. Die Datei DeepNeuralNetwork.mqh kann sowohl für mql5 als auch für mql4 verwendet werden.


Auf jeden Fall hänge ich diese Dateien hier an, um zu zeigen, wie man sie benutzt.


Lassen Sie mich wissen, wenn Sie weitere Fragen haben.

Wirklich sehr schöner Artikel, ich habe die Demo ausprobiert und festgestellt, dass nur yValues[1] Werte von mehr als .5 geben kann, yValues[0] und yValues[2] Werte sind von maxum von .2 oder .3. sogar in der Optimierung wird nicht mehr als ein Handel, der ein Verkaufsauftrag ist, geöffnet.
 
nail sertoglu #:

Vielen Dank für die Codes, die Sie geteilt haben. Versucht, die Art und Weise der Ihr zu verstehen.


Ich habe einige Bedenken, da über yValues[0] , yValues[1], yValues[2], da sie NICHT ändern und immer 0 ,33333 aber_xValues[1,2,3] ändern sich mit jedem neuen Balken; wenn ich also auf der Grundlage von yValues handele , sehe ich KEINEN HANDEL, während ein HANDEL stattfindet, wenn die Bedingungen auf _xValues basieren.

Ist es mein Fehler oder einfach falsch codiert Fehler in Ihrem ursprünglichen Code?

Aktualisieren Sie die folgende Funktion so, dass sie `bool` anstelle von `void` zurückgibt, und Sie werden sehen, dass eine falsche Anzahl von Gewichten angegeben wurde.

bool SetWeights(double &weights[])
     {
      int numWeights=(numInput*numHiddenA)+numHiddenA+(numHiddenA*numHiddenB)+numHiddenB+(numHiddenB*numOutput)+numOutput;
      if(ArraySize(weights)!=numWeights)
        {
         printf("Bad weights length (%i), expected %i", ArraySize(weights), numWeights);
         return false;
        }

Beachten Sie, dass Sie auch die Gewichte oben in der Datei aktualisieren müssen (es reicht nicht, sie nur bei der Initialisierung des Netzwerks zu aktualisieren :P

#define  SIZEI 25 // Eingabe * versteckt A
#define  SIZEA 25 // versteckt A * versteckt B
#define  SIZEB 15 // versteckte B * Ausgabe
 
Hallo Anddy,

dies ist ein sehr guter Artikel.
Ich habe ein paar Fragen.
1) Kann ich sowohl die Sigmoid- als auch die Tan-h-Aktivierung für die Ausgabe in einem mehrschichtigen Neuron in Kombination verwenden?
2) Müssen Sie die Gewichte am Anfang der Datei aktualisieren, wie von Karlis Balcers vorgeschlagen?
#define  SIZEI 20 // (Eingabe * verstecktes A)+verstecktes A
#define  SIZEA 25 // (verstecktes A * verstecktes B)+verstecktes B
#define  SIZEB 18 // (verstecktes B * Ausgabe)+Ausgabe
Hinweis: SIZEI sollte 20 und SIZEB sollte 18 sein, ist das korrekt?
3) Ich habe ein Diagramm des tiefen neuronalen Netzes beigefügt, wie in diesem Artikel beschrieben, ist das korrekt?

Vielen Dank!


EADNN

 
Es funktioniert wie ein genetischer Algorithmus mit Optimierer, der Werte auswählt, die das Endergebnis verbessern.
 
<Löschen>
 

Schöne Animation.

Ein neuronales Netz mit zwei Schichten ist ein "flaches" neuronales Netz, kein tiefes neuronales Netz. Zu den tiefen neuronalen Netzen gehören Netze mit mehr als drei verborgenen Schichten. Aufgrund der Besonderheiten beim Training solcher neuronaler Netze wurden Methoden des tiefen Lernens entwickelt.

Der Artikel ist als Beispiel für die Programmierung auf MCL wahrscheinlich nützlich. Zur Einarbeitung in das Thema MLP - sicherlich notwendig. Als Beispiel für die Anwendung neuronaler Netze - nicht vollständig und weit hinter dem aktuellen Stand des Themas zurück.

Ohne Optimierung der Hyperparameter liefern neuronale Netze in der Regel keine zufriedenstellende Qualität.

Ich verstehe einfach nicht, warum man ein Fahrrad aus improvisierten Mitteln bauen soll, wenn es ein Meer von fertigen Programmen zu diesem Thema gibt?

 
Für das Verständnis ist NS gut und klar.
 

Berichtigung. In dem Artikel gibt es eine Definition des Begriffs "tiefes Netz". Ich habe sie nicht gesehen.

Der Prozess der Optimierung der Gewichte eines neuronalen Netzes mit Hilfe der Genetik ist nicht wirklich "Lernen". Es handelt sich schließlich um eine Optimierung. Beim Training kommen ganz andere Methoden zum Einsatz. Allerdings wird auch diese Variante der Nutzung neuronaler Netze praktiziert, und zwar recht erfolgreich.

Um die Arbeit eines neuronalen Netzes zu verstehen, ist es wichtig zu wissen, wie ein neuronales Netz durch Rückwärtsfortpflanzung von Fehlern trainiert wird. Nun, ich hacke schon auf Ihnen herum :)

Viel Erfolg!

 
Vielen Dank an den Autor für diesen Artikel. Als jemand, der weit von neuronalen Netzen entfernt ist, hat er mir sehr geholfen, das Wesentliche zu verstehen, und er war sehr interessant, um sich weiter in das Thema einzuarbeiten. Nochmals vielen Dank!
 

Gibt es eine Möglichkeit, die Fehlerfortpflanzung in dieses Netz einzubeziehen?

Aus irgendeinem Grund gibt es die Meinung, dass ein solches Netz flexibler wäre und bessere Inputs liefern würde - ....

Ein Netz mit Fehlerfortpflanzung ist doch kein völlig anderes Netz, oder?