6. Neuronale Netze - swl.htwsaar.de · 15 Lernen der Parameter § Regel zur Anpassung der Gewichte...

52
6. Neuronale Netze

Transcript of 6. Neuronale Netze - swl.htwsaar.de · 15 Lernen der Parameter § Regel zur Anpassung der Gewichte...

Page 1: 6. Neuronale Netze - swl.htwsaar.de · 15 Lernen der Parameter § Regel zur Anpassung der Gewichte eines Perzeptrons mit Lernrateη(ein gängiger Wert ist 0.1) § Zum Training mit

6. Neuronale Netze

Page 2: 6. Neuronale Netze - swl.htwsaar.de · 15 Lernen der Parameter § Regel zur Anpassung der Gewichte eines Perzeptrons mit Lernrateη(ein gängiger Wert ist 0.1) § Zum Training mit

2

Motivation§ Wir haben in den vorherigen Kapiteln verschiedene

Verfahren zur Regression und Klassifikationkennengelernt (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}

Page 3: 6. Neuronale Netze - swl.htwsaar.de · 15 Lernen der Parameter § Regel zur Anpassung der Gewichte eines Perzeptrons mit Lernrateη(ein gängiger Wert ist 0.1) § Zum Training mit

3

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

werden seit den 1940ern als Modell zur Darstellungmathematischer Funktionen erforscht

§ Neuronale Netze unterstützen sowohl Regressionals auch Mehrklassen-Klassifikation (z.B. zumErkennen von Hand geschriebener Ziffern)

§ Renaissance neuronaler Netze in denletzten 5 Jahre: Fortschritte bei tiefenArchitekturen (deep learning) undderen Training mit GPUs

Data Science / Kapitel 6: Neuronale Netze

Page 4: 6. Neuronale Netze - swl.htwsaar.de · 15 Lernen der Parameter § Regel zur Anpassung der Gewichte eines Perzeptrons mit Lernrateη(ein gängiger Wert ist 0.1) § Zum Training mit

4

Gehirn als Inspiration§ Menschliches Gehirn besteht aus

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

§ Dendriten nehmen Erregungvon anderen Zellen auf

§ Neuriten geben Erregungan andere Zellen weiter

Data Science / Kapitel 6: Neuronale Netze

Page 5: 6. Neuronale Netze - swl.htwsaar.de · 15 Lernen der Parameter § Regel zur Anpassung der Gewichte eines Perzeptrons mit Lernrateη(ein gängiger Wert ist 0.1) § Zum Training mit

5

Inhalt§ 6.1 Perzeptron

§ 6.2 Feed-Forward Netze

§ 6.3 Back Propagation

Data Science / Kapitel 6: Neuronale Netze

Page 6: 6. Neuronale Netze - swl.htwsaar.de · 15 Lernen der Parameter § Regel zur Anpassung der Gewichte eines Perzeptrons mit Lernrateη(ein gängiger Wert ist 0.1) § Zum Training mit

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 eineLinearkombination 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

Page 7: 6. Neuronale Netze - swl.htwsaar.de · 15 Lernen der Parameter § Regel zur Anpassung der Gewichte eines Perzeptrons mit Lernrateη(ein gängiger Wert ist 0.1) § Zum Training mit

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

amÿ

j=0wj xj

R

b

z =mX

j=0

wj xj

Page 8: 6. Neuronale Netze - swl.htwsaar.de · 15 Lernen der Parameter § Regel zur Anpassung der Gewichte eines Perzeptrons mit Lernrateη(ein gängiger Wert ist 0.1) § Zum Training mit

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 Æ 01 : z > 0

Page 9: 6. Neuronale Netze - swl.htwsaar.de · 15 Lernen der Parameter § Regel zur Anpassung der Gewichte eines Perzeptrons mit Lernrateη(ein gängiger Wert ist 0.1) § Zum Training mit

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 einfachenneuronalen Netzwerk darstellen?

Data Science / Kapitel 6: Neuronale Netze

Eingabe Ausgabe

Page 10: 6. Neuronale Netze - swl.htwsaar.de · 15 Lernen der Parameter § Regel zur Anpassung der Gewichte eines Perzeptrons mit Lernrateη(ein gängiger Wert ist 0.1) § Zum Training mit

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

Page 11: 6. Neuronale Netze - swl.htwsaar.de · 15 Lernen der Parameter § Regel zur Anpassung der Gewichte eines Perzeptrons mit Lernrateη(ein gängiger Wert ist 0.1) § Zum Training mit

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

Page 12: 6. Neuronale Netze - swl.htwsaar.de · 15 Lernen der Parameter § Regel zur Anpassung der Gewichte eines Perzeptrons mit Lernrateη(ein gängiger Wert ist 0.1) § Zum Training mit

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

Page 13: 6. Neuronale Netze - swl.htwsaar.de · 15 Lernen der Parameter § Regel zur Anpassung der Gewichte eines Perzeptrons mit Lernrateη(ein gängiger Wert ist 0.1) § Zum Training mit

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

Page 14: 6. Neuronale Netze - swl.htwsaar.de · 15 Lernen der Parameter § Regel zur Anpassung der Gewichte eines Perzeptrons mit Lernrateη(ein gängiger Wert ist 0.1) § Zum Training mit

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ünschterAusgabe 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

Page 15: 6. Neuronale Netze - swl.htwsaar.de · 15 Lernen der Parameter § Regel zur Anpassung der Gewichte eines Perzeptrons mit Lernrateη(ein gängiger Wert ist 0.1) § Zum Training mit

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 mandiese und wendet die Regel für jeden an; dies wiederholtman eine bestimmte Anzahl von Epochen oderbis sich die Gewichte nicht mehr ändern

Data Science / Kapitel 6: Neuronale Netze

wj Ω wj + ÷(t ≠ o)xj

Page 16: 6. Neuronale Netze - swl.htwsaar.de · 15 Lernen der Parameter § Regel zur Anpassung der Gewichte eines Perzeptrons mit Lernrateη(ein gängiger Wert ist 0.1) § Zum Training mit

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 01 0 1 01 1 0 01 1 1 1

Page 17: 6. Neuronale Netze - swl.htwsaar.de · 15 Lernen der Parameter § Regel zur Anpassung der Gewichte eines Perzeptrons mit Lernrateη(ein gängiger Wert ist 0.1) § Zum Training mit

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

Page 18: 6. Neuronale Netze - swl.htwsaar.de · 15 Lernen der Parameter § Regel zur Anpassung der Gewichte eines Perzeptrons mit Lernrateη(ein gängiger Wert ist 0.1) § Zum Training mit

18

Lernen der Parameter in Python

§ Vollständiges Jupyter-Notebook unter:[HTML][IPYNB]

Data Science / Kapitel 6: Neuronale Netze

# Lernrateeta = 0.1

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

# DatenpunkteX = [[1, 0, 0], [1, 0, 1], [1, 1, 0], [1, 1, 1]]

# Gewünschte Ausgabet = [0, 0, 0, 1]

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

for i in range(0, len(X)):# Ausgabe für Datenpunkt berechneno = (0 if w[0]*X[i][0] + w[1]*X[i][1] + w[2]*X[i][2] <= 0 else 1)# Parameter aktualisierenfor j in range(0, len(w)):

w[j] = w[j] + eta*(t[i]-o)*X[i][j]print(w)

Page 19: 6. Neuronale Netze - swl.htwsaar.de · 15 Lernen der Parameter § Regel zur Anpassung der Gewichte eines Perzeptrons mit Lernrateη(ein gängiger Wert ist 0.1) § Zum Training mit

19

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

bestehend aus einem Perzeptron, allebinären Booleschen Funktionendarstellen?

§ Nein! XOR lässt sich z.B.nicht mit einem einzelnenPerzeptron 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(

Page 20: 6. Neuronale Netze - swl.htwsaar.de · 15 Lernen der Parameter § Regel zur Anpassung der Gewichte eines Perzeptrons mit Lernrateη(ein gängiger Wert ist 0.1) § Zum Training mit

20

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

Netzes darstellen; innere Schichten von Neuronenwerden 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

XORData Science / Kapitel 6: Neuronale Netze

Innere Schicht

Page 21: 6. Neuronale Netze - swl.htwsaar.de · 15 Lernen der Parameter § Regel zur Anpassung der Gewichte eines Perzeptrons mit Lernrateη(ein gängiger Wert ist 0.1) § Zum Training mit

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 neuronalesNetz zur Darstellung von XORzusammensetzen

§ Auf diese Art und Weise lassen sich beliebige BoolescheFunktionen mittels mehrschichtiger neuronalerNetze darstellen

Data Science / Kapitel 6: Neuronale Netze

Page 22: 6. Neuronale Netze - swl.htwsaar.de · 15 Lernen der Parameter § Regel zur Anpassung der Gewichte eines Perzeptrons mit Lernrateη(ein gängiger Wert ist 0.1) § Zum Training mit

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

Page 23: 6. Neuronale Netze - swl.htwsaar.de · 15 Lernen der Parameter § Regel zur Anpassung der Gewichte eines Perzeptrons mit Lernrateη(ein gängiger Wert ist 0.1) § Zum Training mit

23

Zusammenfassung§ Neuronale Netze sind von der Arbeitsweise des Gehirns

inspiriert und dienen der Darstellung von Funktionen

§ Perzeptron, als eine Art von künstlichem Neuron,kombiniert seine Eingaben linear und wendet dann eine Schrittfunktion als Aktivierungsfunktion an; seine Parameter lassen sich aus Daten lernen

§ Mehrschichtige neuronale Netze von Perzeptren können beliebige Boolesche Funktionen darstellen

Data Science / Kapitel 6: Neuronale Netze

Page 24: 6. Neuronale Netze - swl.htwsaar.de · 15 Lernen der Parameter § Regel zur Anpassung der Gewichte eines Perzeptrons mit Lernrateη(ein gängiger Wert ist 0.1) § Zum Training mit

24

Literatur[1] S. Raschka: Machine Learning in Python,

mitp, 2017 (Kapitel 2 und 12)

[2] T. Mitchell: Machine Learning,

McGraw Hill, 1997 (Kapitel 4)

[3] M. A. Nielsen: Neural Networks and Deep Learning,Determination Press, 2015

http://neuralnetworksanddeeplearning.com

Data Science / Kapitel 6: Neuronale Netze

Page 25: 6. Neuronale Netze - swl.htwsaar.de · 15 Lernen der Parameter § Regel zur Anpassung der Gewichte eines Perzeptrons mit Lernrateη(ein gängiger Wert ist 0.1) § Zum Training mit

25

6.2 Feed-Forward Netze§ Wir haben gesehen, dass wir mit neuronalen Netzen

bestehend aus einer oder mehreren Schichtenvon Perzeptren beispielsweise logischeFunktionen darstellen können

§ Nun betrachten wir sogenannte vorwärtsgerichteteneuronale Netze (feed forward networks), dieverwendet werden können, um Regressions-und Klassifikationsprobleme zu lösen

§ Auch wenn vorwärtsgerichtete Netze keine Perzeptrenverwenden, heißen sie auch Multilayer Percepton (MLP)

Data Science / Kapitel 6: Neuronale Netze

Page 26: 6. Neuronale Netze - swl.htwsaar.de · 15 Lernen der Parameter § Regel zur Anpassung der Gewichte eines Perzeptrons mit Lernrateη(ein gängiger Wert ist 0.1) § Zum Training mit

26

Sigmoid-Neuron

§ 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

amÿ

j=0wj xj

R

b

z =mX

j=0

wj xj

Page 27: 6. Neuronale Netze - swl.htwsaar.de · 15 Lernen der Parameter § Regel zur Anpassung der Gewichte eines Perzeptrons mit Lernrateη(ein gängiger Wert ist 0.1) § Zum Training mit

27

Sigmoid-Neuron§ Bei einem Sigmoid-Neuron kommt die logistische

Funktion, die wir bereits bei logistischer Regression gesehen haben, zum Einsatz

Data Science / Kapitel 6: Neuronale Netze

-4 -2 0 2 40.0

0.2

0.4

0.6

0.8

1.0

g(x) = 11+e≠x = ex

1+ex

Page 28: 6. Neuronale Netze - swl.htwsaar.de · 15 Lernen der Parameter § Regel zur Anpassung der Gewichte eines Perzeptrons mit Lernrateη(ein gängiger Wert ist 0.1) § Zum Training mit

28

Feed-Forward Netze§ Ein vorwärtsgerichtetes neuronales Netz besteht aus

§ einer Eingabeschicht (input layer) mit den Eingabewerten

§ einer oder mehrerer verborgener Schichten (hidden layers)bestehend aus mehreren Sigmoid-Neuronen

§ einer Ausgabeschicht (output layer) bestehend aus einem oder mehreren Sigmoid-Neuronen

§ Jede Einheit der l-ten Schicht ist mit jeder Einheit der(l + 1)-ten Schicht verbunden, daher auchdie Bezeichnung „vorwärtsgerichtet“

Data Science / Kapitel 6: Neuronale Netze

Page 29: 6. Neuronale Netze - swl.htwsaar.de · 15 Lernen der Parameter § Regel zur Anpassung der Gewichte eines Perzeptrons mit Lernrateη(ein gängiger Wert ist 0.1) § Zum Training mit

29

Feed-Forward Netze§ Beispiel: Vorwärtsgerichtetes neuronales Netz mit zwei

verborgenen Schichten bestehend aus zwei Neuronen

Data Science / Kapitel 6: Neuronale Netze

Eingabe AusgabeVerborgene Schichten

a(2)0

a(2)1

a(2)2

a(3)0

a(3)1

a(3)2

a(4)1

x0

x1

x2

a(1)0

a(1)1

a(1)2

w(1)1,0

Page 30: 6. Neuronale Netze - swl.htwsaar.de · 15 Lernen der Parameter § Regel zur Anpassung der Gewichte eines Perzeptrons mit Lernrateη(ein gängiger Wert ist 0.1) § Zum Training mit

30

Feed-Forward Netze§ Die Ausgaben der Neuronen a0

(l) werden für die Eingabeschicht und alle inneren Schichtenals 1 angenommen

§ Das Gewicht der Verbindung zwischen dem k-ten Neuronder l-ten Schicht ak(l) und dem j-ten Neuron der (l + 1)-tenSchicht aj(l + 1) wird als wj,k(l) bezeichnet

Data Science / Kapitel 6: Neuronale Netze

Page 31: 6. Neuronale Netze - swl.htwsaar.de · 15 Lernen der Parameter § Regel zur Anpassung der Gewichte eines Perzeptrons mit Lernrateη(ein gängiger Wert ist 0.1) § Zum Training mit

31

Feed-Forward Netze§ Die verborgenen Schichten eines vorwärtsgerichteten

neuronalen Netzes können sich in der Anzahlihrer Neuronen unterscheiden

§ Die Anzahl verborgener Schichten sowie die jeweiligeAnzahl von Neuronen sind Hyperparameter, diewir mit den bekannten Validierungsverfahren(z.B. Kreuzvalidierung) optimieren können

Data Science / Kapitel 6: Neuronale Netze

Page 32: 6. Neuronale Netze - swl.htwsaar.de · 15 Lernen der Parameter § Regel zur Anpassung der Gewichte eines Perzeptrons mit Lernrateη(ein gängiger Wert ist 0.1) § Zum Training mit

32

Vorwärtspropagierung§ Die Ausgabe eines vorwärtsgerichteten neuronalen Netzes

berechnen mir mittels Vorwärtspropagierung(d.h. von links nach rechts)

§ berechne die Ausgaben der Neuronen der zweiten Schichtbasierend auf den Eingaben

§ berechne die Ausgaben der Neuronen der dritten Schichtbasierend auf den Ausgaben der Neuronender zweiten Schicht

§ …

Data Science / Kapitel 6: Neuronale Netze

Page 33: 6. Neuronale Netze - swl.htwsaar.de · 15 Lernen der Parameter § Regel zur Anpassung der Gewichte eines Perzeptrons mit Lernrateη(ein gängiger Wert ist 0.1) § Zum Training mit

33

Vorwärtspropagierung§ Die Ausgabe des k-ten Neuron der l-ten Schicht ak(l) wird

hierbei berechnet als

mit m als Anzahl von Neuronen in der (l - 1)-ten Schicht

Data Science / Kapitel 6: Neuronale Netze

a(l)k = g(z(l)

k )

z(l)k = a(l≠1)

0 w(l≠1)k,0 + a(l≠1)

1 w(l≠1)k,1 + . . . + a(l≠1)

m w(l≠1)k,m

Page 34: 6. Neuronale Netze - swl.htwsaar.de · 15 Lernen der Parameter § Regel zur Anpassung der Gewichte eines Perzeptrons mit Lernrateη(ein gängiger Wert ist 0.1) § Zum Training mit

34

Vorwärtspropagierung§ Beispiel:

Data Science / Kapitel 6: Neuronale Netze

Eingabe

x0

x1

x2

AusgabeVerborgene Schichten

a(2)0

a(2)1

a(2)2

a(3)0

a(3)1

a(3)2

a(4)1

0.5 0.1

0.5

0.1

0.1

0.5

1.0

1.0

0.1

0.1

1.0

0.5

0.5

0.1

0.5

1

0.2

0.5

a(2)1 = g(1 · 0.1 + 0.2 · 0.5 + 0.5 · 0.1) ¥ 0.56

1

0.56

0.68

0.84

0.77

0.73

Page 35: 6. Neuronale Netze - swl.htwsaar.de · 15 Lernen der Parameter § Regel zur Anpassung der Gewichte eines Perzeptrons mit Lernrateη(ein gängiger Wert ist 0.1) § Zum Training mit

35

Logistische Regression als neuronales Netz

Data Science / Kapitel 6: Neuronale Netze

Eingabe Ausgabe

Page 36: 6. Neuronale Netze - swl.htwsaar.de · 15 Lernen der Parameter § Regel zur Anpassung der Gewichte eines Perzeptrons mit Lernrateη(ein gängiger Wert ist 0.1) § Zum Training mit

36

Mehrfachklassifikation als neuronales Netz

§ Die Ausgaben spiegeln Klassenwahrscheinlichkeiten wider

Data Science / Kapitel 6: Neuronale Netze

Eingabe Ausgabe

Page 37: 6. Neuronale Netze - swl.htwsaar.de · 15 Lernen der Parameter § Regel zur Anpassung der Gewichte eines Perzeptrons mit Lernrateη(ein gängiger Wert ist 0.1) § Zum Training mit

37

6.3 Back-Propagation§ Wie können wir die Gewichte eines vorwärtsgerichteten

neuronalen Netzes anhand von Trainingsdaten lernen?

§ Trainingsdaten bestehen aus Eingaben x(i) und den zugehörigen erwarteten Ausgaben y(i)

§ bei logistischer Regression ist die Ausgabeein Wert in {0,1}

§ bei Mehrfachklassifikation ist die Ausgabeein binärer Vektor (one-hot encoding)

Data Science / Kapitel 6: Neuronale Netze

Page 38: 6. Neuronale Netze - swl.htwsaar.de · 15 Lernen der Parameter § Regel zur Anpassung der Gewichte eines Perzeptrons mit Lernrateη(ein gängiger Wert ist 0.1) § Zum Training mit

38

Back-Propagation§ Wie beim Perzeptron betrachten wir in jeder Epoche

jede der Eingaben, in zufälliger Reihenfolge, und berechnen mittels Vorwärtspropagierungdie Ausgabe des neuronalen Netzesmit den aktuellen Gewichten

§ Stimmt die Ausgabe des neuronalen Netzes nicht mit der gewünschten Ausgabe überein, müssen wir seineGewichte derart anpassen, dass seine Ausgabenäher an die gewünschte Ausgabe rückt

Data Science / Kapitel 6: Neuronale Netze

Page 39: 6. Neuronale Netze - swl.htwsaar.de · 15 Lernen der Parameter § Regel zur Anpassung der Gewichte eines Perzeptrons mit Lernrateη(ein gängiger Wert ist 0.1) § Zum Training mit

39

Back-Propagation§ Das Anpassen der Gewichte erfolgt mittels einer

Rückwärtspropagierung (d.h. von rechts nach links)des beobachteten Fehlers durch die Schichtender neuronalen Netzes

§ Ist die l-te Schicht unsere Ausgabeschicht, so erhaltenwir den beobachteten Fehler für eine Eingabe als

Data Science / Kapitel 6: Neuronale Netze

”(l) = a(l) ≠ y

Page 40: 6. Neuronale Netze - swl.htwsaar.de · 15 Lernen der Parameter § Regel zur Anpassung der Gewichte eines Perzeptrons mit Lernrateη(ein gängiger Wert ist 0.1) § Zum Training mit

40

Back-Propagation§ Wir propagieren den Fehler wie folgt rückwärts zur(l - 1)-ten Schicht, indem wir für jedes Neuronseinen Fehler berechnen als

Data Science / Kapitel 6: Neuronale Netze

”(l≠1)j =

ÿ

k

w(l≠1)k,j ”(l)

k a(l≠1)j (1 ≠ a(l≠1)

j )

Page 41: 6. Neuronale Netze - swl.htwsaar.de · 15 Lernen der Parameter § Regel zur Anpassung der Gewichte eines Perzeptrons mit Lernrateη(ein gängiger Wert ist 0.1) § Zum Training mit

41

Back-Propagation§ Das Gewicht der Verbindung zwischen dem i-ten Neuron

der (l +1)-ten Schicht ai(l+1) und dem j-ten Neuron der l-tenSchicht aj(l) wird dann wie folgt aktualisiert

mit Lernrate η

Data Science / Kapitel 6: Neuronale Netze

w(l)i,j = w(l)

i,j ≠ ÷ a(l)j ”(l+1)

i

Page 42: 6. Neuronale Netze - swl.htwsaar.de · 15 Lernen der Parameter § Regel zur Anpassung der Gewichte eines Perzeptrons mit Lernrateη(ein gängiger Wert ist 0.1) § Zum Training mit

42

Back-Propagation

Data Science / Kapitel 6: Neuronale Netze

Eingabe

x0

x1

x2

AusgabeVerborgene Schichten

a(2)0

a(2)1

a(2)2

a(3)0

a(3)1

a(3)2

a(4)1

0.5 0.1

0.5

0.1

0.1

0.5

1.0

1.0

0.1

0.1

1.0

0.5

0.5

0.1

0.5

1

0.2

0.5

1

0.56

0.68

0.84

0.77

0.73

0

÷ = 0.1

0.43

0.44

0.04

”(3)1 = 0.00

”(4)1 = 0.73

”(3)2 = 0.05

”(3)2 = 0.01

Page 43: 6. Neuronale Netze - swl.htwsaar.de · 15 Lernen der Parameter § Regel zur Anpassung der Gewichte eines Perzeptrons mit Lernrateη(ein gängiger Wert ist 0.1) § Zum Training mit

43

Andere Architekturen neuronaler Netze§ Andere Architekturen neuronaler Netze existieren

neben den vorwärtsgerichteten Netzen

§ Rekurrente neuronale Netze (recurrent neural networks) enthalten Zyklen, d.h. eine Schicht kann Ausgabe nachgelagerter Schicht als Eingabe erhalten

§ Konvolutionale neuronale Netze (convolutional neuralnetworks) berücksichtigen die räumliche Strukturder Eingabe (z.B. eines Bildes) und fassendiese hierarchisch zusammen

Data Science / Kapitel 6: Neuronale Netze

Page 44: 6. Neuronale Netze - swl.htwsaar.de · 15 Lernen der Parameter § Regel zur Anpassung der Gewichte eines Perzeptrons mit Lernrateη(ein gängiger Wert ist 0.1) § Zum Training mit

44

Implementierung neuronaler Netze§ Zur Implementierung neuronaler Netze haben sich in

den letzten Jahren verschiedene Bibliotheken etabliert

§ TensorFlow (https://www.tensorflow.org) und Theano (http://deeplearning.net/software/theano/)erlauben das Training von Modellen auf CPU und GPU

§ Keras (https://keras.io) erlaubt die einfache Spezifikationder Architektur eines neuronalen Netzes und kannzum Training auf andere TensorFlow und Theanozurückgreifen

Data Science / Kapitel 6: Neuronale Netze

Page 45: 6. Neuronale Netze - swl.htwsaar.de · 15 Lernen der Parameter § Regel zur Anpassung der Gewichte eines Perzeptrons mit Lernrateη(ein gängiger Wert ist 0.1) § Zum Training mit

45

MNIST-Datensatz§ Ein häufig verwendeter Datensatz im Bereich Machine

Learning sind die sogenannten MNIST-Daten(http://yann.lecun.com/exdb/mnist/)

§ Der Datensatz enthält von Hand geschriebene Ziffern(0-9), wobei jede als Bild bestehend aus 28x28 Pixeln mit Grauwerten (0-255) abgelegt ist

Data Science / Kapitel 6: Neuronale Netze

Page 46: 6. Neuronale Netze - swl.htwsaar.de · 15 Lernen der Parameter § Regel zur Anpassung der Gewichte eines Perzeptrons mit Lernrateη(ein gängiger Wert ist 0.1) § Zum Training mit

46

MNIST-Datensatz§ Insgesamt sind 60.000 Ziffern als Trainingsdaten

und 10.000 Ziffern als Testdaten enthalten

§ Die Ziffern wurden von 250 verschiedenen Personengeschrieben, 125 davon Studierende und 125 davon Mitarbeiter des National Institute of Standards andTechnology (NIST)

Data Science / Kapitel 6: Neuronale Netze

Page 47: 6. Neuronale Netze - swl.htwsaar.de · 15 Lernen der Parameter § Regel zur Anpassung der Gewichte eines Perzeptrons mit Lernrateη(ein gängiger Wert ist 0.1) § Zum Training mit

47

Neuronales Netz zur Klassifikation von Ziffern§ Wir verwenden nun Keras, um ein neuronales Netz

zu implementieren, welches die Ziffern in dieKlassen (0-9) klassifiziert

§ Das neuronale Netz soll folgende Architektur haben

§ die Eingabeschicht besteht aus 784 Eingabewerten§ zwei verborgene Schichten mit jeweils 128 Neuronen§ die Ausgabeschicht besteht aus 10 Neuronen

Data Science / Kapitel 6: Neuronale Netze

Page 48: 6. Neuronale Netze - swl.htwsaar.de · 15 Lernen der Parameter § Regel zur Anpassung der Gewichte eines Perzeptrons mit Lernrateη(ein gängiger Wert ist 0.1) § Zum Training mit

48

Neuronales Netz zur Klassifikation von Ziffern

Data Science / Kapitel 6: Neuronale Netze

import numpy as npfrom keras.datasets import mnistfrom keras.models import Sequentialfrom keras.layers.core import Dense, Activationfrom keras.optimizers import SGDfrom keras.utils import np_utilsnp.random.seed(1671)

# Parameter des neuronalen Netzes und bzgl. TrainingNB_EPOCH = 100BATCH_SIZE = 128VERBOSE = 1NB_CLASSES = 10OPTIMIZER = SGD()N_HIDDEN = 128VALIDATION_SPLIT=0.2

# MNIST-Daten herunterladen und vorbereiten(X_train, y_train), (X_test, y_test) = mnist.load_data()RESHAPED = 784X_train = X_train.reshape(60000, RESHAPED)X_test = X_test.reshape(10000, RESHAPED)X_train = X_train.astype('float32')X_test = X_test.astype('float32')

# MNIST-Daten normalisierenX_train /= 255X_test /= 255

Page 49: 6. Neuronale Netze - swl.htwsaar.de · 15 Lernen der Parameter § Regel zur Anpassung der Gewichte eines Perzeptrons mit Lernrateη(ein gängiger Wert ist 0.1) § Zum Training mit

49

Neuronales Netz zur Klassifikation von Ziffern

§

§ vgl. A. Gulli und S. Pal: Deep Learning with Keras,Packt Publishing, 2017

Data Science / Kapitel 6: Neuronale Netze

# One-Hot Encoding durchführenY_train = np_utils.to_categorical(y_train, NB_CLASSES)Y_test = np_utils.to_categorical(y_test, NB_CLASSES)

# Architektur des neuronalen Netzes beschreibenmodel = Sequential()model.add(Dense(N_HIDDEN, input_shape=(RESHAPED,)))model.add(Activation('sigmoid'))model.add(Dense(N_HIDDEN))model.add(Activation('sigmoid'))model.add(Dense(NB_CLASSES))model.add(Activation('sigmoid'))model.summary()

# Modell umsetzenmodel.compile(loss='categorical_crossentropy', optimizer=OPTIMIZER, metrics=['accuracy'])

# Modell trainierenhistory = model.fit(X_train, Y_train, batch_size=BATCH_SIZE,

epochs=NB_EPOCH, verbose=VERBOSE, validation_split=VALIDATION_SPLIT)

# Gütemaße ausgebenscore = model.evaluate(X_test, Y_test, verbose=VERBOSE)print("Test score:", score[0])print("Test accuracy:", score[1])

Page 50: 6. Neuronale Netze - swl.htwsaar.de · 15 Lernen der Parameter § Regel zur Anpassung der Gewichte eines Perzeptrons mit Lernrateη(ein gängiger Wert ist 0.1) § Zum Training mit

50

Neuronales Netz zur Klassifikation von Ziffern§ Vollständiges Jupyter-Notebook unter:

[HTML][IPYNB]

§ Das trainierte neuronale Netz erreicht auf den Testdatennach 100 Epochen eine Genauigkeit (accuracy)von 91.85%

§ Die Genauigkeit lässt sich durch Verwendung andererAktivierungsfunktionen (Rectified Linear Unit, Softmax)weiter steigern

Data Science / Kapitel 6: Neuronale Netze

Page 51: 6. Neuronale Netze - swl.htwsaar.de · 15 Lernen der Parameter § Regel zur Anpassung der Gewichte eines Perzeptrons mit Lernrateη(ein gängiger Wert ist 0.1) § Zum Training mit

51

Zusammenfassung§ Sigmoid-Neuron verwendet die logistische Funktion

als Aktivierungsfunktion

§ Vorwärtsgerichtete neuronale Netze besitzen mehrereverborgene Schichten, von denen aufeinanderfolgendevollständig miteinander verbunden sind

§ Backpropagation erlaubt das Lernen von Gewichteneines vorwärtsgerichteten neuronalen Netzes

§ Keras als aktuelle Bibliothek zur Implementierung neuronaler Netze und Training auf CPU/GPU

Data Science / Kapitel 6: Neuronale Netze

Page 52: 6. Neuronale Netze - swl.htwsaar.de · 15 Lernen der Parameter § Regel zur Anpassung der Gewichte eines Perzeptrons mit Lernrateη(ein gängiger Wert ist 0.1) § Zum Training mit

52

Literatur[1] S. Raschka: Machine Learning in Python,

mitp, 2017 (Kapitel 2 und 12)

[2] T. Mitchell: Machine Learning,

McGraw Hill, 1997 (Kapitel 4)

[3] M. A. Nielsen: Neural Networks and Deep Learning,Determination Press, 2015

http://neuralnetworksanddeeplearning.com

[4] A. Gulli and S. Pal: Deep Learning with Keras

Packt Publishing, 2017

Data Science / Kapitel 6: Neuronale Netze