Programming lesson
Aktivierungsfunktionen und Backpropagation: Ein umfassendes Tutorial für CAP4613-5619
Lerne die Grundlagen von Aktivierungsfunktionen und Backpropagation für neuronale Netze. Dieses Tutorial basiert auf der Hausaufgabe CAP4613-5619 und erklärt ReLU, Sigmoid, Swish, GELU und mehr mit praktischen Beispielen.
Einführung in Aktivierungsfunktionen und Backpropagation
In diesem Tutorial lernst du die wichtigsten Konzepte hinter neuronalen Netzen: Aktivierungsfunktionen und der Backpropagation-Algorithmus. Diese Grundlagen sind essenziell für das Verständnis moderner KI-Anwendungen, von ChatGPT bis zu selbstfahrenden Autos. Wir beziehen uns auf die Hausaufgabe CAP4613-5619, die dir hilft, diese Konzepte praktisch zu vertiefen.
Was sind Aktivierungsfunktionen?
Aktivierungsfunktionen entscheiden, ob ein Neuron feuert oder nicht. Sie führen Nichtlinearität ein, ohne die neuronale Netze nur lineare Transformationen wären. Die Wahl der Aktivierungsfunktion beeinflusst die Lernfähigkeit und Konvergenzgeschwindigkeit.
Die Hausaufgabe definiert vier Lernregionen basierend auf der Gradientengröße:
- Schnelle Lernregion: Gradientenbetrag > 0,99
- Aktive Lernregion: Gradient zwischen 0,01 und 0,99
- Langsame Lernregion: Gradient zwischen 0 und 0,01
- Inaktive Lernregion: Gradient = 0
1. ReLU (Rectified Linear Unit)
ReLU ist definiert als f(x) = max(0, x). Der Gradient ist 1 für x > 0 und 0 für x < 0. An x=0 ist der Gradient nicht definiert, man kann 0 oder 1 verwenden. ReLU ist in Deep Learning sehr verbreitet, da es das Problem verschwindender Gradienten mildert.
Regionen:
- Schnell: x > 0,99 (Gradient = 1)
- Aktiv: 0,01 ≤ x ≤ 0,99 (Gradient = 1)
- Langsam: 0 < x < 0,01 (Gradient = 1, aber der Bereich ist klein)
- Inaktiv: x < 0 (Gradient = 0)
2. Logistische Sigmoid-Funktion
Die Sigmoid-Funktion ist f(x) = 1/(1+e^{-x}). Ihr Gradient ist f(x)*(1-f(x)). Der maximale Gradient von 0,25 wird bei x=0 erreicht. Für große Beträge von x verschwindet der Gradient.
Regionen:
- Schnell: nicht vorhanden (maximaler Gradient = 0,25)
- Aktiv: -2,2 ≤ x ≤ 2,2 (Gradient zwischen 0,01 und 0,25)
- Langsam: x < -2,2 oder x > 2,2 (Gradient < 0,01)
- Inaktiv: nie (Gradient > 0 für alle x)
3. Piece-wise Linear Unit
Diese Funktion ist linear zwischen -1 und 1, mit einer Steigung von 0,2 außerhalb. Definiert als f(x) = 0,2x + 0,8 für x > 1, f(x) = x für -1 ≤ x ≤ 1, f(x) = 0,2x - 0,8 für x < -1.
Regionen:
- Schnell: -1 ≤ x ≤ 1 (Gradient = 1)
- Aktiv: nicht vorhanden (Gradient = 0,2 außerhalb)
- Langsam: x < -1 oder x > 1 (Gradient = 0,2, was < 0,99 aber > 0,01 ist – eigentlich aktiv, aber laut Definition ist 0,2 < 0,99 und > 0,01, also aktiv)
- Inaktiv: nie
Anmerkung: Nach der Definition der Hausaufgabe ist 0,2 > 0,01, also ist der Bereich aktiv, nicht langsam.
4. Swish
Swish ist definiert als f(x) = x * sigmoid(x). Der Gradient ist f(x) + sigmoid(x)*(1 - f(x)). Swish wurde von Google entwickelt und wird in vielen modernen Architekturen verwendet.
Regionen:
- Schnell: ungefähr -1,5 ≤ x ≤ 1,5 (Gradient nahe 1)
- Aktiv: -4 ≤ x < -1,5 und 1,5 < x ≤ 4
- Langsam: x < -4 oder x > 4 (Gradient < 0,01)
- Inaktiv: nie
5. Exponential Linear Unit (ELU)
ELU (mit a=0,1) ist definiert als f(x) = x für x ≥ 0, f(x) = 0,1*(e^x - 1) für x < 0. Der Gradient ist 1 für x > 0, 0,1*e^x für x < 0, und an x=0 nicht definiert (aber 1 von rechts, 0,1 von links).
Regionen:
- Schnell: x > 0 (Gradient = 1)
- Aktiv: -2,3 ≤ x < 0 (Gradient zwischen 0,01 und 0,1)
- Langsam: x < -2,3 (Gradient < 0,01)
- Inaktiv: nie
6. Gaussian Error Linear Unit (GELU)
GELU ist definiert als f(x) = x * Φ(x), wobei Φ die Standardnormalverteilung ist. Der Gradient ist komplex, aber approximativ. GELU wird in Transformern wie BERT verwendet.
Regionen:
- Schnell: ungefähr -1,5 ≤ x ≤ 1,5
- Aktiv: -3 ≤ x < -1,5 und 1,5 < x ≤ 3
- Langsam: x < -3 oder x > 3
- Inaktiv: nie
Backpropagation am XOR-Problem
Das XOR-Problem ist ein klassisches Beispiel, das die Notwendigkeit nichtlinearer Aktivierungsfunktionen zeigt. Die Hausaufgabe verwendet ein einfaches Netzwerk mit einer versteckten Schicht (ReLU) und einer Ausgabeschicht (Sigmoid).
Das Netzwerk ist definiert als f(x; W, c, w, b) = σ(w^T max(0, Wx + c) + b) mit den gegebenen Initialwerten. Du berechnest den Output und den Cross-Entropy-Verlust für jedes der vier Trainingsbeispiele.
Die Backpropagation berechnet die Gradienten aller Parameter, um das Netzwerk zu trainieren. In der Hausaufgabe implementierst du dies mit einem Deep-Learning-Framework und trainierst das Netzwerk für 100 Epochen mit SGD.
Adversarial Examples und JumpReLU
Ein optimales adversarial example ist der Eingabepunkt, der einem Trainingsbeispiel am nächsten liegt, aber anders klassifiziert wird. Dies zeigt die Verletzlichkeit neuronaler Netze. JumpReLU, eine Variante von ReLU mit einer Schwelle, kann die Robustheit verbessern, indem es kleine Störungen unterdrückt.
In der Hausaufgabe ersetzt du ReLU durch JumpReLU und optimierst den Parameter, um das adversarial example zu verändern.
Fazit
Dieses Tutorial hat die wichtigsten Aktivierungsfunktionen und die Backpropagation erklärt, die für die Hausaufgabe CAP4613-5619 relevant sind. Durch das Verständnis dieser Konzepte bist du besser gerüstet, um eigene neuronale Netze zu entwerfen und zu trainieren. Die Wahl der Aktivierungsfunktion kann die Leistung und Robustheit deines Modells erheblich beeinflussen – ein Thema, das in der KI-Forschung aktuell intensiv untersucht wird.