• Keine Ergebnisse gefunden

Hebb-Regel

Im Dokument Künstliche Intelligenz (Seite 44-0)

Xn

j=1

wijxj

Ein sehr wichtiger Aspekt dieser Beschreibung ist hierbeif. Oft wird hierfür eineSchwellwertfunktion (oder auch Heavisidesche Stufenfunktion genannt), also

f(x) =HΘ(x) =

0 falls x <Θ 1 sonst

Fügt man nun fürxdie Summe aus dem Neuron ein, so lässt sich erkennen, dass diese Funktionsvorschrift der des Perzeptrons entspricht.

Für weitere Berechnungen ist die Stufenfunktion aufgrund ihrer Unstetigkeit jedoch ungeeignet; Aus diesem Grund gibt es dieSigmoid-Funktion, die man sich als stetige Alternative für den Schwellwert vorstellen kann:

f(x) = 1 1 +ex−ΘT

wobei T beeinflusst, wie Stark die Funktion um Theta „springt“; Je größer das T (z.B. 100), desto flacher die Steigung. BeiT = 0,01ist die Steigung wiederum recht stark.

Zudem wurde im Gehirn analysiert, dass Synapsen, die oft Informationen austauschen, gestärkt werden, und Synapsen, die selten Informationen austauschen, schwächer werden bis sie absterben. Um dieses Phä-nomen auch in Neuronalen Netzen abzubilden, gibt es dieHebb-Regel:

Definition 7.1: Hebb-Regel

Gibt es zwischen zwei Neuronen j und i eine Verbindung xji, sind bei einer Übertragung beide Neuronen (fast) gleichzeitig aktiv (da Neuronj feuern, und Neuroni empfangen muss). Jedes Mal, wenn dies der Fall ist, wird das Gewichtwjiverstärkt. Eine mögliche Formel für die Gewichtsänderung

∆wji=ηxjxi

wobeiη eine positive Konstante ist, die die Lernrate der Neuronen bestimmt.

Mit dieser Herangehensweise werden Verbindungen jedoch nur stärker, nie aber schwächer. Aus diesem Grund gibt esHopfield-Netze, bei denen die Neuronen wieder diskret nur Werte von±1annehmen können.

Sind die Vorzeichen der beiden Neuronen zu einem Zeitpunkt unterschiedlich (und ihre Korrelation somit negativ bzw. gegensätzlich), so wird ihre Verbindung geschwächt. In der Praxis kommen sie jedoch selten zum Einsatz.

7.1 Lineare Netze

Um das „Lernen aus Fehlern“ abzubilden um dies auch in Neuronalen Netzen abzubilden wird wieder mit Trainingsdaten gearbeitet. Hierbei gibt esNPaare an Inputvektorenqund zugehörigen Zielvektoren (targets)

Weitere Zusammenfassungen von Malte Jakob gibt es unter i-malte.jimdofree.com

t; Oft sind beide normiert und weisen Werte zwischen 0 und 1 auf. Die Vektoren müssen nicht zwangsweise dieselben Dimensionen haben. Insgesamt lassen sich unsere Trainingsdaten also beschreiben als

T ={(⃗q(1), ⃗t(1)), . . . ,(⃗q(N), ⃗t(N))}

mit ⃗q(p) [0; 1]n und⃗t(p) [0; 1]m. Nun betrachten wir unser Neuronales Netz als eine Funktion f, und wir möchten ein Netz, das aus den Inputvektoren die Zielvektoren richtig berechnet;der Fehler sollte also möglichst klein sein. Um dies zu überprüfen verwenden wir dieMethode der kleinsten Quadrate. Hierbei soll die Funktion

XN p=1

f(⃗q(p))−⃗t(p)2

also die Abstände (durch das Quadrieren immer positiv) zwischen dem Ergebnis der Funktion und dem tatsächlichen Ergebnis, minimiert werden.

Für lineare neuronale Netze lassen wir die Sigmoid-Funktion weg und konzentrieren uns nur auf das Optimieren des Gewichtsvektors. Somit ergibt sich unsere Summe der kleinsten Quadrate in der Formel:

E(w) =⃗

Diese muss nun minimiert werden. Unsere Drehschraube ist hier, wie bereits erwähnt, der Vektor w. Im⃗ Normalfall findet man Extremstellen über das Bilden der Ableitung; Das wird auch hier gemacht – für jede Komponente vonw. Wir leiten also partiell ab und erhalten für jede Komponente⃗ j = 1, . . . , ndie Formel

∂E

Schließlich können wir noch durch 2 Teilen, und dasq(p)j in die Summe multiplizieren, sodass wir folgende Gleichung erhalten:

Da es sich bei beiden Summen um endliche Summen handelt, können wir diese vertauschen (da die Addition ja kommutativ ist):

nun können wirwiaus der inneren Summe herausnehmen, da dasija nur von der äußeren Summe abhängt:

Xn

Schließlich können wir die rechte Summe noch auf die andere Seite addieren, sodass sich folgende Gleichung ergibt:

Bei genauerer Betrachtung erkennt man, dass es sich hierbei nun um ein lineares Gleichungssystem handelt, dennq(p), q(p) undt(p) sind gegeben, sodass die einzige Unbekannte das wi ist. Innerhalb dieser Gleichung wird von 1 bis n aufsummiert, womit wir n unbekannte haben. Allerdings haben wir auchn Mal partiell abgeleitet, sodass wir nunnlineare Gleichungen mitnUnbekannten haben. Diese Normalgleichungen lassen sich natürlich auch als Matrixgleichung schreiben:

A·w⃗ =⃗b

Wenn die MatrixAinvertierbar ist, dann gibt es mindestens eine Lösung. Ist sie zudem positiv definit(, was gegeben ist, wenn alle Elemente paarweise verschieden sind), dann ist eine eindeutig gefundene Lösung ein absolutes Minimum.

Für das Aufstellen der MatrixAmüssen wir für jedes derN Inputvektoren mit zwei verschiedenen Indizes durch den Vektor durch-iterieren, womit sich eine Rechenzeit vonΘ(N·n2)ergibt. Für das Lösen des LGS wird eine Rechenzeit vonΘ(n3)benötigt.

Gibt es mehr als ein Ausgabeneuron, so werden die Gewichte für die einzelnen Neuronen separat trainiert.

7.1.1 Delta-Regel

Bisher haben wir alle Daten auf ein Mal gelernt. Kommen nun neue Daten hinzu, müssen wir den kom-pletten Datensatz noch ein Mal lernen, was sehr viel Zeit beanspruchen kann. Eine Lösung hierfür ist das inkrementelle Lernen. Hier wird daswnach jedem Datensatz angepasst:

wj =wj+ ∆wj

Der Startwert vonW ist hierbei zufällig gewählt.

Hier geht es nach wie vor um Fehlerminimierung, weshalb wir erneut die Summe der kleinsten Quadrate Ebilden und diese Partiell nach ∂w∂E

j ableiten. Nun haben wir für diesen Inputvektor denGradientenvonE

∇E=

Der Gradient ist eine Ebene, die die aktuelle Steigung der Formel in diesem Punkt angibt. Wir möchten den Tiefpunkt finden und folgen dem Gradienten deshalb in negativer Richtung, was zu einem Faktor von

1 führt. Zudem können wir noch eine Schrittgrößeη angeben, mit der wir in Richtung Tal gehen wollen.

Zu große Schritte sorgen dafür, dass wir immer an dem Minimum vorbeilaufen, zu keine Schritte brauchen sehr lange. Diesesηmultiplizieren wir ebenfalls mit dem Gradienten. Da wir bei den Umformungen sowieso durch zwei Teilen müssen, um den Faktor 2 von der Ableitung herauszurechnen, multiplizieren wir stattdessen einfach mit η2. Diesen Schritt wiederholen wir nun für jeden Inputvektor und die Summe unserer Schritte is unser endgültiger Gradientenabstieg. Es ergibt sich also die Formel:

∆wj =−η

Manchmal kann es auch sinnvoll sein, den Gewichtsvektor bereits während der Durchläufe zu verändern;

Dies nennt sich die Inkrementelle Delta Regel.

7.1.2 Logistische Regression

In beiden Fällen führen wir im Grunde eine lineare Regression durch. Ergibt sich der Output eines Neurons allerdings nicht nur durch die Summe, sondern auch durch das Anwenden einer nichtlinearen Funktion , so benötigen wir Logistische Regression. Wie bereits erwähnt wird hier oft die nichtlineare Sigmoidfunktion

σ(x) = 1 1 +eΘ−xT

verwendet. Am SchwellwertΘhatσ(x)immer den Wert 12. Somit kann eine Klassifikation in zwei Klassen erfolgen über

Klasse=

1 falls σ(Pn

i=1wixi)12 0 sonst

Somit ergibt sich als unsere neue Fehlerfunktion E(w) =⃗ 1

Weitere Zusammenfassungen von Malte Jakob gibt es unter i-malte.jimdofree.com Für die Ableitung vonσ(x)gilt

σ(x) =σ(x)(1−σ(x)) Mit Partieller Ableitung erhalten wir somit die Formel

XN p=1

(w⃗⃗q(p)−⃗t(p))·w⃗⃗q(p)·(1−w⃗⃗q(p))·q(p)j

Nun wird mittels Gradientenabstieg wieder unser∆wjberechnet, das sich entsprechend aus folgender Formel ergibt:

∆wj =ηX

(tNp=1(⃗t(p)−w⃗⃗q(p))·w⃗⃗q(p)·(1−w⃗⃗q(p))·qj(p)

So lässt sich ebenfalls ein Klassifikator trainieren. Zudem lässt sichσ(⃗w⃗x)auch als die Wahrscheinlichkeit fürP(Klasse= 1|⃗x)interpretieren.

7.2 Backpropagation

Der Backpropagation-Algorithmus ist auf den ersten Blick nicht groß von der logistischen Regression. Auch hier wird sie Sigmoid-Funktion auf die Inputvektoren angewandt und mittels Gradientenabstieg die Summe der Fehlerquadrate minimiert. Der einzige Unterschied ist die Anzahl der Schichten. Während wir bisher eine Input- und eine Output-Schicht hatten, liegt nun noch mindestens eine weitere Schicht dazwischen. Da nun die verschiedenen Komponenten auf dem Weg zum Output mindestens ein Mal nochmal mit einem Ge-wichtsvektor multipliziert werden, ist das entstehende Gleichungssystem nicht mehr linear – und nichtlineare Gleichungssysteme sind nicht ohne weiteres Lösbar.

Aus diesem Grund wird hier Rekursiv gearbeitet. Man berechnet nicht alle Gewichtsvektoren der einzel-nen Neuroeinzel-nenj auf ein Mal, sondern nacheinander; Zuerst von der Outputschicht zur verdeckten Schicht eines darunter, dann wieder zur nächst-unteren Schicht usw. Dabei berechnet sich die Veränderung der Komponenteides Gewichtsvektors für das Neuronj ∆wjiwie folgt:

(p)wji=ηδ(p)j x(p)i

Wobei sichδj(p) wie folgt ergibt:

δj(p)= (

x(p)j (1−x(p)j )(t(p)j −x(p)j ) fallsj Ausgabeneuron ist x(p)j (1−x(p)j )P

kδ(p)k wkj

wobei k der Index der Neuronen in der darüberliegenden Schicht ist. Im Falle einer verdeckten Schicht ist erkennbar, dass diese Berechnung rekursiv ist, da sie immer auf die bereits existierenden Berechnungen der oberen Schichten zurückgreift.

Dadurch, dass in jeder Schicht eine nichtlineare Funktion angewandt wird, kann das Netz auch nichtlineare Abbildungen lernen. Werden nur zwei Schichten, oder lineare Abbildungen verwendet, ist das nicht möglich.

Zudem lässt sich auch hier der Bias-Trick anwenden, um Funktionen zu berechnen, die nicht durch den Ursprung gehen. Bei jeder Schicht muss ein Neuron angehängt werden, das konstant denselben Wert weiter-gibt.

7.2.1 Probleme und Verbesserungen

Eines der größten Probleme des Backpropagation-Algorithmus ist der Gradientenabstieg, der ein nichtlineares Problem darstellt. Wird hier daη falsch gewählt kann es die Lösungsfindung sehr erschweren. Aus diesem Grund wird ein sogenannter Impulsterm verwendet, der die berechnete Richtung des aktuellen∆(p)wij der aktuellen Iteration t abschwächt, indem er einen Teil γ des vorherigen Ergebnisses darauf addiert (das Momentum wird also etwas beibehalten). Dies geschieht über die folgende Funktion

(p)wij(t) =ηδ(p)j x(p)j +γ∆(p)wij(t1)

Die so entstehenden Gegenbewegung sorgt bei starker Oszillation dafür, dass sich alles wieder einpendelt.

Da es sich hierbei um eine heuristische Verbesserung handelt, ist das allerdings nicht immer der Fall.

Ein weiterer Ansatz ist eine andere Aktivierungsfunktion namens Rectangular Linear Unit, die sich wie folgt berechnet:

f(x) = max{0, xΘ}

Diese Funktion entspricht einer einfachen Gerade, die erst beiΘanfängt und nicht beschränkt ist; Davor ist sie 0. Da sie nicht beschränkt ist wirkt sie demVanishing GradientProblem entgegen, bei dem der Gradient bei geringer Steigung ebenfalls sehr gering wird und das Backpropagation dadurch kleinere und mehr Schritte machen muss. Durch die Unbeschränktheit können die Schritte wieder durchaus größer ausfallen – aber auch das ist eine heuristische Verbesserung und somit nicht immer gültig.

7.3 Deep Learning

Backpropagation funktioniert mit drei Lagen und ermöglicht es nichtlineare Funktionen zu lernen; Diese sind allerdings nicht all zu komplex. Fugt man mehrere Lagen hinzu, die jeweils auf dem bereits verarbeiteten Output der vorhergehenden Lage lernt. Hier kommt es allerdings zu Konvergenzproblemen, weshalb kein unendlich großes Backpropagation-Netzwerk möglich ist.

Zudem kommt es bei großen Merkmalsmengen zu sehr langen Rechenzeiten.

7.3.1 Stacked Denoising Autoencoder

Der erste Ansatz teilt das gesamte Netz in zwei Teile auf. Die obersten drei Schichten bilden ein Backpropagation-Netz wie wir es bereits kennengelernt haben. Die Lagen davor hingegen funktionieren nur ohne Lehrer, da wir die Methode der kleinsten Quadrate nicht bis in tiefere Lagen ableiten können, um den Fehler zu minimieren.

Für das Umsetzen des unsupervised learning gibt es verschiedene Ansätze. Einer davon ist derStacked De-noising Autoencoder. Hier wird für jede Merkamlsschicht ein eigenes Backpropagation-Netz erstellt, welches jedoch eine Besonderheit hat, denn der Input ist gleich dem Output; Alsof(⃗x) =⃗x. Die verdeckte Schicht des Netzes hat hierbei aber absichtlich weniger Neuronen als⃗x, sodass das Netz den Vektor komprimieren, und damit generalisieren muss. Somit gelingt es uns besser das Rauschen in den Daten herauszufiltern (De-noising). Haben wir dieses Backpropagation-Netz wie gewohnt fertig trainiert, so frieren wir die Werte für die Gewichtsvektoren ein und verändern sie im restlichen Verlauf nicht mehr. Danach gehen wir an die Zweite Merkmalsschicht, die wieder genau gleich aufgebaut ist: Ein Backpropagation-Netz mitf(⃗x) =⃗xund einer verdeckten Schicht mit weniger Neuronen. Allerdings ist der Input für dieses Netz der Output der vorherigen Netzwerkschicht. Aufgrund dieser andauernden Wiederholung wird kommt dasStackedim Namen zustande, da wir die einzelnen Netzwerke aufeinander Stapeln.

Dies wird beliebigoft wiederholt, bis wir schließlich die Inputvektoren an das eigentliche Backpropagation-Netz an der Spitze übergeben.

7.3.2 Convonutional Neural Networks

Der Ansatz der Convolutional Neural Networks besteht darin, die Dimensionen zu verringern, indem es sie komprimiert. (z.B. 9 Inputneuronen auf einen abzubilden). Hierfür wird ein Inputvektor als Matrix aufgefasst. Zudem werden ein oder mehrere Filter bestimmt, die ebenfalls Vektoren sind, die als Matrix interpretiert werden. Je nachdem wie groß die entstehende Filter-Matrix ist, erhält die Input-Matrix einen Puffer aus 0-Zeilen und -Spalten; Denn jedes Element kann Mittelpunkt der Filtermatrix werden; Wird nun ein Eck-Element als Mittelpunkt gewählt (z.B. oben links), so müssen oberhalb und links davon genug Spalten sein, damit die Filtermatrix noch „reinpasst“. Dann wird aus dem Bereich der Input-Matrix, der von der Filter-Matrix bedeckt wird, und den Werten der Filter-Matrix das Skalarprodukt berechnet, und noch ein Bias-Wert verwendet. Der so entstehende Wert kommt an die entsprechende Stelle des Output-Vektors.

Danach wandert der Mittelpunkt der Filtermatrix um eine vorgegebene Anzahl an Elementen in der Zeile weiter (der sogenannteStride); Ist er am ende der Zeile angekommen, so geht er dieselbe Anzahl an Zellen nach unten und beginnt in dieser Zeile wieder am Anfang.

So wird schließlich die komplette Input-Matrix durchgearbeitet und eine entsprechend Output-Matrix ge-neriert. Dies kann mit verschiedenen Filtern durchgeführt werden, um verschiedene Ergebnisse zu bekommen.

Wie man die optimalen Werte für Filtergröße, Filterwerte, Bias-Werte etc. berechnet ließe sich theoretisch per Kreuzvalidierung berechnen, aber um alle möglichen Kombinationen auszuprobieren würde man sehr viel Zeit benötigen.

Weitere Zusammenfassungen von Malte Jakob gibt es unter i-malte.jimdofree.com

Haben wir für die verschiedenen Werte erfolgreich gefiltert, führen wirPooling durch. Hierbei nehmen wir wieder ein kleines Rechteck an Elementen, diesmal allerdings aus der gefilterten Matrix. Von den in dem Rechteck enthaltenen Elementen nehmen wir entweder das Maximum oder den Durchschnitt, welchen wir dann als entsprechenden Wert in die gepoolte Matrix einspeichern. Somit wird die Dimensionalität drastisch verringert.

So wird klassischerweise Convolution und Pooling abgewechselt, bis der Inputvektor stark reduziert wieder in ein klassisches Backpropagation-Netz eingespeist wird, das uns am Ende ein Ergebnis ausspuckt.

Trainiert wird anhand der Fehlerquadrate zum einen natürlich das Backpropagation-Netz, aber auch wieder Schritt für Schritt die Werte für die Filtermatrizen und Bias-Werte.

Bildverarbeitung

Solche Filter kommen auch in der klassischen Bildverarbeitung vor. Hier werden sie allerdings von den Programmierern selbst bestimmt. Bei komplexeren Formen, die erkannt werden sollen, tut sich der Mensch allerdings irgendwann schwer, solche Matrizen zu bestimmen. Aus diesem Grund kann es hier sehr praktisch sein, CNNs anzuwenden, die die Filter automatisch bestimmen

7.3.3 Lösung für den Fluch der Dimensionalität

Wie bereits gesagt führen große Merkmalsdimensionen zu einer sehr langen Rechenzeit. Um dieses Problem zu beheben lassen sich aus den beiden oben genannten Beispielen folgende Tricks ableiten:

Convolution reduziert die Zahl der Parameter (stark). Durch die Filter gibt es zudem eine sogenannte Translationsinvarianz (= egal wo ein Muster im Datensatz ist, ich erkenne es immer), da der Filter Schritt für Schritt durch die Matrix fährt und anschlägt, sobald das Muster erkannt wurde – ganz egal wo im Bild er sich gerade befindet.

Pooling führt ebenfalls zu einer Dimensionsreduktion

Dropout-Schichten lassen bei der Backpropagation manche Gewichtsanpassungen nicht durch und verhin-dern somit ein Overfitting.

Batch-Normalisierung ist wie µ-σ-Normalisierung, die zwischen jeder Schicht durchgeführt wird. Dabei werden aber nicht von der gesamten Datenmenge Durchschnitt und Standardabweichung berechnet, sondern nur von einem Teil, der dann aber auf die gesamte Menge angewandt wird. Das spart viel Zeit und führt dennoch zu guten Ergebnissen.

ResNet verfolgt den Ansatz, dass zwei direkt aufeinanderfolgende Filter-Schichten nicht den Kompletten Inputvektor und die Veränderungen lernen müssen, sondern nur die Veränderungen. Dies geschieht, indem auf das Ergebnis der beiden Filter nochmal der Inputvektor x addiert wird.

Hyperparametervalidierung behandelt heurustische Verfahren zur Optimierung der meta-Parameter.

7.3.4 GAN-Netze

GAN-Netze sind aktuell sehr beliebt, da es ihnen möglich ist, kreativ tätig zu sein und z.B. neue Bilder zu malen. Hierfür werden zwei Netze gleichzeitig trainiert: Ein Netz, das zufällig Bilder (z.B. Gesichter) generiert, und ein Netz, das Generierte und echte Bilder (bzw. Gesichter) unterscheidet (ein Discriminator-Netzwerk).

Das Discriminator-Netzwerk wird nun mit echten und generierten Bildern mittels Backpropagation trai-niert. Die Ableitungen werden auch an das Generator-Netzwerk weitergegeben, allerdings mit invertierten Vorzeichen – denn das Ziel dieses Netzwerks ist genau das Gegenteil: Nicht falsche Bilder gut erkennen, sondern falsche Bilder gut generieren, sodass es nicht erkannt wird.

7.4 Vor- und Nachteile von Neuronalen Netzen

Neuronale Netze kommen fast überall zum Einsatz, da sie es ermöglichen komplexe Abbildungen zu lernen und auch robust gegenüber kleineren Störungen sind (wie das Gehirn eben auch).

Allerdings ist es für Menschen nicht mehr möglich, irgendwelche Informationen zu extrahieren oder die Entscheidungen der Netze zu verstehen.

Definitionsverzeichnis

1.1 Mittlerer Verzweigungsfaktor . . . 5

1.2 Suchproblem . . . 5

1.3 Eigenschaften von Suchproblemen . . . 5

1.4 Verzweigungsfaktor. . . 5

1.5 Effektiver Verzweigungsfaktor . . . 6

2.1 Eigenschaften von Suchalgorithmen . . . 7

2.2 Breitensuche . . . 8

2.3 Tiefensuche. . . 9

2.4 Iterative Deepening . . . 11

2.5 Heuristische Funktionen . . . 12

2.6 Alpha-Beta-Pruning . . . 16

3.1 Syntax der Aussagenlogik. . . 17

3.2 Erfüllbarkeit von Formeln . . . 18

3.3 Konjunktive Normalform . . . 18

4.1 Ereignisse . . . 19

4.2 Laplace-Wahrscheinlichkeit . . . 19

4.3 Bedingte Wahrscheinlichkeit . . . 20

4.4 Unabhängige Ereignisse . . . 20

4.5 Maximum der Entropiefunktion. . . 22

4.6 Indifferente Variablen . . . 23

5.1 Bedingte Unabhängigkeit . . . 24

5.2 Konditionierung . . . 26

5.3 Bayes-Netze . . . 28

6.1 Maschinelles Lernen . . . 29

6.2 Terminologie für maschinelles Lernen . . . 29

6.3 Lernfähiger Agent . . . 30

6.4 Lineare Separabilität. . . 31

6.5 Perzeptron . . . 31

6.6 Naive-Bayes-Formel . . . 39

7.1 Hebb-Regel. . . 44

Abbildungsverzeichnis

5.1 Das Bayes-Netz zu dem Alarm-Beispiel . . . 25

Tabellenverzeichnis

2.1 Uninformierte Suchalgorithmen im Vergleich . . . 11

3.1 Wahrheitstabellen für alle Operationen der Aussagenlogik . . . 17

6.1 Normalisierung und Algorithmen . . . 34

6.2 Eine Schematische Konfusionsmatrix für einen binären Classifier . . . 35

Im Dokument Künstliche Intelligenz (Seite 44-0)