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?
quelle
Antworten:
Hier ist ein Artikel , der das Problem erklärt. Ich zitiere einen Teil davon, um das Problem zu verdeutlichen.
Die Gleichrichter-Aktivierungsfunktion führt also zu einem Sparsity-Effekt im Netzwerk. Hier sind einige Vorteile der Sparsamkeit aus dem gleichen Papier;
Es beantwortet auch die Frage, die Sie gestellt haben:
Sie können das Papier für weitere Details lesen .
quelle
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.
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 functions
nicht 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.
quelle
initialization that corresponds to a type of activation function one is using
in einemNOTE
in 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 .Hier ist eine heuristische Erklärung:
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.
quelle
Betrachten wir die Hauptwiederholungsbeziehung, die die Rückausbreitung des Fehlersignals definiert.
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.
quelle