DL 1: Orga + Chapter 1. Einführung
Orga
- Modulinhalt in Kapitel
- Vorlesungfolien
- Moodle
- Praktische aufgaben
- Gitlab
- Vorlesungfolien
- Grading
- 50% Prakiumaufgaben
- 50% Klausur (60-90min.)
- Vorlesungsinhalte
- Praktikum
- 1-3 Woche je Aufgabe
- Shared task
- Wir bekommen Training Data
- Eval. u. Test Daten 1-2 Tage vor Deadline
- Literatur
- Slide 7
- Erste zwei Links - Course by MIT/NYU
- “I suggest the first, unless you really like math - then choose the second”
Chapter 1. Einführung
- Deep learning < NN < ML < AI
- Einfluss von DL auf ML
- Klassische ML Pipeline:
- Data -> Manual feature extraction -> Klassifikator
- ML Pipeline mit DL:
- Data -> NN to get features, multiple layers that decide on relevant features -> Klassifikator
- The usual picture that visualizes the layers, raw data -> lines -> face-looking things
- Nutzung ungelabelter Daten für Pretraining
- Autoencoders
- Original image + Noise -> Encoder -> Code -> Decoder -> …
- Klassische ML Pipeline:
- Grundlagen existierten seit 1950, aber nur jetzt haben wir viele Datei und Hardware + Community (Github, tf/pytorch, …)
Neuronale Netze
Einfaches Perzeptron
- $$w_0 + x_1w_1+x_2w2$$
- $Engabe*Gewichte -> Summe -> Aktivierungsfunktion -> Ausgabe$
- TODO - pic, slide 18.
- Example, Mittelwert:
(3) ->0.5 ->3*0.5+5*0.5 -> 4 (5) ->0.5
NN Aktivierungsfunktionen
- Lineare vs Nicht-lineare Separierbarkeit
- Sometimes you can’t divide points trhough a line in a clean way
- NN Können NL-f. approximieren
- AF müssen diffferenzierrbar sein
- 3 main activation fns:
- Sigmoid
- Tangens Hyperbolicus
- Rectified Linear Unit (ReLU)
- ReLU schnell berechenbar (Ableitungen ohne Rechnung bekannt)
NN - Hidden layers
- Input, output, the rest is a black ox
Dense layer / Fully Connected Layer
- “Ich empfehle eine Bibliotek dafür zu nutzen”
keras.layers.Dense(2, activation='relu')
dense_layer.get_weights()
- Each thing (TODO) connected with each one from the previous one
- No need to input number of inputs because gets calculated automaticaly from the conection
Deep NN
- Multiple dense layers
model.summary()
:- 3 input param, dense(2) -> 8 trainable params: $3*2$ weights + 2 weights for the activation f-n
BSP: Werde ich dieses Modul bestehen
$x_1$ - stunden, $x_2$ - vorlesungen $x^(1) = (4 / 5)$
- TODO pic S. 28
- W bezeichnet die Gewichte desModells
- /D Loss = Empirischer Vorhersagefehler
- TODO - remember latex and add to blog
- TODO finish formula:
- $$E(W)=1/n\sum(y^(i)(true)-f(x^(i),W), y^i(true))$$
- Losses for each case needed
- Wir mussen nicht die definieren
- Definition auf Ebene der Tensoroperationen:
loss_tf=tf.reduce_mean(tf.square(tf.subtract(y,predicted)))
- In practice - you never have to do this, there are functions etc.
Optimierungsziel, Loss-optimierung
Optimierung
- Finden des Modells mit der kleinste Optimierungsfehler
- Picture of the usual local/global minima
- $W^* = argmin_(W)E(W)$
- Gewichte werden “zufällig” initialisiert
- Usually you don’t really do real randomness, and you have existing “layer weight initializers”
Gradient
-
Gradient
- Berechnung des Gradienten
- $$(dE(W)/dW)$$
- The gradient shows the way to the top
- Parameteranpassung erfolgt in entgegengesetzte Richtung des Gradienten
- Wiederholung bis zur Konvergenz
- Gradient descent is the most known algo for this
- We have no guarantees that it’ll find the global minimum
- Berechnung des Gradienten
-
Zusammenfassung
- Zufallig initializierung of the weights
- Repeat till convergence:
- Berechnung des G
- Go against the G to find the minimum
Backpropagation
- Einfluss von Parametern auf finalen Loss (ß = aktivierungsf-n)
x -(w^0) -> z(ß) -> (w^1) -> y(ß) -> E(W)
- “Wie stark beeinflusst eine Änderung von $w^1$ den finalen Loss $E(W)$?”
- TODO - slide 43
- Kettenregel
- FORMULA
- TL;DR step by step - from the change of the last step we can get the prev. step etc.
- Propagation des Fehlers rückwärts durch das Netz
- Wird für jeden Parameter wiederholt
- Example (slide 45) TODO
x -(w^0) -> z(ß) -> (w^1) -> y(ß) -> E(W) 0.5 -(0.2) -> z(ß) -> (0.4) -> y(ß) -> E(W) y_true = 1.0
- Forward pass:
z=relu(..)
- Total loss
E(W)=0.5(y_true-y)^2 = 1/2(1.0-0.04)^2 = 0.8
- BP
- …
- Forward pass:
- You calculate one after the other, but assume they’re static till the end - and update them all together basically
Lernrate / Learning rate
- /L Lernrate
- S. 1/51
- Usual pic of global/local minimums
- Kleine Lernrate
- T. konvergiert langsam
- Lokale Minima können langsam / gar nicht überwunden werden
- Große Lernrate
- Minima können übersprungen werden
- Schlimm nur wenn der globale Minimum übersprungen wird
- Training divergiert/verläuft instabil
- Minima können übersprungen werden
- “Wie wird die optimale Lernrate gewählt?”
- Train multiple times with diff lr
- Choose the model with the best eval
- Lernrate ist nicht fix
- Angepasst nach
- Große des Gradienten
- Konvergenzgeschwindigkeit des Trainings
- Größe der zu verändernden Modellgewichte
- If they’re big and my lr is big -> big changes -> unstable
- …
- Angepasst nach
- Train multiple times with diff lr
Mini batches
- Betrachten by jeder Parameterupdate not the entire DS, but a Teilmenge B
- -> leicht zu berechnen / Ausreichend gute Abschätzung des Gradienten
- Add a step at the beginning of “wiederholung bis zur Konvergenz”
- MB ermöglichen:
- Gleichmäßigeren Trainingsverlauf
- Höhere Lernraten
- Hohen Grad der Parallelisierung
- -> Schnelleres Training
Optimizer in TF/Keras
- Literaturempfehlung https://ruder.io/optimizing-gradient-descent/
- S 1/57
- A lot of different optimizers
- SGD - stochastic gd
- Adam, Nadam etc.
Learning rate scheduling
- Flexible Anpassung der Lernrate
- S 1/58 Literatur - TODO - tds “learning rate schedlues and adaptive learning rate methods for DL”
- LM finetuning:
- First fast increase, then slow decrease
- If you’re close to the best minimum, you don’t want to make big jumps
- Nowadays a lot of data etc. and even such things have only an effect in the last %
- TF/Keras - done with Callbacks that change the LR
Regularisierung
- Motivation
- underfitted:
- Good fit / robust
- Overfitted
- Viel zu nah an die Date
- Auswendig gelernt
- /D TODO S. 1/61
Dropout
- Zusätzliche / unnötige Parameter können ….
- D/Dropout werwirft zufällige Aktivierungen während des Trainings
- Removes some of the connections (=set weight to 0), different ones every time
- -> Netzwerke sind gezwungen, redundant Data zu speichern
- Usually 10%-50%
Early Stopping
- D/Early stopping - Training wird vor Overfitting abgebrochen
- How?
- Usually at some time Training/Testing start diverging, training error decreases but testing increases
- Gewichte des besten Zustands werden wieder hergestellt, sobald keine Verbesserung mehr zu beobachen ist
- Params:
- Patience - geduld - how long to suffer worsening scores
- min_delta - how much of a difference should increase for it to count
- Ansonsten betrachte ich mir das als null
Batch Normalization
- TODO
- Instanzen und deren Attribute können sehr unterschiedliche Ausprägungen annehmen
- height/age
- Vor Normalisierung:
- Underschiedlich starke Gradienten je Feature
- TODO - height/age graph
- “very narrow mountain”
- Different directions have a dramatically different effect
- -> kleine LR notwendig
- -> Langsames training
- Underschiedlich starke Gradienten je Feature
- Normalisierung:
- If different features have a different distribution, normalize them to be +/- same
- Standartisierung
- Divide each X of a batch by the std. dev - TODO
- $X’=(X-\mu)/\sigma$
- Mountain becomes round
- We can use the same LR
- Divide each X of a batch by the std. dev - TODO
- Nach:
- Ähnlich starke Gradienten je Feature
- Großere Lernrate möglich
- Schnellere Konvergenz
- Passiert für jedes Batch
- Die Batches werden zufällig gestellt
- Each batch has their own params because diff. stdev and average etc.
- Regularisierender Effekt
- Since batches are random, the params for it mean that:
- “random” $\mu$ gets subtracted
- “random” $\sigma$ gets multiplied
- TODO -> ergo can’t learn things auswendig
- Since batches are random, the params for it mean that:
Nel mezzo del deserto posso dire tutto quello che voglio.
comments powered by Disqus