Wie entscheidet man sich für eine neuronale Netzwerkarchitektur?

18

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?

user7677413
quelle
Typischerweise experimentieren wir mit unserer Intution; halte es für einen Hyperparameter . Es gibt Möglichkeiten, die Architektur zu erlernen, aber ich weiß nicht, wie praktisch sie ist: blog.acolyer.org/2017/05/10/…
Emre
2
Ich habe nach einem Duplikat dafür gesucht, weil ich sicher bin, dass es schon oft auf dieser Seite aufgetaucht ist. Es konnte jedoch keine reine Version gefunden werden, die keinem Datensatz oder Problem zugeordnet war. Vielleicht könnte dies die allgemeine Frage sein, auf die wir andere verweisen? Leider gibt es im Allgemeinen kein gutes "Wie", aber es ist eine häufige Frage, wenn man sich mit so viel Auswahl konfrontiert sieht.
Neil Slater
Dies ist eine sehr interessante Frage, die zu beantworten ist (der Forscher hat begonnen, an Ihrer Frage zu arbeiten). Was wäre die optimale Architektur für Datensatz A und Datensatz B. Lesen Sie bitte das folgende Dokument, das versucht hat, Ihre Frage zu beantworten. Begrüßen Sie die Welt der Neural Architecture Search (NAS). arxiv.org/abs/1611.01578
iDeepVision

Antworten:

16

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.

Neil Slater
quelle
Das ist eine großartige Erklärung. Vielen Dank. Ich frage mich auch, ob es eine gute Möglichkeit gibt, zu entscheiden, welcher ML-Ansatz verwendet werden soll. Sie erwähnten, dass es einen besseren Weg als ein neuronales Netzwerk geben könnte, aber wie können wir das leicht feststellen?
user7677413
@ user7677413: Das Gleiche gilt. Sie müssen versuchen, es zu sehen, obwohl die Erfahrung Ihnen einen Leitfaden für bekannte Probleme geben kann.
Neil Slater
1
wann ist dann ein neuronales netz notwendig?
user7677413
1
Neuronale Netze sind selten notwendig . Bei einigen Problemen sind sie jedoch besser. Sie zeichnen sich durch Signalverarbeitungsaufgaben wie Audio- und Bilderkennung aus und können auch feine Unterschiede aus großen Datenmengen lernen, bei denen einfachere Algorithmen möglicherweise an ihre Grenzen stoßen. Ob ein NN jedoch das richtige Werkzeug für Sie ist und mit welchem ​​Problem Sie an einem bestimmten Tag konfrontiert sind, kann niemand vorhersagen.
Neil Slater
1
@ user7677413 Ich glaube, Sie gehen davon aus, dass es keine 40 Jahre tiefer und aufschlussreicher maschineller Lernforschung gibt. Es hört sich so an, als würden Sie nur die Oberfläche kratzen. Ich empfehle, ein Lehrbuch zu finden und zu sehen, wie alles zusammenpasst, um Ihre Intuition für die vielen Algorithmen des maschinellen Lernens zu stärken.
Alex L