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:

kruh vo štvorci 1. 'kruh.c' - pre klasifikačné dáta
"kruh vo štvorci".
dvojitá špirála 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
  1. Prvotná inicializácia váh.
  2. Naplnenie učiaceho poľa.
  3. 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.
  4. Kým chybová funkcia neklesne pod určitú hodnotu, tak opakuj bod 3.
  5. Uloženie konečných váh do súboru.
  6. 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.
  7. Ú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).