Wie wähle ich die Anzahl der verborgenen Schichten und Knoten in einem vorwärtsgerichteten neuronalen Netzwerk?

541

Gibt es eine Standard- und akzeptierte Methode zum Auswählen der Anzahl von Schichten und der Anzahl von Knoten in jeder Schicht in einem vorwärtsgerichteten neuronalen Netzwerk? Ich interessiere mich für automatisierte Wege zum Aufbau neuronaler Netze.

Rob Hyndman
quelle
4
Unter all den tollen Antworten fand ich dieses Papier hilfreich. Dstath.users.uth.gr/papers/IJRS2009_Stathakis.pdf
Debpriya Seal 24.06.17
@ DebpriyaSeal nicht so nützlich, obwohl ...
DarkCygnus

Antworten:

468

Mir ist klar, dass diese Frage beantwortet wurde, aber ich denke nicht, dass die noch vorhandene Antwort die Frage wirklich in Anspruch nimmt, außer auf einen Link zu verweisen, der im Allgemeinen mit dem Thema der Frage zusammenhängt. Insbesondere beschreibt der Link eine Technik für die programmatische Netzwerkkonfiguration, die jedoch keine " [a] standardmäßige und akzeptierte Methode " für die Netzwerkkonfiguration ist.

Durch Befolgen eines kleinen Satzes klarer Regeln kann eine kompetente Netzwerkarchitektur programmgesteuert festgelegt werden (dh die Anzahl und Art der neuronalen Schichten und die Anzahl der Neuronen, aus denen jede Schicht besteht). Wenn Sie diesem Schema folgen, erhalten Sie eine kompetente, aber wahrscheinlich keine optimale Architektur.

Sobald dieses Netzwerk initialisiert ist, können Sie die Konfiguration während des Trainings mithilfe einer Reihe zusätzlicher Algorithmen iterativ anpassen. Eine Familie von diesen schneidet Knoten basierend auf (kleinen) Werten des Gewichtsvektors nach einer bestimmten Anzahl von Trainingsepochen - mit anderen Worten, eliminiert unnötige / redundante Knoten (mehr dazu weiter unten).

Jedes NN hat drei Arten von Ebenen: Eingabe , Ausblenden und Ausgabe .


Um die NN-Architektur zu erstellen, müssen Werte für die Anzahl der Schichten jedes Typs und die Anzahl der Knoten in jeder dieser Schichten ermittelt werden.

Die Eingabeebene

Einfach - jeder NN hat genau einen von ihnen - keine Ausnahmen, die ich kenne.

In Bezug auf die Anzahl der Neuronen, aus denen diese Schicht besteht, wird dieser Parameter vollständig und eindeutig bestimmt, sobald Sie die Form Ihrer Trainingsdaten kennen. Insbesondere entspricht die Anzahl der Neuronen, aus denen diese Schicht besteht, der Anzahl der Merkmale (Spalten) in Ihren Daten . Einige NN-Konfigurationen fügen einen zusätzlichen Knoten für einen Bias-Term hinzu.


Die Ausgabeebene

Wie die Eingabeebene hat jede NN genau eine Ausgabeebene. Die Bestimmung der Größe (Anzahl der Neuronen) ist einfach. Sie wird vollständig von der gewählten Modellkonfiguration bestimmt.

Wird Ihr NN im Maschinenmodus oder im Regressionsmodus ausgeführt (die ML-Konvention, einen Begriff zu verwenden, der auch in der Statistik verwendet wird, dem jedoch eine andere Bedeutung zugewiesen wird, ist sehr verwirrend)? Maschinenmodus: Gibt eine Klassenbezeichnung zurück (z. B. "Premium Account" / "Basic Account"). Der Regressionsmodus gibt einen Wert zurück (z. B. Preis).

Wenn der NN ein Regressor ist, hat die Ausgabeebene einen einzelnen Knoten.

Wenn der NN ein Klassifizierer ist, hat er auch einen einzelnen Knoten, sofern nicht Softmax verwendet wird. In diesem Fall hat der Ausgabe-Layer einen Knoten pro Klassenbezeichnung in Ihrem Modell.

Die versteckten Schichten

Diese wenigen Regeln legen also die Anzahl der Ebenen und die Größe (Neuronen / Ebene) sowohl für die Eingabe- als auch für die Ausgabeebene fest. Das lässt die verborgenen Schichten.

Wie viele versteckte Schichten? Nun, wenn Ihre Daten linear trennbar sind (was Sie oft wissen, wenn Sie mit dem Codieren eines NN beginnen), brauchen Sie überhaupt keine versteckten Ebenen. Natürlich brauchen Sie auch keinen NN, um Ihre Daten aufzulösen, aber er wird trotzdem die Arbeit erledigen.

Darüber hinaus gibt es, wie Sie wahrscheinlich wissen, eine Fülle von Kommentaren zur Frage der Konfiguration versteckter Ebenen in NNs ( eine hervorragende Zusammenfassung dieses Kommentars finden Sie in den wahnsinnig ausführlichen und aufschlussreichen FAQ zu NNs). Ein Problem innerhalb dieses Themas, über das Einigkeit besteht, ist der Leistungsunterschied zum Hinzufügen zusätzlicher ausgeblendeter Ebenen: Es gibt nur wenige Situationen, in denen sich die Leistung mit einer zweiten (oder dritten usw.) ausgeblendeten Ebene verbessert. Eine versteckte Schicht reicht für die meisten Probleme aus.

Wie sieht es mit der Größe der verborgenen Schicht (en) aus - wie viele Neuronen? Es gibt einige empirisch abgeleitete Faustregeln, von denen die am häufigsten verwendete lautet: " Die optimale Größe der verborgenen Ebene liegt normalerweise zwischen der Größe der Eingabe- und der Größe der Ausgabeebene ." Jeff Heaton, Autor der Einführung in neuronale Netze in Java, bietet einige weitere Möglichkeiten.

In der Summe könnte man bei den meisten Problemen wahrscheinlich eine anständige Leistung erzielen (auch ohne einen zweiten Optimierungsschritt), indem man die Konfiguration der verborgenen Schichten mit nur zwei Regeln festlegt: (i) Anzahl der verborgenen Schichten ist gleich eins; und (ii) die Anzahl von Neuronen in dieser Schicht ist der Mittelwert der Neuronen in der Eingabe- und der Ausgabeschicht.


Optimierung der Netzwerkkonfiguration

Beschneidungbeschreibt eine Reihe von Techniken zum Trimmen der Netzwerkgröße (nach Knoten und nicht nach Schichten), um die Rechenleistung und manchmal die Auflösungsleistung zu verbessern. Der Kern dieser Techniken ist das Entfernen von Knoten aus dem Netzwerk während des Trainings, indem diejenigen Knoten identifiziert werden, die, wenn sie aus dem Netzwerk entfernt werden, die Netzwerkleistung (dh die Auflösung der Daten) nicht merklich beeinträchtigen würden. (Auch ohne eine formale Schnitttechnik können Sie anhand der Gewichtsmatrix nach dem Training eine ungefähre Vorstellung davon bekommen, welche Knoten nicht wichtig sind. Schauen Sie sich die Gewichte sehr nahe an Null an - es sind die Knoten an beiden Enden dieser Gewichte, die häufig vorkommen entfernt während des Bereinigens.) Wenn Sie während des Trainings einen Bereinigungsalgorithmus verwenden, beginnen Sie natürlich mit einer Netzwerkkonfiguration, bei der mit größerer Wahrscheinlichkeit mehr (dh "bereinigbare") Knoten vorhanden sind - mit anderen Worten:

Anders ausgedrückt: Wenn Sie während des Trainings einen Bereinigungsalgorithmus auf Ihr Netzwerk anwenden, können Sie sich einer optimalen Netzwerkkonfiguration nähern. Ich weiß nicht, ob Sie das in einem einzelnen "Vor-Ort" (wie einem auf genetischen Algorithmen basierenden Algorithmus) tun können, obwohl ich weiß, dass diese zweistufige Optimierung im Moment üblicher ist.

doug
quelle
31
Sie geben an, dass für die meisten Probleme nur eine versteckte Ebene erforderlich ist. Vielleicht ist es besser zu sagen, dass NNs mit mehr verborgenen Schichten extrem schwer zu trainieren sind (wenn Sie wissen wollen, wie, überprüfen Sie die Veröffentlichungen von Hintons Gruppe in Uof Toronto, "Deep Learning") und damit die Probleme, die mehr als ein Verborgenes erfordern Schichten werden von neuronalen Netzen als "nicht lösbar" angesehen.
Bayerj
13
Sie schreiben Wenn der NN ein Regressor ist, hat die Ausgabeebene einen einzelnen Knoten. . Warum nur ein einziger Knoten? Warum kann ich nicht mehrere kontinuierliche Ausgaben haben?
Gerrit
5
@gerrit Sie können definitiv mehrere kontinuierliche Ausgaben haben, wenn Ihre Zielausgabe einen Vektorwert hat. Das Definieren einer geeigneten Verlustfunktion für vektorielle Ausgaben kann jedoch etwas schwieriger sein als bei einer Ausgabe.
lmjohns3
5
Ich dachte, es wäre das Gegenteil davon: Wenn der NN ein Klassifizierer ist, dann hat er auch einen einzelnen Knoten, sofern nicht Softmax verwendet wird. In diesem Fall hat der Ausgabe-Layer einen Knoten pro Klassenbeschriftung in Ihrem Modell.
Viyps
2
@doug Danke für diese wundervolle Antwort. Dadurch konnte ich meine ANN von 3 ausgeblendeten Schichten auf 1 reduzieren und dieselbe Klassifizierungsgenauigkeit erzielen, indem ich die richtige Anzahl ausgeblendeter Neuronen einstellte ... Ich habe nur den Durchschnitt der Eingabe- und Ausgabesummen verwendet. Vielen Dank!
Rayryeng
129

@ Dougs Antwort hat bei mir funktioniert. Es gibt eine zusätzliche Faustregel, die bei überwachten Lernproblemen hilft. Normalerweise können Sie eine Überanpassung verhindern, indem Sie die Anzahl der Neuronen unter dem folgenden Wert halten:

Nh=Ns(α(Ni+No))

Ni
No
Ns
α

alpha

Ns(Ni+No)α

Bei einem automatisierten Verfahren beginnen Sie mit einem Alpha von 2 (doppelt so viele Freiheitsgrade in Ihren Trainingsdaten wie in Ihrem Modell) und arbeiten sich bis zu 10 vor, wenn der Fehler (Verlust) für Ihren Trainingsdatensatz erheblich geringer ist als für Ihr Testdatensatz.

Kochfelder
quelle
7
Diese Formel ist sehr interessant und hilfreich. Gibt es eine Referenz für diese Formel? Es wäre hilfreicher.
Prashanth
2
@prashanth Ich habe mehrere Behauptungen und Formeln im oben genannten NN-Designtext kombiniert. Aber ich glaube nicht, dass es in der Form, die ich zeige, explizit genannt wird. Und meine Version ist eine sehr grobe Annäherung mit vielen vereinfachenden Annahmen. Also YMMV.
Kochfelder
1
Zuerst wollte ich ein Trainingsset schreiben, anstatt ein Testset im vorherigen Kommentar. Vielleicht ist diese Formel sinnvoll, wenn wir sie als "Sie benötigen mindestens so viele Neuronen, um genügend Funktionen (den von Ihnen erwähnten DOF) aus dem Datensatz zu lernen" lesen möchten. Wenn die Merkmale des Datensatzes repräsentativ für die Grundgesamtheit sind und wie gut sich das Modell verallgemeinern lässt, ist dies möglicherweise eine andere Frage (aber eine wichtige).
kon psych
3
Nh(Ni+No)
2
@mateus, vielleicht ist eine etwas bessere Faustregel für mehrere Ebenen die N_h(durchschnittliche Anzahl von versteckten Neuronen pro Ebene) Lösung dafür N_s = (N_i + N_o) * N_h ^ N_hidden_layers. Aber ich würde diese Formel immer noch nicht verwenden. Es ist nur für sehr grundlegende Probleme (Spielzeugprobleme), wenn Sie keine anderen Regularisierungsansätze implementieren möchten.
Kochfelder
60

Aus der Einführung in neuronale Netze für Java (zweite Ausgabe) von Jeff Heaton - Vorschau frei verfügbar bei Google Books und zuvor auf der Website des Autors :

Die Anzahl der ausgeblendeten Ebenen

In Bezug auf die verborgenen Schichten müssen zwei Entscheidungen getroffen werden: Wie viele verborgene Schichten müssen tatsächlich im neuronalen Netzwerk vorhanden sein und wie viele Neuronen werden sich in jeder dieser Schichten befinden. Wir werden zunächst untersuchen, wie die Anzahl der mit dem neuronalen Netzwerk zu verwendenden verborgenen Schichten bestimmt werden kann.

Probleme, die zwei versteckte Ebenen erfordern, treten selten auf. Neuronale Netze mit zwei verborgenen Schichten können jedoch Funktionen mit jeder Form darstellen. Derzeit gibt es keinen theoretischen Grund, neuronale Netze mit mehr als zwei verborgenen Schichten zu verwenden. Tatsächlich gibt es für viele praktische Probleme keinen Grund, mehr als eine verborgene Schicht zu verwenden. Tabelle 5.1 fasst die Funktionen neuronaler Netzwerkarchitekturen mit verschiedenen verborgenen Schichten zusammen.

Tabelle 5.1: Anzahl der ausgeblendeten Ebenen bestimmen

| Anzahl ausgeblendeter Ebenen | Ergebnis |

 0 - Kann nur linear trennbare Funktionen oder Entscheidungen darstellen.

 1 - Kann jede Funktion approximieren, die eine kontinuierliche Zuordnung enthält
von einem endlichen Raum zum anderen.

 2 - Kann eine beliebige Entscheidungsgrenze mit beliebiger Genauigkeit darstellen
mit rationellen aktivierungsfunktionen und kann sich jeder rationellen annähern
Zuordnung zu jeder Genauigkeit.

Die Anzahl der versteckten Neuronenschichten zu bestimmen, ist nur ein kleiner Teil des Problems. Sie müssen auch bestimmen, wie viele Neuronen sich in jeder dieser verborgenen Schichten befinden. Dieser Vorgang wird im nächsten Abschnitt behandelt.

Die Anzahl der Neuronen in den versteckten Schichten

Die Entscheidung über die Anzahl der Neuronen in den verborgenen Schichten ist ein sehr wichtiger Teil der Entscheidung über Ihre gesamte neuronale Netzwerkarchitektur. Obwohl diese Ebenen nicht direkt mit der externen Umgebung interagieren, haben sie einen enormen Einfluss auf die endgültige Ausgabe. Sowohl die Anzahl der verborgenen Schichten als auch die Anzahl der Neuronen in jeder dieser verborgenen Schichten müssen sorgfältig abgewogen werden.

Die Verwendung zu weniger Neuronen in den verborgenen Schichten führt zu einer sogenannten Unteranpassung. Unteranpassung tritt auf, wenn sich zu wenig Neuronen in den verborgenen Schichten befinden, um die Signale in einem komplizierten Datensatz angemessen zu erfassen.

Die Verwendung zu vieler Neuronen in den verborgenen Schichten kann zu mehreren Problemen führen. Erstens können zu viele Neuronen in den verborgenen Schichten zu einer Überanpassung führen. Überanpassung tritt auf, wenn das neuronale Netzwerk über eine so große Informationsverarbeitungskapazität verfügt, dass die begrenzte Informationsmenge im Trainingssatz nicht ausreicht, um alle Neuronen in den verborgenen Schichten zu trainieren. Ein zweites Problem kann auftreten, selbst wenn die Trainingsdaten ausreichen. Eine übermäßig große Anzahl von Neuronen in den verborgenen Schichten kann die Zeit zum Trainieren des Netzwerks verlängern. Die Trainingszeit kann so lange ansteigen, bis es unmöglich ist, das neuronale Netz angemessen zu trainieren. Offensichtlich muss ein Kompromiss zwischen zu vielen und zu wenigen Neuronen in den verborgenen Schichten erzielt werden.

Es gibt viele Faustregelmethoden, um die richtige Anzahl von Neuronen zu bestimmen, die in den verborgenen Schichten verwendet werden sollen, wie zum Beispiel die folgenden:

  • Die Anzahl der versteckten Neuronen sollte zwischen der Größe der Eingabeschicht und der Größe der Ausgabeschicht liegen.
  • Die Anzahl der versteckten Neuronen sollte 2/3 der Größe der Eingabeebene plus der Größe der Ausgabeebene betragen.
  • Die Anzahl der versteckten Neuronen sollte weniger als doppelt so groß sein wie die Eingabeschicht.

Diese drei Regeln bieten einen Ausgangspunkt, den Sie berücksichtigen sollten. Letztendlich kommt es bei der Auswahl einer Architektur für Ihr neuronales Netzwerk auf Versuch und Irrtum an. Aber was genau ist mit Versuch und Irrtum gemeint? Sie möchten nicht mit dem Werfen einer zufälligen Anzahl von Ebenen und Neuronen in Ihrem Netzwerk beginnen. Dies zu tun wäre sehr zeitaufwändig. In Kapitel 8, „Bereinigen eines neuronalen Netzwerks“, werden verschiedene Methoden zum Ermitteln einer optimalen Struktur für ein neuronales Netzwerk beschrieben.


Ich mag auch den folgenden Ausschnitt aus einer Antwort, die ich bei researchgate.net gefunden habe und die viel in wenigen Worten wiedergibt:

Steffen B Petersen · Universität Aalborg

[...]

Um die Fähigkeit des Netzwerks zur Verallgemeinerung sicherzustellen, muss die Anzahl der Knoten so gering wie möglich gehalten werden. Wenn Sie einen großen Überschuss an Knoten haben, wird Ihr Netzwerk zu einer Speicherbank, die den Trainingssatz perfekt wiedergibt, aber bei Proben, die nicht Teil des Trainingssatzes waren, keine gute Leistung erbringt.

jj_
quelle
Kennen Sie zufällig die Quelle des Zitats von Steffen B Petersen?
Sebastian Nielsen
Es tut mir leid, dass ich nicht. Ich habe versucht, danach zu suchen, aber ich konnte es nicht finden ... Ich glaube, der Artikel wurde aus dem Internet entfernt. Vielleicht können Sie ihn direkt kontaktieren?
JJ_
Sollte die Größe des Trainingssatzes nicht berücksichtigt werden? Ich habe einen tabellarischen Datensatz mit ca. 300.000 Einzelmustern (Autopreisen). Die Eingabeebene hat 89 Knoten. Wenn ich ein Netzwerk ohne Regularisierung und mit nur 89 Knoten in einer einzigen verborgenen Schicht trainiere, erhalte ich den Trainingsverlust nach einigen Epochen auf ein Plateau. RMSE-Plateaus bei ~ 1.800 USD (Einzelausgangsknoten ist der Preis für dieses Regressionsproblem).
Rodrigo-Silveira
Ich denke, die Quelle des Zitats von Steffen B Petersen war hier: researchgate.net/post/…
TripleAntigen
43

Momentan arbeite ich an einer empirischen Studie dazu (nähere mich einem Prozessor-Jahrhundert von Simulationen auf unserer HPC-Anlage!). Mein Rat wäre, ein "großes" Netzwerk und Regularisierung zu verwenden. Wenn Sie Regularisierung verwenden, wird die Netzwerkarchitektur weniger wichtig (vorausgesetzt, sie ist groß genug, um die zugrunde liegende Funktion darzustellen, die erfasst werden soll), aber Sie müssen die Regularisierung optimieren Parameter richtig.

Eines der Probleme bei der Auswahl der Architektur besteht darin, dass die Komplexität des Modells nicht kontinuierlich, sondern diskret gesteuert wird, und dass dies daher zu einem stumpfen Instrument werden kann, insbesondere dann, wenn die ideale Komplexität gering ist.

Dies alles unterliegt jedoch den Theoremen des "no free lunch", obwohl die Regularisierung in den meisten Fällen effektiv ist, wird es immer Fälle geben, in denen die Architekturauswahl besser funktioniert, und der einzige Weg, um herauszufinden, ob dies für das jeweilige Problem zutrifft ist es, beide Ansätze zu versuchen und gegenseitig zu validieren.

Wenn ich ein automatisiertes neuronales Netzwerk aufbauen würde, würde ich den auf Radford Neals Hybrid Monte Carlo (HMC) basierenden Bayes'schen Ansatz verwenden und ein großes Netzwerk verwenden und über die Gewichte integrieren, anstatt die Gewichte eines einzelnen Netzwerks zu optimieren. Das ist zwar rechenintensiv und ein bisschen "schwarze Kunst", aber die Ergebnisse, die Prof. Neal erzielt, legen nahe, dass es sich lohnt!

Dikran Beuteltier
quelle
"Ich arbeite gerade an einer empirischen Studie dazu." - Gibt es ein Update?
Martin Thoma
2
Nein, ich würde trotzdem ein großes (ish) Netzwerk und eine Regularisierung empfehlen, aber es gibt keine Silberkugel, einige Probleme erfordern keine Regularisierung, aber einige Datasets erfordern eine Optimierung der verborgenen Layergröße sowie eine Regularisierung. Leider haben die Rezensenten die Zeitung nicht gemocht :-(
Dikran Beuteltier
17

Soweit ich weiß, gibt es keine Möglichkeit, die Anzahl der Schichten und Neuronen in jeder Schicht automatisch auszuwählen. Es gibt jedoch Netzwerke wie EANN (Evolutionary Artificial Neural Networks, die genetische Algorithmen zur Entwicklung der Topologie verwenden), die ihre Topologie automatisch aufbauen können.

Es gibt mehrere Ansätze, ein mehr oder weniger moderner, der gute Ergebnisse zu liefern schien, war NEAT (Neuro Evolution of Augmented Topologies) .

Vicente Cartas
quelle
6

Automatisierte Methoden zum Aufbau neuronaler Netze mithilfe der globalen Hyperparametersuche:

Eingabe- und Ausgabeebenen haben eine feste Größe.

Was kann variieren:

  • die Anzahl der Schichten
  • Anzahl der Neuronen in jeder Schicht
  • die Art der Schicht

Für dieses diskrete Optimierungsproblem können mehrere Methoden verwendet werden , wobei der Netzwerkfehler außerhalb der Stichprobe die Kostenfunktion darstellt.

  • 1) Raster- / Zufallssuche über dem Parameterraum, um von einer etwas besseren Position aus zu starten
  • 2) Viele Methoden , mit denen die optimale Architektur gefunden werden kann. (Ja, es braucht Zeit).
  • 3) Führen Sie eine Regularisierung durch, spülen Sie sie aus und wiederholen Sie sie.
Shuriken x blau
quelle
6

Entschuldigung, ich kann noch keinen Kommentar hinterlassen. Jedenfalls bin ich auf diesen Diskussionsthread gestoßen, der mich an einen Artikel erinnerte, den ich kürzlich gesehen hatte. Ich denke, es könnte für Leute von Interesse sein, die hier teilnehmen:

AdaNet: Adaptives strukturelles Lernen künstlicher neuronaler Netze

Corinna Cortes, Xavier Gonzalvo, Vitaly Kusnezow, Mehryar Mohri, Scott Yang; Tagungsband der 34. Internationalen Konferenz zum maschinellen Lernen, PMLR 70: 874-883, 2017.

Abstract Wir präsentieren ein neues Framework zum Analysieren und Lernen künstlicher neuronaler Netze. Unser Ansatz lernt gleichzeitig und adaptiv sowohl die Struktur des Netzwerks als auch seine Gewichte. Die Methodik basiert auf starken datenabhängigen theoretischen Lerngarantien und wird von diesen begleitet, sodass sich die endgültige Netzwerkarchitektur nachweislich an die Komplexität eines bestimmten Problems anpasst.

chainD
quelle
5

In meiner Masterarbeit, Kapitel 3, habe ich viele Arten des Topologie-Lernens aufgelistet . Die großen Kategorien sind:

  • Wachsende Ansätze
  • Schnittansätze
  • Genetische Ansätze
  • Verstärkung lernen
  • Faltungsneurale Gewebe
Martin Thoma
quelle
3

Ich möchte eine weniger verbreitete, aber sehr effektive Methode vorschlagen .

Grundsätzlich können Sie eine Reihe von Algorithmen nutzen, die als "genetische Algorithmen" bezeichnet werden und eine kleine Teilmenge der möglichen Optionen (zufällige Anzahl von Ebenen und Knoten pro Ebene) ausprobieren. Diese Population von Optionen wird dann als "Eltern" behandelt, die Kinder durch Kombinieren / Mutieren eines oder mehrerer Elternteile erzeugen, ähnlich wie sich Organismen entwickeln. Die besten Kinder und einige zufällige Kinder werden in jeder Generation gehalten und über Generationen hinweg überleben die Stärksten.

Für ~ 100 oder weniger Parameter (wie die Wahl der Anzahl der Schichten, der Arten von Schichten und der Anzahl der Neuronen pro Schicht) ist diese Methode sehr effektiv. Verwenden Sie diese Methode, indem Sie für jede Generation eine Reihe potenzieller Netzwerkarchitekturen erstellen und diese teilweise trainieren, bis die Lernkurve geschätzt werden kann (100-10.000 Minibatches, in der Regel abhängig von vielen Parametern). Nach einigen Generationen möchten Sie möglicherweise den Punkt in Betracht ziehen, an dem der Zug und die Validierung eine signifikant unterschiedliche Fehlerrate (Überanpassung) aufweisen, als Zielfunktion für die Auswahl von Kindern. Es kann eine gute Idee sein, eine sehr kleine Teilmenge Ihrer Daten (10-20%) zu verwenden, bis Sie ein endgültiges Modell auswählen, um schneller zu einer Schlussfolgerung zu gelangen. Verwenden Sie für Ihre Netzwerkinitialisierung auch einen einzelnen Startwert, um die Ergebnisse richtig zu vergleichen.

10-50 Generationen sollten für ein Netzwerk mit angemessener Größe hervorragende Ergebnisse liefern.

Dan Erez
quelle
Ein weiterer sehr interessanter Weg ist die Bayes'sche Optimierung, die auch eine äußerst effektive Black-Box-Optimierungsmethode für eine relativ kleine Anzahl von Parametern darstellt. arxiv.org/pdf/1206.2944.pdf
Dan Erez
2

Anzahl der ausgeblendeten Ebenen und was sie erreichen können:

0 - Kann nur linear trennbare Funktionen oder Entscheidungen darstellen.

1 - Kann jede Funktion approximieren, die eine kontinuierliche Abbildung von einem endlichen Raum auf einen anderen enthält.

2 - Kann mit rationalen Aktivierungsfunktionen eine willkürliche Entscheidungsgrenze für willkürliche Genauigkeit darstellen und jede glatte Abbildung mit jeder Genauigkeit approximieren.

Mehr als 2 - Zusätzliche Ebenen können komplexe Darstellungen (eine Art automatisches Feature-Engineering) für Ebenenebenen erlernen.

sapy
quelle
8
Quelle (n) bitte. - Rezensent
Jim