|
Projekt č.1
|
Autor
|
Tomáš Šmajda |
Úloha
|
Naprogramujte metódu spätného šírenia chyby a metódu BP momentum.
Program realizujte v jazyku C, alebo Matlab a experimentálne porovnajte na klasifikačných
dátach kruh vo štvorci a dvojitá špirála. Vypracujte detailnú správu o chovaní týchto sietí a vplyvu ich parametrov.
|
Riešenie
|
Neurónová sieť je naprogramovaná v jazyku C (Unix). Hodnoty neurónov,
váh, vstupné i výstupné hodnoty sa uchovávajú v statických
poliach. Počty neurónov v jedvotlivých vrstvách sú definované
v makrách. Priebeh chybovej funkcie a počet epoch učenia sa ukladá do súboru 'error_file1.txt' (výpis sa realizuje aj na obrazovku). Konečné váhy sa
ukladajú do súboru 'vahy1.txt'. Program má dve varianty:
1. 'kruh.c'
- pre klasifikačné dáta
"kruh vo štvorci".
2. 'spirala.c'
- pre klasifikačné dáta
"dvojitá špirála".
Varianty sa líšia len zastavovacou podmienkou pri učení a rozdielnymi výpismi
na obrazovku.
|
Popis algoritmu
|
- Prvotná inicializácia váh.
- Naplnenie učiaceho poľa.
- Fáza učenia:
a. ulož vzorku do premenných.
b. prechod cez neurónovú sieť.
c. back-propagation momentum.
d. výpočet chybovej funkcie.
e. ak neboli prejdené všetky vzorky, skok na bod a.
f. výpočet celkovej chybovej funkcie.
g. úprava veľkosti Gamy.
h. výpis priebehu chybovej funkcie a počet epoch na obrazovku a do súboru.
- Kým chybová funkcia neklesne pod určitú hodnotu, tak opakuj bod 3.
- Uloženie konečných váh do súboru.
- Fáza života:
a. načítaj vzorku z testovacieho súboru.
b. prechod cez neurónovú sieť.
c. klasifikácia.
d. ak nebola načítaná posledná vzorka skok na bod a.
e. výpočet úspešnosti.
f. výpis na obrazovku.
- Úspešný koniec programu.
|
Experimenty
|
1. Experimenty vykonané na klasifikačných dátach kruh vo štvorci:
Topológia: 2/7/5/1
Gama = 1.0 (tá sa však mení)
Alpha = 0.1
|
| J(t) |
0.013 |
0.0135 |
0.014 |
0.0145 |
0.015 |
| úspešnosť |
95.9% |
96.2% |
96.4% |
96.5% |
96.5% |
|
Topológia: 2/5/3/1
Gama = 1.0 (tá sa však mení)
Alpha = 0.1
|
| J(t) |
0.013 |
0.0135 |
0.014 |
0.0145 |
0.015 |
| úspešnosť |
94.7% |
95.2% |
95.5% |
95.8% |
95.8% |
|
Topológia: 2/11/7/1
Gama = 1.0 (tá sa však mení)
Alpha = 0.1
|
| J(t) |
0.013 |
0.014 |
0.0145 |
0.015 |
0.0155 |
| úspešnosť |
97.1% |
97.1% |
97.1% |
97.1% |
97.0% |
|
Topológia:2/11/7/1
Gama = 1.0 (tá sa však mení)
Alpha = 0
|
| J(t) |
0.014 |
0.0145 |
0.015 |
0.0155 |
| úspešnosť |
98.3% |
98.3% |
98.3% |
98.2% |
|
2. Experimenty vykonané na klasifikačných dátach dvojitá špirála:
Topológia: 2/16/9/1
Gama = 0.1 (tá sa však mení)
|
| J(t) |
0.0825 |
0.0846 |
0.0902 |
0.0907 |
0.1107 |
| úspešnosť |
67.5% |
63.7% |
64.5% |
64.6% |
61.6% |
| Alpha |
0 |
0.001 |
0.001 |
0 |
0.001 |
|
Topológia: 2/11/7/1
Gama = 0.1 (tá sa však mení)
Alpha=0
|
| J(t) |
0.0763 |
0.0798 |
0.0817 |
0.0931 |
| úspešnosť |
68.0% |
68.0% |
67.4% |
61.5% |
|
|
Zdrojové súbory
|
'circle.zip' - trénovací a testovací
súbor pre kruh vo štvorci.
'spiral.zip' - trénovací
a testovací súbor pre dvojitú špirálu.
'kruh' - spustiteľný súbor pre kruh vo
štvorci (UNIX).
'spirala' - spustiteľný súbor pre
dvojitú špirálu (UNIX).
|