Ich habe mich gefragt, ob es unter bestimmten Umständen möglich ist, dass ANNs eine bessere Leistung erbringen, wenn Sie einige Verbindungen auf ihnen entfernen, wie zum Beispiel:
Aufbau eines ANN durch parallele Verwendung von zwei mehrschichtigen ANNs A und B (gleiche Eingangs- und Ausgangsknoten), die einige "Kommunikations" -Verbindungen zwischen den verborgenen Schichten von A und B hinzufügen?
Könnte man bessere Verallgemeinerungsergebnisse erzielen?
Wird dies in der Praxis irgendwie verwendet oder verwendet man immer nur mehrschichtige, vollständig verbundene Netzwerke?
classification
neural-networks
Dünner Jim
quelle
quelle
Als Faustregel gilt, dass kleine und / oder spärliche Netzwerke besser verallgemeinern. Sie können Ihren Trainingsalgorithmus unnötige Verbindungen innerhalb eines Netzwerks fester Größe aussortieren lassen, indem Sie eine Form des Gewichtsabfalls anwenden, oder Sie können einen Algorithmus anwenden, der darauf abzielt, die Netzwerkarchitektur / -topologie selbst zu optimieren, indem unnötige Eingaben, versteckte Knoten oder Verbindungen entfernt werden.
Schauen Sie sich diese Referenzen an, um Ideen und Ausgangspunkte für weitere Forschungen zu erhalten, oder untersuchen Sie die Verwendung evolutionärer Algorithmen zum Entwerfen, Beschneiden und Optimieren von Architekturen.
quelle
In den meisten Fällen erhalten Sie ein besseres Netzwerk, wenn Sie nicht benötigte Verbindungen entfernen. Es ist leicht, das Netzwerk zu überanstrengen (zu überpassen). In diesem Fall ist die Leistung des Validierungsdatensatzes schlecht.
Das Beschneiden unnötiger Verbindungen verringert höchstwahrscheinlich die Wahrscheinlichkeit eines Übertrainings. Bitte sehen Sie: http://en.wikipedia.org/wiki/Overfitting .
quelle
Ja, es ist möglich. Wir können die Verbindung zwischen Recheneinheiten, Anzahl der verborgenen Schichten, Einheiten pro verborgener Schicht usw. als Hyperparameter betrachten. Durch eine Reihe von Experimenten können optimale Werte für diese Parameter ermittelt werden.
Beispielsweise:
Sie können Ihren Datensatz wie folgt aufteilen: Trainingssatz 60% der Daten, Kreuzvalidierung 20% der Daten, Testen 20% der Daten,
Trainieren Sie dann Ihre NN mithilfe des Trainingsdatensatzes und der Optimierungsparameter mithilfe des Kreuzvalidierungsdatensatzes.
Schließlich können Sie Ihren Testdatensatz verwenden, um die Leistung Ihres NN zu bewerten.
quelle