6. Neuronale Netze
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}
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
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
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 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
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
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
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
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ünschterAusgabe t ab, korrigiere die Gewichte in Richtungder 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 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
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 Datenpunktein 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
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.htmlhttp://swl.htwsaar.de/.../2017-vl-ds-kap6-neuronale-netze.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)
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(
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
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
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
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
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, 2015http://neuralnetworksanddeeplearning.com
Data Science / Kapitel 6: Neuronale Netze
Top Related