sigmoid

Sigmoid Aktivierungsfunktion: Eine Einführung

Stefan
10 Min Read
sigmoid

Die Sigmoid Aktivierungsfunktion ist eine der frühesten Aktivierungsfunktionen im maschinellen Lernen, hat aber auch heute noch viele nützliche Anwendungen. Unser Experte erklärt alles, was Sie wissen müssen.

Die Sigmoid funktion wird als Aktivierungsfunktion für neuronale Netzwerke verwendet  und ist durch die folgende Formel definiert:

Charakteristisch ist ein allmählicher Anstieg von Null, gefolgt von einem relativ schnellen Anstieg, bevor es sich bei etwa Eins einpendelt, wie in der folgenden Grafik dargestellt: 

Wir werden später näher auf die Einzelheiten eingehen.

Warum ist die Sigmoid funktion wichtig?

Die Bedeutung der Sigmoid funktion ist bis zu einem gewissen Grad historisch. Sie ist eine der frühesten Aktivierungsfunktionen, die in neuronalen Netzwerken verwendet wurde. Aber was genau sind Aktivierungsfunktionen? Kurz gesagt können Sie sich jede Schicht in einem neuronalen Netzwerk als eine Matrix vorstellen, die einen Eingabevektor aufnimmt und einen Ausgabevektor erzeugt. Das gesamte Netzwerk wird durch die Verkettung solcher Matrixmultiplikationen gebildet.

Das bloße Zusammensetzen von Matrizen reicht jedoch nicht aus. Wenn wir nur Matrizenmultiplikationen verwenden würden, könnte unser Netzwerk immer nur lineare Funktionen darstellen, wir möchten aber, dass es alle notwendigen funktionalen Beziehungen lernt. Um dies zu ermöglichen, müssen wir nach jeder Matrixmultiplikation eine nichtlineare Funktion anwenden. Genau das macht eine Aktivierungsfunktion.

Neuronale Netzwerke wurden ursprünglich vom Gehirn inspiriert, wo sich Neuronen binär verhalten: Entweder sie feuern oder sie tun es nicht. Davon inspiriert könnten wir versuchen, eine Aktivierungsfunktion anzuwenden, die einen Vektor in bloße Nullen und Einsen umwandelt. Unsere Aktivierungsfunktion muss jedoch glatt sein, um Backpropagation anwenden und lernen zu können. Technisch gesehen müssen wir die Funktion differenzierbar haben. Um eine Funktion zu differenzieren, muss man ihre Steigung an jedem Punkt finden. Damit eine Funktion differenzierbar ist, muss sie an jedem Punkt eine wohldefinierte Steigung haben. Nicht differenzierbare Funktionen haben entweder plötzliche Sprünge oder scharfe Wendungen.

Eine echte binäre Aktivierungsfunktion wie diese wäre nicht einmal kontinuierlich und daher für unsere Zwecke nicht geeignet. Eine kontinuierliche Funktion ist eine Funktion ohne plötzliche Sprünge. Alle differenzierbaren Funktionen müssen kontinuierlich sein. Eine binäre Aktivierungsfunktion müsste beim Anpassen der Eingabe an einem bestimmten Punkt direkt von Null auf Eins springen und ist daher nicht kontinuierlich.

Dieses Prinzip ist die Motivation der Sigmoidfunktion. Es ist eine glatte Version unserer obigen Idee. Es bildet die meisten Eingaben entweder sehr nahe bei Null oder sehr nahe bei Eins ab, ist dabei aber immer noch differenzierbar. 

Die Sigmoidfunktion weist einige Ineffizienzen auf, die wir besprechen werden und die ihre Verwendung in den letzten Jahren reduziert haben. Sie spielt jedoch immer noch eine zentrale Rolle bei der binären Klassifizierung, die wir ebenfalls besprechen werden. Lassen Sie uns zunächst tiefer in die Funktion selbst eintauchen.

Formel der Sigmoid-Aktivierungsfunktion  

Zunächst sollten wir einige terminologische Verwirrungen beseitigen. Technisch gesehen ist ein „Sigmoid“ jede S-förmige Kurve, die in der Nähe ihrer Minimal- und Maximalwerte abflacht. Beispielsweise ist der hyperbolische Tangens (tanh) technisch gesehen eine Sigmoidfunktion:

In der modernen Sprache des maschinellen Lernens bezieht sich „Sigmoid-Aktivierungsfunktion“ jedoch normalerweise speziell auf die logistische Sigmoid-Funktion:

Wenn wir von nun an „Sigmoid“ sagen, meinen wir nur noch die logistische Funktion. Ihre Gleichung lautet:

Wie bereits erwähnt, ist es differenzierbar, nicht linear, hat einen Bereich von null bis eins und drängt die meisten Werte in Richtung Minimum oder Maximum.

Komponenten der Funktion

Die Eingabe für die Sigmoidfunktion ist der Wert x . Der Exponentialterm im Nenner bedeutet, dass e -x mit zunehmendem x schnell schrumpft und sich Null nähert. Somit nähert sich die gesamte Funktion schnell Eins. Umgekehrt wächst e -x bei kleinem x (d. h. großem negativen x ) schnell und nähert sich Unendlich. In diesem Fall konvergiert die gesamte Funktion schnell gegen Null.

Wenn Sie über mathematische Kenntnisse verfügen, wissen Sie vielleicht, dass die Exponentialfunktion e x für kleine x -Werte annähernd linear ist . Deshalb sieht die Sigmoidfunktion um x=0 herum fast wie eine gerade Linie aus , nähert sich aber schnell Null oder Eins, wenn wir uns weiter davon entfernen.

Wer sich mathematisch auskennt, weiß vielleicht auch, dass e x besonders einfach zu differenzieren ist, da die Ableitung von e x e x selbst ist . Diese Einfachheit überträgt sich auf die Sigmoidfunktion. Ihre Ableitung ist ebenfalls sehr einfach zu berechnen:

Dies ist praktisch, da wir zum Trainieren eines neuronalen Netzwerks wissen müssen, wie sich Änderungen der Netzwerkgewichte auf die endgültige Ausgabe auswirken. Die Steigung (oder Änderungsrate) der Aktivierungsfunktion ist für die Berechnung entscheidend und lässt sich für die Sigmoidfunktion leicht bestimmen.

Anwendungen der Funktion 

Die Sigmoidfunktion kann einfach als Aktivierungsfunktion in einem neuronalen Netzwerk verwendet werden, indem sie auf die Ausgaben jeder Netzwerkschicht angewendet wird. Heutzutage wird sie jedoch nicht mehr so ​​häufig verwendet, da sie einige Ineffizienzen aufweist.

Das erste ist das Problem der Sättigung von Gradienten. Wenn wir uns die Grafik ansehen, können wir sehen, dass die Sigmoidkurve in der Mitte eine starke Steigung hat, an den Enden jedoch sehr flach ist. Dies ist ein Problem für das Lernen. Auf hoher Ebene werden viele der Neuronen in unserem Netzwerk beim Gradientenabstieg Werte in den flachen Bereichen der Sigmoidkurve ausgeben. Eine Änderung der Netzwerkgewichte hat dann nur geringe Auswirkungen auf die Gesamtausgabe und das Lernen kommt zum Stillstand.

Um etwas genauer zu werden: Um Backpropagation auszuführen und zu lernen, müssen wir den Gradienten der Verlustfunktion in Bezug auf jeden Parameter in unserem Netzwerk nehmen. Zuerst geben einige Neuronen möglicherweise Werte in der Mitte des Sigmoidbereichs aus, wo die Steigung stark ist. Aber wenn wir Aktualisierungen vornehmen, bewegen wir uns diese Steigung hinauf oder hinunter und landen schnell in einem flachen Bereich. Die Größe unseres Gradienten wird dann immer kleiner, was bedeutet, dass wir immer kleinere Lernschritte machen. Auf diese Weise ist das Lernen nicht sehr effizient.

Das andere Problem mit der Sigmoidfunktion besteht darin, dass sie nicht symmetrisch zum Ursprung ist. Im Gehirn feuern Neuronen entweder oder nicht, sodass wir vielleicht intuitiv annehmen, dass die Neuronenaktivierungen null oder eins sein sollten. Trotzdem haben Forscher herausgefunden, dass neuronale Netzwerke besser lernen, wenn die Aktivierungen um den Nullpunkt zentriert sind. Dies ist einer der Gründe, warum es eine gute Idee ist, Ihre Daten zu standardisieren (d. h. sie so zu verschieben, dass sie einen Mittelwert von Null haben), bevor Sie sie in ein neuronales Netzwerk einspeisen. Dies ist auch einer der Gründe für die  Batch-Normalisierung , ein ähnlicher Prozess, bei dem wir unsere Netzwerkaktivierungen in Zwischenschichten und nicht gleich zu Beginn standardisieren.

Wenn Sie sich den Anfang des vorherigen Abschnitts ansehen, werden Sie feststellen, dass die tanh-Funktion von -1 bis eins reicht und um Null zentriert ist. Aus diesem Grund ist sie der Sigmoidfunktion oft vorzuziehen. Allerdings besteht auch das Problem der Sättigung von Gradienten. Die heutzutage gebräuchlichste Aktivierungsfunktion ist die Rectified Linear Unit (ReLU):

Diese Funktion hat überall rechts von Null eine starke Steigung, obwohl sie offensichtlich nicht symmetrisch um Null ist. Tanh hat also gesättigte Gradienten und ReLU ist nicht symmetrisch. In der Praxis ist Ersteres ein größeres Problem als Letzteres. Die Moral der Geschichte ist jedoch, dass die Sigmoidfunktion in dieser Hinsicht das Schlechteste aus beiden Welten ist random forest.

Trotz alledem hat die Sigmoid-Funktion immer noch ihren Platz im modernen maschinellen Lernen: die binäre Klassifizierung. Bei der binären Klassifizierung kategorisieren wir Eingaben in eine von zwei Klassen. Wenn wir neuronale Netzwerke verwenden, muss die Ausgabe unseres Netzwerks eine Zahl zwischen null und eins sein, die die Wahrscheinlichkeit darstellt, dass die Eingabe zur Klasse eins gehört (wobei die Wahrscheinlichkeit für Klasse zwei unmittelbar ableitbar ist).

Die Ausgabeschicht eines solchen Netzwerks besteht aus einem einzelnen Neuron. Betrachten Sie den Ausgabewert dieses Neurons. Vor dem Anwenden einer Aktivierungsfunktion kann es sich um eine beliebige reelle Zahl handeln, was nicht gut ist. Wenn wir ein ReLU anwenden, ist es positiv (oder null). Wenn wir tanh verwenden, liegt es zwischen -1 und eins. Nichts davon funktioniert. Wir müssen auf dieses letzte Neuron eine Sigmoidfunktion anwenden. Wir benötigen eine Zahl zwischen null und eins, und die Aktivierungsfunktion muss für Trainingszwecke immer noch glatt sein. Die Sigmoidfunktion ist die richtige Wahl.

In diesen Fällen können wir immer noch eine andere Aktivierungsfunktion für die früheren Schichten im Netzwerk verwenden. Nur ganz am Ende brauchen wir die Sigmoidfunktion. Die Verwendung der Sigmoidfunktion auf diese Weise ist im maschinellen Lernen immer noch absoluter Standard und wird sich wahrscheinlich auch in naher Zukunft nicht ändern. Die Sigmoidfunktion lebt also weiter!