20.11.2013 Aufrufe

Cascade-Correlations-Verfahren anhand des Xor-Problems

Cascade-Correlations-Verfahren anhand des Xor-Problems

Cascade-Correlations-Verfahren anhand des Xor-Problems

MEHR ANZEIGEN
WENIGER ANZEIGEN

Erfolgreiche ePaper selbst erstellen

Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.

Fakultät Informatik und<br />

Mathematik<br />

Fach: Neuronale Netze<br />

Prof. Jürgen Sauer<br />

<strong>Cascade</strong>-<strong>Correlations</strong>-<strong>Verfahren</strong><br />

<strong>anhand</strong> <strong>des</strong> <strong>Xor</strong>-<strong>Problems</strong><br />

Projektbearbeiter:<br />

Friling Olga<br />

Kerlin Stefan<br />

1


Der <strong>Cascade</strong>-Correlation-Algorithmus<br />

Der <strong>Cascade</strong>-Correlation-Algorithmus lässt sich durch zwei Ideen charakterisieren. Die eine<br />

ist die Kaskaden-Architektur, in der verdeckte Neuronen einzeln zu dem Netzwerk<br />

hinzugefügt werden und ihre Eingangsgewichte danach nicht mehr ändern. Die zweite ist der<br />

Lernalgorithmus, der diese verdeckten Neuronen erzeugt und ihre Gewichte bestimmt.<br />

Dieser versucht für je<strong>des</strong> hinzugefügte Neuron den Betrag der Korrelation zwischen der<br />

Ausgabe <strong>des</strong> Neurons und dem restlichen Fehlersignal zu maximieren und auf diese Weise<br />

den Restfehler möglichst stark zu minimieren.<br />

Abb. 1 Die Architektur <strong>des</strong> <strong>Cascade</strong>-Correlation Netzwerks<br />

Die Architektur <strong>des</strong> <strong>Cascade</strong>-Correlation Netzwerks ist in Abb. 1 dargestellt. Zu Beginn <strong>des</strong><br />

Trainings existiert nur die durch die <strong>Problems</strong>tellung vorgegebene Anzahl von Eingabe- und<br />

Ausgabezellen, jedoch keine verdeckten Neuronen. Jede Eingabezelle ist mit jeder<br />

Ausgabezelle durch eine Verbindung mit trainierbarem Gewicht verbunden (helle Quadrate).<br />

Es existiert auch ein Bias-Neuron, <strong>des</strong>sen Ausgabe immer +1 ist und das mit allen<br />

Ausgabezellen verbunden ist.<br />

Die Ausgabeneuronen können eine lineare oder eine nichtlineare Aktivierungsfunktion<br />

besitzen. Die meisten Experimente mit <strong>Cascade</strong>-Correlation wurden bisher mit sigmoiden<br />

Aktivierungsfunktionen wie tangens hyperbolicus f ( x) = tanh( x)<br />

durchgeführt.<br />

Das Lernverfahren fügt nun einzeln verdeckte Neuronen zu dem Netzwerk hinzu. Je<strong>des</strong><br />

neue verdeckte Neuron erhält Eingaben von allen Vorgängern, d.h. von den<br />

Eingabeneuronen und den vorher generierten verdeckten Neuronen. Die Eingabegewichte<br />

dieser Neuronen werden eingefroren, sobald das Neuron dem Netzwerk hinzugefügt wurde.<br />

Nur die Gewichte der Verbindungen zu den Ausgabeneuronen werden weiterhin trainiert. Auf<br />

diese Art und Weise stellt je<strong>des</strong> Neuron der verdeckten Schicht eine Ebene für sich dar.<br />

Der Lernalgorithmus beginnt zuerst ohne verdeckte Neuronen. Die direkten Verbindungen<br />

zwischen Eingabeebene und Ausgabeebene werden über die gesamte Trainingsmenge so<br />

gut wie möglich trainiert, beispielsweise durch die Delta-Regel oder Quickprop. Letzteres<br />

<strong>Verfahren</strong> konvergiert in der Regel schneller.<br />

act<br />

2


Die Formel für von den Gewichten der Ausgabeneuronen abhängige Fehlerfunktion <strong>des</strong><br />

Netzes lautet:<br />

a 1 1<br />

Et( w ) = ( o − y )<br />

p<br />

mit<br />

a<br />

w<br />

n<br />

j<br />

o<br />

pj<br />

y<br />

pj<br />

p<br />

2<br />

∑ ∑ pj pj<br />

(1)<br />

p 2 j:<br />

nj∈A<br />

den Vektor der Gewichte der Neuronen der Ausgabeschicht A<br />

Ausgabeneuron<br />

tatsächliche Ausgabe von Neuron j über alle Muster p<br />

erwünschte Ausgabe von Neuron j über alle Muster p<br />

der Index der Muster<br />

Der Faktor ½ wurde verwendet, damit er sich später gegen eine 2 wegkürzt, die durch das<br />

Differenzieren entsteht. Zur Bestimmung optimaler Gewichte spielt es keine Rolle, ob man<br />

den Fehler oder den halben Fehler minimiert.<br />

Der für die unterschiedlichen Minimierungsverfahren notwendige Gradient der<br />

Fehlerfunktion lässt sich leicht nach der für allgemeine Backpropagation-Netze<br />

hergeleiteten Formel berechnen:<br />

dEt<br />

1<br />

( w<br />

a<br />

) = ∑ f '<br />

act<br />

( net<br />

pj<br />

) ⋅ o<br />

pi<br />

( o<br />

pj<br />

− ypj<br />

)<br />

(2)<br />

dw p<br />

ij<br />

p<br />

für w<br />

ij<br />

Gewicht von ( ni, nj)<br />

und nj<br />

∈ A.<br />

a<br />

w<br />

den Vektor der Gewichte der Neuronen der Ausgabeschicht<br />

net Netzeingabe<br />

o<br />

pi<br />

o<br />

pj<br />

y<br />

pj<br />

pj<br />

die Ausgabe der Eingabezelle i für Muster p<br />

tatsächliche Ausgabe von Neuron j über alle Muster p<br />

erwünschte Ausgabe von Neuron j über alle Muster p<br />

p<br />

der Index der Muster<br />

1<br />

f '<br />

act<br />

( netpj<br />

) = die Ableitung der Aktivierungsfunktion von Neuron j nach der<br />

2<br />

cosh ( net<br />

pj<br />

)<br />

Netzeingabe net<br />

pj<br />

Ausgabeneuron<br />

n<br />

j<br />

n<br />

i<br />

Eingabeneuron<br />

Eine Rückpropagierung <strong>des</strong> Fehlers entfällt, da die Fehlerfunktion nur von den Gewichten<br />

der Ausgabeneuronen abhängt.<br />

Die Minimierung der Fehlerfunktion zur Zeit erfolgt mit einem Gradienten- oder<br />

Koordinatenabstiegsverfahren, in der Regel jedoch mit Quickpropagation. Die Anzahl der zur<br />

Zeit t durchgeführten Gewichtsänderungen der Ausgabeneuronen ist<br />

implementationsabhängig. Da aber eine zufriedenstellende Entwicklung <strong>des</strong> Fehlers in<br />

einem Anfangsstadium <strong>des</strong> gesamten <strong>Verfahren</strong>s nicht zu erwarten ist, bieten sich<br />

Implementationen an, welche neben der Fehlerüberprüfung eine Wahl der Obergrenze der<br />

Anzahl der durchzuführenden Modifikationen zulassen. Die Zahl der Gewichte der<br />

Ausgabeschicht, die Größe <strong>des</strong> Netzwerkes und damit die Zahl der mathematischen<br />

Operationen zur Berechnung von Gradient und Fehler steigen mit wachsendem t. Somit führt<br />

3


der Algorithmus während der Fehlerminimierung für kleines t kostengünstigere<br />

Modifikationen durch.<br />

Sobald über eine Anzahl von Zyklen keine deutliche Änderung <strong>des</strong> Fehlers mehr zu<br />

beobachten ist wird das Netzwerk ein letztes Mal mit der gesamten Trainingsmenge getestet<br />

und der kumulierte Fehler gemessen. Ist dieser klein genug, terminiert das <strong>Verfahren</strong> ohne<br />

Erzeugung verdeckter Neuronen mit einem einstufigen Netzwerk (einer Ebene trainierter<br />

Gewichte zwischen Eingabe und Ausgabe). Im anderen Fall gibt es einen Restfehler, der<br />

durch Einführung eines oder mehrerer verdeckter Neuronen reduziert werden muss. Es wird<br />

ein neues verdecktes Neuron dem Netz hinzugefügt, <strong>des</strong>sen Gewichte der<br />

Eingangsverbindungen wie nachfolgend beschrieben bestimmt werden. Sobald es<br />

hinzugefügt ist, werden seine Gewichte eingefroren, und die Verbindungen aller Neuronen<br />

zu den Ausgabeneuronen werden neu trainiert (ebenfalls wieder durch Quickprop). Dieser<br />

Vorgang <strong>des</strong> Hinzufügens eines Neurons wird wiederholt, bis der Fehler klein genug ist (oder<br />

bis die maximal tolerierbare Zeit zum Training überschritten wurde).<br />

Zur Erzeugung einer neuen verdeckten Zelle beginnt man mit einer Kandidatenzelle j, die<br />

trainierbare Gewichte von allen Vorgängern (Eingabezellen und vorher generierte verdeckte<br />

Zellen) erhält, während die Ausgabe noch nicht mit dem Netzwerk verbunden ist. Nun erfolgt<br />

eine Anzahl Durchläufe durch die gesamte Trainingsmenge, wobei die Eingabegewichte wie<br />

folgt beschrieben geändert werden. Ziel der Änderungen ist es, die Summe der Beträge der<br />

Korrelation (Kovarianz) zwischen der Ausgabe der Kandidatenzelle und dem Restfehler der<br />

Ausgabezelle über alle Ausgabezellen zu maximieren.<br />

1<br />

S ( w ) = Cov( o , δ ) = o ⋅( δ − δ )<br />

(3)<br />

∑ ∑ ∑ pj j<br />

k k k k<br />

t j p<br />

jn , j∈A jn , j∈A p p<br />

k k<br />

∂St<br />

( w ) 1<br />

= σ f ' ( net ) ⋅o<br />

( δ δ )<br />

k<br />

j<br />

w p<br />

i<br />

k<br />

j act p pi pj<br />

jn , j∈A p<br />

∂<br />

∑ ∑ − (4)<br />

σ ( k<br />

j<br />

= sign ∑ o<br />

p⋅(<br />

δpj<br />

−δ j<br />

))<br />

(5)<br />

p<br />

Häufig wird folgende Formel der Kovarianzsumme und ihrer Ableitung angegeben<br />

S ( w ) = ∑∑( o −o ) ⋅( δ<br />

j<br />

−δ<br />

j<br />

)<br />

(6)<br />

k k k k<br />

t p p<br />

jn , j∈A p<br />

k k<br />

dSt<br />

( w )<br />

= σ ( δ −δ<br />

) ⋅ f ' ( net ) o<br />

k<br />

pi<br />

w<br />

i<br />

k<br />

j pj j act p<br />

jn , j∈A p<br />

∂<br />

∑ ∑ ⋅ (7)<br />

k k<br />

σ<br />

j<br />

= sign( ∑( op −o ) ⋅( δpj<br />

− δ j<br />

))<br />

(8)<br />

p<br />

k<br />

o<br />

p<br />

σ<br />

j<br />

tatsächliche Ausgabe <strong>des</strong> Kandidaten<br />

das Vorzeichen der Korrelation zwischen der Ausgabe der Kandidatenzelle j<br />

und dem Fehler der Ausgabezelle j für Muster p<br />

δ<br />

pj<br />

der Fehler <strong>des</strong> Ausgabeneurons n<br />

j<br />

4


δ<br />

j<br />

der Durchschnittsfehler <strong>des</strong> Ausgabeneurons n<br />

j<br />

o<br />

o<br />

k<br />

pi<br />

k<br />

act p 2 k<br />

cosh ( net<br />

p<br />

)<br />

die Durchschnittsausgabe <strong>des</strong> Kandidaten<br />

die Ausgabe der Eingabezelle i für Muster p<br />

1<br />

f ' ( net ) = die Ableitung der Aktivierungsfunktion von Neuron j nach der<br />

k<br />

net<br />

p<br />

Netzeingabe<br />

Netzeingabe<br />

net<br />

pj<br />

k k<br />

dSt<br />

( w )<br />

Nachdem der Wert von<br />

für je<strong>des</strong> Gewicht von der Eingabezelle i zu der<br />

k<br />

∂wi<br />

Kandidatenzelle j berechnet wurde, kann man einen Gradientenaufstieg durchführen, um S<br />

durch die Änderung der Verbindungsgewichte w ij<br />

zu maximieren. Dies geschieht wieder<br />

durch die Delta-Regel oder durch Quickprop für schnellere Konvergenz. Sobald sich S nicht<br />

mehr erhöht, wird das neue verdeckte Neuron als Neuron in das aktive Netzwerk installiert,<br />

seine Eingabeverbindungen werden eingefroren und der oben beschriebene Zyklus wird<br />

fortgeführt.<br />

Durch den Betrag in der Formel (3) oder (6) für S versucht ein Neuron nicht das Vorzeichen,<br />

sondern nur den Betrag der Korrelation seiner Ausgabe mit dem Fehler der<br />

Ausgabeneuronen zu maximieren. Wenn ein Neuron positiv mit dem Fehler einer<br />

Ausgabezelle korreliert, bildet es eine negative Verbindung zu dieser Ausgabezelle aus, die<br />

den Fehler vermindert; ist die Korrelation negativ, ist das Gewicht zum Ausgabeneuron<br />

positiv. Da die Verbindungen eines Neurons zu verschiedenen Ausgabeneuronen<br />

unterschiedliches Vorzeichen haben können, kann die gleiche verdeckte Zelle unter<br />

Umständen zugleich eine positive Korrelation mit dem Fehler einer Ausgabezelle und eine<br />

negative Korrelation mit dem Fehler einer anderen Ausgabezelle haben.<br />

5


<strong>Cascade</strong>-<strong>Correlations</strong>-<strong>Verfahren</strong> <strong>anhand</strong> <strong>des</strong> XOR-<strong>Problems</strong>.<br />

Anhand <strong>des</strong> XOR-<strong>Problems</strong> sollen im Folgenden die einzelnen Teilschritte <strong>des</strong> <strong>Cascade</strong>-<br />

<strong>Correlations</strong>-<strong>Verfahren</strong>s detailliert erläutert werden. Die zum Training <strong>des</strong> Netzes zur<br />

Verfügung stehende Datenmenge besteht aus vier Mustern:<br />

Nr. Muster Eingabe Ausgabe<br />

1 1 1 -1<br />

2 0 1 1<br />

3 1 0 1<br />

4 0 0 -1<br />

Anfangsnetz<br />

Das <strong>Verfahren</strong> für das XOR-Problem startet mit dem Anfangsnetz gemäß Abb. 2. Die<br />

Dimension der Eingabe ist zwei. Die Eingabeschicht enthält zusätzlich das Bias-Neuron. Die<br />

Dimension der Ausgabe ist eins. Verdeckte Neuronen sind nicht vorhanden Für die<br />

Ausgangskonfiguration wurden die Startgewichte willkürlich gewählt.<br />

Abb. 2 Das Anfangsnetz ({n 1 ,n 2 ,n 3 ,n 4 }, {(n 1 ,n 4 ),(n 2 ,n 4 ),(n 3 ,n 4 )}) für das XOR-Problem<br />

Legt man als Aktivierungsfunktion für das Ausgabeneuron den tangenshyberbolicus<br />

f act =tanh(x) zugrunde, so erhält man bei Eingabe der Trainingsmuster die folgenden<br />

Ausgaben:<br />

Nr. Muster O 1 O 2 O 3 O 4<br />

1 1 1 1 -0.379949<br />

2 0 1 1 -0.635149<br />

3 1 0 1 -0.148885<br />

4 0 0 1 -0.462117<br />

o<br />

o<br />

o<br />

o<br />

14<br />

24<br />

34<br />

44<br />

= tanh(1⋅ 0.35 + 1 ⋅( − 0.25) + 1 ⋅( − 0.50)) =−0.379949<br />

= tanh(0⋅ 0.35 + 1 ⋅( − 0.25) + 0 ⋅( − 0.50)) =−0.635149<br />

= tanh(1⋅ 0.35 + 0 ⋅( − 0.25) + 1 ⋅( − 0.50)) =−0.148885<br />

= tanh(0⋅ 0.35 + 0 ⋅( − 0.25) + 1 ⋅( − 0.50)) =−0.462117<br />

6


Fehlerminimierung<br />

Der <strong>Cascade</strong>-Algorithmus minimiert nur von den Gewichten der Ausgabeneuronen<br />

abhängigen Fehler.<br />

<strong>Cascade</strong>-Fehlerfunktion zur Zeit t<br />

Für das XOR-Problem ergeben sich folgende Teilberechnungen und Modifikationen:<br />

Vor Beginn der Gewichtsveränderung durch die Lernregel Quickpropagation ergibt sich<br />

folgender Funktionswert der Fehlerfunktion Nach der Formel (1):<br />

4<br />

1 1<br />

2<br />

0( 14, 24, 34) = ∑ (<br />

p4 −<br />

p4)<br />

4 p=<br />

1 2<br />

E w w w o y<br />

11 [( 0.379949 ( 1)) ( 0.635149 1)<br />

42<br />

+− − + − −− =<br />

2 2<br />

− − − + − − +<br />

2 2<br />

( 0.148885 1) ( 0.462117 ( 1)) ] 0.5834288<br />

Im Laufe der Fehlerminimierung zur Zeit t=0 ergeben sich folgende Werte nach Formeln (1)<br />

und (2):<br />

net<br />

net<br />

net<br />

net<br />

14<br />

24<br />

34<br />

44<br />

= 1⋅ 0.35 + 1 ⋅( − 0.25) + 1 ⋅( − 0.50) =−0.40<br />

= 0⋅ 0.35 + 1 ⋅( − 0.25) + 1 ⋅( − 0.50) =−0.75<br />

= 1⋅ 0.35 + 0 ⋅( − 0.25) + 1 ⋅( − 0.50) =−0.15<br />

= 0⋅ 0.35 + 0 ⋅( − 0.25) + 1 ⋅( − 0.50) =−0.50<br />

f<br />

f<br />

f<br />

f<br />

'<br />

act<br />

'<br />

act<br />

'<br />

act<br />

'<br />

act<br />

1<br />

( net14) = = 0.855639<br />

2<br />

cosh ( −0.40)<br />

1<br />

( net24) = = 0.596586<br />

2<br />

cosh ( −0.75)<br />

1<br />

( net34) = = 0.977833<br />

2<br />

cosh ( −0.15)<br />

1<br />

( net44) = = 0.786448<br />

2<br />

cosh ( −0.50)<br />

o<br />

o<br />

o<br />

o<br />

− y =−0.379949 −( − 1) = 0.620051<br />

14 14<br />

− y =−0.635149 − 1 =−1.635149<br />

24 24<br />

− y =−0.148885 − 1 =−1.148885<br />

34 34<br />

− y =−0.462117 −( − 1) = 0.537883<br />

44 44<br />

7


grad( E ( w , w , w )) =<br />

4<br />

p=<br />

1<br />

o<br />

14 24 34<br />

1 [ ( ) ( ); ( ) (<br />

4<br />

∑<br />

4 4<br />

'<br />

'<br />

∑ fact net<br />

p4 ⋅op1 op4 − y<br />

p4 ∑ fact net<br />

p4 ⋅op2 op4 − y<br />

p4<br />

p= 1 p=<br />

1<br />

f ( net ) ⋅o ( o − y )] =<br />

'<br />

act p4 p3 p4 p4<br />

1<br />

= [0.855639 ⋅ 1 ⋅ 0.620051 + 0.596586 ⋅ 0 ⋅ ( − 1.635149) +<br />

4<br />

+ 0.977833⋅1 ⋅( − 1.148885) + 0.786448⋅0⋅0.537883;<br />

0.855639⋅1⋅ 0.620051+ 0.596586⋅1 ⋅( − 1.635149) +<br />

+ 0.977833⋅0 ⋅( − 1.148885) + 0.786448⋅0⋅0.537883;<br />

0.855639⋅1⋅ 0.620051+ 0.596586⋅1 ⋅( − 1.635149) +<br />

+ 0.977833⋅1 ⋅( − 1.148885) + 0.786448⋅1⋅ 0.537883] =<br />

1<br />

= [ − 0.592878; −0.444967; − 1.145368] =<br />

4<br />

= [ −0.148220; −0.111242; −0.286342]<br />

);<br />

a<br />

( w (0)) = ( −0.1 ⋅( −0.148220); −0.1 ⋅( −0.111242); −0.1 ⋅( −0.286342))<br />

= (0.0148220;0.0111242;0.0286342)<br />

a<br />

w (1) = (0.35 + 0.0148220; − 0.25 + 0.0111242; − 0.5 + 0.0286342) =<br />

= (0.364822; −0.238876; −0.471366)<br />

usw.<br />

w a (0) ( 0.350000, -0.250000, -0.500000)<br />

E 0 (w a (0)) 0.5834288<br />

grad(E 0 (w a (0))) ( -0.148220, -0.111242, -0.286342)<br />

Δ(w a (0)) ( 0.014822, 0.0111242, 0.0286342)<br />

w a (1) ( 0.364822, -0.238876, -0.471366)<br />

E 0 (w a (1)) 0.5723144<br />

grad(E 0 (w a (1))) ( -0.124930, -0.103962, -0.264260)<br />

…<br />

w a (187) ( 0.014772, 0.006055, -0.012307)<br />

E 0 (w a (187)) 0.5000337<br />

8


Das Netz hat nach Abschluss dieser Phase folgen<strong>des</strong> Aussehen:<br />

Abb. 3 Das durch die Fehlerminimierung zur Zeit t=0 veränderte Ausgangsnetz <strong>des</strong> XOR-<strong>Problems</strong><br />

Das Netz liefert nun folgende Ausgaben und Fehler bei Anlegen der Trainingsmenge:<br />

Nr. Muster O 1 O 2 O 3 O 4<br />

δ<br />

4<br />

1 1 1 1 0.008519 1.008519<br />

2 0 1 1 -0.006253 -1.006253<br />

3 1 0 1 0.002465 -0.997535<br />

4 0 0 1 -0.012307 0.987693<br />

o<br />

o<br />

o<br />

o<br />

14<br />

24<br />

34<br />

44<br />

44<br />

= tanh(1⋅ 0.014772 + 1⋅ 0.006055 + 1 ⋅( − 0.012307)) = 0.008519<br />

= tanh(0⋅ 0.014772 + 1⋅ 0.006055 + 1 ⋅( − 0.012307)) =−0.006253<br />

= tanh(1⋅ 0.014772 + 0⋅ 0.006055 + 1 ⋅( − 0.012307)) = 0.002465<br />

= tanh(0⋅ 0.014772 + 0⋅ 0.006055 + 1 ⋅( −0.<br />

012307)) =−0.012307<br />

δ14<br />

= 0.008519 −( − 1) = 1,008519<br />

δ24<br />

=−0.006253 − 1 =−1.006253<br />

δ34<br />

= 0.002465 − 1 =−0.997535<br />

δ =−0.012307 −( − 1) = 0.987693<br />

Überprüfung auf Abbruch<br />

Das <strong>Verfahren</strong> entscheidet nach Durchführung der Fehlerminimierung, ob ein zur Lösung<br />

<strong>des</strong> <strong>Problems</strong> günstiger Endzustand <strong>des</strong> Netzes erreicht ist oder nicht.<br />

Für das betrachtete XOR-Problem sei als Abbruchkriterium festgelegt, dass das Training<br />

beendet wird, wenn ein Fehlerwert von 0.0025 unterschritten wird.<br />

Da der Fehler <strong>des</strong> in Abb. 3 dargestellten Netzes noch bei 0.5000337 liegt, fährt der<br />

Algorithmus mit der Durchführung <strong>des</strong> Kandidatentrainings fort.<br />

9


Kandidatentraining<br />

Das <strong>Verfahren</strong> erzeugt ein neues Neuron, initialisiert zufällig <strong>des</strong>sen Gewichte und<br />

modifiziert diese innerhalb einer Trainingsprozedur. Das Neuron erhält während seines<br />

Trainings Eingaben von allen Neuronen der Eingabeschicht und allen verborgenen<br />

Schichten.<br />

Das Kandidatenneuron beeinflusst die Ausgabe <strong>des</strong> Netzes nicht, da es keinerlei<br />

Informationen in das Netzwerk leitet. Insbesondere besteht keinerlei Verbindung <strong>des</strong><br />

Kandidaten zu den Neuronen der Ausgabeschicht. Ziel <strong>des</strong> Kandidatentrainings ist die<br />

Bestimmung der Gewichte einer weiteren verborgenen Schicht, deren Einfügung sich positiv<br />

auf die zukünftige Fehlerentwicklung auswirkt.<br />

Um die Auswirkung <strong>des</strong> potentiellen Einfügens eines Kandidaten in das Netz zu beurteilen,<br />

wird der Korrelationskoeffizient betrachtet.<br />

Im Fall <strong>des</strong> XOR-<strong>Problems</strong> befindet sich das aktuelle Netz immer noch im Zustand t=0. Es<br />

k<br />

wird ein Neuron n mit einem dreidimensionalen Gewichtsvektor erzeugt. Als<br />

Aktivierungsfunktion seit fact<br />

( x ) = tanh( x ) gewählt. Die Abb. 4 demonstriert diese Situation.<br />

Kovarianzsumme<br />

Das Kandidatenneuron liefert folgende Ausgaben bei Anlegen der Eingabedaten an das<br />

Netz:<br />

Nr. Muster O 1 O 2 O 3<br />

k<br />

O<br />

1 1 1 1 -0.197375<br />

2 0 1 1 -0.996682<br />

3 1 0 1 -0.761594<br />

4 0 0 1 -0.999329<br />

o<br />

o<br />

o<br />

o<br />

k<br />

1<br />

k<br />

2<br />

k<br />

3<br />

k<br />

4<br />

= tanh(1⋅ 3.00 + 1⋅ 0.80 + 1 ⋅( − 4.00)) =−0.197375<br />

= tanh(0⋅ 3.00 + 1⋅ 0.80 + 1 ⋅( − 4.00)) =−0.996682<br />

= tanh(1⋅ 3.00 + 0⋅ 0.80 + 1 ⋅( − 4.00)) =−0.761594<br />

= tanh(0⋅ 3.00 + 0⋅ 0.80 + 1 ⋅( − 4.00)) =−0.999329<br />

Anschließend verändert das <strong>Verfahren</strong> die Gewichte <strong>des</strong> Kandidatenneurons durch<br />

k k k k<br />

Maximierung der Kovarianzsumme S ( w , w , w ) nach Formel (3), die zur Zeit t=0<br />

folgenden Wert annimmt:<br />

0 1 2 3<br />

1<br />

S (3.00,0.80, − 4.00) = ⋅( − ) =<br />

4<br />

k<br />

k<br />

0 ∑op<br />

δp4 δ4<br />

p p=<br />

1<br />

1<br />

= ( − 0.197375 ⋅ 1.010413 + ( − 0.996682) ⋅ ( − 1.004359) +<br />

4<br />

+− ( 0.761594) ⋅− ( 0.995641) + ( −0.999329) ⋅ 0.989587 =<br />

1<br />

= 0.570947 = 0.1427369<br />

4<br />

δ<br />

4<br />

= (1.008519 −1.006253 − 0.997535 + 0.987693) / 4 =− 0.001894<br />

10


δ − δ = 1.008519 −( − 0.001894) = 1.010413<br />

14 4<br />

δ − δ =−1.006253 −( − 0.001894) =−1.004359<br />

24 4<br />

δ − δ =−0.997535 −( − 0.001894) =−0.995641<br />

34 4<br />

δ − δ = 0.987693 −( − 0.001894) = 0.989587<br />

44 4<br />

Nach Formeln (4) und (5) wird weiter berechnet:<br />

σ<br />

4<br />

=+ 1<br />

net<br />

net<br />

net<br />

net<br />

k<br />

1<br />

k<br />

2<br />

k<br />

3<br />

k<br />

4<br />

= 1⋅ 3.00 + 1⋅ 0.80 + 1 ⋅( − 4.00) =−0.20<br />

= 0⋅ 3.00 + 1⋅ 0.80 + 1 ⋅( − 4.00) =−3.20<br />

= 1⋅ 3.00 + 0⋅ 0.80 + 1 ⋅( − 4.00) =−1.00<br />

= 0⋅ 3.00 + 0⋅ 0.80 + 1 ⋅( − 4.00) =−4.00<br />

f<br />

f<br />

f<br />

f<br />

'<br />

act<br />

'<br />

act<br />

'<br />

act<br />

'<br />

act<br />

k 1<br />

( net1 ) = = 0.961043<br />

2<br />

cosh ( −0.20)<br />

k 1<br />

( net2 ) = = 0.006624<br />

2<br />

cosh ( −3.20)<br />

k 1<br />

( net3 ) = = 0.419974<br />

2<br />

cosh ( −1.00)<br />

k 1<br />

( net4 ) = = 0.001341<br />

2<br />

cosh ( −4.00)<br />

1<br />

grad( S ( w (0))) = [ f ( net ) ⋅o<br />

⋅( − )] =<br />

4<br />

k<br />

' k<br />

o 4 act p pi p4 4<br />

p σ ∑<br />

δ δ<br />

p=<br />

1<br />

1<br />

= (0.961043 ⋅ 1 ⋅ 1.010413 + 0.006624 ⋅ 0 ⋅ ( − 1.004359) +<br />

4<br />

+ 0.419974⋅1 ⋅( − 0.995641) + 0.001341⋅0⋅0.989587;<br />

0.961043⋅1⋅ 1.010413+ 0.006624⋅1 ⋅( − 1.004359) +<br />

+ 0.419974⋅0 ⋅(<br />

− 0.995641) + 0.001341⋅0⋅0.989587;<br />

0.961043⋅1⋅ 1.010413 + 0.006624⋅1 ⋅( − 1.004359) +<br />

+ 0.419974⋅1 ⋅( − 0.995641) + 0.001341⋅1⋅ 0.989587) =<br />

1<br />

= (0.55290;0.964397;0.547581) = (0.138227;0.241099;0.136895)<br />

4<br />

k<br />

( w (0)) = (0.35⋅0.138227;0.35⋅0.241099;0.35⋅0.136895)<br />

= (0.048379;0.084385;0.047913)<br />

11


k<br />

w<br />

(1) = (3.00 + 0.048379;0.80 + 0.084385; − 4.00 + 0.047913) =<br />

= (3.048379;0.884385; −3.952087)<br />

usw.<br />

Abb. 4 Einfügen eines Kandidatenneurons beim XOR-Problem<br />

Im Laufe <strong>des</strong> Kandidatentrainings berechnet das <strong>Verfahren</strong> die folgenden Werte:<br />

w k (0) ( 3.000000, 0.800000, -4.000000)<br />

S 0 (w k (0)) 0.1427369<br />

grad(S 0 (w k (0))) ( 0.138227, 0.241099, 0.136895)<br />

Δ(w k (0)) ( 0.048379, 0.084385, 0.047913)<br />

w k (1) ( 3.048379, 0.884385, -3.952087)<br />

S 0 (w k (1)) 0.1766525<br />

grad(S 0 (w k (1))) ( 0.131953, 0.250344, 0.130153)<br />

…<br />

w k (391) ( 3.998832, 3.992753, -6.078353)<br />

S 0 (w k (391)) 0.4791468<br />

Zum Abschluss der Kandidaten-Trainingsphase hat der Kandidat das Aussehen:<br />

Abb. 5 Das Kandidatenneuron im Anschluss an die Trainingsphase<br />

12


Einfügung der neuen Schicht<br />

Beim XOR-Problem integriert das <strong>Verfahren</strong> nun das Kandidatenneuron aus Abb. 5 in das in<br />

Abb. 3 dargestellte Netz.<br />

Abb. 6 Das Netz für das XOR-Problem nach dem Einfügen einer neuen Schicht.<br />

k<br />

Das <strong>Verfahren</strong> baut das trainierte Kandidatenneuron n in das Netzwerk ein. Die<br />

Verbindungen <strong>des</strong> Kandidaten werden feste Verbindungen <strong>des</strong> Netzes (graue Quadrate).<br />

Das schwarze Quadrat ist das neue Gewicht der ganz neuen Verbindungen zu dem<br />

Ausgabeneuron. Das neue Gewicht wird mit einem negativen Wert initialisiert, da die<br />

k<br />

Korrelation <strong>des</strong> Kandidaten n zu dem Ausgabeneuron ein positives Vorzeichen hatte. Das<br />

<strong>Cascade</strong>-Netz zur Zeit t=0 hat sich zu einem <strong>Cascade</strong>-Netz zur Zeit t=1 verändert.<br />

Die Neuronen <strong>des</strong> Netzes liefern nun folgende Werte bei Anlegen der Trainingsmenge:<br />

Nr. Muster O 1 O 2 O 3 O 4 O 5 δ<br />

5<br />

1 1 1 1 0.957356 -0.039328 0.960672<br />

2 0 1 1 -0.969602 0.042202 -0.957798<br />

3 1 0 1 -0.969236 0.050883 -0.949117<br />

4 0 0 1 -0.999989 0.037674 1.037674<br />

o<br />

o<br />

o<br />

o<br />

14<br />

24<br />

34<br />

44<br />

= tanh(1⋅ 3.998832 + 1⋅ 3.992753 + 1 ⋅( − 6.078353)) = 0.957356<br />

= tanh(0⋅ 3.998832 + 1⋅ 3.992753 + 1 ⋅( − 6.078353)) =−0.969602<br />

= tanh(1⋅ 3.998832 + 0⋅ 3.992753 + 1 ⋅( − 6.078353)) =−0.969236<br />

= tanh(0⋅ 3.998832 + 0⋅ 3.992753+ 1 ⋅( −6.078353)) =−0.999989<br />

o<br />

o<br />

o<br />

o<br />

15<br />

25<br />

35<br />

45<br />

= tanh(1⋅ 0.014772 + 1⋅ 0.006055 + 1 ⋅( − 0.012307) + 0.957356 ⋅( − 0.05)) =−0.039328<br />

= tanh(0⋅ 0.014772 + 1⋅ 0.006055 + 1 ⋅( − 0.012307) + ( −0.969602) ⋅( − 0.05)) = 0.042202<br />

= tanh(1⋅ 0.014772 + 0⋅ 0.006055 + 1 ⋅(<br />

−0.012307) + ( −0.969236) ⋅( − 0.05)) = 0.050883<br />

= tanh(0⋅ 0.014772 + 0⋅ 0.006055 + 1 ⋅( − 0.012307) + ( −0.999989) ⋅( − 0.05)) = 0.037674<br />

13


δ =−0.039328 −( − 1) = 0.960672<br />

δ<br />

15<br />

25<br />

35<br />

45<br />

= 0.042202 − 1 =−0.957798<br />

δ = 0.050883− 1 =−0.949117<br />

δ<br />

= 0.037674 −( − 1) = 1.037674<br />

Das <strong>Verfahren</strong> fährt jetzt mit der Fehlerminimierung zur Zeit t = 1 fort, indem es die,<br />

mittlerweile um eines vermehrten, Gewichte <strong>des</strong> Ausgabeneurons modifiziert.<br />

Im Laufe der Fehlerminimierung zur Zeit t = 1 ergeben sich folgende Werte:<br />

w a (0) ( 0.014772, 0.006055, -0.012307, -0.050000)<br />

E 1 (w a (0)) 0.4772323<br />

grad(E 1 (w a (0))) ( 0.003131, 0.000773, 0.023159, 0.431664)<br />

Δ(w a (0)) ( -0.002975, -0.000735, -0.022001, -0.410081)<br />

w a (1) ( 0.011797, 0.005320, -0.034308, -0.460081)<br />

E 1 (w a (1)) 0.3773563<br />

grad(E 1 (w a (1))) ( -0.009315, -0.011070, 0.156739, 0.064021)<br />

…<br />

w a (696) ( 3.303277, 3.302020, -5.047390, -3.546423)<br />

E 1 (w a (696)) 0.0024969<br />

Das Netz aus Abb. 6 hat am Ende der Fehlerminimierung folgen<strong>des</strong> Aussehen:<br />

Abb. 7 Das zur Lösung <strong>des</strong> Beispielproblems entwickelte Netz nach Abschluss der Fehlerminimierung<br />

zur Zeit t = 1.<br />

14


Nach Abschluss der Fehlerminimierung zur Zeit t = 1 liefert das Netz diese Ausgaben:<br />

Nr. Muster Eingabe Erwünschte<br />

Ausgabe<br />

Tatsächliche<br />

Ausgabe<br />

1 1 1 -1 -0.950534<br />

2 0 1 1 0.934560<br />

3 1 0 1 0.934554<br />

4 0 0 -1 -0.905329<br />

Das <strong>Verfahren</strong> legt nun erneut das Abbruchkriterium an, um zu entscheiden, ob er ein neues<br />

Kandidatenneuron trainiert oder aber das Gesamtverfahren beenden soll.<br />

Da der Wert der Fehlerfunktion E ( a 1<br />

w ) die vorgegebene Grenze von 0.0025 unterschreiten<br />

konnte, beendet das <strong>Verfahren</strong> an dieser Stelle das Training. Die endgültige Struktur <strong>des</strong><br />

Netzes entspricht nun der in Abb. 7.<br />

15


Quellen:<br />

Zell A. Simulation Neuronaler Netze<br />

Lippe W. Soft-Computing<br />

16

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!