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