Jednoduchá aplikácia algoritmu spätného šírenia chyby (backpropagation)

Podobné dokumenty
Návrh, implementácia a prevádzka informačného systému

Technická univerzita v Košiciach

Základy algoritmizácie a programovania

Základy algoritmizácie a programovania

PROGRAMOVANIE A JEHO POZÍCIA VPREDMETE INFORMATIKA. Mgr. Ján Guniš

NÁVOD NA INŠTALÁCIU A OBSLUHU SAMOOBSLUŽNÉHO AKTIVAČNÉHO PORTÁLU

Užívateľská príručka. Vytvorte 1 medzi stránkami v niekoľkých jednoduchých krokoch

MATLAB (1) - úvod do programovania vedeckých problémov. LS 2017, 8.predn.

Postup registrácie certifikátov do Windows

Strojový kód, assembler, emulátor počítača

Ďalší spôsob, akým je možné vygenerovať maticu je použitie zabudovaných funkcií na generovanie elementárnych matíc.

Užívateľská príručka systému CEHZ. Základné zostavy Farmy podľa druhu činnosti

Školská sieť EDU. Rozdelenie škôl. Obsah: Deleba škôl podľa času zaradenia do projektu: Delba škôl podľa rýchlosti pripojenia:

Úvodná strana IS ZASIELKY Prvky úvodnej stránky:

Vytvorenie používateľov a nastavenie prístupov

UŽÍVATEĽSKÁ PRÍRUČKA. TCP Optimizátor

Elektronické odosielanie výplatných pások

UČEBNÉ ŠTÝLY U ŠTUDENTOV INFORMATIKY A PODPORNÉ A VÝUČBOVÉ ŠTÝLY

Manuál pre používanie programu KonverziaXML_D134

Kvadratické funkcie, rovnice, 1

Odporúčané témy praktickej časti odbornej zložky maturitnej skúšky pre ELE POS

Program "Inventúra program.xlsm"

OŠETROVATEĽSKÝ PROCES PhDr. Andrea Krkošková

PROJEKTOVÉ VYUČOVANIE PROGRAMOVANIA WEBOVÝCH APLIKÁCIÍ

Návrh tém bakalárskych prác 2009/2010 (6 tém) Ing. Siničák. (Všeobecné strojárstvo-vs, Mechatronika-M, Počítačová podpora strojárskej výroby-ppsv)

Návod na použite plaftormy ELMARK E- Business obsahuje popis hlavných možností a funkcií programu. Príručka je štruktúrovaná podľa poradia možností.

Curriculum skupiny predmetov

Výsledky testovania žiakov 5. ročníka vybraných ZŠ v školskom roku 2014/2015 Testovanie v papierovej forme

Špecifikácia testu. z matematiky. pre celoslovenské testovanie žiakov 9. ročníka ZŠ v školskom roku 2017/2018

Vypracovalo: oddelenie redakcie ÚPVS, Národná agentúra pre sieťové a elektronické služby

Možnosti nasadenia otvoreného softvéru na školách

Pracovné prostredie MS EXCEL 2003.

Kurz Programovanie pre mobilné platformy pre SŠ

Programovanie I. Úvod do programovania Mgr. Stanislav Horal, Katedra informatiky, FPV, UCM

Import Excel Univerzál

Návod na použitie UPS

Zoznam zmien: Dátum zverejnenia: Verzia dokumentu: 8. Dátum aktualizácie:

Operačný systém Úvodná prednáška

spájame krásu s jednoduchosťou, posúďte sami...

7.1 Návrhové zobrazenie dotazu

Automatický timer pre DX7 návod na inštaláciu a manuál

FAKTÚRA PRE NEPLATITEĽA DPH FAKTÚRA ANGLICKÁ FAKTÚRA PROFESIONÁL EAN FAKTÚRA ŠTANDARD S CUDZÍM NÁZVOM FAKTÚR

To bolo ľahké. Dokážete nakresliť kúsok od prvého stromčeka rovnaký? Asi áno, veď môžete použiť tie isté príkazy.

Spracovanie informácií

Návod na použitie LWMR-210

Hotline - účtovníctvo tel.: 0905/ , denne od 8 00 do HUMANET ÚČTOVNÍCTVO

Pripojenie na internet cez WiFi pre zamestnancov a študentov

TomTom Referenčná príručka

Testovanie 5. v školskom roku 2015/2016. Testovanie sa uskutoční 25. novembra 2015 (streda). Žiaci budú testy písať v nasledovnom poradí:

Funkcia - priradenie (predpis), ktoré každému prvku z množiny D priraďuje práve jeden prvok množiny H.

Inštalácia a prvé spustenie programu.

Návod na rýchlu inštaláciu Wi-Fi smerovača pre optický internet. Glitel GR660GE

OBOZNÁMTE SA S VAŠÍM TELEFÓNOM

Vytváranie trojrozmerných grafických zobrazení v prostredí MATLAB a interaktívne úpravy grafov pomocou Figure Toolbar

Manuál k automatizovanému informačnému systému emisných kontrol pre užívateľa s právomocami kontrolóra (OÚD, MDPT SR)

Písanie ZP. Alexandra. O čom to je. Postup. kontrola. Citovanie. Odkazy Abstrakt. textu

Programové prostredie mikrokontrolérov PIC

Finančné riaditeľstvo Slovenskej republiky. Informácia k výpočtu preddavkov na daň z príjmov fyzických osôb

priemyselné vybavenie GMBH NÁSTROJE CZ SK, s.r.o. tel/f ax :

P R O L U C. POZNÁMKY individuálnej účtovnej závierky pre rok 2014

Krížovka. Hot Potatoes JCross ( červená farba) = vytvorenie krížovky, do ktorej vpisujeme odpovede na zadané otázky. Priradenie

Technická normalizácia v oblasti osobných ochranných prostriedkov

Príručka pre používateľa bezpečnostného tokenu na účel autentifikácie do multiklientskeho platobného portálu -MKPP

ROVNOMERNÉ DAŇOVÉ ODPISY od ROK

Skákalka. Otvoríme si program Zoner Callisto, cesta je Programy Aplikácie Grafika Zoner Callisto.

Príručka pre prostredie Digitálnej autoškoly pre inštruktorov časť elearning

Manuál Klientska zóna

Konfigurácia IP Bell 02C Dverný vrátnik a FIBARO Home Center 2

Práca v programe: Revit Architecture

POKYNY PRE IT ADMINISTRÁTORA

Pokyny pre písanie práce ŠVOČ. Odporúčané nastavenia. Štruktúra práce

Správa mestskej zelene v Košiciach, Rastislavova 79, Košice

Programovanie v jazyku C - pole treba poorat...

DOCHÁDZKOVÝ SYSTÉM SVYDO. RS Alfa, spol. s r.o., Košice

Logotyp. Je ZAKÁZANé vytvárať logo zo skenovaných, fotografických alebo iných predlôh.

D.Viewer2 Používateľská príručka

Komfortná správa rozvádzačov

infringements.eu vytvorené: 16. Nov :37, posledná zmena:13. Oct :14

Referenčná ponuka na prístup ku káblovodom a infraštruktúre. Príloha 7 Poplatky a ceny

MS Dynamics NAV 2017 Čo je nové?

Rozpoznávání písmen. Jiří Šejnoha Rudolf Kadlec (c) 2005

5.1 Vyhľadávanie údajov

Implementace SAP S/4HANA je skutečně S Simple

PosAm spol. s r. o. Odborárska 21, Bratislava. Postup inštalácie klientov KTI pre NSK

Centrálny GIS MV SR. Ing. Kamil FAKO, PhD. OA, SITB MV SR

WELL Gate2504, VoIP brána

Kontrola väzieb výkazu Súvaha a Výkaz ziskov a strát Príručka používateľa

Čo dokážu ľudia rozpoznať lepšie ako počítače. Ján Lunter Innovatrics

Sprístupnenie služieb Štátnej pokladnice pre interné systémy jej klientov

MATURITA 2016 ZÁKLADNÉ INFORMÁCIE

Inštalačná príručka aplikácie D.Signer na vytváranie zaručeného elektronického podpisu a aplikácie D.Viewer na otváranie podpísaných príloh

Zapojenie set-top boxu

Finančné riaditeľstvo Slovenskej republiky. Informácia k výpočtu preddavkov na daň z príjmov fyzických osôb

KOMISNÝ PREDAJ. Obr. 1

KEO - Register obyvateľov Prevod údajov

Súťaž MLADÝ ELEKTROTECHNIK 2010 Peter Kopecký 9.A, ZŠ Duklianska 1. Bánovce nad Bebravou Nastaviteľný zdroj

Metodické usmernenie č. 4/2007 k poskytovaniu informácií prostredníctvom portálu Úradu pre dohľad nad zdravotnou starostlivosťou

Špecifikácia testu. z matematiky. pre celoslovenské testovanie žiakov 5. ročníka ZŠ v školskom roku 2016/2017

Blokové a prúdové šifry

MS PowerPoint - Úvod.

Transkript:

TECHNICKÁ UNIVERZITA V KOŠICIACH FAKULTA ELEKTROTECHNIKY A INFORMATIKY KATEDRA KYBERNETIKY A UMELEJ INTELIGENCIE Jednoduchá aplikácia algoritmu spätného šírenia chyby (backpropagation) zadanie 3 z predmetu Teoretické základy umelej inteligencie Mária Virčíková Košice 2008

Obsah 1 Zadanie úlohy... 3 2 Funkcia programu... 3 2 Analýza riešenia... 3 2.1 Popis programu... 3 2.1.1 Topológia siete... 3 2.1.2 Inicializácia programu a nastavenie parametrov... 3 2.1.3 Nastavenie váh... 4 2.1.4 Učenie neurónovej siete... 5 2.1.5 Testovanie neurónovej siete... 6 3. Preklad programu... 7 3.1 Požiadavky na technické prostriedky... 7 3.2 Požiadavky na programové prostriedky... 7 4. Zhodnotenie riešenia... 7 5. Zlepšenie programu do budúcna... 7 6. Ukážka výstupu programu... 8 PRÍLOHA: Zdrojový kód... 8 FEI KKUI 2

1 Zadanie úlohy Úlohou bolo naprogramovať metódu spätného šírenia chyby a experimentálne tento algoritmus overiť na jednoduchej aplikácii, kde vstupom je obrázok, ktorý sa umelá neurónová sieť naučí. 2 Funkcia programu Programový systém slúži na naučenie neurónovej siete akýkoľvek obrázok, v mojom prípade to sú niektoré písmená. 2 Analýza riešenia Program bol riešený v programovacom jazyku Matlab, verzia 7.0. 2.1 Popis programu 2.1.1 Topológia siete Neurónová sieť má dva vstupy súradnice x a y pixela obrázku. Má jednu skrytú vrstvu s 50 neurónmi, čo sa dá ľahko v zdrojovom kóde zmeniť na iný počet. Výstupná vrstva je jeden neurón biely alebo čierny pixel. 2.1.2 Inicializácia programu a nastavenie parametrov Počet iterácií je nastavený na 10 tisíc, parameter učenia na 0.8 a počet neurónov v skrytej vrstve je 50. Neurónová sieť obsahuje len jednu skrytú vrstvu, pričom efektívnejšia by asi bola topológia siete s dvoma skrytými vrstvami. Po načítaní vstupného obrázku: vstup=imread('t.bmp') sa obrázok prevedie na čierno-biely príkazom I = im2bw(vstup); FEI KKUI 3

Na zrýchlenie programu sa odporúča odkomentovať riadok: % I=imresize(I,[5 5], 'nearest'); kde sa obrázok zmenší na 5x5 pixelov. Následne sa vstupný obrázok vykreslí v ľavom okne: subplot(1,2,1) imshow(i), title('original') Súradnice obrázku [sx,sy]=size(i); je potrebné znormalizovať na interval 0,1: %normalizacia suradnice x a y obrazka %sxn je suradnica x normalizovana %syn je suradnica y normalizovana for i=1:sx sxn(i)=i/(sx-1)-1/(sx-1); for i=1:sy syn(i)=i/(sy-1)-1/(sy-1); 2.1.3 Nastavenie váh Váhy sú inicializované náhodnými hodnotami z intervalu <-1;1>. Typy váh sú: váhy od súradníc x a y smerujúce do skrytej vrstvy váhy od skrytej vrstvy smerujúce do výstupnej vrstvy váhy biasu (1) na skrytej vrstve a váhy biasu na výstupnej vrstve min=-1; max=1; %vahy od suradnice x do skrytej vrstvy wijx(ns)= min + (max-min) * rand; %vahy od suradnice y do skrytej vrstvy wijy(ns)=min + (max-min) * rand; %vahy biasu na skrytej vrtsve FEI KKUI 4

w0hidden(ns)= min + (max-min) * rand; %vahy od skrytej vrstvy do vystupneho neuronu wki(ns)=min + (max-min) * rand; %vahy biasu na vystupe w0out= min + (max-min) * rand; 2.1.4 Učenie neurónovej siete Neurónovej sieti na začiatku ukážeme každý druhý pixel v riadku (normalizovaná súradnica x obrázku) a každý druhý pixel v stĺpci (normalizovaná súradnica y obrázku): for it=1:iteracie %ukazeme jej 2.pixel v riadku a kazdy 2. v stplci for r=1:2:sx for s=1:2:sy Očakávaná hodnota výstupu je biely alebo čierny pixel, v závislosti od zafarbenia pixela vstupného obrázku: if I(r,s)==1 ev=1; else ev=0; Aplikujeme vzorce na výstup skrytej vrstvy, pričom 1/(1+exp(-x)) je sigmoidálna funkcia a jej derivácia je 1/(1+exp(-x))^2*exp(-x): in(i)=sxn(r)*wijx(i)+syn(s)*wijy(i)+ w0hidden(i)*1; y(i)=1/(1+exp(-in(i))); inout=y(i)*wki(i); Aplikujeme vzorce na celkový výstup neurónovej siete: inout=inout+w0out*1; yout=1/(1+exp(-inout)) Vypočítame chybu, pričom error_out je celková chyba výstupu: error_out=(ev-yout)*(1/(1+exp(-inout))^2)*(exp(-inout)); FEI KKUI 5

Spätne vypočítavame chyby na skrytej vrstve neurónovej siete: error(i)= wki(i) * error_out * (1/(1+exp(-in(i)))^2)*exp(-in(i)); Dochádza k meneniu nastavovaniu váh neurónovej siete: w0out=w0out+par_uc*error_out*1; deltawki(i)=par_uc*error_out*y(i); deltawijx(i)=par_uc*error(i)*sxn(r); deltawijy(i)=par_uc*error(i)*syn(s); wki(i)=wki(i)+deltawki(i); wijx(i)=wijx(i)+deltawijx(i); wijy(i)=wijy(i)+deltawijy(i); w0hidden(i)=w0hidden(i)+par_uc*error(i)*1; %koniec zmeny vah 2.1.5 Testovanie neurónovej siete V cykle od 1 po rozmery obrázku vypočítavame výstup neurónovej siete: for m=1:sx for l=1:sy inout=0; yout=0; %skryta vrstva in(i)=sxn(m)*wijx(i)+syn(l)*wijy(i)+ w0hidden(i)*1; %sigmoidna funkcia f=1/(1+exp(-x)) y(i)=1/(1+exp(-in(i))); inout=y(i)*wki(i); %koniec skrytej inout=inout+w0out*1; yout=1/(1+exp(-inout)); Podľa hodnoty výstupu zafarbíme výstupný pixel: if yout >=0.5 I2(m,l)=1; else I2(m,l)=0; FEI KKUI 6

%koniec vyhodnotenia yout Vykreslíme obrázok na pravú časť: subplot(1,2,2), imshow(i2), title('nn pic') 3. Preklad programu 3.1 Požiadavky na technické prostriedky Program nemá žiadne špeciálne požiadavky na technické prostriedky. Bol testovaný na architektúre x86 a systéme Windows XP: Intel Centrino 1.5, 512 MB RAM, Intel Pentium M processor 740. 3.2 Požiadavky na programové prostriedky Aby program fungoval je nutné mať nainštalovanú Matlab a veľa trpezlivosti, keďže Matlab náročný na čas behu programu. 4. Zhodnotenie riešenia Program predstavuje implementáciu algoritmu spätného šírenia chyby a aplikácia postačuje na jeho demonštráciu. Zdrojový kód je dostatočne okomentovaný, takže používateľ by nemal mať problém s jeho pochopením. Problémy vznikli len pri hľadaní vhodných nastavení parametrov neurónovej siete. 5. Zlepšenie programu do budúcna Mohli by sa upresniť parametre ako sú parameter učenia, zvýšiť sa počet iterácií, počet neurónov v skrytej vrstve a interval nastavenia váh. Jedným z najdôležitejších vylepšení programového systému by mohlo byť zapojenie druhej skrytej vrstvy do topológie siete. FEI KKUI 7

V budúcnosti by mohol programový systém obsahovať databázu znakov napríklad abecedu písmen a vstupom by bola nejaký znak podobný želanému písmenu. Neurónová sieť by sa naučila vstupný obrázok, porovnala ho s písmenami v databáze a výstupom by bolo najpodobnejšie písmenko. 6. Ukážka výstupu programu Naučenie písmenka T : PRÍLOHA: Zdrojový kód %%%%%%%%%%%%%%1 Inicializacia%%%%%%%%%%%%%%%%%%%%%%%%% %clc; close all; clear all; iteracie=10000; par_uc=0.8; %parameter ucenia FEI KKUI 8

ns=50;%pocet neuronov v skrytej vrstve vstup=imread('t.bmp'); I = im2bw(vstup); % I=imresize(I,[5 5], 'nearest'); subplot(1,2,1) imshow(i), title('original') [sx,sy]=size(i); %normalizacia suradnice x a y obrazka %sxn je suradnica x normalizovana %syn je suradnica y normalizovana for i=1:sx sxn(i)=i/(sx-1)-1/(sx-1); for i=1:sy syn(i)=i/(sy-1)-1/(sy-1); %randomne vahy z intervalu <-1;1> min=-1; max=1; %vahy od suradnice x do skrytej vrstvy wijx(ns)= min + (max-min) * rand; %vahy od suradnice y do skrytej vrstvy wijy(ns)=min + (max-min) * rand; %vahy biasu na skrytej vrtsve w0hidden(ns)= min + (max-min) * rand; %vahy od skrytej vrstvy do vystupneho neuronu wki(ns)=min + (max-min) * rand; %vahy biasu na vystupe w0out= min + (max-min) * rand; %%%%%%%%%%%%%%%%%%2 Ucenie%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% for it=1:iteracie %ukazeme jej 2.pixel v riadku a kazdy 2. v stplci for r=1:2:sx for s=1:2:sy inout=0; yout=0; %ocakavana hodnota if I(r,s)==1 ev=1; else ev=0; FEI KKUI 9

%skryta vrstva in(i)=sxn(r)*wijx(i)+syn(s)*wijy(i)+ w0hidden(i)*1; %sigmoidna funkcia f=1/(1+exp(-x)) y(i)=1/(1+exp(-in(i))); %koniec skrytej % derivacia sigmoidnej funkcie = 1/(1+exp(-x))^2*exp(-x) inout=y(i)*wki(i); inout=inout+w0out*1; yout=1/(1+exp(-inout)); %chyba error_out=(ev-yout)*(1/(1+exp(-inout))^2)*(exp(-inout)); error(i)= wki(i) * error_out * (1/(1+exp(-in(i)))^2)*exp(- in(i)); %menime vahy w0out=w0out+par_uc*error_out*1; deltawki(i)=par_uc*error_out*y(i); deltawijx(i)=par_uc*error(i)*sxn(r); deltawijy(i)=par_uc*error(i)*syn(s); wki(i)=wki(i)+deltawki(i); wijx(i)=wijx(i)+deltawijx(i); wijy(i)=wijy(i)+deltawijy(i); w0hidden(i)=w0hidden(i)+par_uc*error(i)*1; %koniec zmeny vah %koniec pixlov v stlpci %koniec poctu pixlov v riadku %koniec iteracii %%%%%%%%%%%%3 Testovanie%%%%%%%%%%%%%%%%%%%%%%%%%% for m=1:sx for l=1:sy inout=0; yout=0; %skryta vrstva in(i)=sxn(m)*wijx(i)+syn(l)*wijy(i)+ w0hidden(i)*1; %sigmoidna funkcia f=1/(1+exp(-x)) y(i)=1/(1+exp(-in(i))); inout=y(i)*wki(i); %koniec skrytej inout=inout+w0out*1; FEI KKUI 10

yout=1/(1+exp(-inout)); if yout >=0.5 I2(m,l)=1; else I2(m,l)=0; %koniec vyhodnotenia yout %koniec stlpcov %koniec riadkov %%%%%%%%%%%%%%%%%%%% Vykreslenie natrenovaneho obrazku subplot(1,2,2), imshow(i2), title('nn pic') FEI KKUI 11