|
|
Testbeispiele: Lernverhalten verschiedener Netze mit
unterschiedlichen Topologien und Aktivierungsfunktionen
|
Aktivierungs-Funktion (Topologie) |
zu erlernende
logische Funktion |
|
AND |
NAND |
OR |
XOR |
IDENT |
|
ohne
Bias |
mit
Bias |
ohne
Bias |
mit
Bias |
ohne
Bias |
mit
Bias |
ohne
Bias |
mit
Bias |
ohne
Bias |
mit
Bias |
|
Standard 1
(2-1) |
std_a21 |
std_a21b |
x |
std_n21b |
x |
std_o21b |
x |
x |
x |
x |
|
tanh
(2-1) |
tanh_a21 |
tanh_a21b |
x |
x |
x |
x |
x |
x |
x |
x |
|
tanh (2-2-1) |
tanh_a221 |
x |
x |
x |
tanh_o221 |
x |
tanh_x221 |
x |
x |
tanh_i221b |
|
tanh (2-2-2-1) |
x |
x |
x |
x |
x |
x |
tanh_x2221 |
x |
x |
x |
|
logistische (2-1) |
log_a21 |
log_a21b |
x |
x |
x |
x |
x |
x |
x |
x |
|
log. (2-2-1) |
x |
log_a221b |
x |
log_n221b |
x |
x |
x |
log_x221b |
log_i221 |
x |
|
log. (2-2-2-1) |
x |
x |
x |
x |
x |
x |
x |
x |
log_i2221 |
x | Bemerkungen
Logikfunktion: Ist die vom Netz zu erlernende logische
Verknüpfungsfunktion.
Topologie: Gibt die Anzahl der Neuronen je Schicht für alle
vorhandenen Schichten an.
BIAS/Schwellwerte: Entweder das Netz verfuegt über
BIAS-Neuronen, deren Gewichte sich im Wertebereich der Startgewichte oder alle Neuronen
besitzen einen einheitlichen, konstanten
Schwellwert. Die Gewichte der BIAS-Neuronen sind verschieden, zufällig und konstant.
Startgewichte (SG): Gibt den Wertebereich an, in dem sich
die Gewichte bei der Initialisierung bewegen
sollen.
Durchschleifen:
Gibt an, ob die Ausgabewerte der Inputschicht mit
deren Eingabewerte identisch sind oder ob sich die
Ausgabewerte wie bei jedem anderen Neuron aus der Aktivierungs- und Outputfunktion berechnen.
Nullen erlaubt: Gibt an, ob als Ausgabewert eines Neurons der
Inputschicht 0,0 möglich ist oder ob in diesem
Fall der Ausgabewert auf 0,1 gesetzt wird.
Aktivierungsfunktion (fact): Die Funktion, mit welcher der
Nettoinput verrechnet wird
Outputfunktion (fout): Die Outputfunktion dient dazu, fact zu "strecken",
dh, den Wertebereich der möglichen Ausgabewerte
der Neuronen so zu vergrößern, daß sich die erwünschten Ausgabewerte in diesem befinden.
Back: Kennzeichnet die Methode der
Fehlerrückreichung und Gewichtskorrektur.
Fehler: Meint die maximale mittlere Fehlerquadratsumme der
letzten 100 Lernzyklen. Die mittlere Fehlerquadratsumme bezieht sich auf die
Fehlerquadrate aller Outputneuronen aller
Trainingssätze eines Lernzyklus.
Testbeispiele
std_a21.net Logikfunktion: AND Topologie: 2
-1 BIAS-Neuron: nein
->
einheiliche Schwellwerte:
0,1 SG: 0,2 .. 0,4 Durchschleifen: nein Nullen erlaubt: nein fact: Standard 1
(Rückgabewert 0 oder 1) fout: fact Back: Delta-Regel
|
Lernzyklen |
1 |
2 |
3 |
10 |
20 |
|
Lernfaktor |
0,2 |
0,2 |
0,2 |
0,2 |
0,2 |
|
Fehler |
0,75 |
0,50 |
0,25 |
0,75 |
0,00 |
Bemerkungen: Sehr schneller Lernerfolg.
std_a21b.net Logikfunktion: AND Topologie: 2-1 BIAS-Neuron: ja SG: 0,2 ..
0,4 Durchschleifen: nein Nullen erlaubt: nein fact: Standard 1
(Rückgabewert 0 oder 1) fout: fact Back: Delta-Regel
|
Lernzyklen |
1 |
2 |
5 |
|
Lernfaktor |
0,2 |
0,2 |
0,2 |
|
Fehler |
0,25 |
0,00 |
0,00 |
Bemerkungen: Sehr schneller Lernerfolg.
tanh_a21.net Logikfunktion: AND Topologie: 2-1 BIAS-Neuron: nein
->
einheiliche Schwellwerte:
0,1 SG: 0,2 ..
0,4 Durchschleifen: nein Nullen erlaubt: nein fact: tanh(net) fout: 2*fact Back: Hebb-Regel
|
Lernzyklen |
1 |
50 |
5T |
50T |
100T |
|
Lernfaktor |
0,2 |
0,2 |
0,2 |
0,1 |
0,05 |
|
Fehler |
0,27 |
0,27 |
0,25 |
0,104 |
0,082 |
Bemerkungen: In dieser Konfiguration lernt das Netz zwar, jedoch
nur bis zu einem gewissen Grade. Ein Mindestfehler ist nicht zu vermeiden. Ausgabewerte unter 0,22 müßte man als 0 und
Ausgabewerte über 0,70 als 1 gelten
lassen.
tanh_a21b.net Logikfunktion: AND Topologie: 2-1 BIAS-Neuron: ja SG: 0,2 ..
0,4 Durchschleifen: nein Nullen erlaubt: nein fact: tanh(net) fout: 2*fact Back: Hebb-Regel
|
Lernzyklen |
1 |
5 |
50 |
500 |
5T |
50T |
100T |
150T |
|
Lernfaktor |
0,2 |
0,2 |
0,2 |
0,2 |
0,2 |
0,2 |
0,1 |
0,01 |
|
Fehler |
0,158 |
0,207 |
0,224 |
0,23 |
0,233 |
0,233 |
0,111 |
0,11 |
Bemerkungen: Analog wie bei tanh_a21.net.
tanh_a221.net Logikfunktion: AND Topologie: 2-2-1 BIAS-Neuron: nein
->
einheiliche Schwellwerte: 0,1 SG: 0,2 ..
0,4 Durchschleifen: nein Nullen erlaubt: nein fact: tanh(net) fout: 2*fact Back: Hebb-Regel
|
Lernzyklen |
1 |
100 |
1T |
10T |
50T |
100T |
200T |
300T |
400T |
600T |
|
Lernfaktor |
0,2 |
0,2 |
0,2 |
0,2 |
0,2 |
0,1 |
0,1 |
0,05 |
0,05 |
0,01 |
|
Fehler |
0,254 |
0,254 |
0,152 |
0,141 |
0,165 |
0,097 |
0,097 |
0,087 |
0,087 |
0,081 |
Bemerkungen: Analog wie bei tanh_a221.net. Mit folgenden Veränderungen erhält man jedoch ein
erstaunliches gutes Ergebnis: SG: -2 .. +2 Schwellwerte: 0,5
|
Lernzyklen |
1 |
100 |
200 |
300 |
|
Lernfaktor |
0,3 |
0,3 |
0,3 |
0,3 |
|
Fehler |
1,526 |
2,83 |
4,7*E-10 |
7,1*E-19 |
log_a21.net Logikfunktion: AND Topologie: 2-1 BIAS-Neuron: nein
->
einheiliche Schwellwerte:
0,1 SG: -2 ..
+2 Durchschleifen: nein Nullen erlaubt: nein fact: logistische
Transallfunktion fout: 2*fact -
1/2 Back: Hebb-Regel
|
Lernzyklen |
1 |
100 |
1T |
10T |
100T |
200T |
|
Lernfaktor |
0,3 |
0,3 |
0,3 |
0,2 |
0,1 |
0,01 |
|
Fehler |
0,596 |
0,33 |
0,216 |
0,213 |
0,210 |
0,207 |
Bemerkungen: Kaum Lernerfolg.
log_a21b.net Analog wie log_a21.net, jedoch mit BIAS-Neuron. Der Fehler beträgt nach 500T Lernschritten immer noch
0,137.
log_a221b.net Analog wie log_a21b.net, jedoch mit einer
Neuronenschicht mehr. Der Fehler beträgt nach 300T Lernschritten noch
0,0407.
Setzt man die Startgewichte nicht so hoch an (0,3 ..
0,6) und stellt "Durchschleifen" auf
"ja",erhält man sehr schnell ein gutes
Ergebnis:
|
Lernzyklen |
100 |
1T |
10T |
20T |
|
Lernfaktor |
0,1 |
0,1 |
0,1 |
0,1 |
|
Fehler |
0,069 |
0,041 |
4,4*E-7 |
8,5*E-13 |
Bemerkungen: Werden die Ausgangswerte der Inputneuronen mittels
fact und fout aus den Eingangswerten berechnet, so
verringert sich der Wertebereich von 0 .. 1 auf
0,5 .. 0,88. Dies wirkt sich extrem negativ auf das Lernverhalten des Netzes aus.
/****************************************************/
std_n21b.net Logikfunktion: NAND Topologie: 2-1 BIAS-Neuron: ja SG: -0,6 ..
-0,3 Durchschleifen: nein Nullen erlaubt: nein fact: Standard 1
(Rückgabewert 0 oder 1) fout: fact Back: Delta-Regel
|
Lernzyklen |
1 |
2 |
5 |
|
Lernfaktor |
0,2 |
0,2 |
0,2 |
|
Fehler |
0,25 |
0,00 |
0,00 |
Bemerkungen: Sehr schneller Lernerfolg.
log_n221b.net Logikfunktion: NAND Topologie: 2-2-1 BIAS-Neuron: ja SG: -2 ..
+2 Durchschleifen: ja Nullen erlaubt: nein fact: logistische
Transallfunktion fout: 2*fact -
1/2 Back: Hebb-Regel
|
Lernzyklen |
1 |
100 |
1T |
10T |
|
Lernfaktor |
0,3 |
0,3 |
0,3 |
0,2 |
|
Fehler |
0,427 |
0,152 |
0,004 |
7,2*E-27 |
Bemerkungen: Sehr schneller Lernerfolg, kontinuierliche
Verbesserung.
/****************************************************/
std_o21b.net Logikfunktion: OR Topologie: 2-1 BIAS-Neuron: ja SG: 0,2 ..
0,4 Durchschleifen: ja Nullen erlaubt: nein fact: Standard 1
(Rückgabewert 0 oder 1) fout: fact Back: Delta-Regel
Bemerkungen: Nach 2-5 Zyklen bereits Fehlerfrei.
tanh_o221.net Logikfunktion: OR Topologie: 2-2-1 BIAS-Neuron: nein
->
Schwellwerte: 0,2 SG: -2 ..
+2 Durchschleifen: ja Nullen erlaubt: nein fact: tanh(net) fout: 2*fact Back: Hebb-Regel
|
Lernzyklen |
100 |
500 |
1T |
3T |
|
Lernfaktor |
0,3 |
0,3 |
0,3 |
0,1 |
|
Fehler |
0,665 |
0,074 |
0,040 |
8,4*E-8 |
Bemerkungen: Sehr schneller Lernerfolg, kontinuierliche
Verbesserung.
/****************************************************/
tanh_x221.net Logikfunktion: XOR Topologie: 2-2-1 BIAS-Neuron: nein
->
Schwellwerte: 0,2 SG: -2 ..
+2 Durchschleifen: ja Nullen erlaubt: nein fact: tanh(net) fout: 2*fact Back: Hebb-Regel
|
Lernzyklen |
100 |
500 |
1T |
3T |
|
Lernfaktor |
0,3 |
0,3 |
0,3 |
0,1 |
|
Fehler |
0,665 |
0,074 |
0,040 |
8,4*E-8 |
Bemerkungen: Sehr schneller Lernerfolg, kontinuierliche
Verbesserung.
tanh_x2221.net Logikfunktion: XOR Topologie: 2-2-1 BIAS-Neuron: nein
->
Schwellwerte: 0,2 SG: 0,3 ..
0,6 Durchschleifen: nein Nullen erlaubt: nein fact: tanh(net) fout: 2*fact Back: Hebb-Regel
|
Lernzyklen |
100 |
500 |
|
Lernfaktor |
0,1 |
0,1 |
|
Fehler |
1,59 |
1,9*E-26 |
Bemerkungen: Sehr schneller Lernerfolg, jedoch ab und an
Neuinitialisierung der Gewichte erforderlich.
log_x221b.net Logikfunktion: XOR Topologie: 2-2-1 BIAS-Neuron: ja SG: 0,3 ..
0,6 Durchschleifen: ja Nullen erlaubt: nein fact: logistische fout: 2*fact –
1/2 Back: Hebb-Regel
|
Lernzyklen |
100 |
1T |
5T |
10T |
15T |
20T |
25T |
|
Lernfaktor |
0,5 |
0,5 |
0,5 |
0,5 |
0,5 |
0,5 |
0,5 |
|
Fehler |
0,2549 |
0,2531 |
0,2523 |
0,25196 |
0,25192 |
5,4*E-4 |
6*E-26 |
Bemerkungen :Zuerst langsames, aber kontinuierliches Lernen, dann
meißt plötzlicher Lernerfolg.
/****************************************************/
log_i2221.net Logikfunktion: IDENT Topologie: 2-2-1 BIAS-Neuron: nein
->
Schwellwerte: 0,2 SG: 0,3 ..
0,6 Durchschleifen: ja Nullen erlaubt: nein fact: logistische fout: 2*fact –
1/2 Back: Hebb-Regel
|
Lernzyklen |
1T |
5T |
|
Lernfaktor |
0,5 |
0,5 |
|
Fehler |
0,2552 |
9,7*E-8 |
Bemerkungen: Kontinuierliches Lernen.
tanh_i221b.net Logikfunktion: IDENT Topologie: 2-2-1 BIAS-Neuron: ja SG: -2 ..
+2 Durchschleifen: ja Nullen erlaubt: nein fact: tanh(net) fout: 2*fact Back: Hebb-Regel
|
Lernzyklen |
100 |
500 |
1T |
5T |
15T |
20T |
|
Lernfaktor |
0,3 |
0,3 |
0,3 |
0,3 |
0,3 |
0,2 |
|
Fehler |
5,48 |
5,17 |
4,73 |
4,44 |
5,04 |
1,33E*26 |
Bemerkungen: Relativ schneller Lernerfolg, abhängig von
Lernfaktor.
|