Ich habe mich gefragt, wie wir entscheiden müssen, wie viele Knoten in ausgeblendeten Ebenen und wie viele ausgeblendete Ebenen beim Aufbau einer neuronalen Netzwerkarchitektur verwendet werden sollen.
Ich verstehe, dass die Eingabe- und Ausgabeschicht von dem Trainingssatz abhängt, den wir haben, aber wie entscheiden wir die verborgene Schicht und die Gesamtarchitektur im Allgemeinen?
machine-learning
neural-network
user7677413
quelle
quelle
Antworten:
Leider gibt es keine generische Methode, um a priori die beste Anzahl von Neuronen und Schichten für ein neuronales Netzwerk zu bestimmen , wenn nur eine Problembeschreibung gegeben ist. Es gibt nicht einmal viel Anleitung, um gute Werte als Ausgangspunkt zu bestimmen.
Der gängigste Ansatz scheint darin zu bestehen, mit einer groben Schätzung zu beginnen, die auf früheren Erfahrungen mit Netzwerken basiert, die bei ähnlichen Problemen verwendet werden. Dies kann Ihre eigene Erfahrung sein oder eine Erfahrung aus zweiter oder dritter Hand, die Sie in einem Schulungskurs, einem Blog oder einem Forschungsbericht gesammelt haben. Probieren Sie dann einige Variationen aus und überprüfen Sie die Leistung sorgfältig, bevor Sie die beste auswählen.
Die Größe und Tiefe neuronaler Netze interagiert auch mit anderen Hyperparametern , so dass sich eine Änderung an einer anderen Stelle darauf auswirken kann, wo die besten Werte liegen. Daher ist es nicht möglich, eine "beste" Größe und Tiefe für ein Netzwerk zu isolieren und dann andere Parameter isoliert weiter abzustimmen. Wenn Sie zum Beispiel ein sehr tiefes Netzwerk haben, funktioniert es möglicherweise effizient mit der ReLU-Aktivierungsfunktion, aber nicht so gut mit Sigmoid. Wenn Sie die beste Größe / Form des Netzwerks gefunden und dann ein Experiment mit verschiedenen Aktivierungsfunktionen ausprobiert haben, können Sie kommen zu der falschen Schlussfolgerung, was am besten funktioniert.
Manchmal lesen Sie etwas über "Faustregeln", die Forscher verwenden, wenn sie ein neuronales Netzwerk von Grund auf neu entwerfen. Diese Dinge könnten für Ihre Probleme funktionieren oder nicht, aber sie haben zumindest den Vorteil, dass Sie das Problem in den Griff bekommen. Die Variationen, die ich gesehen habe, sind:
Erstellen Sie ein Netzwerk mit ausgeblendeten Ebenen, deren Größenordnung der Eingabe ähnelt und die alle dieselbe Größe aufweisen, da es keinen besonderen Grund gibt, die Größe zu ändern (es sei denn, Sie erstellen möglicherweise einen Autoencoder).
Beginnen Sie einfach und bauen Sie Komplexität auf, um zu sehen, was ein einfaches Netzwerk verbessert.
Probieren Sie verschiedene Netzwerktiefen aus, wenn Sie erwarten, dass die Ausgabe gut durch die Eingabedaten erklärt wird, jedoch mit einer komplexen Beziehung (im Gegensatz zu nur von Natur aus verrauschten).
Versuchen Sie, einige Aussetzer hinzuzufügen, da neuronale Netze dem magischen Feenstaub am nächsten kommen, der alles besser macht.
Wenn Sie diese oder ähnliche Informationen in einem Text lesen, nehmen Sie sie mit einer Prise Salz. Im schlimmsten Fall helfen sie Ihnen jedoch, den Leerseiteneffekt zu überwinden, eine Art Netzwerk zu schreiben und den Test- und Verfeinerungsprozess zu starten.
Übrigens, versuchen Sie nicht, sich beim Einstellen eines neuronalen Netzwerks zu verirren, wenn ein anderer Ansatz möglicherweise besser ist, und sparen Sie viel Zeit. Erwägen und verwenden Sie andere Methoden des maschinellen Lernens und der Datenwissenschaft. Erforschen Sie die Daten, machen Sie vielleicht ein paar Zeichnungen. Probieren Sie zunächst einige einfache lineare Ansätze aus, um Benchmarks für Beat, lineare Regression, logistische Regression oder Softmax-Regression zu erhalten, je nach Ihrem Problem. Ziehen Sie in Betracht, einen anderen ML-Algorithmus als NNs zu verwenden - Entscheidungsbaum-basierte Ansätze wie XGBoost können bei vielen Problemen schneller und effektiver sein als vertieftes Lernen.
quelle