Wie löst die geradlinige Aktivierungsfunktion das Problem des verschwindenden Gradienten in neuronalen Netzen?

40

Ich fand eine gleichgerichtete Lineareinheit (ReLU), die an mehreren Stellen als Lösung für das Problem des verschwindenden Gradienten für neuronale Netze gelobt wurde . Das heißt, man verwendet max (0, x) als Aktivierungsfunktion. Wenn die Aktivierung positiv ist, ist dies offensichtlich besser als beispielsweise die Sigma-Aktivierungsfunktion, da ihre Herleitung immer 1 anstelle eines willkürlich kleinen Wertes für großes x ist. Andererseits ist die Ableitung genau 0, wenn x kleiner als 0 ist. Im schlimmsten Fall, wenn eine Einheit niemals aktiviert wird, würden sich auch die Gewichte für diese Einheit niemals mehr ändern, und die Einheit wäre für immer unbrauchbar - wie es scheint viel schlimmer als sogar verschwindend kleine Steigungen. Wie gehen Lernalgorithmen mit diesem Problem um, wenn sie ReLU verwenden?

Hans-Peter Störr
quelle
2
Was Sie als den schlimmsten Fall bezeichnen, wird als sterbende ReLU bezeichnet
Martin Thoma
Ich denke, die Idee ist, dass für eine logistische Funktion, da der Gradient beliebig klein werden kann, Sie einen numerisch verschwindenden Gradienten erhalten können, indem Sie mehrere "vernachlässigbare" Logistikkomponenten zusammensetzen (das Problem würde sich dann für tiefere Architekturen verschlechtern). Für die Rampenfunktion kann, da der Gradient stückweise konstant ist, ein verschwindender zusammengesetzter Gradient nur auftreten, wenn es eine Komponente gibt, die tatsächlich 0 ist.
GeoMatt22
(Ich bin mir nicht sicher, ob dies "für immer" ist. Könnte es nach mehr Training nicht zu einem
Wert

Antworten:

33

Hier ist ein Artikel , der das Problem erklärt. Ich zitiere einen Teil davon, um das Problem zu verdeutlichen.

Die Gleichrichteraktivierungsfunktion ermöglicht einem Netzwerk, auf einfache Weise spärliche Darstellungen zu erhalten. Beispielsweise sind nach einer gleichmäßigen Initialisierung der Gewichte etwa 50% der kontinuierlichen Ausgabewerte für versteckte Einheiten echte Nullen, und dieser Bruchteil kann leicht mit einer spärlichkeitsinduzierenden Regularisierung zunehmen.

Die Gleichrichter-Aktivierungsfunktion führt also zu einem Sparsity-Effekt im Netzwerk. Hier sind einige Vorteile der Sparsamkeit aus dem gleichen Papier;

  • Entflechten von Informationen . Eines der behaupteten Ziele von Deep-Learning-Algorithmen (Bengio, 2009) ist es, die Faktoren zu entwirren, die die Variationen in den Daten erklären. Eine dichte Darstellung ist stark verwickelt, da fast jede Änderung der Eingabe die meisten Einträge im Darstellungsvektor verändert. Wenn eine Darstellung für kleine Eingabeveränderungen sowohl spärlich als auch robust ist, wird der Satz von Nicht-Null-Features fast immer grob durch kleine Änderungen der Eingabe konserviert.

  • Effiziente Darstellung in variabler Größe . Unterschiedliche Eingaben können unterschiedliche Informationsmengen enthalten und würden unter Verwendung einer Datenstruktur mit variabler Größe, die in Computerdarstellungen von Informationen üblich ist, bequemer dargestellt. Durch Variieren der Anzahl der aktiven Neuronen kann ein Modell die effektive Dimensionalität der Darstellung für eine bestimmte Eingabe und die erforderliche Präzision steuern.

  • Lineare Trennbarkeit . Bei spärlichen Darstellungen ist es auch wahrscheinlicher, dass sie linear oder mit weniger nichtlinearen Maschinen einfacher zu trennen sind, einfach weil die Informationen in einem hochdimensionalen Raum dargestellt werden. Außerdem kann dies das ursprüngliche Datenformat widerspiegeln. In textbezogenen Anwendungen beispielsweise sind die ursprünglichen Rohdaten bereits sehr spärlich.

  • Verbreitet aber spärlich . Dichte verteilte Darstellungen sind die reichhaltigsten und potenziell exponentiell effizienter als rein lokale Darstellungen (Bengio, 2009). Die Effizienz sparsamer Darstellungen ist immer noch exponentiell höher, wobei die Potenz des Exponenten die Anzahl der Nicht-Null-Merkmale ist. Sie können einen guten Kompromiss in Bezug auf die oben genannten Kriterien darstellen.

Es beantwortet auch die Frage, die Sie gestellt haben:

softplus(x)=log(1+ex)(Dugas et al., 2001), eine glatte Version der gleichrichtenden Nichtlinearität. Wir verlieren die exakte Sparsamkeit, hoffen aber auf ein einfacheres Training. Experimentelle Ergebnisse neigen jedoch dazu, dieser Hypothese zu widersprechen, was darauf hindeutet, dass harte Nullen tatsächlich zum überwachten Training beitragen können. Wir nehmen an, dass die harten Nichtlinearitäten nicht schaden, solange sich der Gradient entlang einiger Pfade ausbreiten kann, dh, dass einige der verborgenen Einheiten in jeder Schicht nicht Null sind, wobei der Kredit und die Schuld diesen EIN-Einheiten zugewiesen und nicht verteilt werden Wir gehen davon aus, dass die Optimierung einfacher ist.

Sie können das Papier für weitere Details lesen .

yasin.yazici
quelle
18

Aus diesem Grund ist es wahrscheinlich eine bessere Idee, PReLU, ELU oder andere undichte ReLU-ähnliche Aktivierungen zu verwenden, die nicht nur auf 0 absterben, sondern auf etwa 0,1 * x fallen, wenn x negativ wird, um weiterzulernen. Es schien mir lange Zeit, dass ReLUs Geschichte wie Sigmoid sind, obwohl die Leute aus irgendeinem Grund immer noch Zeitungen mit diesen veröffentlichen. Warum? Ich weiß es nicht.

Dmytro Mishkin und andere Jungs haben tatsächlich ein Netzwerk mit vielen verschiedenen Aktivierungstypen getestet. Sie sollten sich ihre Erkenntnisse über die Leistung verschiedener Aktivierungsfunktionen und anderer Dinge ansehen. Einige Funktionen, wie XOR, lassen sich jedoch besser mit einfacher ReLU erlernen. Denken Sie nicht über irgendwelche neuronalen Dinge in dogmatischen Begriffen nach, da in neuronalen Netzen sehr viel gearbeitet wird. Niemand auf der Welt kennt und versteht sie wirklich gut genug, um die göttliche Wahrheit zu sagen. Niemand. Probieren Sie es aus, machen Sie Ihre eigenen Entdeckungen. Bedenken Sie, dass die Verwendung von ReLU selbst eine sehr junge Entwicklung ist und all die verschiedenen Doktoranden auf dem Gebiet seit Jahrzehnten überkomplizierte Aktivierungsfunktionen verwendet haben, über die wir nur noch lachen können. Zu oft kann zu viel Wissen zu schlechten Ergebnissen führen. Es ist wichtig zu verstehen, dass neuronale Netze keine exakte Wissenschaft sind. Nichts in der Mathematik sagt aus, dass neuronale Netze tatsächlich so gut funktionieren wie sie. Es ist heuristisch. Und so ist es sehr formbar.

Zu Ihrer Information: Bei einigen Problemen, z. B. XOR-ähnlichen Problemen, erzielt die Aktivierung von Absolutwerten gute Ergebnisse. Verschiedene Aktivierungsfunktionen eignen sich besser für verschiedene Zwecke. Ich habe Cifar-10 mit abs () ausprobiert und es schien schlechter zu laufen. Allerdings kann ich nicht sagen, dass es sich um eine schlechtere Aktivierungsfunktion für die visuelle Erkennung handelt, da ich beispielsweise nicht sicher bin, ob meine Vorinitialisierung dafür optimal war usw. Die Tatsache, dass es relativ lernte gut hat mich erstaunt.

Außerdem müssen "Ableitungen", die Sie an das Backprop übergeben, im wirklichen Leben nicht unbedingt mit den tatsächlichen mathematischen Ableitungen übereinstimmen.

Ich würde sogar so weit gehen zu sagen, wir sollten verbieten, sie "Derivate" zu nennen und sie etwas anderes nennen, zum Beispiel error activation functionsnicht den Verstand vor den Möglichkeiten zu verschließen, mit ihnen zu basteln. Sie können beispielsweise die ReLU-Aktivierung tatsächlich verwenden, aber als Ableitung für x <0 eine 0,1 oder so etwas anstelle von 0 bereitstellen. In gewisser Weise haben Sie dann eine einfache ReLU, aber mit Neuronen, die nicht in der Lage sind, "aus Anpassungsfähigkeit zu sterben". Ich nenne das NecroRelu, weil es eine ReLU ist, die nicht sterben kann. Und in einigen Fällen (definitiv nicht in den meisten Fällen) funktioniert dies besser als einfaches LeakyReLU, das tatsächlich eine 0,1-Ableitung bei x <0 und besser als übliches ReLU aufweist. Ich denke nicht, dass zu viele andere eine solche Funktion untersucht haben, aber dies oder etwas Ähnliches könnte eine allgemein coole Aktivierungsfunktion sein, die niemand in Betracht gezogen hat, nur weil sie sich zu sehr auf Mathematik konzentriert.

Was allgemein verwendet wird, ist es für die tanH (x) -Aktivierungsfunktion üblich, 1 - x² anstelle von 1 - tanH (x )² als Ableitung zu übergeben, um die Berechnung zu beschleunigen.

Denken Sie auch daran, dass ReLU nicht "offensichtlich besser" ist als zum Beispiel TanH. TanH kann in einigen Fällen wahrscheinlich besser sein. Nur, so scheint es, nicht bei der visuellen Erkennung. ELU hat zum Beispiel eine gewisse Sigmoid-Weichheit und ist derzeit eine der bekanntesten Aktivierungsfunktionen für die visuelle Erkennung. Ich habe es nicht wirklich versucht, aber ich wette, man kann mehrere Gruppen mit unterschiedlichen Aktivierungsfunktionen auf der gleichen Ebenenebene zum Vorteil einstellen. Weil unterschiedliche Logik mit unterschiedlichen Aktivierungsfunktionen besser beschrieben werden kann. Und manchmal brauchen Sie wahrscheinlich mehrere Arten der Auswertung.

Beachten Sie, dass eine Initialisierung wichtig ist, die dem Typ Ihrer Aktivierungsfunktion entspricht. Undichte ReLUs benötigen zum Beispiel ein anderes Init als einfache ReLUs.

EDIT: Tatsächlich scheint Standard-ReLU weniger anfällig für Überausstattung zu sein als undichte mit modernen Architekturen. Zumindest bei der Bilderkennung. Es scheint, dass es besser ist, bei einfachen ReLU-Optionen im Vergleich zu undichten Optionen zu bleiben, wenn Sie ein sehr genaues Netz mit einer großen Menge von Parametern anstreben. Aber testen Sie das alles natürlich selbst. Vielleicht funktionieren einige undichte Stellen besser, wenn mehr Regularisierung erfolgt.

Íhor Mé
quelle
Ich interessiere mich für Ihr NecroReLU, kann aber nicht von dem ablesen, was Sie geschrieben haben, wie es sich von LeakyReLU unterscheidet. Könnten Sie das klarstellen?
Tom Hale
Unterschiedlich darin, dass die Aktivierung ReLU ist, aber die Ableitung ist LReLU
Íhor Mé
@ ÍhorMé, wie Sie initialization that corresponds to a type of activation function one is usingin einem NOTEin Ihrem Post erwähnt haben, könnten Sie bitte Ihre Vorschläge dazu in den gleichen Zeilen machen. Ich bin nicht ganz davon überzeugt, dass die Verwendung von ReLu-Aktivierungen über Sigmoid / TanH eine Lösung für das Problem des Verschwindens / Explodierens von Verläufen ist .
Anu
16

Hier ist eine heuristische Erklärung:

  • Jede Gradientenaktualisierung in Backprop besteht aus einer Reihe multiplizierter Faktoren.
  • Je weiter Sie sich dem Start des Netzwerks nähern, desto mehr dieser Faktoren werden miteinander multipliziert, um die Gradientenaktualisierung zu erhalten.
  • Viele dieser Faktoren sind Ableitungen der Aktivierungsfunktion der Neuronen - der Rest sind Gewichte, Vorurteile usw.
  • Von diesen Faktoren sind intuitiv die Gewichte, Vorspannungen usw. von Bedeutung. Die Aktivierungsfunktionsableitungen sind eher eine Art Abstimmungsparameter, mit dem der Gradientenabstieg in die richtige Richtung mit der richtigen Geschwindigkeit ausgeführt werden soll.
  • Wenn Sie eine Reihe von Begriffen multiplizieren, die kleiner als 1 sind, tendieren sie zu Null, je mehr Begriffe Sie haben. Daher verschwindet der Gradient mit zunehmender Entfernung von der Ausgabeebene, wenn Sie Aktivierungsfunktionen mit einer Steigung <1 haben.
  • Wenn Sie eine Reihe von Begriffen multiplizieren, die größer als 1 sind, tendieren sie zu Unendlich, je mehr Sie haben, wodurch der Gradient explodiert, je weiter Sie von der Ausgabeebene entfernt sind, wenn Sie Aktivierungsfunktionen mit einer Steigung> 1 haben.
  • Wie wäre es, wenn wir diese Terme auf magische Weise durch die Ableitung der Aktivierungsfunktionen auf 1 bringen könnten? Dies bedeutet intuitiv, dass alle Beiträge zu den Gradientenaktualisierungen von der Eingabe des Problems und des Modells stammen - den Gewichten, Eingaben, Verzerrungen - statt eines Artefakts der gewählten Aktivierungsfunktion.
  • RELU hat Gradient 1, wenn der Ausgang> 0 ist, und ansonsten Null.
  • Daher hat das Multiplizieren einer Reihe von RELU-Derivaten in den Backprop-Gleichungen die nette Eigenschaft, entweder 1 oder Null zu sein - das Update ist entweder nichts oder es übernimmt Beiträge ausschließlich von den anderen Gewichten und Vorurteilen.

Sie könnten denken, dass es besser ist, eine lineare Funktion zu haben, als eine Abflachung, wenn x <0. Die Idee hier ist, dass RELU spärliche Netzwerke mit einer relativ kleinen Anzahl nützlicher Links erzeugt, was eine größere biologische Plausibilität hat, so dass der Verlust von ein Haufen Gewichte ist eigentlich hilfreich. Auch die Simulation interessanter Funktionen mit neuronalen Netzen ist nur mit einer gewissen Nichtlinearität in der Aktivierungsfunktion möglich. Eine lineare Aktivierungsfunktion führt zu einer linearen Ausgabe, die überhaupt nicht sehr interessant ist.

Tom Walker
quelle
Hervorragende Erklärung. Könnten Sie den sechsten Punkt näher erläutern? Könnten Sie bitte Ihre Vorschläge dazu auf den gleichen Zeilen machen? Ich bin nicht ganz davon überzeugt, dass die Verwendung von ReLu-Aktivierungen über Sigmoid / TanH eine Lösung für das Problem des verschwindenden / explodierenden Gradienten ist.
Anu
1
Eine vernünftige Gewichtsinitialisierung ist ebenfalls wichtig; aber so ist die Wahl der Aktivierungsfunktion. Wenn alle Ihre Gewichte standardmäßig auf Null gesetzt sind und Sie RELU verwenden, sind alle Ausgaben Ihrer Neuronen Null und bleiben Null ... Weder RELU allein noch Initialisierungstechniken allein lösen den Gradienten des Verschwindens / Explodierens vollständig, aber beide helfen. Sie sind sich nicht sicher, was Sie unter Punkt 6 verstehen, was ist unklar?
Tom Walker
1

Betrachten wir die Hauptwiederholungsbeziehung, die die Rückausbreitung des Fehlersignals definiert.

Wibiif

hii

si=Wi(hi1)+bi

hi=f(si)

δi

δi=Wi+1(δi+1f(si))

ff(si)=(1hi2)hi

f=Relu=max(0,x)ff=numpy.where(hi>0,1,0)

Diese Gleichung zeigt auch das andere Problem, das für die Relu-Aktivierung charakteristisch ist - tote Neuronen: Wenn ein bestimmtes Neuron so initialisiert würde, dass es für keine Eingabe ausgelöst wird (seine Aktivierung ist Null), wäre sein Gradient ebenfalls Null, und daher würde es niemals aktiviert werden.

user1767774
quelle