In den letzten Jahren sind neuronale Faltungsnetze (oder vielleicht auch tiefe neuronale Netze im Allgemeinen) immer tiefer geworden, wobei die Netze auf dem neuesten Stand der Technik von 7 Schichten ( AlexNet ) auf 1000 Schichten ( Residual Nets) innerhalb von 4 Schichten übergegangen sind Jahre. Der Grund für die Leistungssteigerung in einem tieferen Netzwerk ist, dass eine komplexere, nichtlineare Funktion erlernt werden kann. Dies ermöglicht es den Netzwerken, bei ausreichenden Trainingsdaten leichter zwischen verschiedenen Klassen zu unterscheiden.
Der Trend scheint jedoch nicht mit der Anzahl der Parameter in jeder Schicht gefolgt zu sein. Beispielsweise ist die Anzahl der Merkmalskarten in den Faltungsschichten oder die Anzahl der Knoten in den vollständig verbundenen Schichten in etwa gleich geblieben und hat trotz der großen Zunahme der Anzahl der Schichten immer noch eine relativ geringe Größe. Meiner Intuition nach würde eine Erhöhung der Anzahl der Parameter pro Ebene jeder Ebene eine reichhaltigere Datenquelle bieten, aus der sich ihre nichtlineare Funktion ableiten lässt. Diese Idee scheint jedoch übersehen worden zu sein, indem einfach weitere Ebenen mit jeweils einer kleinen Anzahl von Parametern hinzugefügt wurden.
Während Netzwerke "tiefer" geworden sind, sind sie nicht "breiter" geworden. Warum ist das?
quelle
Antworten:
Als Haftungsausschluss arbeite ich in meiner Forschung an neuronalen Netzen, aber im Allgemeinen verwende ich eher relativ kleine, flache neuronale Netze als die wirklich tiefen Netze, die an der Spitze der Forschung stehen, die Sie in Ihrer Frage zitieren. Ich bin kein Experte für die Macken und Besonderheiten sehr tiefer Netzwerke, und ich werde mich jemandem beugen, der es ist.
Erstens gibt es im Prinzip keinen Grund, warum Sie überhaupt tiefe neuronale Netze benötigen. Ein ausreichend breites neuronales Netzwerk mit nur einer einzigen verborgenen Schicht kann jede (vernünftige) Funktion bei ausreichenden Trainingsdaten approximieren. Es gibt jedoch einige Schwierigkeiten bei der Verwendung eines extrem breiten, flachen Netzwerks. Das Hauptproblem ist, dass diese sehr breiten, flachen Netzwerke sich gut einprägen, aber nicht so gut verallgemeinern lassen . Wenn Sie also das Netzwerk mit jedem möglichen Eingabewert trainieren, kann sich ein Super-Wide-Netzwerk eventuell den gewünschten Ausgabewert merken. Dies ist jedoch nicht sinnvoll, da Sie für eine praktische Anwendung nicht über alle möglichen Eingabewerte verfügen, mit denen Sie trainieren können.
Der Vorteil mehrerer Ebenen besteht darin, dass sie Features auf verschiedenen Abstraktionsebenen lernen können . Wenn Sie zum Beispiel ein tiefes neuronales Faltungsnetzwerk trainieren, um Bilder zu klassifizieren, werden Sie feststellen, dass die erste Ebene sich darauf trainiert, sehr grundlegende Dinge wie Kanten zu erkennen, die nächste Ebene trainiert sich darauf, Sammlungen von Kanten wie Formen zu erkennen, die nächste Die Ebene wird so trainiert, dass sie Ansammlungen von Formen wie Augen oder Nasen erkennt, und die nächste Ebene lernt Features höherer Ordnung wie Gesichter. Die Verallgemeinerung mehrerer Ebenen ist viel besser, da sie alle Zwischenmerkmale zwischen den Rohdaten und der übergeordneten Klassifizierung lernen .
Das erklärt, warum Sie möglicherweise ein tiefes Netzwerk anstelle eines sehr breiten, aber flachen Netzwerks verwenden. Aber warum nicht ein sehr tiefes, sehr weites Netzwerk? Ich denke, die Antwort ist, dass Ihr Netzwerk so klein wie möglich sein soll, um gute Ergebnisse zu erzielen. Wenn Sie das Netzwerk vergrößern, müssen Sie lediglich mehr Parameter einführen, die Ihr Netzwerk lernen muss, und damit die Wahrscheinlichkeit einer Überanpassung erhöhen. Wenn Sie ein sehr weites, sehr tiefes Netzwerk aufbauen, merkt sich jeder Layer, wie die Ausgabe aussehen soll, und es entsteht ein neuronales Netzwerk, das sich nicht auf neue Daten verallgemeinert .
Abgesehen von der Gefahr einer Überanpassung dauert das Training umso länger, je breiter Ihr Netzwerk ist . Tiefe Netzwerke können bereits sehr rechenintensiv sein, sodass ein starker Anreiz besteht, sie breit genug zu machen, damit sie gut funktionieren, aber nicht breiter.
quelle
Ich glaube nicht, dass es eine eindeutige Antwort auf Ihre Fragen gibt. Aber ich denke, die konventionelle Weisheit lautet wie folgt:
Grundsätzlich kann der Algorithmus mit wachsendem Hypothesenraum eines Lernalgorithmus immer reichere Strukturen lernen. Gleichzeitig wird der Algorithmus jedoch anfälliger für Überanpassungen und sein Generalisierungsfehler wird wahrscheinlich zunehmen.
Daher ist es letztendlich ratsam, für einen bestimmten Datensatz mit dem Minimalmodell zu arbeiten, das über genügend Kapazität verfügt, um die tatsächliche Struktur der Daten zu lernen. Dies ist jedoch ein sehr wellenförmiger Ratschlag, da in der Regel die "wahre Struktur der Daten" nicht bekannt ist und häufig sogar die Kapazitäten der Kandidatenmodelle nur vage verstanden werden.
Bei neuronalen Netzen wird die Größe des Hypothesenraums durch die Anzahl der Parameter gesteuert. Und es scheint, dass bei einer festgelegten Anzahl von Parametern (oder einer festgelegten Größenordnung) die Modelle bei einer genaueren Betrachtung reichhaltigere Strukturen erfassen können (z . B. dieses Dokument ).
Dies erklärt möglicherweise teilweise den Erfolg tieferer Modelle mit weniger Parametern: VGGNet (ab 2014) verfügt über 16 Ebenen mit ~ 140 Mio. Parametern, während ResNet (ab 2015) mit 152 Ebenen, aber nur ~ 2 Mio. Parametern überlegen ist
(Nebenbei bemerkt, kleinere Modelle sind möglicherweise rechenmäßig einfacher zu trainieren - aber ich denke nicht, dass dies ein wesentlicher Faktor für sich ist - da die Tiefe das Training tatsächlich erschwert.)
Beachten Sie, dass dieser Trend (mehr Tiefe, weniger Parameter) hauptsächlich bei visionären Aufgaben und Faltungsnetzwerken auftritt. Dies erfordert eine domänenspezifische Erklärung. Also hier ist eine andere Perspektive:
Jedes "Neuron" in einer Faltungsschicht hat ein "Empfangsfeld", das die Größe und Form der Eingänge angibt, die die einzelnen Ausgänge beeinflussen. Intuitiv erfasst jeder Kernel eine Beziehung zwischen Eingaben in der Nähe. Und kleine Kerne (die häufig vorkommen und bevorzugt werden) haben ein kleines Empfangsfeld, sodass sie nur Informationen zu lokalen Beziehungen liefern können.
Wenn Sie jedoch tiefer gehen, wird das Empfangsfeld jedes Neurons in Bezug auf eine frühere Schicht größer. So können tiefe Schichten Merkmale mit globaler semantischer Bedeutung und abstrakten Details (Relationen von Relationen von Objekten) bereitstellen, während nur kleine Kerne verwendet werden (die die Beziehungen, die das Netzwerk lernt, regulieren und die Konvergenz und Verallgemeinerung unterstützen).
Die Nützlichkeit von Deep Convolutional Networks in der Bildverarbeitung lässt sich teilweise durch die räumliche Struktur von Bildern und Videos erklären. Es ist möglich, dass die Zeit zeigt, dass für verschiedene Arten von Problemen oder für nicht-Faltungsarchitekturen die Tiefe nicht gut funktioniert.
quelle
Das Hinzufügen weiterer Funktionen hilft, aber der Nutzen wird schnell gering, nachdem viele Funktionen hinzugefügt wurden. Dies ist ein Grund, warum Tools wie PCA funktionieren: Einige Komponenten erfassen die meisten Unterschiede in den Funktionen. Daher ist es fast nutzlos, nach einem bestimmten Zeitpunkt weitere Funktionen hinzuzufügen.
Andererseits ist es immer eine gute Idee, die richtige Funktion für ein Merkmal zu finden. Wenn Sie jedoch keine gute Theorie haben, ist es natürlich schwierig, eine korrekte Funktion zu finden. Das Hinzufügen von Ebenen ist daher als Form eines Brute-Force-Ansatzes hilfreich.
Stellen Sie sich einen einfachen Fall vor: Luftwiderstand eines Autos. Sagen wir, wir kannten die Gleichung nicht: 2/2 wobei - eine Querschnittsfläche eines Autos, - Luftdichte und - Geschwindigkeit eines Autos. Wir könnten herausfinden, dass Automaße wichtig sind, und sie als Merkmale hinzufügen, die Geschwindigkeit eines Autos wird auch einfließen. Wir fügen also ständig neue Funktionen hinzu und fügen möglicherweise Luftdruck, Temperatur, Länge, Breite eines Autos, Anzahl der Sitze usw. hinzu.
Wir werden mit einem Modell wie enden. Sie sehen, dass sich diese Merkmale nicht zu einer "wahren" Gleichung zusammenfügen werden, es sei denn, wir fügen alle Wechselwirkungen und Polynome hinzu. Wenn die wahre Gleichung jedoch nicht praktischerweise polynomial wäre, wenn sie Exponenten oder andere seltsame transzendentale Funktionen hätte, hätten wir keine Chance, sie zu emulieren, indem wir den Funktionsumfang erweitern oder das Netzwerk erweitern.
Wenn Sie das Netzwerk jedoch weiter vertiefen, gelangen Sie mit nur zwei Ebenen problemlos zur obigen Gleichung. Kompliziertere Funktionen würden mehr Ebenen erfordern. Daher könnte die Vertiefung der Anzahl der Ebenen eine Möglichkeit sein, viele Probleme zu lösen.
quelle
Für ein dicht verbundenes neuronales Netz mit der Tiefe und der Breite beträgt die Anzahl der Parameter (daher der zum Ausführen oder Trainieren des Netzwerks erforderliche RAM) . Wenn Sie also nur eine begrenzte Anzahl von Parametern haben, ist es oft sinnvoll, eine große Zunahme der Tiefe einer kleinen Zunahme der Breite vorzuziehen.d w O(dw2)
Warum versuchen Sie möglicherweise, die Anzahl der Parameter zu begrenzen? Eine Reihe von Gründen:
Woher kommt das ? Für zwei benachbarte Schichten der Breite werden die Verbindungen zwischen ihnen durch . Wenn Sie also Ebenen mit der Breite (plus einer Eingabe- und einer Ausgabeebene) haben, ist die Anzahl der Parameter Anstatt die Breite zu beschränken, wird manchmal eine alternative Strategie verwendet, bei der spärliche Verbindungen verwendet werden. Wenn Sie beispielsweise die Netzwerktopologie initialisieren, können Sie jede Verbindung mit der Wahrscheinlichkeit zulassen, sodass die Gesamtanzahl der Parameter beträgt.O(dw2) w1,w2 w1×w2 (d−2) w
quelle