7 Stimmen

Ein mehrschichtiges Perzeptron-Netzwerk verstehen

Ich versuche zu verstehen, wie man ein mehrschichtiges Netz trainiert; allerdings habe ich einige Schwierigkeiten, herauszufinden, wie man eine geeignete Netzarchitektur bestimmt - d. h. die Anzahl der Knoten/Neuronen in jeder Schicht des Netzes.

Für eine bestimmte Aufgabe habe ich vier Eingabequellen, die jeweils einen von drei Zuständen eingeben können. Ich schätze, das würde bedeuten, dass vier Eingangsneuronen entweder 0, 1 oder 2 feuern, aber soweit ich weiß, sollte die Eingabe binär gehalten werden?

Außerdem habe ich einige Probleme bei der Auswahl der Anzahl der Neuronen in der versteckten Schicht. Jeder Kommentar wäre großartig.

Danke.

10voto

doug Punkte 67204

Die Bestimmung einer akzeptablen Netzstruktur für ein mehrschichtiges Perzeptron ist eigentlich ganz einfach.

  1. Eingabeschicht : Wie viele Merkmale/Dimensionen sind in Ihre Daten sind, d.h. wie viele Spalten in jeder Datenzeile. Addieren Sie eins dazu (für den Bias-Knoten) und das ist die Anzahl der Knoten für die erste (Eingabe Schicht).

  2. Ausgangsschicht : Läuft Ihr MLP im 'Maschinen'-Modus Modus oder im 'Regressions'-Modus ('Regression' wird hier im Sinne des maschinellen Lernens und nicht im statistischen Sinn), d. h., liefert mein MLP eine Klassenbezeichnung oder einen vorhergesagten Wert zurück? Wenn letzteres der Fall ist, dann ist Ihre Ausgabeschicht einen einzelnen Knoten. Wenn ersteres der Fall ist, dann hat Ihre Ausgabeschicht die gleiche Anzahl von Knoten wie die Klassenbezeichnungen. Wenn zum Beispiel das gewünschte Ergebnis darin besteht, jede Instanz entweder als "Betrug" oder als "nicht Betrug" zu bezeichnen, sind das zwei Klassenlabels, daher zwei Knoten in Ihrer Ausgabeschicht Schicht.

  3. Verdeckte Schicht(en) : Zwischen diesen beiden (Input und Ausgabe) liegen natürlich die versteckten Schichten. Beginnen Sie immer mit einer einzigen versteckten Schicht. Also H \how viele Knotenpunkte? Hier eine Faustregel: Setzen Sie die (anfängliche) Größe der verborgenen Schicht auf eine Anzahl von Knoten, die nur geringfügig größer ist als die Anzahl der Knoten in der Eingabeschicht. Verglichen mit weniger Knoten als die Eingabeschicht hilft diese überschüssige Kapazität Ihrer numerischen Optimierungsroutine (z. B. Gradientenabstieg) zu konvergieren.

Beginnen Sie also mit drei Schichten für Ihre Netzarchitektur; die Größe der ersten (Eingabe) und der letzten (Ausgabe) wird durch Ihre Daten bzw. durch Ihr Modelldesign festgelegt. Eine versteckte Schicht, die nur geringfügig größer ist als die Eingabeschicht, ist fast immer ein guter Anfang.

In Ihrem Fall wäre also eine geeignete Netzstruktur für den Anfang:

Eingabeschicht : 5 Knotenpunkte --> ausgeblendete Schicht : 7 Knotenpunkte --> Ausgabeschicht : 3 Knotenpunkte

10voto

user19511 Punkte 236

Ich stimme mit der obigen Antwort von Doug in einigen Punkten nicht überein.

Sie haben 4 diskrete (3-fach kategorische) Eingänge. Sie sollten (sofern Sie keinen triftigen Grund haben, dies nicht zu tun) diese als 12 binäre Eingaben darstellen, indem Sie eine 1-von-3-Kodierung für jede Ihrer vier begrifflichen Eingaben verwenden. Wenn Ihre Eingabe also [2,0,1,1] ist, sollte Ihr Netzwerk wie folgt aussehen: 0 0 1 1 0 0 0 1 0 0 1 0 Wenn Ihre Netzimplementierung eine manuelle Vorspannung erfordert, sollten Sie ein weiteres "always on"-Bit für die Vorspannung hinzufügen, aber die meisten vernünftigen Implementierungen neuronaler Netze erfordern dies nicht.

Versuchen Sie es mit einer unterschiedlichen Anzahl von versteckten Einheiten. Sie müssen sich nicht auf eine versteckte Schicht beschränken, die kleiner ist als die Eingabeschicht, aber wenn Sie sie größer machen, sollten Sie darauf achten, Ihre Gewichte zu regulieren, vielleicht mit L2 oder L1 Gewichtsabnahme und vielleicht sogar mit einem frühen Trainingsstopp (hören Sie auf zu trainieren, wenn sich Ihr Fehler auf einem ausgehaltenen Validierungsset nicht mehr verbessert).

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X