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

BACKUP of Neuronale Netze und Deep Learning

  • 81
Loading comments...

More from Oliver Moser