CODECENTRIC.AI BOOTCAMP
BACKUP Neuronale Netze und
Deep Learning
created by @moseroli



Neuronales Netz findet Augen in KATZENBILDERN!
eigenes Modell
Training from Scratch
Webapp setzt Katze eine Brille auf ...
ZIEL:



Aber erstmal etwas Theorie Praxis!
Einen World-Class
Classifier trainieren
- simples Modell mit fast.ai
- wenige Zeilen Code
- Wie gut ist mein Modell? Wie kann man diese Frage beantworten?
- Vergleich mit State of the Art
BYOD
Bring Your Own Data
- Praxis / Übung
- Eigenes Dataset erstellen (aus google image search)
- Wieviel Daten braucht man? (Ausblick: Transfer Learning)
- Überblick über interessante DS
- kaggle / github/awesomedata
- => AHA Erlebnis für User schaffen
Was sind
neuronale Netze?
Neuronale Netze
sind NICHT:

010001101 010010101 110101011
010001101 010010101 110101011
010001101 010010101 110101011
Data
Computer

... denke wie ein Mensch ...
no brain inside
Input
Hidden
...
Output / Vorhersage
Gewichte
- Alles ist abhängig vom Problem (den Daten)
- Beispiel: Bilder
28 x 28 x 3 Pixel = 2.352
- diverse "Standard Modelle"
- n-Schichten mit
n-Neuronen - Vision? NLP?
- Regression? Klassifikation?
- Beispiel "cat vs. dog": 2 Ausgabe Wahrscheinlichkeiten
(einfaches) neuronales Netz
logische Sicht
Neuronen und Aktivierungen
Theorie ist angelehnt an menschliches Gehirn
(aber nur angelehnt).
biologisch inspiriert
Ein bisschen Mathe
0 4 -3 2
@
1 2 1 3 4 2 5 6 3 7 8 4
11 14 7
0*1 + 4*3 + (-3*5) + 2*7 0*2 + 4*4 + (-3*6) + 2*8 0*1 + 4*2 + (-3*3) + 2*4
t1
(4)
(4x3)
(3)
=
t2
muss gleich sein
t1 @ t2
dot product
0 4 -3 2
ReLU(
) =
0 4 0 2
häufig benutzte Activation Function
Das sind die Building Blocks.
ist hilfreich
Wofür Activation Functions?
f(x) = ax+b
g(x) = cx+d
g(f(x))
Um komplexe Probleme lernen zu können, brauchen wir: Non Linearity



Anmerkung
@
1 Dimension
Das geht nicht.
(ist mathematisch nicht korrekt)
Wird aber oft so dargestellt
(aus Platzgründen)
@
1 Dimension
(so ist es gemeint)
(einfaches) neuronales Netz
34 | ... | 23 |
... | ... | ... |
5 | ... | 112 |

28 x 28 Pixel
34 |
... |
23 |
... |
... |
5 |
... |
... |
... |
112 |
Input
(784)
(hier: nicht normalisiert)
@
w1 | w2 | ... |
... | ... | wn |
(random) weights
(784 x 3)
auch Parameter genannt
diese werden "gelernt"
->
physische Sicht
(3)
ReLU
0.5
0
0.2
0.5
-1
0.2
Activation Function
(3)
Activations
(Ergebnisse)
@
(3 x 10)
weights
0
0
0
0
0
1
0
0
0
0
->
Output
(10)

0
1
2
3
4
(sigmoid)
0 -1 0 -1 5 -1 0 -1 0
(sharpening)
Kernel oder Filter
viele "dot products"
wie Sliding Window über Bild und dann Summe
10 35 50 10 35 20 11 15 1
22 15 23 17 35 20 11 15 31
36 99 80 20 87 65 45 87 21
10 35 50 10 35 20 11 15 1
22 15 23 17 35 20 11 15 31
36 99 80 20 87 65 45 87 21
10 35 50 10 35 20 11 15 1
22 15 23 17 35 20 11 15 31
36 99 80 20 87 65 45 87 21
Convolutions
@
sum(
)
15 23 17
99 80 20
35 50 10
@
0 -1 0
-1 5 -1
0 -1 0
-23 83 -23
-80 281 -80
-50 205 -50
=
.sum() -> 263
setosa.io
Was ist
Deep Learning?
- = tiefe NN
- mehr Daten/GPU/Cloud etc
- Warum der Hype?
- DL bis vor kurzem nicht möglich
- Viele Parameter
- van. expl. Gradients
- Regularisierung
- => Vision / NLP wird möglich
- => Eindruck von KI / AI entsteht
Abrenzung DL != Gehirn im Computer
Überblick über Frameworks und Tools
- pytorch, tensorflow, keras, theano, caffe2
- mxnet, cntk, h20, RAPID
- managed services:
- AWS SageMaker
- google ML engine
- Aufgaben der Frameworks
- Computational Graph
- Parallelisierung / Verteilung auf GPU
- Optimizer, Ableitungen, Architekturen ...
- Preview: Tensor
Wie lernt ein
neuronales Netz?
[[1, 2],
[3, 4],
[5, 6]]
Tensor
= multidimensionaler Array
Parameter
oder Weights
sigmoid
[[3, 4],
[5, 2]]
@
[[13, 8],
[29, 20],
[45, 32]]
pred
activation function
(Beispiel)
forward pass
loss = loss_func(pred, labels)
[[1.0, 0.1],
[-0.7, 0.5],
[0.9, -0.9]]
Gradients
loss.backpropagate()
[[b, c],
[d, e]]
[[w, e],
[z, b],
[a, c]]
backpropagation
Computational Graph
# Ableitung mit Chain Rule, (Framework Magic)
loss
(static or dynamic)
Ein (Deep Learning) Tensor:
- enthält Parameter/Weights (das was gelernt wird)
oder (Zwischen-)Ergebnisse (Activations) - enthält evtl. Gradients (nicht immer)
- ist Teil eines Computational Graph
- "kann backpropagation" = Bestimmung der Ableitung
bzw. Gradienten durch "Framework Magic"
In manchen Frameworks ist der Graph
dynamisch. Jede Rechenoperation
ändert den Graph!
!
Was sind nochmal diese Gradients ?!

loss function
global minimum
x
Gradient =
Steigung in Punkt x
x
Learning Rate
zu große Learning Rate
learning rate zu klein: dauert lange, gefangen in lokalem minimum
Schrittweise Optimierung
Gradients zeigen die Richtung: Gradient Descent
for epoch in epochs:
data = load_data()
for batch in batches:
train, valid = split(data)
model = NeuronalesNetz()
prediction = model(train[batch])
loss = loss_function(prediction, label[batch])
loss.backpropagate()
# loss ist ein Tensor. # Das Ende eines Computational-Graph. # backprop berechnet Gradienten mit Chain Rule.
for param in model.parameters:
param = param - (param.gradient * learning_rate)
Training eines neuronalen Netzes
# eine math. Funktion
(es ist einfacher, als man denkt)
forward pass
SGD
for epoch in epochs:
data = load_data()
for batch in batches:
train, valid = split(data)
model = NeuronalesNetz()
prediction = model(valid[batch])
validation_loss = loss_function(prediction, label[batch])
Validierung beim Training
(um Overfitting zu bemerken)
... Training wie vorhin
... keine Updates - nur "messen"
Welches neuronale Netz
ist das richtige?
Feed Forward Netze
- Perzeptron
- Multi Layer Perzeptron
- "fully connected" Layer
- oft Teil von komplexeren Architekturen
- viele Parameter
- jeder Input gleichwertig/unabhängig
Convolutional Neural Network (CNN oder FCN)



- Verkleinerung der Daten von links nach rechts
- örtlicher Zusammenhang von Pixeln
- Automatisches Lernen von Features (Filter/Kernel)

Feature Maps
Convolutions
(und Pooling)
...
Output
Computer Vision:
lernt Formen und Texturen

Recurrent Neural Network (RNN)
Bei Sprache die Reihenfolge wichtig ist!
(... some Jedi Master)
Rückkopplung
- sequentielle Daten
- Sprache (Audio, Text)
- Handlungen
- Time Series Daten
- GRU (Gated Recurrent Unit)
- LSTM (Long Short Term Memory)
Generative Adversarial Networks (GAN)

Generator
Diskriminator




echte Daten
Noise
generierte
Daten
sehen Daten echt aus?
konkurrieren
Neuronale Netze werden "kreativ" bzw. können neue Inhalte generieren.
Autoencoder
Bottleneck
in = out
(keine Labels)
repräsentiert
encode
decode
- Komprimierung
- Anomalie Detection
- uvm.
NN Architekturen
- CNN
- ResNet <- Best Bet
- (others) <- "historical"
- TODO!?
Transfer Learning
- Pretrained Networks (ImageNet)
- Fine Tuning
- Training mit weniger Daten
- Nicht immer bei 0 beginnen -> billiger, zugänglicher
- = eine der wichtigsten Entwicklungen für Fortschritt
Training in Cloud / GPU
- Überblick Cloud / Services
- Welches DS ? (cat hipster?!)
- AWS Instance aufsetzen
- Unterschied / Benchmarks
- Multi GPU Systeme
- ... todo

Eine WebApp -
Model to production
BACKUP of Neuronale Netze und Deep Learning
By Oliver Moser