Diskussion zum Artikel "Neuronale Netze leicht gemacht (Teil 12): Dropout"

 

Neuer Artikel Neuronale Netze leicht gemacht (Teil 12): Dropout :

Als nächsten Schritt beim Studium von neuronalen Netzwerken schlage ich vor, die Methoden zur Erhöhung der Konvergenz beim Training von neuronalen Netzwerken zu besprechen. Es gibt mehrere solcher Methoden. In diesem Artikel werden wir uns einer von ihnen mit dem Namen Dropout zuwenden.

Beim Training eines neuronalen Netzwerks wird eine große Anzahl von Merkmalen in jedes Neuron eingespeist, und es ist schwierig, die Auswirkungen jedes einzelnen Merkmals zu bewerten. Infolgedessen werden die Fehler einiger Neuronen durch die korrekten Werte anderer Neuronen geglättet, während diese Fehler am Ausgang des neuronalen Netzwerks akkumuliert werden. Dies führt dazu, dass das Training bei einem bestimmten lokalen Minimum mit einem ziemlich großen Fehler aufhört. Dieser Effekt wird als Co-Adaptation der Merkmalsdetektoren bezeichnet, bei der sich der Einfluss der einzelnen Merkmale an die Umgebung anpasst. Besser wäre der gegenteilige Effekt, wenn die Umgebung in einzelne Merkmale zerlegt wird und es möglich ist, den Einfluss jedes Merkmals separat zu bewerten.

Im Jahr 2012 schlug eine Gruppe von Wissenschaftlern der Universität Toronto vor, einen Teil der Neuronen zufällig aus dem Lernprozess auszuschließen, um das Problem der komplexen Koadaptation zu lösen [12]. Eine Verringerung der Anzahl der Merkmale im Training erhöht die Wichtigkeit jedes Merkmals, und eine ständige Veränderung der quantitativen und qualitativen Zusammensetzung der Merkmale verringert das Risiko ihrer Koadaptation. Diese Methode wird Dropout genannt. Manchmal wird die Anwendung dieser Methode mit Entscheidungsbäumen verglichen: Durch das Auslassen einiger Neuronen erhalten wir bei jeder Trainingsiteration ein neues neuronales Netz mit eigenen Gewichten. Nach den Regeln der Kombinatorik haben solche Netze eine recht hohe Variabilität.


Autor: Dmitriy Gizlyk

 

Hinweis: Bei Verwendung in Fractal_OCL_AttentionMLMH_d anstelle von Net.feedForward(TempData,12,true);

prüfen if(!Net.feedForward(TempData,12,true))

printf("Fehler in der Netzweiterleitung. Topologie und Eingabedaten prüfen");

wird einen Fehler erzeugen. Anders als bei der Fractal_OCL_AttentionMLMH-Version, bei der es keinen solchen Fehler gibt.

Bitte prüfen Sie die Ursache.

 
Dmitry Nazarov:

Hinweis bei Verwendung in Fractal_OCL_AttentionMLMH_d anstelle von Net.feedForward(TempData,12,true);

prüfen, ob(!Net.feedForward(TempData,12,true))

printf("Fehler in der Netzweiterleitung. Topologie und Eingabedaten prüfen");

wird einen Fehler erzeugen. Anders als bei der Fractal_OCL_AttentionMLMH-Version, bei der es keinen solchen Fehler gibt.

Bitte prüfen Sie die Ursache.

Danke, ich werde es überprüfen.

 
Wir müssen alle FeedForward-Werte auf NaN, Inf prüfen, da FeedForward sonst fälschlicherweise zurückkehrt.
 
Dmitry Nazarov:

Hinweis bei Verwendung in Fractal_OCL_AttentionMLMH_d anstelle von Net.feedForward(TempData,12,true);

prüfen, ob(!Net.feedForward(TempData,12,true))

printf("Fehler in der Netzweiterleitung. Topologie und Eingabedaten prüfen");

wird einen Fehler erzeugen. Anders als bei der Fractal_OCL_AttentionMLMH-Version, bei der es keinen solchen Fehler gibt.

Bitte prüfen Sie die Ursache.

Probieren Sie diese Version aus, ich hatte keine Fehler.

Dateien:
 
Ja, gut. Der Fehler ist behoben. Ich danke Ihnen.
 

Vielen Dank für diesen Artikel. Ich habe meine Roboter bereits für die neuen Funktionen angepasst und sie funktionieren großartig.

 
Ich nehme an, dass ohne OCL nichts funktioniert? Schade, ich bin kein Gamer und die Karte ist alt.....
 
Der Autor ein großes DANKESCHÖN für den Roboter, überprüfen Sie den Fehler in den Code des EA selbst, denn während der Ausbildung, wenn der Algorithmus zeigt undefinierte Signal die Anzahl der verpassten Muster neigt dazu, 100%, wenn am Ende der Epoche auf der letzten Bar erscheint kaufen oder verkaufen, dann auf der nächsten Epoche der Wert der verpassten Muster sinkt.
 
Alexey Volchanskiy:
Ich nehme an, dass ohne OCL nichts funktioniert? Schade, ich bin kein Gamer und die Karte ist alt....
Wenn der Prozessor ein Multicore-Prozessor ist, sollten Sie die Treiber für den Prozessor auf OCL setzen, die Geschwindigkeit wird nicht mega-schnell sein, aber Sie können es überprüfen.
 
Dmitry, können Sie ein wenig mehr über den Fensterparameter bei der Erstellung von Neuronkey erklären. Verstehe ich das richtig, dass dies die Anzahl der Neuronen ist, die nacheinander (mit einem Schritt) für die Berechnung in einem Schritt genommen werden, um Rechenleistung zu sparen?