Wie viele versteckte Schichten ?
Ein Modell mit null versteckten Ebenen löst linear trennbare Daten auf. Wenn Sie also nicht bereits wissen, dass Ihre Daten nicht linear trennbar sind, schadet es nicht, dies zu überprüfen. Warum sollten Sie ein komplexeres Modell verwenden, als es die Aufgabe erfordert? Wenn es linear trennbar ist, funktioniert eine einfachere Technik, aber auch ein Perceptron erledigt die Aufgabe.
Angenommen, Ihre Daten müssen durch eine nichtlineare Technik getrennt werden, dann beginnen Sie immer mit einer verborgenen Ebene . Mit ziemlicher Sicherheit ist das alles, was Sie brauchen werden. Wenn Ihre Daten mit einem MLP trennbar sind, benötigt dieser MLP wahrscheinlich nur eine einzige verborgene Schicht. Es gibt theoretische Gründe dafür, aber mein Grund ist rein empirisch: Viele schwierige Klassifizierungs- / Regressionsprobleme werden mit MLPs mit einer verborgenen Schicht gelöst, aber ich kann mich nicht erinnern, auf MLPs mit mehreren verborgenen Schichten gestoßen zu sein, die zur erfolgreichen Modellierung von Daten verwendet wurden. - ob in ML-Bulletin Boards, ML-Lehrbüchern, wissenschaftlichen Arbeiten usw. Sie existieren zwar, aber die Umstände, die ihre Verwendung rechtfertigen, sind empirisch recht selten.
Wie viele Knoten in der verborgenen Ebene?
Aus der MLP-Fachliteratur. Meine eigenen Erfahrungen usw. habe ich gesammelt und verlasse mich oft auf mehrere Faustregeln ( RoT) ), die ich auch als zuverlässige befunden habe (dh die Anleitung war korrekt, und selbst wenn dies nicht der ) war normalerweise klar, was als nächstes zu tun ist):
Verrotten basierend auf der Verbesserung der Konvergenz:
Wenn Sie mit dem Modellbau beginnen, gehen Sie auf die Seite von mehr Knoten in der verborgenen Ebene.
Warum? Erstens schaden ein paar zusätzliche Knoten in der verborgenen Ebene wahrscheinlich nicht - Ihr MLP konvergiert immer noch. Andererseits können zu wenige Knoten in der verborgenen Schicht die Konvergenz verhindern. Stellen Sie sich das so vor: Zusätzliche Knoten bieten eine gewisse Überkapazität - zusätzliche Gewichte zum Speichern / Freigeben von Signalen an das Netzwerk während der Iteration (Training oder Modellbildung). Zweitens, wenn Sie mit zusätzlichen Knoten in Ihrer verborgenen Ebene beginnen, können Sie diese später (während des Iterationsfortschritts) leicht bereinigen. Dies ist üblich und es gibt Diagnosetechniken, die Sie unterstützen (z. B. Hinton-Diagramm, das nur eine visuelle Darstellung der Gewichtsmatrizen ist, eine „Wärmekarte“ der Gewichtswerte).
RoTs basierend auf der Größe der Eingabeschicht und der Größe der Ausgabeschicht:
Als Faustregel gilt, dass die Größe dieser [ausgeblendeten] Ebene irgendwo zwischen der Größe der Eingabeebene ... und der Größe der Ausgabeebene ... liegt.
Um die Anzahl der versteckten Knoten zu berechnen, verwenden wir eine allgemeine Regel: (Anzahl der Ein- und Ausgänge) x 2/3
RoT basierend auf Hauptkomponenten:
In der Regel geben wir so viele versteckte Knoten an, wie Dimensionen [Hauptkomponenten] erforderlich sind, um 70-90% der Varianz des Eingabedatensatzes zu erfassen .
Und doch die NN FAQ nennt Autor diese Regeln "Unsinn" (wörtlich), weil sie: die Anzahl der Trainingsinstanzen, das Rauschen in den Zielen (Werte der Antwortvariablen) und die Komplexität des Funktionsbereichs ignorieren.
Wählen Sie aus seiner Sicht (und es schien mir immer, dass er weiß, wovon er spricht) die Anzahl der Neuronen in der verborgenen Schicht basierend darauf, ob Ihr MLP eine Form der Regularisierung oder ein vorzeitiges Anhalten enthält .
Die einzig gültige Technik zur Optimierung der Anzahl der Neuronen in der verborgenen Schicht:
Testen Sie während Ihres Modellbaus obsessiv. Beim Testen werden die Signaturen einer "falschen" Netzwerkarchitektur angezeigt. Wenn Sie beispielsweise mit einem MLP beginnen, dessen verborgene Schicht aus einer kleinen Anzahl von Knoten besteht (die Sie basierend auf den Testergebnissen nach Bedarf schrittweise erhöhen), sind Ihre Trainings- und Generalisierungsfehler sowohl aufgrund von Verzerrungen als auch aufgrund von Unteranpassung hoch.
Erhöhen Sie dann die Anzahl der Knoten in der verborgenen Schicht nacheinander, bis der Generalisierungsfehler zuzunehmen beginnt, diesmal aufgrund von Überanpassung und hoher Varianz.
In der Praxis mache ich das so:
Eingabeebene : Die Größe meines Datenvektors (die Anzahl der Features in meinem Modell) + 1 für den Bias-Knoten und natürlich ohne die Antwortvariable
Ausgabeschicht : allein durch mein Modell bestimmt: Regression (ein Knoten) versus Klassifizierung (Anzahl der Knoten entspricht der Anzahl der Klassen, unter der Annahme von Softmax)
versteckte Ebene : Beginnen Sie , eine verborgene Schicht mit einer Anzahl von Knoten, die der Größe der Eingabeebene entsprechen. Die "ideale" Größe ist eher kleiner (dh eine bestimmte Anzahl von Knoten zwischen der Anzahl in der Eingabeschicht und der Anzahl in der Ausgabeschicht) als größer - dies ist wiederum nur eine empirische Beobachtung und der Großteil Diese Beobachtung ist meine eigene Erfahrung. Wenn das Projekt die zusätzliche erforderliche Zeit gerechtfertigt hat, beginne ich mit einer einzelnen verborgenen Ebene, die aus einer kleinen Anzahl von Knoten besteht, und füge dann (wie oben erläutert) der versteckten Ebene nacheinander Knoten hinzu, während ich die Generalisierung berechne Fehler, Trainingsfehler, Voreingenommenheit und Varianz. Wenn der Generalisierungsfehler gesunken ist und kurz bevor er wieder zunimmt, ist die Anzahl der Knoten an diesem Punkt meine Wahl. Siehe Abbildung unten.