Neuronale Netze

Transcrição

Neuronale Netze
Neuronale Netze
Timur Bahadir
Pietro Bergamasco
Sefa Cilek
Betreuer: Prof. Dr. habil. Thomas Thierauf
16. Juni 2016
1
Inhaltsverzeichnis
1 Einführung
1.1 Motivation . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.2 Kurz Zusammenfassung . . . . . . . . . . . . . . . . . . . . .
6
6
6
2 Geschichte
2.1 Konzeption . . . . . . . .
2.2 Anfänge . . . . . . . . . .
2.3 Pause . . . . . . . . . . .
2.4 Interesse Wieder Erwacht
2.5 1986-Bis heute . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
7
7
7
7
8
8
3 Perzeptron
3.1 Einleitung . . . . . . . . . . . . . . . . . . .
3.2 Aufbau . . . . . . . . . . . . . . . . . . . .
3.3 Lernprozess . . . . . . . . . . . . . . . . . .
3.4 Mathematischer Beweis . . . . . . . . . . .
3.5 Beispiele . . . . . . . . . . . . . . . . . . . .
3.5.1 Lernprozess Beispiel bei Implikation
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
9
9
10
10
12
13
13
.
.
.
.
.
.
.
16
16
17
18
18
18
20
22
.
.
.
.
.
23
23
23
23
24
24
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
4 Neuronale Netze
4.1 Einleitung . . . . . . . . . . . . . . . . . . . . . . . . .
4.2 Vergleich zum Biologischen Neuronalen Netz . . . . .
4.3 Arten . . . . . . . . . . . . . . . . . . . . . . . . . . .
4.3.1 Überwachtes Lernen . . . . . . . . . . . . . . .
4.3.2 Bestärkendes Lernen (Reinforcement Learning)
4.3.3 Unüberwachtes Lernen . . . . . . . . . . . . . .
4.4 Vorteile und Nachteile Neuronale Netze . . . . . . . .
5 Anwendungsfälle
5.1 ADALINE . . . . . . . . . . . . . . . . . .
5.2 MarI/O . . . . . . . . . . . . . . . . . . .
5.3 NeuralDoodle . . . . . . . . . . . . . . . .
5.3.1 Style Transfer . . . . . . . . . . . .
5.3.2 Pixel Art Upscaling/Verbesserung
2
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
5.4
5.5
Tensor Flow . . . . . .
5.4.1 Geschichte . . .
5.4.2 Implementation
5.4.3 Anwendungen .
Data minig . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
3
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
25
25
25
26
26
4
Kapitel 1
Einführung
1.1
Motivation
Neuronale Netze sind momentan ein steigender Trend in der Informatik.
Von Googles AlphaGo und Tenserflow zu Mustererkennung und Bildberatbeitung. Sie finden heutzutage immer mehr Anwendungen. Nach den Schlagzeilen für die AlphaGo sorgte wuchs in uns das Interesse sich genauer mit
Neuronalen Netzen zu beschaffen. Die Dinge die wir erfahren und gelernt
haben, wollen wir nun in dieser Seminar Arbeit zusammenfassen und mit
anderen teilen.
1.2
Kurz Zusammenfassung
Diese Ausarbeitung ist in 5 Kapitel aufgeteilt. Nach dieser Einführung und
Zusammenfassung werden wir die Geschichte Neuronaler Netze behandeln,
wann und von wem sie erfunden wurden, warum sie so lange an Beliebtheit
verloren hatten und was das neuerwecken ihrer Verwendung verursachte.
Im 3. Kapitel werden wir das simpelste, einfachste und mit das erste
Neuronale Netz als Beispiel und Einführung genauer behandeln. Hier gehen
wir auch auf den Lernprozess eines solchen Perzeptrons ein.
Einen oberflächlichen Überblick über neuronale Netze, ihre Arten und
Unterschiede, wird im 4. Kapitel behandelt.
Um die sehr vielfältige Anwendungen von neuronalen Netzen zu zeigen
haben wir im 5. Kapitel uns einige Anwendungsfälle heraus gesucht. Diese
reichen von künstlicher Intelligenz zu Bildskalierung und Manipulierung.
5
Kapitel 2
Geschichte
2.1
1940-1949: Konzeption
Die Idee der Neuronalen Netze war in den Vierziger Jahren bekannt. Schon
1943 theoretisierten und konstruierten Warren McCulloch und Walter Pitts
ein einfaches neurologisches Netzwerk, mit dem jede logische oder Arithmetische Funktion berechnet werden konnte. Der Wissenschaftler Donal O.
Herb postulierte 1949 das Funktionieren des menschlichen Neurons. Das war
sehr hilfreich für die spätere Entwicklung des Perzeptrons [Kri07].
2.2
1951-1969: Anfänge
Zwischen 1957 und 1958 wurde der erste Neurocomputer am MIT gebaut.
Er wurde Mark I Perceptron genannt und konnte Ziffern erkennen. Im Jahre
1960 wurde das “ADALINE” (ADAptive LInear NEuron) System von Bernard Widrow und Marcian E. Hoff veröffentlicht. “Es war das erste kommerziell eingesetze Neuronale Netz” [WM]. In einem späteren Kapitel 5.1
wird das “ADALINE” system erklärt. Im Jahre 1969 erschien von Marvin
Minsky und Seymour Papert das Buch “Perceptrons” welches die Schwächen
des Perzeptrons zeigte[Kri07]. Sie bewiesen, dass mit dem Perzeptron manche elementare Operationen nicht möglich waren - das sogenannte “XORProblem”. “Das XOR-Problem” wurde später mit den “mehrlagigen Perzeptrons” gelöst. Das trug dazu bei, dass in den nächsten 10 Jahren nichts
relevantes passierte.
2.3
1970-1979: Pause
So gab es während den Siebziger Jahren wenig Interesse für die neuronalen
Netze. Es wurde wenig weitergeforscht und wenig publiziert und somit auch
nicht auf Konferenzen oder Veranstaltungen thematisiert. Die Kommunikation der Forscher untereinander war eingeschränkt.
6
2.4
1980-1986: Interesse Wieder Erwacht
Im Jahre 1980 erforschte John Hopfiled eine Art neuronales Netz: Das Hopfield network. Mit diesem konnte er eine mögliche Lösung für das “Travelling
Salesman Problem” finden [Kri07]. Die Backpropagation of Error wurde
1986 als Verallgemeinerung der Delta-Regel durch die Parallel Distributed
Processing-Gruppe separat entwickelt und publiziert. Es demonstrierte, dass
nicht linear separierbare Probleme durch Perzeptronen lösbar waren. Dank
dieser Publikationen und des Charisma von Hopfield wurde das Interesse für
neuronale Netze wieder erweckt.
2.5
1986-Bis heute
Ab 1986 entwickelten sich die neuronalen Netze explosiv. Die Forschungen,
Anwendungen und Projekte sind zu vielzählig um alle zu nennen und zu
beschreiben. Die interessanten/wichtigen Anwendungen sind:
• Gründung des INNS(International Neural Network Society) im Jahr
1986
• Veröffentlichung des Buch “Perceptrons - Expanded Edition”. Mögliche
Lösung des “XOR.Problem”.
• ImageNet Veröffentlichung im Jahr 2009: Bilder Datenbank für Bilder
Erkennung. Es benutzt Neuronale Netze um Bilder zu erkennen.
• DisteBelif: Erste Generation von “Deep Lerning” neuronale Netze. Es
wurde von Google entwickelt.
• TensorFlow: Erweiterung von DistBelif.
7
Kapitel 3
Perzeptron
3.1
Einleitung
Das Perzeptron ist mit das einfachste neuronale Netz. Es wurde von Warren
McCulloch und Walter Pitts im Jahre 1943 entwickelt. 15 Jahre später wurde es von Frank Rosenblatt publiziert [Wik16d]. Es sollte in der Lage sein
simple logische Operation berechnen zu können, wie UND(∧), ODER(∨),
NICHT(¬).
Original war es der Plan das Perzeptron als Maschine zu bauen [Wik16d]
und nicht durch Software zu implementieren. Dies gescha dann auch in Form
des “Mark 1 Perceptron”. Hier wurden die Gewichte, welche später genauer erklärt werden, durch Elektromotoren angepasst und als Eingabe wurde
eine 400-Pixel Kamera verwendet. Das “Mark 1 Perceptronßollte für die
Muster Erkennung verwendet werden und wurde vom “Office of Naval Research”finanziert.
Die Forschung an Perzeptronen stoppte relativ schnell da ein Buch namens “Perceptrons”von Marvin Minsky und Seymour Papert belegte das
Perzeptronen mit nur einer Lage nicht die Fähigkeit besitzt die logische
XOR-Operation zu lösen und vermuteten das selbst Perzeptrone mit mehreren Lagen dazu nicht in der Lage waren. Dies ist eine Falschvermutung,
bereits ein zweilagiges Perzeptron ist in der Lage die XOR-Operation zu berechnen. Dies wurde von dem in 1987 veröffentlichen Buch namens “Perceptrons
- Expanded Edition”, also erst mehr als 10 Jahre später, gezeigt und verbessert. Durch den Bericht von Minsky und Papert wurde jedoch genug
Schaden angerichtet und durch fehlende Finanzierung wurde die Forschung
für mehrere Jahre fast vollkommen eingestellt.
Von Perzeptronen inspiriert sind heutige neuronale Netze in der Lage
viel komplexere Aufgaben zu lösen.
8
3.2
Aufbau
Das Perzeptron besteht aus zwei Vektoren und einem Schwellenwert. Der
Eingangsvektor x besteht aus den Werten 1 und 0, xi ∈ {0, 1}. Hier ist 1
wahr und 0 falsch.
Der zweite Vektor, w oder Gewichtsvektor, besteht aus Gleitkommazahlen welche die Gewichte des Eingangsvektors bestimmen. Die Werte von w
können auch Negativ sein, wi ∈ R. Sie sind das Ziel für den Lernvorgang
welcher in der nächsten Sektion noch einmal genauer behandelt wird.
Zuletzt gibt es noch den Schwellenwert s. Falls das Skalarproduk des
Eingabevektors und des Gewichtsvektors dem Schwellenwert entspricht oder
überschreitet so feuert das Perzeptron wahr, ansonsten falsch. Das Skalarprodukt zweier Vektoren a = (a1 , . . . , an ) und b = (b1 , . . . , bn ) ist folgend
definiert:
n
X
ai bi
(3.1)
i=1
Hier das Perzeptron als Formel dargestellt.
(
Pn
1 , falls
i=1 xi wi ≥ s
Ausgabe =
0 , sonst
(3.2)
Perzeptrone werden oft als sogenannte erweiterten Perzeptrone verwendet. Bei erweiterten Perzepotronen wir ein weiterer Eingang an x und w
hinzugefügt, bei diesem Eingang ist x konstant wahr und sein Gewicht ist
-s. Dies hat die Folge das erweiterte Perzeptrone wahr feuern wenn sie dem
Wert 0 entsprechen oder überschreiten. Dies vereinfacht den mathematischen Beweis und die Formel.
(
Pn
1 , falls
i=1 xi wi − s ≥ 0
Ausgabe =
(3.3)
0 , sonst
Figure 3.1 ist die Visuelle Darstellung welche wir für Perzeptronen verwenden werden und fig. 3.2 analog für das erweiterte Perzeptron.
3.3
Lernprozess
Wir halten uns hier an den Beweis von Schöning [Sch95]. Für den Lernprozess eines Perzeptrons werden zuerst folgende Dinge definiert. B0 und B1
sind linear separierbare disjunkte Mengen von Beispielen. Elemente b dieser
Mengen haben die folgende Form:
b = (1, b1 , ..., bn ), bi ∈ {0, 1}, b ∈ Bi
9
(3.4)
Abbildung 3.1: Visuelle Darstellung
eines Perzeptons
Abbildung 3.2: Visuelle Darstellung eines erweiterten Perzeptrons
Sie stellen also Beispiele für x dar. Das Ziel ist es, dass der Gewichtsvektor w die folgende Form annimmt.
∀ b ∈ B1 → bw ≥ 0
∀ b ∈ B0 → bw < 0
(3.5)
Soll heißen, B1 enthält alle Eingaben für die das Perzeptron wahr feuern
soll und B0 enthält alle Eingaben für die es falsch feuern soll. Der Gewichtsvektor w wird jedoch anfangs auf w0 initialisiert und hat folgende Form
(0, 0, ..., 0) dewegen wird es zu beginn noch viele Fehler machen. Um w nun
zu verbessern wird wj+1 , hier ist wj+1 die nächste iteration des Gewichtsvektors, auf diese Art bearbeitet.

j

w + b , falls b ∈ B1 und bw < 0
j+1
w
= wj − b , falls b ∈ B0 und bw ≥ 0
(3.6)

 j
w
, sonst
In anderen Worten. Wenn das Perzeptron wahr feuern soll, aber falsch
feuert, werden die Werte von b auf w addiert, analog, wenn das Perzeptron
falsch feuern soll es aber wahr feuert, wird b von w subtrahiert und zuletzt,
wenn das Ergebniss korrekt ist, wird w nicht verändert. Nach einem solchen
Schritt muss w noch nicht korrekt sein, es kann sogar vorher richtig erkannte Eingaben nun falsch feuern. Durch das Perzeptron-Konvergenz-Theorem
wird jedoch bewiesen, dass nach endlich vielen solcher Lernschritte w korrekte Form annimmt.
10
3.4
Mathematischer Beweis
Satz 1 (Perzeptron Konvergenz Theorem) [Sch95] Gegeben seien zwei
linear separierbare Mengen von Punkten B0 , B1 und eine unendliche Trainingsfolge. Dann erreicht das Perzeptron nach endlich vielen Lernschritten
einen Gewichtsvektor, so dass das Perzeptron allen Punkten in B0 den Wert
0 und allen Punkten in B1 den Wert 1 zuweist.
Dieser Beweis ist dem von Uwe Schöning nachempfunden [Sch95]. Um
den Beweis zu vereinfachen vertauschen wir zuerst B0 mit B00 . B00 ist mit
B00 = {−b|b ∈ B0 } definiert. Dies ermöglicht folgende Aussage. B0 und B1
sind linear separierbar, wenn gilt: Es gibt einen Gewichtsvektor w, so dass:
wb > 0∀b ∈ B := B00 ∪ B1
(3.7)
Als nächstes definieren wir eine Trainingsfolge T mit der Eigenschaft,
dass jedes Element von B unendlich oft in T vorkommt. Mit T wird dann
das Perzeptron durch die oben erklärte Formel trainiert. Dadurch entsteht
eine Gewichtsvektoren Folge G. Daraus wiederum erstellen wir eine Teilfolge
G0 welche nur Schritte enthält bei denen es eine tatsächliche Veränderung
von wj zu wj+1 gab, also ein falsch klassifiziertes bj ∈ B.
Durch das vertauschen von B0 durch B00 gelten nun die folgenden Dinge:
wj+1 = wj + bj
(3.8)
wj bj ≤ 0
(3.9)
und
Wir zeigen das G0 endlich ist, es also nach einem Zeitpunkt t es keine
veränderungen mehr an w vorgenommen werden.
Da wir mit w0 starten gilt wj+1 ist die aufsummierung aller b’s bis bj
ist.
wj+1 = b1 + b2 + ... + bj
(3.10)
Wir müssen beweisen dass j nicht beliebig groß werden kann.
Sei nun w ein beliebiger Lösungsvektor und α eine beliebige kleine Konstante, so dass gilt:
bw > 0 ∀ b ∈ B
bw ≥ α ∀ b ∈ B
(3.11)
Dies ermöglicht folgende Abschätzung:
wj+1 w = (b1 + . . . + bj )w = b1 w + . . . + bj w ≥ jα
(3.12)
Durch (ab)2 ≤ (aa) ∗ (bb), auch Cauchy-Schwarz-Ungleichung genannt,
ist der folgende Schritt möglich.
11
j 2 α2 ≤ (wj+1 w)2 ≤ (wj+1 wj+1 ) ∗ (ww)
(3.13)
Nach wj+1 wj+1 Umgeformt erhalten wir daraus:
wj+1 wj+1 ≥ j 2 α2 /(ww)
(3.14)
Der Wert von wj+1 wj+1 steigt also in quadratischer Form in j. Dieses
Wachstum ist jedoch nicht unendlich oft möglich da durch wj+1 = wj + bj ,
wie in eq. (3.8) gezeigt, zusammen mit wj bj ≤ 0, in eq. (3.9) definiert, die
folgende Abschätzung gilt.
wj+1 wj+1 = wj wj + 2 ∗ (wj bj ) + bj bj ≤ wj wj + bj bj
(3.15)
Nach j maliger Anwendung
wj+1 wj+1 ≤ j ∗ M wobei M = max{bb|b ∈ B}
(3.16)
Nach dem Zusammenfügen der Ungleichungen; eq. (3.14) und eq. (3.16).
j 2 α2 /(ww) ≤ wj+1 wj+1 ≤ j ∗ M
(3.17)
j ≤ M ∗ (ww)/α2
(3.18)
Also
j ist durch die Konstante, die von einer Beispielmenge und gewähltem
Lösungsvektor w abhängt, nach oben beschränkt. Es sind also nur endlich
viele Lernschritte benötigt.
w ist eine echte Lösung da jedes Beispiel unendlich oft in T vorkommt.
Würde w also für ein Beispiel nicht stimmen so würde eine weitere Änderung
an w vorgenommen.
3.5
Beispiele
Hier ein paar Beispiele für fertige Perzeptronen, welche die Aufgaben der
Wahrheitstabelle erfüllen. Zusätzlich noch ein Diagramm eines nicht erweiterten Perzeptrons und der linear separierten Menge der Beispielen nach der
Wahrheitstabelle.
3.5.1
Lernprozess Beispiel bei Implikation
Wir wollen nun den Lernprozess an hand der Implikations-Operation als
Beispiel genauer durchnehmen. Wir benützen hier natürlich das erweiterte
Perzeptron mit dem Gewichtsvektor w = (0, 0, 0). Hier ist es zu beachten
das obwohl wir nur mit zwei Operanten arbeiten, der Gewichtsvektor eine
Länge von drei hat, da wir wie bereits erwähnt das erweiterte Perzeptron
verwenden. Die Wahrheitstabelle der Implikation sehen sie in fig. 3.9
12
A
0
0
1
1
B
0
1
0
1
A∧B
0
0
0
1
Abbildung 3.3: UndWahrheitstabelle
A
0
0
1
1
B
0
1
0
1
Abbildung 3.4: Und linear separiert
Abbildung 3.5:
Perzeptron
Und-
A∨B
0
1
1
1
Abbildung 3.8: OderAbbildung 3.6: OderWahrheitstabelle
Abbildung 3.7: Oder li- Perzeptron
near separiert
A
0
0
1
1
B
0
1
0
1
A→B
1
1
0
1
Abbildung
ImplikationWahrheitstabelle
3.9:
Abbildung
3.11:
Implikation-Perzeptron
Abbildung 3.10: Implikation linear separiert
Wir definieren also zuerst unsere beiden linear separierbaren disjunkten
Mengen.
B1 = {(0, 0), (0, 1), (1, 1)}
B0 = {(1, 0)}
B = B1 ∪ B0 = {(0, 0), (0, 1), (1, 0), (1, 1)}
(3.19)
Die erste Eingabe die wir testen ist b = (0, 0) beziehungsweise, hier
wieder durch den Fakt das wir das erweiterte Perzeptron verwenden, b =
(1, 0, 0). Berechnen wir nun das Skalarprodukt von b und w erhalten wir 0
13
und da unser Perzeptron wahr feuert wenn wir größer oder gleich 0 erhalten
ist die Ausgabe in diesem Fall wahr. Dies stimmt mit der Wahrheitstabelle
überein. Wir müssen also laut der Lernregel, eq. (3.6), nichts an unseren
Gewichten verändern.
Wir erhalten das gleiche Ergebniss für die Eingabe b = (0, 1), verändern
also wieder nichts an w.
Bei b = (1, 0) findet die erste veränderung statt, da das Skalarprodukt
von b = (1, 1, 0) und w = (0, 0, 0) gleich 0 ist. Dies ist laut unserer Wahrheitstabelle allerdings falsch. In der Lernregel wird angegeben, dass wenn
das Perzeptron 0 Ausgeben soll aber 1 ausgibt, wir die Eingabe b von w
abziehen. Unser neues Gewicht ist also w = (−1, −1, 0). Nun kann man
sich entscheiden wie man seine Lernfolge fortsetzt. Wir fangen wieder von
vorne mit b = (0, 0) an. Dies ist wieder falsch, da das Skalarprodukt von
b = (1, 0, 0) und w = (−1, 0, 0) wahr sein sollte, es aber als falsch ausgegeben wird. Wir addieren b also wieder zu w und erhalten unseren neuen
Gewichtsvektor mit den Werten w = (0, −1, 0). Da wir immer neu beginnen
wenn es eine Änderung an w gab, testen wir die neuen Gewichte sofot wieder gegen b = (0, 0), dafür und bei b = (0, 1) sowie b = (1, 0) stimmt unser
Gewichtsvektor. Die nächste Änderung findet erst bei b = (1, 1) statt.
Bei b = (1, 1) sollte das Perzeptron wahr feuern, tut es aber nicht, da
das Skalarprodukt von b und w, −1 ergibt. Wir addieren b also zu w und
erhalten den neuen Gewichtsvektor w = (1, 0, 1).
Nun sollte das Vorgehen klar werden, der Vollständigkeit halber werden wir dieses Beispiel dennoch Beenden. Wir starten nun also wieder von
neuem. Unser w Vektor liefert die richtigen Ergebnisse für b = (0, 0) und
b = (0, 1). Die nächste und letzte Veränderung findet bei b = (1, 0) statt.
Hier feuert das Perzeptron wahr obwohl laut der Wahrheitstabelle hier falsch
gefeuert werden muss. Wir subtrahieren w also von x und erhalten unseren
finalen Gewichtsvektor w = (0, −1, 0). Um zu beweisen das dies der Korrekte
Vektor ist kann man alle Beispiele nocheinmal durchgehen. Dies überlassen
wir jedoch ihnen.
Als Bemerkung ist es vielleicht hier noch zu beachten das hätten wir
die Reihenfolge b0 = (1, 0), b1 = (0, 1), b2 = (0, 0), b3 = (1, 1) verwendet.
Betrüge die Anzahl der Veränderungen an w Drei anstatt Vier.
14
Kapitel 4
Neuronale Netze
4.1
Einleitung
Neuronale Netze sind Biologisch motiviert. Das Gehirn des Menschen ist in
der Lage zu Lernen, das Gelernte anzuwenden und das Gehirn ist bei unbekannten Problemen kreativ und kann die Problem dadurch selber lösen.[unka]
Im gegensatz zum Gehirn können die Computer mit ihren Recheneinheiten
und Speicher komplexe numerische Rechnungen in kurzer Zeit berechnen,
sind jedoch nicht fähig zu lernen. Künstlich neuronale Netze bestehen aus
künstlichen Neuronen, Recheneinheiten und den Verbindungen zwischen den
Komponenten. Künstlich neuronale Netze (kurz: KNN) werden Beispielweise
für die Musterkennung genutzt, sie erkennen Muster in Daten und vergleichen bzw. nähren die extrahierten Merkmale und ihren funktionalen Zusammenhänge. Sie können auch für Funktionsapproximation, Optimierungen, Klassenbildungen oder zu Prognose verwendet werden. Hauptsächlich
möchte man Fehlertoleranz, die Generalisierungsfähigkeit, Lernen und Selbstorganisation aus Biologischen Systemen für das neuronale Netz übernehmen.
Einige Merkmale wurden bereits für das neuronale Netz übernommen. Folgende Merkmale beherrscht das KNN bereits[unkb]:
• das Lernen an Beispielen
• Lernfähigkeit identisch aufgebauter Neuronen
• Verknüpfung zwischen Neuronen
Außerdem möchte man mit Hilfe der Computer bzw. des Künstlichen neuronalen Netzes, Biologie näher untersuchen und gegebenen falls für Medizinische Forschung anwenden. Durch neuronale Netze können sie was sie
gelernt haben oder beobachtet haben nachbilden und später erklären. Ebenso öffnen sich dadurch für den Heimcomputer neue Möglichkeiten und neue
Programme.
15
Abbildung 4.1: Neuronales Netz
[Wik16c]
Auf der Figure 4.1 ist der aufbau eines neuronalen Netzes zu sehen.
Die Kreise in der Abbildung sind Neuronen, grün farbierte Kreise sind die
Eingänge während das gelbe der Ausgang ist. Jede Recheneinheit ist miteineinander verbunden.
4.2
Vergleich zum Biologischen Neuronalen Netz
Gemeinsamkeiten
Da das Künstliche neuronale Netz dem biologischem Netz sehr ähnelt gibt
es einige Gemeinsamkeiten. Das KNN und ihre natürlichen Vorgänger sind
durch gerichtete, gewichtete Verbindungen (biologisch: Synapsen) verbunden. Ebenso sind beide fähig parallel zu arbeiten und das Künstliche neuronale Netz ist wie das Biologische neuronale Netz relativ einfach mit ihren
Elementen gehalten.[Lip]
Unterschiede
Auch wenn das Künstliche neuronale Netz und Das Biologisch Netz viele
Ähnlichkeiten haben so gibt es immer noch viele Unterschiede. Das Gehirn
kann Berechnungen parallel ausführen das heißt es ist fähig mehrere aufgaben auf einmal zu erledigen. Der Computer kann in der Regel nur seriell die
Berechnungen berechnen. Die Anzahl der Recheneinheiten (Neuronen) des
Gehirns beträgt ca. 1011 , des Computers 109 . die Schaltzeit des Biologischen
Netzes beträgt ungefähr 10−3 Sekunden die des Künstlichen neuronalen Netzes ca. 10−9 Sekunden. Theoretisch ist also der Computer leistungsfähiger,
auch wenn das Gehirn mehr Neuronen besitzt im Gegensatz zum PC ist
die Schaltzeit des Gehirnes 10−3 . Doch das Gehirn arbeitet durchgehend
während der Computer größten Teils nur passiv seine Daten abspeichert.
Außerdem ist es dem PC nicht möglich während er arbeitet seine Struktur
zu ändern falls es auf ein Problem stößt. Das Biologische Netz jedoch kann
aber, während er arbeitet sich neu anpassen und so auftauchende Fehler
16
herausfinden und beheben. Das ist ein starker unterschied zwischen dem
künstlichen Netz und dem Biologischem Netz, auch wenn massive Parallelität herrscht ist der Computer noch lange nicht in der Lage schnell und
geschickt zu arbeiten wie es das Gehirn tut.[Kri05]
Tabellarischer Vergleich
anzahl der Neuronen
Berechnungsart
Schaltzeit
Verbindungen
4.3
Biologisches Netz
ca. 101 1
parallel
ca. 10−3 s
die anzahl der
Verbindungen sind viel geringer
Künstliches Netz
ca. 109
seriell
ca. 10−9 s
viel mehrere Synapsen
zwischen Neuronen
Arten
Das KNN wird in mehrere arten aufgeteilt, hauptsächlich in das überwachte
Lernen, bestärkendes Lernen und unüberwachtes Lernen.
4.3.1
Überwachtes Lernen
Zu den überwachten Lernen gehört zum Beispiel das Perzeptron aus Kapitel
3. Es gibt also einen bevorzugten Output der erreicht werden soll bzw. welches das Netz lernen soll. Ziel des Lernens ist die Generalisierung. Dadurch
lernt das Netz unr erlangt neues Wissen was wiederum dazu führen soll das
unbekannte ähnliche Eingabemuster ein passendes Ergebniss bekommen.
4.3.2
Bestärkendes Lernen (Reinforcement Learning)
Bestärkendes lernen ist ein Bereich vom Maschinellem lernen in dem man
den nutzen eines Agenten maximiert. Das System bekommt wahr oder falsch
antworten bzw. es wird belohnt oder bestraft(Beispiel: Spiel gewonnen/verloren).
Genau wie der Mensch aus Fehlern so lernt es auch diese Maschine. Sie wertet
die Siege in spielen als gut ab und folgt dem Muster oder falls es verliert versucht die Maschine diesen weg zu ignorieren. Das Modell des Bestärkendes
Lernen besteht aus: [Wik16a][Wik16e]
• Zustände S
• Aktionen A
• Zustandsübergänge
• Belohnungen
17
Beispiel Tic-Tac-Toe Spiel
[Fü07] Lern-Algorithmus:
Abbildung 4.2: Zustandsbaum
[oA15]
• Spiel verloren:
– die Zustände S mit ihren Aktionen A die der PC genommen hat
werden als schlecht belohnt und eingespeichert
• Spiel gewonnen
– die Zustände S mit ihren Aktionen A die der PC genommen hat
werden als gut belohnt und eingespeichert
• Spiel unentschieden
– Nichts wird unternommen (Keine änderung der Zustände oder
der Aktionen)
Der Agent sucht immer nach einer Aktion A also einen Zug wo er sein
kreuz markieren möchte und falls er es ausgeführt hat so kommt er in seinen
nächsten Zustand S. Die Zustände davor werden eingespeichert. Falls der
Zug, den der Agent ausgeführt hat, schlecht belohnt werden sollte versucht
er es in seiner nächsten runde zu ignorieren. Dadurch das die Maschine seine
Züge die es bereits in einem Spiel davor gelernt hat steigt die Wahrscheinlichkeit das das System einen erfolgreichen Zug unternimmt was wiederum
dazu führt das es weniger Fehler macht.
18
4.3.3
Unüberwachtes Lernen
Mit dieser Art des Lernens möchte man zum Beispiel versteckte Strukturen
in Daten entdecken oder durch eingaben vorhersagen herausfinden, ausgeben oder erforschen. Im Gegensatz zum überwachtem lernen ist hier das
Output nicht bekannt. Es besteht nur aus Eingabemustern und das Netz
versucht selber Ähnlichkeiten zu finden. Das KNN orientiert sich an den
Ähnlichkeiten der Eingabemuster und passt seine Gewichte dem entsprechend an. Das Netz soll selbständig die Daten in mehrere Kategorien einteilen. Das unüberwachte Lernen wird meist für die Segmentierung oder
Komprimierung von Daten verwendet. Dadurch kann bei der Komprimierung zum Beispiel der Digitale Speicherplatz verkleinert werden was wiederum dazu führt das die Übertragungszeit der Daten sich automatisch mit
verkürzen. Durch Komprimieren versucht man hauptsächlich nicht benötigte
Daten loszuwerden.[Wik16b]
Self Organizing Map
Die Aufgabe der Self Organizing Maps besteht darin N Dimensionen auf
Bereiche in einem niedrig-dimensionalen Gitter (Standard ein- oder zweiDimensional) abzubilden. Also so gesehen um eine Karte (Map) zu erzeugen. Dieses verfahren wurde von Teuvo Kohonen entwickelt. Die funktionsweise des SOMs um die Dimensionen der Vektoren zu reduzieren, ist
im wesentlichen auch als Vektorquantisierung (Komprimierungsverfahren)
bekannt. Diese KNNs schaffen es ein Netz herzustellen das Informationen
speichert und so dass die beliebige topologischen Beziehungen im Trainingssatz aufrechterhalten werden. Die Self Organizing Maps werden meist zur als
Visualisierung Hilfsmittel genutzt. Sie machen es für den Menschen einfacher die Beziehungen zwischen großen Daten zu erkennen. SOMs werden in
vielen Bereichen angewendet. Anwendungsgebiete: Medizinische Diagnose,
Spracherkennung, Datenkompression, Interpretation seismischer Aktivitäten
oder auch Umweltmodellierung(hauptsächlich Meteorologie oder Ozeanologie). Figure 4.3 ist ein Beispiel dafür.
Beispiel: Lerprozess
Abbildung 4.3: Lernprozess eines SOMs
[Wik16f]
19
Auf dem Bild ist der Lernprozess eines SOM abgebildet. Der blaue Bereich im Bild ist die Eingabe. Als erstes sind die SOM Neuronen einfach irgendwo platziert. Im nächsten Trainingsschritt fangen die Neuronen an sich
langsam anzupassen bis sie schließlich den blauen Eingabe Bereich umhüllt
haben.
Beispiel: Gitter darstellung
Auf der Figure 4.4 wird ein zufälliges neuronales Netz in einem Raum generiert. In Figure 4.5, Figure 4.6, Figure 4.7und Figure 4.8 ist bereits ein
kleiner Unterschied zu erkennen. Die neuronale Netz fängt an form anzunehmen und passt sich langsam an. In Figure 4.9 ist das neuronale Netz
fertig mit seinem Trainig. Dieses Beispiel kann auch auf mehr Dimensionen abgeleitet werden. Angenommen ein Dreidimensionaler raum mit einem
neuronalem Netz ist zufällig wie in Figure 4.4 verteilt so macht das Self
Organizing Map genau die selben Lernschritte wie in diesem Beispiel und
passt sich dementsprechend an.[Wik16g]
Abbildung
4.4:
Zufällig
generiertes
Netz
Abbildung 4.5: Netz
nach 10 Trainingschritte
Abbildung 4.6: Netz
nach 100 Trainingschritte
Abbildung 4.7: Netz
nach 1.000 Trainingschritte
Abbildung 4.8: Netz
nach 10.000 Trainingschritte
Abbildung 4.9: Netz
nach 100.000 Trainingschritte
[Wik16g]
20
4.4
Vorteile und Nachteile Neuronale Netze
Vorteile
Der größte Vorteil eines neuronalen Netzes ist es das das Netzwerk lernt.
Durch das nutzen von neuronalen Netzen können viele Probleme schnell
gelöst werden ohne das finden oder beschreiben von Problemen, ohne einen
neuen Algorithmus zu schreiben oder ohne etwas neues Programmieren zu
müssen. Es muss lediglich je nach Netzwerk Art ein Input bzw. auch ein
Output eingeben werden. Die Netzwerke können als vorhersagen genutzt
werden (zum Beispiel vorhersagen für Wetter oder medizinische Ergebnisse). Ein weiterer Vorteil ist das neuronale Netze parallel arbeiten können.
Es kann bestimmte aufgaben schneller und effektiver verarbeiten als andere
Systeme. KNN sind Fehlertolerant denn falls einzelne Neuronen ausfallen
solltet bietet das KNN mehr Fehlertoleranz gegenüber herkömmliche Systeme.
Nachteile
Der Wissenserwerb des KNN ist sehr langsam und es kann nur selber Lernen d.h. es ist nicht möglich dem Netz ein Basiswissen mitzugeben. Ebenso ist die Modellierung neuronaler Netze kompliziert und aufwändig. Die
Künstilechen neuronalen Netze liefern zwar ein Ergebniss aber keine Begründung. Es können also keine Lösungwege an den Benutzer oder an ein
anderes System geliefert werden. [Str00]
21
Kapitel 5
Anwendungsfälle
5.1
ADALINE
“ADALINE” oder ADAptive LInear NEuron ist das erste neuronale Netz,
dass für kommerzielle Benutzung verbreitetet wurde [Kri07]. Es wurde von
Benard Widrow und Marcian E. Hoff im Jahr 1960, an der Basis von den
McCulloch-Pitts Neuron, entwickelt. Dabei kommt die Windrow-Hoff-Lernregel
bzw. Deltaregel zur Anwendung. Es wurde in praktisch allen analogen Telefonen eingesetzt. Das System konnte Übertragungsfehler erkennen und korrigieren und somit die Soundqualität verbessern [WM].
“MADALINE”(Many ADALINE) unterscheidet sich von “ADALINE”
indem sie mehrere “ADALINE” gleichzeitig benutzt [Kri07].
5.2
MarI/O
MarI/O ist eine neuronale Netze, dass das NEAT(NeuroEvolution of Augmenting Topologies) Konzept anwendet [Set]. Es wurde von “SethBling” mit
die Scriptsprache LUA entwickelt. MarI/O ist in der Lage, nach einer 24
stündigen unüberwachter Lernphase, die erste zwei Level von “Super Mario
World” zu besiegen. Weiteren Implementationen des Algorithmus wurden
auch in “Super Mario Bros”, “Donut Plains 4” und “Yoshi’s Island 1” mit
guten Ergebnissen angewendet[Set].
5.3
NeuralDoodle
NeuralDoodle ist ein Python Script, entwickelt von Alex J. Champandard,
die eine Paint Skizze oder Bilder in “schöne Kunst” umwandelt [Blo]. Sie
implementiert “Convolutional neural networks” um die Umwandlung durchzuführen.
22
5.3.1
Style Transfer
Es ist mit diesem Algorithmus möglich, den Stil eines Gemälde auf eine
gewünschte “Skizze” zu übertragen.
Der Prozess funktioniert folgendermaßen:
• An das Script wird das Gemälde fig. 5.1 übergeben.
• Aus das Gemälde wird eine art Muster(semantic annotations) erzeugt.
• An das Script wird das gewünschte Layout fig. 5.2 übergeben.
• Es wird ein neues Gemälde fig. 5.3 generiert.
Falls ein Fehler auftritt, gibt es zwei Wege ihn zu beheben. Man kann entweder mehr von dem “Quell Gemälde” an das Script übergeben oder die
Semantic annotaion per Hand verbessern [Blo].
Abbildung 5.2: gewünschte Layout
[Blo]
Abbildung 5.1: Original Gemälde
[Ren]
Abbildung 5.3: Output
[Blo]
5.3.2
Pixel Art Upscaling/Verbesserung
Eine zweite Anwendung des NeuralDoodle Script ist die Upscaling und Echtung(Die Bilder scheinen Echte Bilder zu sein und nicht von einem Computer
erzeugt) von Pixel Art fig. 5.4 [Cha]. Der Vorgang läuft sehr ähnlich wie der
Style Transfer. Das Script läuft Iterativ. Nach ungefähr 100 schritte ist es
möglich die ausgegebenen Bilder mit Echte zu verwechseln fig. 5.5.
23
Abbildung 5.4: Start Bild
[Cha]
5.4
Abbildung 5.5: Output
[Cha]
Tensor Flow
TensorFlow ist eine Schnittstelle für die Implementierung und Ausführung
von Lernalgorithmen. Es wurde von google entwickelt und wird in vielen
Google-Applikationen, wie z.b. Google Photos, und YouTube benutzt. Es
ist gut Skalierbar und kann in vielen verschiedenen Systemen (von Desktops
zu Servern) laufen [Goo].
5.4.1
Geschichte
Es ist die zweite Generation des “Deep Lerning neural Network” Systems
und wurde von “Google Brain Team” im Novermber 2015 als Open Source Project unter “Apache 2.0 license” veröffentlicht. Im Mai 2016 kündigt
Google die Entwicklung eines Chips für “Deep Lerning” neuronale Netze,
besonders für TensorFlow geeignet [Goo].
5.4.2
Implementation
TensorFlow ist in Python programmiert. Die Nutzer Anwendungen können
in Python bis v3.5 oder in C++ implementiert werden [Res15]. Die Architektur von TensorFlow sieht aus wie eine Art Grafik: das “Data Flow Graph”.
Die Knote stellen sowohl die verschiedene Operationen als auch Variablen
und Output und Input des Programms dar. Die Kanten , auch Tensor genannt, repräsentieren den Fluss von Informationen [Res15]. Das Merkmal
von TensorFlow ist, dass eine beliebige Anzahl von Knoten Parallel berechnet werden können fig. 5.6.
24
Abbildung 5.6: Data Flow
Graph
[Goo]
5.4.3
Anwendungen
TensorFlow wird offiziell in den folgenden Google Produkten angewendet:
• Google Photos: Bilder werden dank des neuronale Netz erkannt und
kategorisiert
• Google Maps und StreetView
• Google Translate: Der Satzbau wird erkannt um bessere Übersetzungen
zu erzeugen
• YouTube: Wie bei Photo, die Videos werden kategorisiert
5.5
Data minig
Der Zweck von Data minig ist der Aufbereitung von Daten und sinnvoller
Korrelationen zwischen die aufarbeitete Daten zu finden. Eins der Probleme
das wir heute mit Data mining haben, ist das die Menge von Daten zu groß
um von normale Algorithmen oder Menschen untersucht zu werden. Die
Anwendung von Neuronalen Netzen liefert, in manchen Fällen, undenkbare
Ergebnisse im Vergleich zu den vorherigen Vorgängen [wuJWS].
25
Leider sind Neuronale Netze beim Data minig nicht verbreitet. Die Hauptgründe sind:
• Um Sinnvolle Daten zu erhalten ist die Lernphase zu lang.
• Wir sind noch nicht in der Lage genug komplexe neuronale Netze zu
bauen um manche Aufgaben zu lösen.
• Bei manchen Aufgaben sind neuronale Netze nicht nötig oder liefern
schlechtere Ergebnisse.
26
Abbildungsverzeichnis
3.1
3.2
3.3
3.4
3.5
3.6
3.7
3.8
3.9
3.10
3.11
Visuelle Darstellung eines Perzeptons . . . . . . . .
Visuelle Darstellung eines erweiterten Perzeptrons
Und-Wahrheitstabelle . . . . . . . . . . . . . . . .
Und linear separiert . . . . . . . . . . . . . . . . .
Und-Perzeptron . . . . . . . . . . . . . . . . . . . .
Oder-Wahrheitstabelle . . . . . . . . . . . . . . . .
Oder linear separiert . . . . . . . . . . . . . . . . .
Oder-Perzeptron . . . . . . . . . . . . . . . . . . .
Implikation-Wahrheitstabelle . . . . . . . . . . . .
Implikation linear separiert . . . . . . . . . . . . .
Implikation-Perzeptron . . . . . . . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
11
11
14
14
14
14
14
14
14
14
14
4.1
4.2
4.3
4.4
4.5
4.6
4.7
4.8
4.9
Neuronales Netz . . . . . . . . . .
Zustandsbaum . . . . . . . . . . .
Lernprozess eines SOMs . . . . . .
Zufällig generiertes Netz . . . . . .
Netz nach 10 Trainingschritte . . .
Netz nach 100 Trainingschritte . .
Netz nach 1.000 Trainingschritte .
Netz nach 10.000 Trainingschritte .
Netz nach 100.000 Trainingschritte
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
17
19
20
21
21
21
21
21
21
5.1
5.2
5.3
5.4
5.5
5.6
Original Gemälde .
gewünschte Layout
Output . . . . . .
Start Bild . . . . .
Output . . . . . .
Data Flow Graph .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
24
24
24
25
25
26
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
27
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Literaturverzeichnis
[Blo]
Neuraldoodles.
[Cha]
Alex J. Champandard. enhance pixel art.
[Fü07]
J. Fürnkranz. Reinforcement learning, 2007.
[Goo]
Google.
[Kri05]
D. Kriesel. Ein kleiner Überblick über neuronale netze, 2005.
[Kri07]
David Kriesel. Ein kleiner Überblick über neuronale netze, 2007.
[Lip]
Lippe. Einführung in neuronale netze.
[oA15]
University of Adelaide. Merkmale biologischer netze, welche für
neuronale netze übernommen wurden, 2015.
[Ren]
Pierre Auguste Renoir. The banks of the river.
[Res15]
Google Research. Tensorflow: Large-scale machine learning on
heterogeneous distributed systems, November 2015.
[Sch95]
Uwe Schöning. Das perzeptron-konvergenztheorem, 1995.
[Set]
SethBling. Mari/o - machine learning for video games.
[Str00]
Stefan Strecker. Künstliche neuronale netze – aufbau und funktionsweise, 2000.
[unka]
unknown. Biologische motivation neuronaler netze.
[unkb]
unknown. Merkmale biologischer netze, welche für neuronale netze
übernommen wurden.
[Wik16a] Wikipedia. Bestärkendes lernen, 2016.
[Wik16b] Wikipedia. Datenkompression, 2016.
[Wik16c] Wikipedia. Künstliche neuronales netz, 2016.
28
[Wik16d] Wikipedia. Perceptron, 2016.
[Wik16e] Wikipedia. Reinforcement learning, 2016.
[Wik16f] Wikipedia. Self organizing map, 2016.
[Wik16g] Wikipedia. Self organizing map, 2016.
[WM]
Prof. Dr. Wolfram-M.Lippe. Einführung in neuronale netze.
[wuJWS] Mark w.Craven und Jude W. Shavlik. Using neural networks for
data mining.
29