Tanh-Funktion / Tangens hyperbolicus (KI)

Die Tanh-Funktion (Tangens hyperbolicus) ist eine mathematische Funktion, die als Verhältnis von Sinus hyperbolicus zu Cosinus hyperbolicus definiert ist. Die berechneten Werte von Tanh liegen zwischen −1 und 1.

In der Informatik, besonders in künstlichen neuronalen Netzen, wird sie häufig eingesetzt, da sie unendlich differenzierbar ist, Nichtlinearität einführt und Eingabewerte in einen begrenzten Wertebereich transformiert und das Vanishing-Gradient-Problem (verschwindender Gradient) verringert.

Definition und Eigenschaften der Tanh-Funktion

Tangens hyperbolicus (tanh) ist eine mathematische Funktion, die jede Zahl so „zusammendrückt“, dass das Ergebnis immer zwischen −1 und 1 liegt. Die Tanh-Funktion macht große Zahlen kleiner und kleine Zahlen bleiben fast gleich.

Der normale Tangens (tan) gehört zu einem Kreis. „Hyperbolicus“ kommt von Hyperbel, bei der es sich um eine bestimmte Kurvenform handelt. Der Tangens hyperbolicus gehört demnach zu einer Hyperbel. Daher der Name „Tangens der Hyperbel“.

Tanh-Funktion wird definiert als:

Tanh-Funktion / Tangens hyperbolicus (KI)

Der Graph der Tanh-Funktion ist punktsymmetrisch zum Ursprung und zeigt eine S-Form, die sich asymptotisch den Werten -1 und 1 nähert, wenn x gegen −∞ bzw. +∞ geht.

Was ist das Vanishing-Gradient-Problem?

Das Vanishing-Gradient-Problem bedeutet: Wenn man viele Zahlen kleiner als 1 miteinander multipliziert, wird das Ergebnis sehr schnell extrem klein (geht gegen 0).

import math

def sigmoid(x): return 1/(1+math.exp(-x))
def dsigmoid(x): s=sigmoid(x); return s*(1-s)

g = 1.0
x = 1.0

for layer in range(10):   # "tiefe" Kette
    g *= dsigmoid(x)      # Gradient wird immer kleiner
    print(g)

Beispielhafte Ausgabe:

0.19661193324148185
0.038656252292952914
0.0076002804951879385
0.0014943058413364276
0.0002937983603191941
5.7764263605534215e-05
1.1357143539754654e-05
2.232949947452169e-06
4.3902460600003627e-07
8.631747652624701e-08

Mit jedem weiteren Schritt wird der Wert immer kleiner.

Der Programmcode simuliert den Rückwärtsduchlauf (Backpropagation) durch ein neuronales Netz mit 9 Schichten. Durch die Sigmoid-Funktion schrumpft der Gradient von Schicht zu Schicht exponentiell zusammen. In den ersten Schichten des neuronalen Netzes kommt fast kein Signal mehr an.

Vergleich mit tanh

Die Idee: tanh „stabilisiert“ die Werte.

import math

def dtanh(x): return 1 - math.tanh(x)**2

g = 1.0
x = 1.0

for layer in range(10):
    g *= dtanh(x)
    print(g)

Beispielhafte Ausgabe:

0.41997434161402614
0.17637844761413474
0.07407442241165023
0.031109356782772067
0.013065131632880537
0.00548702005561959
0.0023044076352817943
0.0009677920794378064
0.000406447841381162
0.00017069766458449563

Der Wert wird auch kleiner, aber nicht ganz so schnell.

Die Tanh-Funktion löst das Problem zwar nicht vollständig, aber der Gradient bleibt über mehrer Schichten hinweg stabil.

Lösung gegen explodierende Netze

Ein künstliches neuronales Neuron verstärkt oder dämpft ein Eingangssignal. Mathematisch bedeutet dass, der berechnete Wert wird sehr groß oder sehr klein. Wenn in einem großen neuronalen Netz mehrere Neuronen die Werte um ein Vielfaches vergrößern oder verkleinern, erreicht man einen Wertebereich, der numerisch problematisch ist. In diesem Fall spricht man davon, dass die Werte bzw. das Netz „explodieren“ (Exploding Gradients).

Die Idee ist, Aktivierungsfunktionen wie die Tanh-Funktion zu verwenden, um große Ausreißer nach oben oder unten „einzufangen“, indem der Ausgabewert auf den Bereich zwischen −1 und 1 begrenzt wird.

Der folgende Programmcode zeigt, wie die Tanh-Funktion alle Werte in den Bereich zwischen -1 und 1 „quetscht“:

import math
for x in [-5, -2, -1, 0, 1, 2, 5]:
    print(x, "->", math.tanh(x))

Beispielhafte Ausgabe mit gerundeten Werten:

-5 -> -0.9999
-2 -> -0.9640
-1 -> -0.7616
0 ->  0.0
1 ->  0.7616
2 ->  0.9640
5 ->  0.9999

Egal wie groß oder klein x wird, das Ergebnis bleibt immer zwischen -1 und 1.

Weitere verwandte Themen:

Lernen mit Elektronik-Kompendium.de

Noch Fragen?

Bewertung und individuelles Feedback erhalten

Freitextaufgaben zum Artikel beantworten, korrigieren lassen und zum Profi werden.

Aussprache von englischen Fachbegriffen

Computertechnik-Fibel
Computertechnik-Fibel

Computertechnik neu verstehen - jetzt in der 6. Auflage

Die Computertechnik-Fibel ist in einer vollständig überarbeiteten 6. Auflage als Buch, eBook und Bundle erschienen.
Statt einzelne Teile zu lernen, entwickelst du ein Gesamtverständnis moderner Computersysteme. Von der Hardware, Betriebssysteme, Virtualisierung, KI und Quantencomputer.

Jetzt bestellen

inkl. MwSt. zzgl. Versandkosten

Die Computertechnik-Fibel, das Computer-Buch
Computertechnik-Fibel

Alles was du über Computertechnik wissen musst.

Die Computertechnik-Fibel ist ein Buch über die Grundlagen der Computertechnik, Prozessortechnik, Halbleiterspeicher, Schnittstellen, Datenspeicher, Laufwerke und wichtige Hardware-Komponenten.

Das will ich haben!

Artikel-Sammlungen zum Thema Computertechnik

Alles was du über Computertechnik wissen solltest.

Trends in der IT

Trends in der IT

eBook kaufen

Crashkurs IT

Crashkurs IT

eBook kaufen

Digitalisierung

Digitalisierung

eBook kaufen

Quantentechnik

Quantentechnik

eBook herunterladen