Warum werden neuronale Netze tiefer, aber nicht breiter?

73

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?

Karnivaurus
quelle
1
+1 aber um fair zu sein, ist es nicht so, dass diese mehr als 1000 geschichteten Netzwerke "State of the Art" im Sinne einer Outperformance gegenüber den anderen sind. Das von Ihnen verknüpfte Arxiv-Papier meldet das verbleibende Netzwerk mit 152 Ebenen als aktuellen Gewinner in ImageNet.
Amöbe sagt Reinstate Monica
3
Haben Sie große Rest Netzwerke lesen arxiv.org/abs/1605.07146 .... vielleicht nicht eine nicht konvexe Funktion mit Gradientenabfallsaktualisierung hat keine theoretische Grundlage reason..optimising ... es gerade Versuch und viele Fehler :-) ist
seanv507
@ seanv507 Sehr interessant, danke für diesen Link. Übrigens, hier ist ein sehr verwandter Thread: stats.stackexchange.com/questions/214360 und es gibt dort einen Link zu diesem reddit-Thread .
Amöbe sagt Reinstate Monica
Die gleiche Frage wurde einen Tag später auf Quora gestellt. Warum werden neuronale Netze tiefer (mehr Schichten), aber nicht breiter (mehr Knoten pro Schicht)?
Franck Dernoncourt
Sehr, sehr verwandt: stats.stackexchange.com/questions/182734 .
Amöbe sagt Reinstate Monica

Antworten:

87

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.

J. O'Brien Antognini
quelle
+1. Irgendwelche Kommentare zu arxiv.org/abs/1605.07146 ?
Amöbe sagt Reinstate Monica
2
Ich habe es nur überflogen, daher kann ich nichts Autoritäres sagen, aber es sieht so aus, als ob die Autoren festgestellt haben, dass zumindest bei verbleibenden Netzwerken ein breites (aber immer noch 16 Schichten tiefes!) Netz ein schmales, extrem tiefes (1000 Schichten) Netz übertrifft ) Netz. Ich weiß nicht viel über Restnetzwerke, aber nach der Einführung scheint es eine Schwierigkeit beim Trainieren zu sein, dass Schichten dazu neigen können, überhaupt nichts zu lernen und dadurch nicht viel zum Ergebnis beizutragen. Es scheint, dass weniger, aber leistungsstärkere Schichten dies vermeiden. Ob dies auf andere Arten von NNs zutrifft, weiß ich nicht.
J. O'Brien Antognini
Klare und prägnante Antwort, gut gemacht. @ J
Ctwardy
21

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.

Borbei
quelle
Der Restricted Boltzmann Machine-Teil von Deep Networks ist ein großer Multiplikator für die Konvergenzzeit. (afaict)
EngrStudent
4
RBMs gehören nicht zum Deep Learning. Viele (heutzutage die meisten?) Erfolgreiche tiefe Netzwerke verwenden keine RBMs.
Borbei
3
Vielen Dank für den Link zu diesem Artikel, den ich vorher noch nicht gesehen habe und der sehr relevant aussieht.
J. O'Brien Antognini
@Borbei - Wie stellen sie die Funktionstrennung ohne RBM sicher?
EngrStudent
1
+1. Irgendwelche Kommentare zu arxiv.org/abs/1605.07146 ?
Amöbe sagt Reinstate Monica
10

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.

fCρAv2/2
Aρv

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.

fiβixi

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.

Aksakal
quelle
5
Sie übernehmen lineare Übertragungsfunktionen. Es gibt jedoch viele andere (allgemeine) Möglichkeiten, und gemäß dem universellen Approximationssatz von ANNs kann sogar eine einzelne versteckte nichtlineare Schicht (wenn sie breit genug ist) eine gute Funktion approximieren. Darstellbarkeit kann also den Erfolg tiefer Netzwerke nicht wirklich erklären.
Borbei
2
Mein Beispiel war linear, aber es gilt für eine größere Anzahl von Fällen. Sie haben eine "nette" Funktion angenommen, aber viele sind nicht so nett. Zum Beispiel, wenn ich ein Auto zum Kaufen auswähle, warum sollte mein Entscheidungsalgorithmus eine nette Funktion sein?
Aksakal
2

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.dwO(dw2)

Warum versuchen Sie möglicherweise, die Anzahl der Parameter zu begrenzen? Eine Reihe von Gründen:

  • Sie versuchen eine Überanpassung zu vermeiden. (Obwohl das Begrenzen der Anzahl von Parametern ein sehr klares Instrument ist, um dies zu erreichen.)
  • Ihre Forschung ist beeindruckender, wenn Sie das Modell eines anderen mit der gleichen Anzahl von Parametern übertreffen können.
  • Das Trainieren Ihres Modells ist viel einfacher, wenn das Modell (plus Momentparameter, wenn Sie Adam verwenden) in den Speicher einer einzelnen GPU passt.
  • In realen Anwendungen ist RAM bei der Bereitstellung von Modellen häufig teuer. Dies gilt insbesondere für das Ausführen von Modellen auf z. B. einem Mobiltelefon, kann jedoch manchmal auch für das Bereitstellen von Modellen aus der Cloud gelten.

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,w2w1×w2(d2)w

(d2)w2+w(input layer width)+w(output layer width)=O(dw2).
1/wO(dw). Wenn Sie dies jedoch tun, ist nicht klar, dass eine Vergrößerung der Breite zwangsläufig die Lernfähigkeit des Modells erhöht.
Charles Staats
quelle