Deep Learning (Folie 1)
basiert auf tiefen Netzen
ANNs mit mehreren Schichten
Konkatenierung linearer Schichten sinnlos (könnte auch in einer einzigen Schicht ausgedrückt werden)
deshalb: Nichtlinearität, z.B.
Sigmoid: hk+1 = 1 / (1+exp(-(b+Whk)))
tanh: hk+1 = tanh(b+Whk-1)
ReLU: hk+1 = max(0, b+Whk)
Deep Learning: Geschichte
Rosenblatt und das Perzeptron (1958): nur eine Schicht
Karl Steinbuch (1961): Steinbuch’sche Lernmatrix (mehrere Schichten)
K. Fukushima (1980): Neocognitron (convolutional layers)
Yann LeCun (1987):
startete “zweite Welle” (hörte nicht auf)
Backpropagation
Turing Award 2019, zsm mit Geoffrey Hinton
CNN
inspiriert von Wissen über Verarbeitung visueller Reize im primären visuellen Cortex
einfache Zellen, Orientation Columns, komplexe Zellen
wesentliche Bestandteile:
Convolutional Layers
Pooling layers
Nonlinearity
Input wird mit einer Menge von erlernten / vordefinierten Filtern gefaltet
jeder Filter generiert aus demselben Input eine andere separate Feature Map
Unterschied zu ANNs:
sparse connections: jeder Output hängt nur von einer kleinen Region im Input ab
shared weights: Gewichte sind für alle Output-Neuronen gleich
ähnlich zu Verbindungen von Neuronen im Gehirn:
lokalisierte rezeptive Felder
bilden retinotope Feature Maps (durch ähnliche Neuronen)
Ergebnisse der Filterung werden nichtlinearer Funktion unterworfen -> finaler Output des Convolution Layer
i.Allg. wird ReLU verwendet (empirisch)
Option: trenne positive und negative Aktivierungen
verdoppelt Gesamtdimension der Feature Maps
yON = max(0,x), yOFF = max(0,-x)
Pooling Layers
auch “Subsampling Layer”
aggregiert lokale Region x (2D Patch) zu einem einzigen Ausgabewert y
normalerweise entweder Avg-Pooling oder Max-Pooling layers
mathematisch: y = (Σxi^α)^1/α
average pooling: α=1
max pooling: großes α
Output Layer
i.Allg. fully-connected MLP
Eingabe: Ausgabe des letzten Pooling layers
Anzahl der Output-Neuronen = Anzahl Klassen
seltene Alternative: SVM
Backpropagation und Deep Finetuning
manchmal: trainiere CNN zunächst unsupervised (erlerne Conv Layers), dann trainiere Output Layer supervised
oft besser: trainiere ConvLayers auch supervised (entweder ausschließlich oder zusätzlich) mittels Backpropagation
mit Backpropagation: Repräsentationen in ConvLayers werden nicht nur für die gegebenen Daten, sondern auch für das spezifische Problem optimiert
Generic features
trainiere CNNs (supervised) auf einem Dataset, dann trainiere nur Output Layer
von Netz gelernte Features (in representation layers) können generisch sein
Trend: verwende pre-trained networks für neue Aufgabe, passe nur letzte(s) Layer an (sukzessive, bis performance bestimmtes Level erreicht)
Problem: funktioniert nicht immer, noch nicht gut verstanden
CNN Committee
Erweiterung klassischer CNNs
trainiere N verschiedene CNNs (verschiedene Parameter Sets, Datensätze, Topologien, …)
jedes CNN liefert Class Scores -> normalerweise einfach Maximum Class genommen
bei N CNNs: addiere Scores, nimm dann maximum
Scores müssen vergleichbar sein -> zunächst auf [0,1] normalisieren
Alternativen zu klassischen CNNs
Residual Networks (ResNet)
verwendet Residual Connections -> sehr große / tiefe Netze möglich
U-Nets
für Segmentierung
Recurrent Networks
GANs
Transformers
Optimizer
Gradient Descent
Stochastic Gradient Descent
Adaptive Gradient Descent
Gradient Descent with Momentum
Adam optimizer (Adaptive Moment Estimation)
Batch Normalization
Warum funktioniert Deep Learning so gut?
Ansatz inspiriert vom menschlichen Gehirn
große Datenmengen, schnelle Hardware
Integration von Representation Learning und Supervised Learning
Deep Networks profitieren (auch) von (vielen) ungelabelten Daten
M-Theory
Sandwich Theory
Efficient Coding
Bag of tricks
Brain-inspired approach
technische Mustererkennungs-Systeme wollen oft menschliche Performance erreichen
Gehirn wurde durch evolutionären Prozess lange optimiert -> funktioniert sehr gut
deswegen ähnliche technische Ansätze auch gut
Big Data, Fast Computing
Performance von ANNs wurde gesteigert durch
Verfügbarkeit großer Datensätze (Internet)
wachsender Rechenleistung (notwendig), v.a. GPUs (schnelle Berechnung von Convolutions)
Ed Chi (Google): “DL has transformed learning problem to data-availability problem”
Achtung: trotzdem müssen immer noch geeignete Parameter gefunden werden (für ERM), Deep Learning bietet keine Garantie dafür
auch “Magic Theory”
Objekte unterliegen bestimmten Transformationen (Rotation, Translation, …)
-> Repräsentationen müssen Eigenschaften extrahieren, die invariant bzgl dieser Transformationen sind
Bilder eines Objekts (mit verschiedenen Transformationen) liegen auf einem Orbit
Objekte können beschrieben werden durch Wahrscheinlichkeiten, dass Bilder auf bestimmten Orbits liegen
Convolution layer + Pooling layer schätzt Momentum der Warhscheinlichkeitsverteilung
generiert translationsinvariante Beschreibung von Objekten
Sandwich theory
mehrere linear Layers sind sinnlos -> können durch eine Berechnung ausgedrückt werden
ein Convolutional Layer kann Korrelationen reduzieren
Nonlinearities können statistische Abhängigkeiten höherer Ordnung in Korrelationen transformieren
=> linear-nonlinear-sandwich structure: reduziere Abhängigkeiten mit wachsender Ordnung durch Elimination von Korrelationen in jeder Schicht
Beispiele:
Normalizations (subtractive + divisive)
Data Augmentation (Transformationen, GANs)
Data pruning
Dropout
pre-trained networks, passe (von hinten) steigende Anzahl von Layers an
Problem: alle Tricks etc. sind nicht unabhängig -> könen Performance auf unvorhersehbare Art beeinflussen
NDOG
Nonlinear Difference of Gaussians
Implementierung von lateral inhibition
DOG: (Input, gefiltert mit kleinem Gauss-Kernel) - (Input, gefiltert mit großem Gauss-Kernel)
NDOG = max(DOG, 0)
wird mehrmals wiederholt, mit jeder Wiederholung erhöht sich die Sparsity der Repräsentation
Auto-Encoders (basic principle)
Ziel: erlerne reduzierte Repräsentation des Inputs
minimiere Fehlerterm E=-log P(x|f(x))
x: Eingabe in AE mit einem hidden Layer
y=f(x): Ausgabe des hidden Layer
falls Dimension M des hidden Layer kleiner ist als Eingabedimension, findet der Autoencoder die M Hauptkomponenten der PCA
Voraussetzung: Eingabedaten Gaussverteilt
bei gleicher Dimension von x und f(x):
erwarte, dass AE nur (nutzlose) Identität lernt
aber: kann trotzdem nützliche Features lernen ,wenn dim f(x) > dim x => over-complete Representation
Denoising Autoencoder
Annahme: Input x wird mit Rauschen überlagert -> x*
Error: E = -log P(x|f(x*))
verrauschte Version x* wird nur in f(x*) verwendet -> Rekonstruktion des verrauschten Input wird mit unverrauschtem Input verglichen
Stacked Autoencoders
Idee: trainiere Autoencoder mit mehreren hidden Layers
Trainingsschritte:
First Layer: unüberwachtes Training des ersten Layer, Verwendung des Input und der Rekonstruktion
Hidden units as input: unüberwachtes Training des nächsten Layers, verwende Output des vorherigen Layers als Input
Iteration: iteriere Schritt 2 bis zur gewünschten Anzahl an Layers
Supervised Layer: verwende Output des letzten Layer als Input, überwachtes Training mit gelabelten Daten
Deep Finetuning: Fine-tuning aller Parameter (in allen Schichten) unter Verwendung der gelabelten Daten
Gradient descent im Raum aller Parameter
Zuletzt geändertvor einem Jahr