Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Neural Networks Demystified [DE]

Avatar for Pascal Cremer Pascal Cremer
September 29, 2017

Neural Networks Demystified [DE]

Description (DE):

Machine Learning und neurale Netze sind das neue Javascript! Wer heutzutage seine App oder Website nicht dieser besonderen Art von "Magie" anreichert, hat hoffnungslos den Anschluss verpasst. Doch was wäre, wenn hinter der "Magie" nicht viel mehr stecken würde, als ein einfaches Prinzip, mit dem (fast?) jeder von uns bereits vertraut ist? Für alle, die sich bisher noch nicht an dieses Thema getraut haben, gibt es hier einen Blick "hinter die Kulissen" von ML und neuralen Netzen (mit so wenig Mathematik wie nötig - versprochen!)

https://twitter.com/b00giZm
https://www.linkedin.com/in/pcremer
http://company.trivago.com/jobs

Avatar for Pascal Cremer

Pascal Cremer

September 29, 2017
Tweet

More Decks by Pascal Cremer

Other Decks in Science

Transcript

  1. “Machine Learning und Neural Networks sind das neue JavaScript.” Ich,

    selbst (Beim Versuch einer möglichst reißerischen Beschreibung beim diesjährigen Call For Papers.)
  2. x1 x2 x3 x4 x5 h1 h2 h3 o1 o2

    Input Layer Hidden Layer Output Layer
  3. 1 0 1 1 0 h1 h2 h3 o1 o2

    Input Layer Hidden Layer Output Layer
  4. Artificial Neural Networks (ANN) • Input Layer enthält die Eingabewerte

    (oder: Eingabevektor) • Eingabewerte werden gewichtet • Mit Hilfe einer Aktivierungsfunktion werden Neuronen im nächsten Layer entweder aktiviert oder nicht • Die Qualität der Gewichtungen wird schließlich über den Fehler (ermittelter Wert vs. tatsächlicher Wert) einer Kostfunktion bestimmt
  5. Gewichtungen & Aktivierungen • Die xj sind unsere Eingabewerte (zwischen

    0 und 1) • Die wjk sind die Gewichte der einzelnen xj im k'ten Neuron des Hidden Layers x1 x2 x3 x4 x5 h1 w11 w21 w31 w41 w51
  6. Gewichtungen & Aktivierungen • Eine Aktivierungsfunktion nimmt die Summe der

    gewichteten Eingaben und bestimmt die Ausgabe des Neurons • Solche Funktionen sind entweder nicht-linear, stückweise linear oder Sprungfunktionen Aktivierungs funktion hk
  7. Layer Übergang • Für alle Neuronen des Layers… • Bilde

    Summe der gewichteten Eingabewerten • Wende die Sigmoid Aktivierungsfunktion auf der Summe an 1 0 1 1 0 0.88 w11 = 1 w21 = -3 w31 = 2 w41 = -1 w51 = 1
  8. Kostfunktion • Die Kostfunktion bestimmt den Fehler zwischen ermittelten Werten

    und tatsächlichen Werten • Je kleiner der Fehler, desto besser war die Wahl der Gewichte (und damit insgesamt unser ANN) • Mögliche Wahl: Mean Square Error Funktion
  9. Gradient Descent • Zur Erinnerung: Unser ANN lernt am besten,

    wenn der Fehler der Kostfunktion möglichst klein wird • (Naive) Idee: Finde das globale Minimum der Kostfunktion • Das Problem dabei: Mehrdimensionale Kostfunktion, d.h. auf analytischem Weg ist das Minimum schwer bis unmöglich zu finden • Neuer Ansatz: Gradient Descent
  10. Gradient Descent • Statt das globale Minimum gezielt zu suchen,

    starte "irgendwo" und passe die Gewichte in kleinen Schritten an, um den Fehler zu verkleinern • η ist eine kleine positive Zahl, genannt Learning Rate • ∂C/∂wjk sind die partiellen Ableitungen der Kostfunktion nach wjk
  11. Gradient Descent • Die partiellen (und ein wenig optimierten) Ableitungen

    der Kostfunktion: Fehler ✓ Sigmoid ✓ Sigmoid ✓ N-Wert ✓
  12. Training eines ANNs • Erinnerung: Je besser unsere Gewichte, desto

    besser unser ANN • Algorithmus • Starte mit "zufälligen" Gewichten • Für alle Eingabewerte… • Berechne die Werte der Neuronen im Hidden und Output Layer • Bestimme den Fehler der KF gegenüber des tatsächlichen Wertes • Passe die Gewichte im Hidden Layer per Gradient Descent an • "Verteile" den Fehler auf die Neuronen des Hidden Layers (Backpropagation) • Passe die Gewichte im Input Layer per Gradient Descent an
  13. x1 x2 x3 x4 x5 h1 h2 h3 y1 y2

    e = 0.9 Fehler ermitteln 1.0 2.0 3.0
  14. x1 x2 x3 x4 x5 h1 h2 h3 y1 y2

    1.0 2.0 3.0 e = 0.9 Neue Gewichte für Hidden Layer bestimmen (Gradient Descent)
  15. x1 x2 x3 x4 x5 h1 h2 h3 y1 y2

    0.9 1.8 3.2 e = 0.9 Neue Gewichte für Hidden Layer bestimmen (Gradient Descent)
  16. x1 x2 x3 x4 x5 h1 h2 h3 y1 y2

    0.9 1.8 3.2 e = 0.9 e = 0.15 e = 0.45 e = 0.3 Backpropagation
  17. x1 x2 x3 x4 x5 h1 h2 h3 y1 y2

    e = 0.15 1.0 -2.0 3.0 -1.0 2.5
  18. x1 x2 x3 x4 x5 h1 h2 h3 y1 y2

    1.0 -2.0 3.0 -1.0 2.5 e = 0.15 Neue Gewichte für Input Layer bestimmen (Gradient Descent)
  19. x1 x2 x3 x4 x5 h1 h2 h3 y1 y2

    1.05 -1.95 3.1 -0.9 2.4 e = 0.15 Neue Gewichte für Input Layer bestimmen (Gradient Descent)
  20. Nochmal zurück zur "Magie" • Den größten Teil der Zeit

    verbringt unser ANN damit Neuronenwerte zu berechnen (Summe von gewichteten Eingabewerten) • Am effizientesten lassen sich jene Summen als Matrizen berechnen • D.h. die "Magie" hinter ANNs basiert zu großen Teilen auf einfacher Matrix-Arithmetik ! 㱺
  21. Real Word Example: MNIST Database • Datenbank aus 70000 handschriftlichen

    Ziffern • 28x28 Pixel = Eingabevektor mit 784 Werten • Hidden Layer mit 128 Neuronen: 128x784 = 100352 Gewichtungen © tensorflow.org
  22. Going Deeper • Beispiel: Instagram Foto von 2010 • 600x600

    Pixel • RGB Farbraum • 㱺1080000 Eingabewerte • Weitere Probleme: Transformationen, Translationen und Störungen innerhalb des Bildes
  23. Resources • Make Your Own Neural Network (Rashid)
 bit.ly/myo-nn •

    Neural Networks And Deep Learning (Nielsen)
 neuralnetworksanddeeplearning.com • Deep Learning Book (Goodfellow, Bengio, Courville)
 deeplearningbook.org