Cascade-Correlations-Verfahren anhand des Xor-Problems
Cascade-Correlations-Verfahren anhand des Xor-Problems
Cascade-Correlations-Verfahren anhand des Xor-Problems
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