Welche Rolle spielt Konvexität für die Lossfunktion ?
Wichtig
Konvexität ist wichtig für die Lossfunktion in Machine Learning, da sie die Optimierung erleichtert. Eine konvexe Funktion hat ein
globales Minimum, was bedeutet, dass wir die bestmögliche Lösung finden können, wenn wir dieses Minimum erreichen.
schnellere Konvergenz und eine einfachere Analyse. Dennoch sind viele fortschrittliche Modelle in Deep Learning nicht-konvex, was die Optimierung schwieriger macht, obwohl diese Modelle in der Praxis oft sehr effektiv sind.
einfache Analyse
Warum reduziert L 2 -Regularisierung Overfitting?
L2-Regularisierung bestraft große Gewichtswerte stärker als kleinere. Dies führt dazu, dass das Training dazu neigt, kleinere Gewichte zu bevorzugen. Kleinere Gewichte bedeuten, dass das Modell weniger sensibel auf die Eingabedaten reagiert, was zu einer geringeren Varianz im Modell führt
Um null herum ist die aktivierung quasi linear dies mindert die Modelkomlexität
Warum wirkt Dropout regularisierend?
Das Netz kann als Ensemble von vielen kleineren Netzen (mit geteilten Parametern) angesehen werden.
• Vermeidung von „Co-Adaption“: jede Unit ist mehr „auf sich allein gestellt“, da andere potentiell wegfallen können.
• gleichmäßigere Verteilung der Gewichte auf das Netz → ingesamt kleinere L 2 -Norm der Gewichtsmatrizen
Was muss bei Dropout im Bezug auf die Kostenfunktion beachtet werden?
Die Parameter-Updates werden nicht für die Kostenfunktion des gesamten Netzwerks berechnet, sondern für die Kostenfunktion der ausgedünnten Netze.
Wichtige Faustformeln für Dropouts
Die Gradienten werden durch Dropout verrauscht, sodass die Lernrate um den Faktor 10-100 vergrößert werden sollte.
• Kein oder nur geringes Dropout an der Eingabeschicht
• Kein Dropout an der Ausgabeschicht
• Hohe Dropout-Wkt. vor allem bei denjenigen Schichten, wo Overfitting zu erwarten ist (z.B. diejenigen mit vielen Outputs)
Warum ist die richtige Initialisierung wichtig?
Vanishing Gradients: Wenn die Gewichte zu klein initialisiert werden, werden die Gradienten durch die vielen Schichten des Netzwerks immer kleiner, bis sie für das Training unbrauchbar werden.
Exploding Gradients: Wenn die Gewichte zu groß initialisiert werden, können die Gradienten exponentiell anwachsen, wenn sie durch jede Schicht propagiert werden, was zu sehr großen Gewichtsaktualisierungen führt.
Wann sollte die Xavier/Glorot-Initialisierung eingesetzt werden ?
Geeignet für: Sigmoid, Hyperbolic Tangent (tanh)
Warum: Diese Aktivierungsfunktionen haben einen Output-Bereich, der bei kleinen Eingangswerten in einem linearen Bereich liegt. Die Xavier-Initialisierung hält die Gewichte in einem Bereich, der die Varianz des Inputs und Outputs einer Schicht ausbalanciert, indem sie die Varianz der Gewichte auf 1�innin1 setzt, wobei �innin die Anzahl der Eingangsneuronen ist. Dadurch werden die Gradienten in den tiefen und Anfangsschichten des Netzwerks stabilisiert.
Wann He-Initialisierung:
Geeignet für: ReLU und Varianten wie Leaky ReLU, Parametric ReLU (PReLU)
Warum: ReLU-Aktivierungsfunktionen können während des Trainings zu inaktiven Neuronen führen, wenn die Gewichte zu klein sind, was das Problem des "dying ReLU" verursacht. Die He-Initialisierung setzt die Varianz der Gewichte auf 2�innin2, was höher ist als bei der Xavier-Initialisierung, um dem vorzubeugen. Sie berücksichtigt, dass die ReLU-Funktion im Durchschnitt die Hälfte der Eingänge auf null setzt, was die Varianz der Ausgaben verdoppelt.
warum ist die xavier initialisierung schlecht für ReLU?
Xavier ungeeignet für ReLU:
Ignoriert, dass ReLU negative Eingaben auf null setzt.
Führt zu einer halbierten Varianz nach ReLU-Aktivierung.
Kann das "Dying ReLU"-Problem verursachen, bei dem Neuronen dauerhaft inaktiv werden.
Erhöhtes Risiko von verschwindenden Gradienten, da inaktive Neuronen keine Fehler zurückpropagieren.
Was sind die Key-Anforderungen bei der Gewichtsinitialisierung ?
Sollten klein sein, aber nicht zu klein
Auf keinen fall gleich
Sollte eine gute Varianz haben
Welche Vor- und Nachteile haben diese beiden Varianten in Bezug auf die algorithmische Umsetzung am Rechner? Vektorisiert vs nicht verktorisierte
Vorteile und Nachteile nicht vektorisiert:
+ Gut nachvollziehbar
+ Geringer Speicherbedarf
- Verschachtelte Schleifen und keine ideale Ausnutzung der Hardware
Vorteile und Nachteile der vektorisierten:
+ Einfach zu implementieren
+ Effiziente Nutzung der Hardware
- Hoher Speicherbedarf
- Herleitung der Formulierung
Warum kann es in Ordnung sein, die vermeintlich schlechtere Approximationsgüte beim Stochastischen Gradientenverfahren zu akzeptieren?
Effizienz bei großen Datenmengen: Reduziert Rechenaufwand durch Nutzung kleiner Datenstichproben.
Schnelle Konvergenz: Oftmals schnelleres Auffinden nützlicher Parameter, besonders in frühen Trainingsphasen.
Robustheit gegenüber lokalen Minima: Kann lokale Minima vermeiden, die bei komplexen Fehlerlandschaften auftreten.
Förderung der Generalisierung: Verhindert Overfitting durch ständige Variation in den Trainingsdaten.
Skalierbarkeit und Flexibilität: Gut anpassbar an verschiedene Datenmengen und -strukturen.
Was ist das klassische Gradientenverfahren ?
Parameterupdate anhand aller Samples über Summation
Was ist das stochastische gradientenverfahren?
Einzelnes Sample wird zum Parameterupdate benutzt => Geringer Speicheraufwand
Was ist das Stochastische Gradientenverfahren mit Minibatches ?
Aproximation des Gradienten mit einer Teilmenge disjunkter Samples
Was ist Momentum
Berücksichtigung historischer Gewichte beim Gewichtsupdate.
‘Glättet Gradienten‘
-> Ergibt sich also eine glattere Kurve in der Konvergenz
Code für GPU training
ctx = npx.gpu()
net = YourModel()
net.initialize(ctx=mx.gpu())
data = data.as_in_context(mx.gpu())
label = label.as_in_context(mx.gpu())
ReLu
Tanh Aktivierungsfunktion
Sigmoid
Was ist eine Batch Size?
Gibt an wieviele Daten gleichzeitig verarbeitet werden. Eine Batchsize von vier bedeutet, dass bsp vier Bilder inklusive 4 labels gleichzeitig geladen werden
Was ist eine Epoche ?
Daher ist eine korrektere Formulierung: Wenn beispielsweise eine Datenmenge 1000 Beispiele enthält und die Batch-Size 100 ist, dann dauert es 10 Iterationen, um eine vollständige Epoche abzuschließen, d.h., um alle Daten einmal durchzugehen.
Notiere die Affin lineare Transformation
und die Softmax
o = W-Transponiert * x + b
yˆ(y-dach) = softmax(o)
Was ist das Problem bei der Softmax Aktivierungsfunktion?
Wie wird dieses Problem gelöst ?
Für sehr kleine oder sehr große Werte kann die Funktion für den PC nicht mehr darstellbare Werte liefern
Deswegen wird oft np.max(array) abgezogen
Was bedeutet Affin-Linear ?
Abbildung zwischen Vektorräumen. Eine Funktion f: V -> W zwischen zwei Vektorräumen V und W ist affin linear, wenn sie die folgenden Eigenschaften erfüllt:
f(v + u) = f(v) + f(u) für alle v, u in V (Additivität)
f(λv) = λf(v) für alle v in V und alle Skalare λ (Homogenität)
Wovon hängt die Wahl der Aktivierungsfunktion an der Ausgabeschicht ab?
Die Auswahl der Aktivierungsfunktion für die Ausgabeschicht eines neuronalen Netzwerks hängt in der Regel von der Art des Problems ab, das Sie lösen möchten. Hier sind einige allgemeine Regeln:
Binäre Klassifikation
Mehrklassen Klassifaktionem
Regression
Autoencoder
Welche Eigenschaften für Aktivierungsfunktionen wären wünschenswert?
sollten differenzierbar sein (zumindest abgesehen von einzelnenPunkten ),
Ableitungen sollten einfach zu bestimmen sein.
wie wählt man die Anzahl der Schichten und die Anzahl der Knoten pro Schicht?
Nicht zu viele -> Overfitting
Es muss ein Mittelweg gefunden werden
Welche Verlustfunktionen werden bei Regression eingesetzt ?
• Mean squared error
• Mean absolute error
• Huber loss
Welche Verlustfunktionen werden für Klassifikation eingesetzt ?
• Cross Entropy
• Hinge
• Kullback Leibler Divergence
Was ist der Unterschied zwischen Regression und Klassifikation ?
Der Unterschied zwischen Regression und Klassifikation besteht also darin, dass Regression die Vorhersage eines numerischen Werts involviert, während Klassifikation die Zuordnung zu vordefinierten Klassen beinhaltet.
Was zeigt der Gradient an und wobei hilft dieser ?
Der Gradient zeigt die Richtung und den Betrag der Steigung der Verlustfunktion in Bezug auf die Parameter des Modells an.
Mittels Backpropagation im Gradientenabstiegsverfahren wird die Richtung bestimmt, in die die Gewichte angepasst werden sollen.
Wie berechnet man die Anzahl der unbekannten Parameter in einem MLP?
= (Anzahl Knoten Schicht 1) * Anzahl Knoten Schicht 2) + Anzahl Knoten Schicht 2 + …
Recheneffizienz: Das Stochastische Gradientenverfahren verwendet nur ein einzelnes zufällig ausgewähltes Sample
Skalierbarkeit: Das Stochastische Gradientenverfahren eignet sich gut für große Datensätze oder Modelle mit vielen Parametern
Rauschreduzierung: Das Stochastische Gradientenverfahren führt zu verrauschten Trajektorien der Iterierten, da die Updates aufgrund der Verwendung einzelner Samples nicht perfekt sind.
Implementiere die Sigmoid Funktion
import numpy as np
def sigmoid(x):
return 1 / (1 + np.exp(-x))
Implementiere die tank aktivierungs Funktion
def tanh(x):
return np.tanh(x)
oder:
(exp(x) - exp(-x)) / (exp(x) + exp(-x))
Was passiert, wenn alle Gewichte und Bias-Vektoren mit einem konstanten Wert initialisiert werden ?
eine konstante Initialisierung führt zu einer unerwünschten Symmetrie , die durch das Gradientenverfahren nicht durchbrochen wird
Was ist das Vanishing Gradiant problem ?
Bei der Rückwärtspropagation werden Ableitungen von der Ausgabeschicht zur Eingabeschicht aufmulitpliziert.
Gefahr -> partielle Ableitungen nach Gewichten nahe Eingabeschicht wird klein und training kommt zum erliegen.
Besonders bei Tanh und Sigmoid
Was ist das exploding gradient problem ?
Analog zum „vanishing gradient problem“ gibt es den umgekehrten Eekt namens „exploding gradient problem“. • Dieser wird verursacht durch explodierende Werte für die Aktivierungen (vgl. Gleichungen der Backpropagation).
Was ist die Idee der Batch Normalisierung
Durchführung einer Normalisierung für jeden Knoten einer Schicht
Verwendung eines normalisierten Vektors als input der Aktivierungsfunktion
Reduzierzierung der Abhängigkeiten von Gewichten vorhergehender Schichten
Warum und wie wirkt Batch Normalization?
Die Inputs in die Aktivierungen einer Schicht sind bei Verwendung von Batch Normalization weniger sensitiv gegenüber Änderungen an den Gewichten vorhergehender Schichten (Reduzierung des sog. „Covariate Shift“).
Gut gegen vanashing/exploding Gradients
Stabileres Training
Regularisierende Wirkung bei stochastischem Gradientenverfahren
Code für die Sigmoid Aktivierung
Code für die Softmax Aktivierung
Code für Relu
Welche drei Eigenschaften muss das Kostenfunktional erfüllen + kurze erklärung
Differenzierbarkeit: Ein effektives Kostenfunktional sollte differenzierbar sein, da beim Training eines neuronalen Netzes Gradientenabstiegsverfahren verwendet werden, die auf der Berechnung von Ableitungen basieren.
Konvexität: Ein effektives Kostenfunktional sollte idealerweise konvex sein, um ein globales Minimum zu garantieren. Wenn ein Kostenfunktional mehrere lokale Minima hat, könnte das neuronale Netz in einem suboptimalen lokalen Minimum stecken bleiben.
Verlustanzeige: Ein gutes Kostenfunktional sollte den Unterschied zwischen den vorhergesagten und den tatsächlichen Ausgaben des neuronalen Netzes widerspiegeln. Je größer der Unterschied, desto größer sollte der Verlust sein.
Welchem Effekt soll beim Training von neuronalen Netzwerken durch Regularisierung entgegen gewirkt werden? Erläutern Sie diesen und geben Sie zwei weitere Gegenmaßnahmen an.
Regularisierung ist eine Technik im Maschinenlernen, die zur Verhinderung von Overfitting (Überanpassung) verwendet wird.
Die Regularisierung wirkt diesem Problem entgegen, indem sie eine Kostenfunktion hinzufügt wie den Cross-Validator
Welchen Vorteil hat Sigmoid gegen Relu ?
Sigmoid hat Wertebereich zwischen 0,1. -> Wkeiten
Differenzierbar in allen Punkten
Was ist dropout regulierung?
Dropout ist eine Regularisierungstechnik zur Vermeidung von Overfitting in neuronalen Netzwerken.
Sie "schaltet" während des Trainings zufällig ausgewählte Neuronen "aus", wodurch das Modell ermutigt wird, redundante Muster zu lernen und sich nicht zu stark auf einzelne Neuronen zu verlassen.
Dies führt zu einem robusteren Modell, das besser auf neuen Daten performt. Während der Testphase wird Dropout deaktiviert und das gesamte Netzwerk normal verwendet.
Was kann passieren wenn zu stark reguliert wird ?
Wenn zu stark regularisiert wird, kann das Problem des Underfitting auftreten. Das Modell wird dann zu simpel und kann die zugrundeliegende Struktur der Daten nicht gut erfassen, was zu schlechten Vorhersagen sowohl auf Trainings- als auch auf Testdaten führt.
Vorteile ReLu
Weniger das Problem eines vanashing gradient
weniger Rauschen
leichter auszuwerten / differenzieren
Warum verwendet man bei neuronalen Netzen nichtlineare Aktivierungsfunktionen? Welche Aus- wirkung hätte es, wenn man in einem vollverbundenen neuronalen Netz (MLP) ausschließlich linea- re Aktivierungsfunktionen verwendet?
Wenn alle Schichten eines neuronalen Netzes lineare Aktivierungsfunktionen verwenden würden, könnte das Netzwerk nur lineare Beziehungen modellieren, unabhängig davon, wie viele Schichten es hat.
Genauer gesagt, lineare Funktionen sind additiv und skalierbar. Wenn Sie also mehrere lineare Transformationen nacheinander anwenden, erhalten Sie lediglich eine weitere lineare Transformation. Mathematisch gesprochen, die Komposition von zwei linearen Funktionen ist immer noch eine lineare Funktion.
Erläutern Sie, welche Aufgaben die Convolution Layers und die Pooling Layers in einem CNN
haben.
Convolution Layers (Faltungsschichten): Sie extrahieren Merkmale aus dem Eingabebild durch Anwendung verschiedener Filter oder Kernels auf das Bild. Diese Filter erkennen verschiedene Merkmale wie Kanten, Ecken und komplexere Formen.
Pooling Layers (Pooling-Schichten): Sie reduzieren die räumliche Größe der von den Faltungsschichten erzeugten Merkmalskarten, um die Anzahl der zu berechnenden Parameter zu verringern und das Netzwerk effizienter zu machen. Sie tragen auch zur Invarianz gegenüber kleinen Verschiebungen und Drehungen bei. Die gebräuchlichste Art des Pooling ist das Max-Pooling, das die stärksten Merkmale beibehält und die weniger wichtigen verwirft.
Vor und Nachteilstabelle der Aktivierungsfunktionen
Warum sollte man eine konstante Initialisierung der Gewichte vermeiden?
Dies führt zu unerwünschten Symetrien im Netz und kann durch die Backpropagation auch nicht durchbrochen werden
Warum hilft momentum bei lokalen Minima ?
Lokales minimum bedeutet Gradient gleich 0 = > kein Gewichtsupdate. Hat man jedoch aus vorherigen schritten das update wird der gradient nicht null und kann ggf drüberspringen
Was macht param.attach_grad()
Automatisches differenzieren.
Speicher reservieren
Zuletzt geändertvor einem Jahr