530 likes | 821 Views
Neuronale Netze. Folien, Aufgaben sind unter www.computer-networking.de~glaeser zu finden. A. Neuronale Netze. Neuronale Netze. Nachbildung des Gehirns. Gehirn = Viele Knoten, von denen viele untereinander verbunden / vernetzt sind.
E N D
Neuronale Netze Folien, Aufgaben sind unter www.computer-networking.de\~glaeser zu finden.
A Neuronale Netze Neuronale Netze Nachbildung des Gehirns Gehirn = Viele Knoten, von denen viele untereinander verbunden / vernetzt sind durch elektrische Signale erregen sich die Knoten gegenseitig Erregungsstärke von A durch die anderen Knoten durch die Stärke der Verbindungen bestimmt Stärke der Verbindung = gespeicherte Information ! Oft genutzte Verbindungen werden starke Verbindungen = Lernen
Neuronale Netze Verwendung : Mustererkennung / Klassifikation Muster A Muster B Muster C ... Neuronales Netz verrauschtes Muster (Aktienkurs)
Neuronale Netze Nettoinput e1 w1i e2 oi w2i Outputfunktion oi = O(ai) Output ... Neuronenfunktion oi = s( neti-q ) wni en Gewichte Input Schwellwert Stufenfunktion
1 wenn x 0 { Os(x) = 0 wenn x < 0 Neuronale Netze Outputfunktion O O kann eine Stufenfunktion sein O 1 0 x O kann eine Fermifunktion sein O 1 Of(x) = 1 / (1+exp(-x) ) x 0
Neuronale Netze Beschreibung von Netzwerktypen Topologie Lernregel Neuronenfunktion „Betriebsweisen“ der Netze Lernphase überwachtes Lernen e und o vorgegeben nicht - überwachtes Lernen nur e Ausführungsphase
Neuronale Netze Perzeptron e1 Topologie: o1 e2 o2 e3 einlagig = nur eine Neuronenschicht
Neuronale Netze Perzeptron Outputfunktion ist die Signumsfunktion: { +1 wenn x 0 sgn(x) = -1 sonst Outputfunktion: oi = sgn(neti - q) Lernregel ( = wie komm‘ ich an die Gewichte ): Hebbsche Regel: Lernrate Soll Wert 0 < h 1
Neuronale Netze Was kann ein Perzeptron ? Klassifizierung anhand von Merkmalen Beispiel: Perzeptron mit zwei Eingängen (Merkmalen) e1 w1 o w2 e2
Neuronale Netze Was kann ein Perzeptron ? (Fortsetzung) o = sgn( w1e1 + w2e2 - q) => Unterscheidung in zwei Klassen möglich: o = -1 Klasse A o = +1 Klasse B e2 Grenze zwischen A und B: sgn „kippt um“sgn(x) kippt um, wenn x = 0 e1 sgn( w1e1 + w2e2 - q) = 0 ergibt Geradengleichung: e2 = - w1/w2e1 + q / w2
e2 B B B B B B B B A A B A B A A e1 A A Neuronale Netze Was kann ein Perzeptron ? (Fortsetzung) ergibt Geradengleichung: e2 = - w1/w2e1 + q / w2 Für alle Punkte (e1 ,e2) mit e2 kleiner als das e2 wie oben ausgerechnet, wird das Argument von sgn negativ, d.h. o = -1, d.h. Klasse A
Neuronale Netze Was kann ein Perzeptron ? Das Perzeptron kann anhand von Merkmalen eine Unterscheidung in Klassen vornehmen Mit m Ausgangselementen können 2m Klassen unterschieden werden Was kann ein Perzeptron nicht ? n Merkmale bilden im n - dimensionalen Merkmalsraum eine n-1 dimensionale Ebene, die eine Zuordnung der Merkmalsteil- räume zu Klassen erlaubt. Da es sich immer um Ebenen handelt, spricht man von linear separierbaren Klassen, wenn sich die zugehörigen Merkmals- teilräume durch die Ebenen trennen lassen
e2 B A e1 Neuronale Netze Was kann ein einlagiges Perzeptron nicht ? A e2 e2 B B A A e1 e1 nicht linear separierbar linear separierbar nicht linear separierbar
Neuronale Netze Was kann ein Perzeptron nicht ? XOR Problem e2 (0,1) T (1,1) F nicht linear separierbar T F (0,0) e1 (1,0)
Neuronale Netze Mehrlagige neuronale Netze wkl wij wjk e1 o1 e2 o2 ... ... eN oN j i k l Neuronenfunktion:
Neuronale Netze Mehrlagige Perzeptrons Mehrlagige Perzeptrons sind in der Lage hinreichend komplexe Merkmalsregionen zu bilden, mit denen beliebige Klassen von Eingabemustern klassifiziert werden können. Problem beim Lernen: für innere Lagen (hidden layers) kann kein Fehler zwischen gewünschtem und tatsächlichem Output angegeben werden
Neuronale Netze Mehrlagige Perzeptrons Lösung Backpropagation Algorithmus Outputfehler des mten Neurons Lernregel: wmn(t + 1) = wmn(t) + hdm xn m liegt weiter zum Ausgang hin ! h > 0
Neuronale Netze Backpropagation Algorithmus a) Alle Gewichte = zufällige Werte: -0.1 < wmn < 0.1 b) Anlegen Musterinput e, Messen von c) Bestimmen Fehler dider Output Schicht Ableitung von sF ! e) Bestimmen der Gewichte zwischen Output Schicht und innerer Schicht Rekursive Berechnung der Fehler dnder nächst inneren Schichten m läuft in der Schicht näher am Ausgang
Bei der Berechnung der „Deltas“ für jedes Neuron einer Schicht müssen in einem Iterationsschritt zuerst die neuen Gewichte berechnet werden, und dann erst mit den neuen Gewichten die Deltas
Neuronale Netze Fermi Funktion Ableitung der Fermi Funktion
a b c netc1 = ob1* wcb11+ ob2* wcb12 wba11 1 wcb11 1 c1 = sFermi‘(netc1) *(osoll- oc1) wba21 1 wcb11= h * c1* ob1 wcb12 wba12 wcb12= h * c1* ob2 2 2 wba22 b1= sFermi‘(netb1) *c1 * wcb11 b2= sFermi‘(netb2) *c1 * wcb12 ob1=sFermi(oa1* wba11 + oa2 * wba12) wba11= h * b1*oa1 ob2=sFermi(oa1* wba21 + oa2 * wba22) a1= sFermi‘(neta1) * (b1 * wba11+ b2 * wba21) oc1= sFermi( ob1* wcb11+ ob2* wcb12)
Maximum Error lokales Minimum globales Minimum Gewicht Genetischer Algorithmus Vermeidung von lokalen Minima
1. Erzeugung einer Population sind die Gewichte alle Gewichte = Vektor beliebige, zufällige Werte ...
2. Selektion aus dem Pool werden zufällig zwei Paar geholt. Von jedem Paar wird der Vektor mit dem geringeren error ausgewählt also bleiben 2 Vektoren übrig = Elternpaar -“has been proven to be extremly useful for speeding up the convegence of the genetic search process“
3. Kreuzung (Crossover) • 2 Elternvektoren brüten 2 Kindvektoren aus • (bei jeder Kombination findet eine Kreuzung nur mit einer festen Wahrscheinlichkeit p statt) • Wenn Kreuzung stattfindet, dann mit einer 1/3 Wahrscheinlichkeit nach jeweils einer der folgenden 3 Methoden:
Shuffle Crossover: nach einer Binomialverteilung wird eine Zahl k von zu vertauschenden Gewichten in dem Vektorenpaar bestimmt. Dann werden zufällig k Gewichte vertauscht w = mittlere Wahrscheinlichkeit das zwei Gewichte vertauscht werden (freier Parameter) Häufigkeit von k k i = Index des Gewichts im Vektor p = Zahl Gewichte im Vektor
P p=0,9 p=0,1 p=0,5 Anzahl Täusche
b) Arithmetic Crossover: Für das Vektorpaar wird eine Zufallszahl w zwischen 0 und 1 gezogenDie beiden Kinder sind Linearkombination der Eltern mit w als Wichtung:1. Kind: w i,k + (1-w) j,k 2. Kind: (1-w) i,k + w j,k
c) Single-point Crossover: Für das Vektorpaar wird ein Integer I gezogen [1, p-1]die Vektorkoeffizienten unterhalb von I werden getauscht
3. Mutation Generationen G = 1,2,..., G* Wahrscheinlichkeit, das ein Vektor mutiert wird: 0,15 + 0,33/G Mutation:
G = aktuelle Generation, G* = maximale Generation r1 und r2 zufällig aus gleichverteiltem Intervall [0,1] s zufällig von standard normalverteilung b = 2 steuert den Grad von nicht Uniformität der Mutation erlaubt stärker lokalisierte Suche bei höheren Generationen
Demo zur Mutation s = findgen(100.)/100. sigma = 0.5 gauss = exp (-s^2/sigma^2) plot, s, gauss,XTitle = "s", YTitle = "wahrscheinlichkeit" s = 0.2 r2 = 0.8 G = FINDGEN(100) GStern = 100. b = 1. mutation = s * (1.-r2^((1.-G/GStern)^b)) plot, G, mutation, XTitle = " generation", YTitle = " delta Gewicht "
4. Auswahlturnier Innerhalb der „Familie“ (2 Vektoren und 2 Kinder) überleben die 2 mit dem geringsten Error -> kommen in die nächste Generation Die Eltern wandern in den Pool zurück (sie können wieder ausgewählt werden) Der obige Prozess ab 2. (Selektion) wird wiederholt bis die neue Generation mit N* Vektoren bevölkert ist
Vorgehen: Bilden einer Population Pärchenbildung / Crossover Mutation der Kinder Selektion innerhalb der Familie Nächste Generation Elitism
5. Elitism = Elitedenken Wenn der beste Vektor der alten Generation besser ist, als der beste Vektor der neuen Generation, darf er den schlechtesten Vektor der neuen Generation ersetzen
Maximum Error lokales Minimum globales Minimum Gewichte Simulated Annealing Vermeidung von lokalen Minima
Analogie mit Abkühlen Festkörper langsames Abkühlen schnelles Abkühlen globales Energieminimum lokales Energieminimum
„Statt immer bergab zu gehen, versuche den größten Teil der Zeit bergab zu gehen“ Anzahl der Iterationen: Lösungsvektor und Errormetrik initialisieren:
Errormetrik = Zahl der Beispiele = output Vektor von Beobachtung i = Soll - output Vektor von Beobachtung i
Temperaturbestimmung: T(j) j
= nur vorgeschlagen, = akzeptiert Lösungsvektor zufällig „stören“ (perturbate) ist KEIN Vektor sondern ein double Fehlerwert zu Metropolis Verhältnis: f > 0
Akzeptierte neuen Vektor - wenn P(j) ist gleichverteilte Zufallszahl zwischen 0 und 1 - oder wenn (mit mit T quer als „ausreichend“ großer von j unabhängiger Konstante würde das System sogar mit Sicherheit das globale Minimum finden – aber zu langsam)
M(j) Wahrscheinlichkeit für Zurückweisung Wahrscheinlichkeit für Akzeptieren j
Warum Faktor f ? hängt von Anzahl der Output Knoten ab M(j) M(j) j
mit mit T quer als „ausreichend“ großer von j unabhängiger Konstante würde das System sogar mit Sicherheit das globale Minimum finden – aber zu langsam
errorMetric = 20 M = exp(- errorMetric /T) PLOT, j, M, thick = 4 errorMetric = 40 M = exp(- errorMetric /T) OPLOT, j, M, thick = 4,color =4 TEK_COLOR Tquer = 100 j = FINDGEN(100)+1 T = Tquer / (1+ALOG(j)) PLOT, j, T, color = 3, thick=4 Tgg = Tquer / ALOG(1+ j) OPLOT, j, Tgg, color = 4 errorMetric = 20 M = exp(- errorMetric /T) PLOT, j, M, thick = 4 Mgg = exp(- errorMetric /Tgg) OPLOT, j, Mgg, color = 4
Neuronale Netze „Winner takes all“ oi = O(ai) Ansätze für die Output Funktion: einfach: oi = s( neti -q ) { O‘(ai) wenn ai = max(...,ak ,...) oi = Winner takes it all: 0 sonst
(Delta Regel: ) Lineare Transferfunktion: s = 1 Neuronale Netze Adaline (adaptive linear neuron) Abwandlung der Perzeptron Lernregel: n ist die Anzahl Eingänge (und Gewichte) des iten Neurons statt (ist - output) wird (ist - Aktivierung) benutzt:
Neuronale Netze Adaline Vorteile: es lernen auch jene Elemente weiter, deren Output schon den richtigen Wert liefern => „Festigung“ der erworbenen Fähigkeiten, denn Elemente mit Aktivitäten dicht am Schwellwert werden so verändert, daß sie stabilere Entscheidungen liefern (d.h. weiter vom Schwellwert entfernt).
w11 e21 e11 w1 o1 w21 w12 o2 w2 e12 w22 e22 e21= SFermi(nettoInput); nettoInput = e12*w21+e11*w11 wneu= wold + eta * delta * e delta = osoll-oist w12 neu = w12 alt + eta * delta22 *e22 delta22 = (delta1 * w1 +delta2*w2)* S‘(e22)