6. Neuronale Netze - swl. 3 Neuronale Netze ¢§ K£¼nstliche neuronale Netze...

download 6. Neuronale Netze - swl. 3 Neuronale Netze ¢§ K£¼nstliche neuronale Netze (artificialneuralnetworks)

of 24

  • date post

    05-Sep-2019
  • Category

    Documents

  • view

    8
  • download

    0

Embed Size (px)

Transcript of 6. Neuronale Netze - swl. 3 Neuronale Netze ¢§ K£¼nstliche neuronale Netze...

  • 6. Neuronale Netze

  • 2

    Motivation § Wir haben in den vorherigen Kapiteln verschiedene

    Verfahren zur Regression und Klassifikation kennengelernt (z.B. lineare Regression, SVMs)

    § Abstrakt betrachtet sind alle diese Verfahren in der Lage, eine mathematische Funktion (d.h. Abbildung) zu lernen

    § im Fall von Regression

    § im Fall binärer Klassifikation

    Data Science / Kapitel 6: Neuronale Netze

    f : Rm ! R

    f : Rm ! {0, 1}

  • 3

    Neuronale Netze § Künstliche neuronale Netze (artificial neural networks)

    werden seit den 1940ern als Modell zur Darstellung mathematischer Funktionen erforscht

    § Neuronale Netze unterstützen sowohl Regression als auch Mehrklassen-Klassifikation (z.B. zum Erkennen von Hand geschriebener Ziffern)

    § Renaissance neuronaler Netze in den letzten 5 Jahre: Fortschritte bei tiefen Architekturen (deep learning) und deren Training mit GPUs

    Data Science / Kapitel 6: Neuronale Netze

  • 4

    Gehirn als Inspiration § Menschliches Gehirn besteht aus

    ca. 1010 Nervenzellen (Neuronen), die über Dendriten und Neuriten miteinander verbunden sind

    § Dendriten nehmen Erregung von anderen Zellen auf

    § Neuriten geben Erregung an andere Zellen weiter

    Data Science / Kapitel 6: Neuronale Netze

  • 5

    Inhalt § 6.1 Perzeptron

    § 6.2 Feed-Forward Netze

    § 6.3 Back Propagation

    § 6.4 Konvolutionale neuronale Netze

    § 6.4 Rekurrente neuronale Netze

    Data Science / Kapitel 6: Neuronale Netze

  • 6

    6.1 Perzeptron § Wie können wir ein Neuron mathematisch modellieren?

    § es soll Eingaben erhalten und diese kombinieren § seine Ausgabe soll von kombinierten Eingaben abhängen

    § Perzeptron (perceptron) wurde in den 1950ern als mathematisches Modell eines Neurons vorgestellt

    § es erhält Eingaben x0, …, xm und berechnet eine Linearkombination dieser Werte

    § ist der resultierende Wert kleiner gleich 0, so bleibt das Perzeptron inaktiv (d.h. gibt den Wert 0 aus), andernfalls „feuert es“ und gibt den Wert 1 aus

    Data Science / Kapitel 6: Neuronale Netze

  • 7

    Perzeptron

    § Perzeptron berechnet Linearkombination der Eingaben xj

    und wendet eine Aktivierungsfunktion

    auf das Ergebnis an, um die Ausgabe zu bestimmen Data Science / Kapitel 6: Neuronale Netze

    g : R æ [0, 1]

    xm

    x0 = 1

    g, w g Q

    a mÿ

    j=0 wj xj

    R

    b

    z = mX

    j=0

    wj xj

  • 8

    Perzeptron § Eingabe x0 wird als 1 angenommen und das zugehörige

    Gewicht w0 entspricht damit dem konstanten Term (vgl. multiple lineare Regression)

    § Perzeptron (perceptron) verwendet Treppenfunktion (step function) als Aktivierungsfunktion

    Data Science / Kapitel 6: Neuronale Netze

    -4 -2 0 2 4

    0. 0

    0. 2

    0. 4

    0. 6

    0. 8

    1. 0

    g(z) = ;

    0 : z Æ 0 1 : z > 0

  • 9

    Einschichtige neuronale Netze § Ein einschichtiges neuronales Netz, als einfachster Fall,

    besteht aus einem einzelnen Neuron (z.B. Perzeptron), das zu einer Eingabe (Daten) eine Ausgabe bestimmt

    § Welche Funktionen können wir mit solch einem einfachen neuronalen Netzwerk darstellen?

    Data Science / Kapitel 6: Neuronale Netze

    Eingabe Ausgabe

  • 10

    AND und OR als neuronale Netze § Perzeptron beschreibt eine separierende Hyperebene,

    welche Eingaben in zwei Klassen einteilt

    0.0 0.2 0.4 0.6 0.8 1.0

    0. 0

    0. 2

    0. 4

    0. 6

    0. 8

    1. 0

    x1

    x 2

    0.0 0.2 0.4 0.6 0.8 1.0

    0. 0

    0. 2

    0. 4

    0. 6

    0. 8

    1. 0

    x1

    x 2

    AND OR

    Data Science / Kapitel 6: Neuronale Netze

  • 11

    AND als neuronales Netz

    0.0 0.2 0.4 0.6 0.8 1.0

    0. 0

    0. 2

    0. 4

    0. 6

    0. 8

    1. 0

    x1

    x 2

    Eingabe Ausgabe

    -0.3

    0.2

    0.2

    x0

    x1

    x2

    AND

    Data Science / Kapitel 6: Neuronale Netze

    ≠0.3 + 0.2 · x1 + 0.2 · x2 > 0

  • 12

    OR als neuronales Netz

    0.0 0.2 0.4 0.6 0.8 1.0

    0. 0

    0. 2

    0. 4

    0. 6

    0. 8

    1. 0

    x1

    x 2

    OR

    Eingabe Ausgabe

    -0.1

    0.5

    0.5

    x0

    x1

    x2

    Data Science / Kapitel 6: Neuronale Netze

    ≠0.1 + 0.5 · x1 + 0.5 · x2 > 0

  • 13

    NOT als neuronales Netz

    Data Science / Kapitel 6: Neuronale Netze

    Eingabe Ausgabe

    0.2

    -0.3

    x0

    x1

    0.2 ≠ 0.3 · x1 > 0

  • 14

    Lernen der Parameter § Wie können wir die Parameter (d.h. die Gewichte wj)

    eines Perzeptrons aus Trainingsdaten lernen?

    § Idee: Berechne für jeden Datenpunkt Ausgabe o mit aktuellen Gewichten; weicht diese von gewünschter Ausgabe t ab, korrigiere die Gewichte in Richtung der gewünschten Ausgabe

    § Beispiel: Für einen Datenpunkt sei o = 1 und t = 0, daher muss das Gewicht wj bei positiver (negativer) Eingabe xj reduziert (erhöht) werden

    Data Science / Kapitel 6: Neuronale Netze

  • 15

    Lernen der Parameter § Regel zur Anpassung der Gewichte eines Perzeptrons

    mit Lernrate η (ein gängiger Wert ist 0.1)

    § Zum Training mit mehreren Datenpunkten durchläuft man diese und wendet die Regel für jeden an; dies wiederholt man eine bestimmte Anzahl von Epochen oder bis sich die Gewichte nicht mehr ändern

    Data Science / Kapitel 6: Neuronale Netze

    wj Ω wj + ÷(t ≠ o)xj

  • 16

    Lernen der Parameter § Beispiel: Wir lernen die Parameter der Funktion AND

    unter Verwendung der folgenden Datenpunkte

    § Prinzipiell können wir die Gewichte zufällig initialisieren, wählen hier jedoch für jedes den initialen Wert 0.5

    § In jeder Epoche durchlaufen wir die vier Datenpunkte in der angegebenen Reihenfolge

    Data Science / Kapitel 6: Neuronale Netze

    x0 x1 x2 t

    1 0 0 0 1 0 1 0 1 1 0 0 1 1 1 1

  • 17

    Lernen der Parameter § Initiale Gewichte

    § Gewichte nach erster Epoche

    § Gewichte nach zweiter Epoche

    § Gewichte nach dritter Epoche

    § Nach der dritten Epoche stimmt die Ausgabe für alle Datenpunkte, so dass keine weitere Anpassung nötig ist

    Data Science / Kapitel 6: Neuronale Netze

    w0 = 0.5 w1 = 0.5 w2 = 0.5

    w0 = 0.2 w1 = 0.4 w2 = 0.4

    w0 = ≠0.1 w1 = 0.3 w2 = 0.3

    w0 = ≠0.3 w1 = 0.2 w2 = 0.2

  • 18

    Lernen der Parameter in Python

    § Vollständiges Jupyter-Notebook unter: http://swl.htwsaar.de/.../2017-vl-ds-kap6-neuronale-netze.html http://swl.htwsaar.de/.../2017-vl-ds-kap6-neuronale-netze.ipynb

    Data Science / Kapitel 6: Neuronale Netze

    # Lernrate eta = 0.1

    # Parameter (als 0.5 initialisiert) w = [0.5, 0.5, 0.5]

    # Datenpunkte X = [[1, 0, 0], [1, 0, 1], [1, 1, 0], [1, 1, 1]]

    # Gewünschte Ausgabe t = [0, 0, 0, 1]

    # Lerne für 10 Epochen for epoch in range(0, 10):

    for i in range(0, len(X)): # Ausgabe für Datenpunkt berechnen o = (0 if w[0]*X[i][0] + w[1]*X[i][1] + w[2]*X[i][2]

  • 19

    Darstellungskraft einfacher neuronaler Netze § Können wir mit einem einfachen neuronalen Netz,

    bestehend aus einem Perzeptron, alle binären Booleschen Funktionen darstellen?

    § Nein! XOR lässt sich z.B. nicht mit einem einzelnen Perzeptron darstellen

    Data Science / Kapitel 6: Neuronale Netze

    0.0 0.2 0.4 0.6 0.8 1.0

    0. 0

    0. 2

    0. 4

    0. 6

    0. 8

    1. 0

    x1

    x 2

    XOR

    :o(

  • 20

    Neuronale Netze mit verborgenen Schichten § XOR lässt sich mittels eines mehrschichtigen neuronalen

    Netzes darstellen; innere Schichten von Neuronen werden als verborgen (hidden) bezeichnet

    Eingabe Ausgabe

    x0

    x1

    x2

    x3

    x4

    x5

    -0.2

    -0.2

    0.3

    -0.2

    0.3

    -0.2

    -0.1

    0.5

    0.5

    x3 = (x1 · ¬ x2)

    x4 = (¬ x1 · x2)

    x5 = (x3 ‚ x4)

    0.0 0.2 0.4 0.6 0.8 1.0

    0. 0

    0. 2

    0. 4

    0. 6

    0. 8

    1. 0

    x1

    x 2

    XOR Data Science / Kapitel 6: Neuronale Netze

    Innere Schicht

  • 21

    Neuronale Netze mit verborgenen Schichten § Alternativ können wir die Perzeptren zur Darstellung von

    AND, OR und NOT als Bausteine verwenden und daraus ein mehrschichtiges neuronales Netz zur Darstellung von XOR zusammensetzen

    § Auf diese Art und Weise lassen sich beliebige Boolesche Funktionen mittels mehrschichtiger neuronaler Netze darstellen

    Data Science / Kapitel 6: Neuronale Netze

  • 22

    Neuronale Netze mit verborgenen Schichten

    § Gewichte (vgl. Übungsblatt 6)

    Data Science / Kapitel 6: Neuronale Netze

    Eingabe

    x0

    x1

    x2

    x1

    ¬x1

    ¬x2

    x2

    x1 · ¬x2

    ¬x1 · x2

    x0 x0

    (x1 · ¬x2) ‚

    (¬x1 · x2)

    AusgabeInnere Schichten