Gibt es eine Daumenregel für den Entwurf neuronaler Netze?

12

Ich weiß, dass eine neuronale Netzwerkarchitektur hauptsächlich auf dem Problem selbst und den Arten der Eingabe / Ausgabe basiert, aber dennoch - es gibt immer eine "quadratische", wenn mit der Erstellung begonnen wird. Meine Frage lautet also: Gibt es bei einem Eingabedatensatz von MxN (M ist die Anzahl der Datensätze, N ist die Anzahl der Features) und C möglichen Ausgabeklassen eine Faustregel für die Anzahl der Ebenen / Einheiten, mit denen wir beginnen sollen?

shakedzy
quelle
Mögliche Antworten auf diese Frage sind sehr problemspezifisch. Möglicherweise gibt es einige nützliche Regeln für die Erkennung von Bildobjekten, diese Regeln funktionieren jedoch möglicherweise nicht für einen anderen Datensatz.
HoraceT

Antworten:

10

Diese Frage wurde in CrossValidated ausführlich beantwortet: Wie wählt man die Anzahl der verborgenen Schichten und Knoten in einem vorwärtsgerichteten neuronalen Netzwerk?

Lassen Sie mich jedoch meine eigenen zwei Cent hinzufügen:

Es gibt keine magische Regel für die Auswahl der besten neuronalen Netzwerkarchitektur. Wenn Sie jedoch eine Architektur finden, mit der jemand ein ähnliches Problem gelöst hat, ist dies häufig ein hervorragender Ausgangspunkt.

Am besten suchen Sie nach offiziellen oder inoffiziellen Beispielen, die gängige Bibliotheken für neuronale Netze wie Keras, PyTorch oder Tensorflow verwenden, sowie Architekturen, die in der akademischen Literatur beschrieben sind. Keras / Beispiele auf Github sind eine großartige Ressource.

Diese Architekturen wurden wahrscheinlich nach vielen Versuchen und Irrtümern ausgewählt, sodass der größte Teil der Arbeit für Sie erledigt wurde.

Imran
quelle
5
Eine Einschränkung der CrossValidated-Antwort ist, dass sie jetzt über 7 Jahre alt ist und auf eine über 15 Jahre alte FAQ verweist, um eine "hervorragende Zusammenfassung" der Konfiguration Ihrer verborgenen Ebenen zu erhalten. Zu sagen, dass in den letzten 7 bis 15 Jahren viel an der NN-Konfiguration gearbeitet wurde, ist etwas untertrieben. Es gibt eine zunehmende Anzahl von Anwendungen, die außerhalb des Bereichs " Eine verborgene Schicht ist ausreichend " liegen. - Für eine Vielzahl von Problemen kann ein Deep-Learning-Ansatz jedoch übertrieben sein. Es ist eine solide Strategie, mit einer einzelnen verborgenen Ebene zu beginnen und nur bei Bedarf tief zu gehen.
RM
1
Gute Punkte, RM - Die zweite Antwort dort ist jedoch viel jünger.
Imran
@ Imran Ich denke, Sie beantworten OP-Frage nie ganz. Die Wahl der versteckten Knoten und der Architektur ist eine sehr tiefe Frage, die noch nicht sehr gut verstanden wird. Erleben Sie ResNet und Wide ResNet mit Cross-Layer-Verbindungen.
HoraceT
Vielen Dank für Ihren Kommentar, @horaceT. Meine versuchte Antwort sollte bedeuten: "Es gibt keine Faustregel, aber es gibt Heuristiken, die angewendet werden können." Mir sind Res Nets bekannt. Bitte lassen Sie mich wissen, wie ich meine Antwort noch verbessern kann.
Imran
3

Ich las einen Artikel über die Idee, neuronale Netze zum Entwerfen anderer neuronaler Netze zu verwenden, indem ich untersuchte, welche Konfiguration von Knoten und Schichten am effizientesten war. Auf dieser Seite können Sie ein PDF herunterladen: https://arxiv.org/abs/1611.02120

Daniel Ephrat
quelle
2

Nach der Antwort von @ Imran fand ich dieses Papier in einem der Kommentare des CrossValidated-Posts, auf den er verlinkt hat. Neben dem Versuch, mithilfe genetischer Modelle (anstelle einer Faustregel) die richtige Architektur zu finden, gibt Abschnitt 2.1 einige theoretische Grenzen für die Anzahl der verborgenen Einheiten in einem System mit einer oder zwei verborgenen Schichten.

EDIT: Ich habe diesen Satz getestet und herausgefunden, dass die Verwendung genetischer Modelle genauso gut ist wie die Auswahl einer zufälligen Architektur.

shakedzy
quelle