Diskussion zum Artikel "Mehrschicht-Perceptron und Backpropagation-Algorithmus"

 

Neuer Artikel Mehrschicht-Perceptron und Backpropagation-Algorithmus :

Die Popularität dieser beiden Methoden wächst, sodass viele Bibliotheken in Matlab, R, Python, C++ und anderen entwickelt wurden, die einen Trainingssatz als Eingabe erhalten und automatisch ein passendes Netzwerk für das Problem erstellen. Versuchen wir zu verstehen, wie der Grundtyp des neuronalen Netzes funktioniert (einschließlich Ein-Neuronen-Perzeptron und Mehrschicht-Perzeptron). Wir werden einen spannenden Algorithmus betrachten, der für das Training des Netzes verantwortlich ist - Gradientenabstieg und Backpropagation. Bestehende komplexe Modelle basieren oft auf solchen einfachen Netzwerkmodellen.

Gradientenabstieg ist der Prozess der Minimierung einer Funktion in Richtung der Gradienten der Kostenfunktion.

Dies setzt die Kenntnis der Kostenform sowie der Ableitung voraus, so dass wir den Gradienten ab einem bestimmten Punkt kennen und uns in dieser Richtung, z. B. nach unten, in Richtung des Minimalwertes bewegen können.


Beim maschinellen Lernen können wir eine Technik verwenden, die die Gewichte für jede Iteration auswertet und aktualisiert, genannt Stochastischer Gradientenabstieg. Sein Zweck ist es, einen Modellfehler in unseren Trainingsdaten zu minimieren.

Die Idee dieses Algorithmus ist, dass jede Trainingsinstanz dem Modell nacheinander gezeigt wird. Das Modell erstellt eine Prognose für die Trainingsinstanz. Dann wird ein Fehler berechnet und das Modell wird aktualisiert, um den Fehler in der nächsten Prognose zu reduzieren.

Dieses Verfahren kann verwendet werden, um einen Satz von Modellgewichten zu finden, der den geringsten Fehler erzeugt.

Autor: Jonathan Pereira

 
Gostei muito do seu artigo, foi muito esclarecedor sobre os fundamentos do funcionamento de uma rede neural. Ich benutze seit langem neuronale Netzwerke für die Entwicklung von Software und habe immer wieder die in den Artikeln veröffentlichten Kritiken bestätigt, ohne zu verstehen, wie sie funktionieren.
 
Beeindruckend
 
Hervorragend... vor langer Zeit habe ich einen Algorithmus zur Mustererkennung entwickelt, der auf statistischer Mathematik basiert... diese Ideen haben ihn wiederbelebt und er ist jetzt viel genauer als je zuvor. Herzlichen Dank dafür!
 
Vielen Dank, Jonathan! Es ist sehr ausführlich und interessant geschrieben.
 

Erläutern Sie bitte die seed()-Funktion und ihre Verwendung im Code, da ich im Code nicht finden konnte, wo sie verwendet wird (außer in der OnStart()-Funktion, aber sie kann dort kommentiert werden, ohne dass es zu Problemen oder Fehlern kommt).

Obwohl, wenn ich die Seed-Nummer von 42 auf irgendetwas anderes ändere, werden viele Dinge beim Training und den Ergebnissen anders.


Wie kommt es, dass das Auskommentieren der Funktion seed() keine Auswirkungen auf die Ergebnisse hat, aber das Ändern des Anfangswerts alle Ergebnisse beeinflusst?


Ich bin mir sicher, dass ich hier etwas übersehe, da ich diese Beziehungen und ihre Auswirkungen auf die Ergebnisse nicht verstehen konnte. Gibt es etwas Besonderes mit der Zahl "42"?


Vielen Dank im Voraus

 
rrocchi:

......

Der Seed dient der Erzeugung von Pseudo-Zufallszahlen, d. h. er wird nur verwendet, um die Ergebnisse reproduzierbar zu machen. Die Erzeugung der Stichprobe hängt von einem Zufallszahlengenerator ab, der durch einen Seed gesteuert wird. Bei jedem Aufruf des Befehls (rand (), MathRand ()) werden andere Elemente der Stichprobe erzeugt, da der Seed des Generators automatisch durch die Funktion geändert wird. Im Allgemeinen muss sich der Benutzer nicht um diesen Mechanismus kümmern. Falls erforderlich, kann jedoch die Funktion _RandomSeed verwendet werden, um das Verhalten des Zufallszahlengenerators zu steuern. Diese Funktion definiert den aktuellen Zustand des Seeds, der bei jeder nachfolgenden Generierung von Zufallszahlen geändert wird. Um also zwei identische Stichproben zu erzeugen, verwenden Sie einfach eine Zahl, um den Seed zu definieren.


Die Verwendung der Zahl 42 ist ein Witz, denn die Zahl 42 ist die Atommasse von Kalzium, 42 ist eine Primzahl, eine Pseudo-Perfektzahl und außerdem die höchste Punktzahl in der Mathematik-Olympiade. Wenn man ein Blatt A4-Papier in der Hälfte faltet und 42 Mal wieder faltet, könnte man mit den zusätzlichen Maßnahmen den Mond erreichen (zumindest sagt man das, kkkkk), Cambridge-Astronomen haben herausgefunden, dass 42 der Wert einer wesentlichen wissenschaftlichen Konstante ist - eine, die das Alter des Universums bestimmt. Und das Coolste: 1979 beschreibt Douglas Adams, Autor von "Per Anhalter durch die Galaxis", wie eine außerirdische Ethnie einen Computer namens Deep Thought programmiert, um die endgültige Antwort auf "Leben, Universum und alles" zu finden. Nach siebeneinhalb Millionen komplizierten Gleichungen und schwierigen Berechnungen lieferte er die Antwort - 42, aber warum 42? Douglas Adams hat einmal erklärt, woher diese Zahl stammt:

"Die Antwort ist sehr einfach. Es war ein Scherz. Es musste eine Zahl sein, eine gewöhnliche, kleine, und ich wählte diese. Binäre Darstellungen, die Basis 13, tibetanische Affen sind völlig bedeutungslos. Ich saß an meinem Tisch, schaute in den Garten und dachte "42 wird funktionieren" und schrieb. Ende der Geschichte."


Diese und andere Spiele um die Zahl 42 führen dazu, dass sie immer wieder gewählt wird, wenn es darum geht, einen Wert für das Saatgut festzulegen, aber eigentlich kann es jede Zahl sein.

 
Danke Jonathan, ein toller Artikel
 
MetaQuotes:

Der neue Artikel Multilayer Perceptron Machine with Backpropagation Algorithm wurde veröffentlicht:

Von Jonathan Pereira

Gut
 

Hi Jonathan,

i enjoyed reading your article. It helped me a lot to get further with the implementation of a neural network in MQL5.

Very good work! Please keep it up!
 
Hallo mein Freund.
Zunächst einmal... Herzlichen Dank! Ausgezeichneter Artikel.
Ich glaube, wir vermissen die Datei: Util.mqh.
Sie enthält wahrscheinlich die Zufallsfunktion.
Könnten Sie sie einfügen? Oder beschreiben Sie die Zufallsfunktion darin.
Nochmals vielen Dank. Ich studiere Ihren Artikel sehr sorgfältig.