You are on page 1of 52

Inteligentni sistemi

Igor Baranovski
Kancelarija 121B
baranovski@uns.ac.rs
Plan rada

Uvod u Javu

Neuronske mree

Fuzzy logika
Ispitne obaveze

35 bodova na vebama ove bodove je


mogue dobiti samo na vebama.

35 bodova kolokvijum Neuronske mree

30 bodova kolokvijum Fuzzy logika

Ukupno 100 bodova, skalira se na 90


Java i objektno-orijentisano
programiranje
ta je Java
Java je objektno-orijentisani programski jezik, koji je razvila
kompanija Sun Microsystems poetkom 1990-ih godina.
Java je programski jezik opte namene koji se koristi u svim
industrijama prilikom razvoja skoro svih tipova aplikacija
Postala je nezaobilazna kada su u pitanju programi koji treba da se
izvravaju na razliitim sistemima.
Program napisan u Javi se ne izvrava direktno na raunaru, ve u
okviru standardizovanog okruenja po imenu Java 2 Platforma
koje se u vidu softvera implementira na itavom nizu raunara i
operativnih sistema. Platforma Java ima dve komponente
softversku implementaciju hipotetikog raunara po imenu Java
virtuelna maina (Java Virtual Machine, JVM) i Javin
programski interfejs aplikacije (Java Application Programming
Interface, Java API) koji predstavlja skup softverskih komponenti
koje obezbeuju sve ono to vam je neophodno za pisanje
zaokruenih interaktivnih aplikacija u Javi.
Instalacija
Za razvoj Java aplikacija neophodno je:
Java Software Development Kit (Java SDK)
www.oracle.com
Integrisano razvojno okruenje (IDE)
Eclipse (www.eclipse.org)
NetBeans (www.netbeans.org)
IntelliJ IDEA (www.jetbrains.com)
Java Software Development Kit
www.oracle.com
Preuzmite i instalirajte odgovarajuu JDK SE izvrnu
datoteku
Na osnovu inicijalnih podeavanja JDK alati su instalirani
u
C:\Program Files\Java\jdk1.8.0_05
Potrebno je dodati bin folder Java instalacionog foldera u
PATH promenljivu okruenja Windows operativnog
sistema
System Advanced System Settings Environment
Variables
Promenite PATH promenljivu (ukoliko ne postoji, kreirajte je)
da biste ukljuili putanju
C:\Program Files\Java\jdk1.8.0_05\bin; (; obavezno na kraju)
Provera otvorite komandni prozor i ukucajte java -version
Eclipse IDE
Integrisano razvojno okruenje koje
ukljuuje editor, kompajler, sistem pomoi
osetljiv na kontekst, debager i jo tota...
www.eclipse.org
Instalacija Eclipse okruenja svodi se na
raspakivanje preuzete datoteke na izabrani
disk.
Java SE je standardni paket a Java EE
ukljuuje alate za rad na strani servera
Sintaksa
Sve kljune rei programskog jezika Java piu se malim
slovima
Svaki Java program se sastoji iz definicije klasa. Definicija
klase se sastoji iz deklaracije paketa, import sekcije,
deklaracije atributa i definicije metoda. Sva etri dela su
opciona.
Izrazi u programskom jeziku Java se obino zavravaju
simbolom taka-zarez ;
Programski blok ine dve ili vie naredbi ili izraza i on je
ograen vitiastim zagradama {}
Postoje vie vrste komentara:
Jednolinijski navode se sa dve kose crte // komentar
Vielinijski nalaze se izmeu /* komentar */
JavaDoc komentari navode se izmeu /** i */
Tipovi podataka
Svaka promenljiva u Javi
mora biti odreenog
tipa.
Java operie sa dva obila
tipova podataka:
Primitivni tipovi
Klase
Literali su konkretne
vrednosti koje
dodeljujemo
promenljivama.
Promenljive
Promenljive uvaju vrednosti koje emo koristiti u
programu.
Promenljive se moraju deklarisati pre prve upotrebe
navoenjem tipa promenljive i njenog imena.
Ime promenljive mora da pone slovom ili donjom
crtom
int a; int a = 4; int a, b = 1, c;
Konstante se piu upotrebom kljune rei final i
njihova vrednost se nakon prve dodele ne moe
promeniti. Obino se oznaavaju velikim slovima.
final int KON; KON = 4; final int BROJ = 3;
Operatori
Operatore moemo ih grupisati:
Aritmetiki (+, -, *, /, ++, --)
Relacioni (==, <, >, !=, >=, <=)
Logiki (&&, ||, !)
Bit-operatori (&, |, !, ^)
Operator dodele (=)
Operator konverzije tipova (cast operator)
(npr. (int)izraz)

x = y + 2; x++; x += y;x == 8;
x || y (x < 10) && (y > 1)
Nizovi
Deklaracija niza:
tip_elementa ime[ ]
Tip elementa je ili neki primitivan tip, ili neka klasa.
int[ ] a; ili int a [ ];
Ovim je samo deklarisan niz ali nije i napravljen.
Kreiranje niza podrazumeva da se odvoji deo memorije u kojem e biti
smeteni elementi niza.
a = new int[5]; ili a = {1, 2, 3, 4, 5};
Definsan je niz a koji ima 5 elemenata i svi elementi imaju inicijalnu
vrednost 0.
Elementima niza se pristupa preko uglastih zagrada i indeksa (rednog broja)
elementa. Prvi element uvek ima indeks nula.
int e1 = a[0]; int sum = a[0] + a[1] + a[2] + a[3] + a[4];
Ukoliko pokuamo da pristupimo elementu niza koji ne postoji dogodie se
izuzetak, program e prestati sa radom!
Viedimenzionalni nizovi se predstavljaju kao nizovi nizova.
int[ ][ ] a = {{1, 2, 3, 4, 5}, {1, 2, 3, 4, 5}}; ili int[ ][ ] a = new int[2][3];
Kontrola toka
if . else for
If (x > 10) for(inicijalizacija; uslov;
{ korekcija){
naredbe; naredbe;
} else { }
naredbe; for(int i = 0; i < 10 ; i++{
} naredbe;
}
switch
switch (x) while
{ while(uslov){
case 1: naredbe;
naredbe; }
break; while(x <10){
case 25: naredbe;
naredbe; }
break; do while
default: do {
} naredbe;
break } while(uslov)
Prekida izvravanje
continue
Nastavlja izvravanje petlje
Metode
Osnovna motivacija je da se problem koji reavamo dekomponuje na manje
ili da se ponavljajui delovi koda zamene pozivom metoda.
Sintaksa definisanja metoda je
modifikator_pristuta tip_promenljive naziv_metode(argumenti)
telo metode
Primer:
int saberi(int a, int b){
return a + b;
}
Kljuna re return vraa vrednost metode. Svaka metoda mora da bude
pozvana iz neke druge metode.
int a = 5, y = 3;
int c = saberi(x, y);
Parametri ili argumenti metode mogu biti primitivni tipovi i reference na
objekat.
Tip rezultata metode moe biti primitivni tip ili reference na objekat.
Ukoliko metoda ne prima vrednost, unutar malih zagrada se ne stavlja lista
parametara.
Ukoliko metoda ne vraa vrednost koristi se primitivni tip void.
Tok izvrenja koda unutar metode se prekida nailaskom na kljunu re return
ili nailaskom na vitiastu zagradu ukoliko metoda ne vraa vrednost.
Sve je objekat
Java je objektno-orijentisani jezik, to znai da ima konstrukcije za predstavljanje objekata iz
realnog sveta.
U objektno-orijentisanim jezicima za reavanje problema koriste se entiteti ili objekti koji su
povezani sa datim problemima.
Objekt moe da bude bilo ta. Objekti su svuda oko nas.
Objekat Automobil bi mogao da predstavlja odreenu klasu objekata automobila u okolini.
Ona e sadrati metode pomou kojih se opisuje ono to u odreenom automobilu moe da se
uradi: startovanje i gaenje motora, ubrzavanje, koenje i slino.
Klasa je termin koji se odnosi na specifikaciju skupa objekata koji imaju zajednika svojstva.
Svaki java program sadri bar jednu klasu.
Za svaki objekat koji e va program da upotrebi mora negde da postoji odgovarajua
definicija klase u koju se uklapaju objekti tog tipa.
Klase u javi sadre metode i polja(atribute).
Metode predstavljaju akcije ili funkcije koje klasa moe da izvrava.
Atributi se ponaaju kao globalne promenljive unutar te klase.

class Automobil{
// Ovde se nalazi ono to detaljno definie klasu.
// Ovde bismo mogli da definiemo naziv automobila,
// moda boju i sve drugo to nam je potrebno.
}
Inicijalizacija objekata
Prilikom konstruisanja novog objekta, nakon alokacije potrebne
memorije za smetanje objekta, bie pozvana specijalna metoda
namenjena za inicijalizaciju objektra nazvana kontruktor.
Konstruktor obavezno ima naziv jednak nazivu klase i nema nikakav
povratni tip!
Osnovna namena je da se u kontruktoru obavi inicijalizacija atrubuta.
Class A
{
A(){
// inicijalizacija objekta
}
}

Primer:
A mojaKlasa = new A();

Mogue je preklapanje vie konstruktora


Primer klase
Modifikatori pristupa
Objektno-orijentisani programski jezici omoguuju
kontrolu pristupa atributima ili metodama.
Modifikator pristupa se navodi ispred atributa ili
metoda.
Postoje sledei modifikatori pristupa:
public: oznaava da su atribut ili metoda vidljivi za sve
klase u programu
protected: atribut ili metoda su vidljivi samo za klase
naslednice i klase iz istog paketa
private: atribut ili metoda su vidljivi samo unutar svoje
klase
nespecificiran: atribut ili metoda su vidljivi za klase iz
istog paketa
Konvencija davanja imena
Nazivi klasa se piu malim slovima ali sa poetnim
velikim slovom (Automobil, Drvo)
Nazivi metoda i atributa se piu malim slovima.
Ako se sastoje od vie rei, one se spajaju, pri
emu sve rei poevi od druge poinju velikim
slovom (setSize, pronanjiMaxBroj)
Nazivi paketa se piu iskljuivo malim slovima.
Ukoliko se sastoje od vie rei spajaju se
(mojpaket, moj.paket)
Detaljan opis konvencija nalazi se na adresi:
http://www.oracle.com/technetwork/java/codeconv-138413.html
Java aplikacije

U svakoj Java aplikaciji postoji klasa koja definie metod po


imenu main(). Ova klasa imae ime koje ete koristiti kao
argument za Java interpreter prilikom pokretanja aplikacije.
Veba 1
Neuronske mree
Neuronske mree

Neuronske mree su relativno nov koncept u analizi


podataka.

Poeci razvoja neuronskih mrea ne seu daleko u


prolost. Meutim, metode na njima izgraene nalaze iroku
primenu, kako u tehnikim naukama, tako i u drutvenim.
Neki od njih su:

Analiza signala

Prepoznavanje oblika

Upravljanje sistemima

Predikciji

Neuronske mree predstavljaju jednu od metoda vetake


inteligencije. Umesto to konceptualizuju problem u
matematikoj formi, neuronske mree koriste principe
ljudskog mozga i njegove strukture, kako bi razvile strategiju
procesiranja podataka.
Bioloke osnove neuronskih mrea

Ljudski mozak i celokupni nervni sistem je sainjen od nervnih


elija, neurona, kojih ima oko 1011, i koji ostvaruju oko 1015
konekcija. Neuron ima etiri osnovna dela:

ulazni deo elije,

telo elije (soma),

izlazni deo elije, i

sinapse. .


Ulazni deo elije sadri skup razgranatih niti nazvanih dendriti. Telo elije
obrauje signale koje dobija od dendrita, dobijajui na taj nain izlazni impuls
koji se prosleuje na sve krajeve razgranate niti nazvane aksonom, koji
predstavlja izlazni deo elije. Mesto gde se akson dodiruje sa dendritima neke
druge elije se naziva sinapsa. To je mesto gde se impulsi prenose od jedne do
druge nervne elije (tzv. celularna transdukcija)
Bioloke osnove neuronskih mrea
Vetaki neuron
Po analogiji sa biolokim neuronom, formiran je
model vetakog neurona:

xi (i = 1, 2, ... , m) ulazne veze, vrednosti koje neuron
prima (signali ili potencijali kod biolokog neurona);

wki (i = 1, 2, ... , m) tzv. teinski koeficijenti (sinapse
kod biolokog neurona);

uk zbirna vrednost, koja se dobija sabiranjem
ponderisanih ulaza (telo prirodnog neurona);

a(.) aktivacijska funkcija (akson kod biolokog
neurona);

prag aktivacije (bijas) ;

yi vrednost izlaza tj. outputa (potencijal izlaza kod
biolokog neurona).
Vetaki neuron

Svaka od ulaznih veza, koje su oznaene sa xi, i kojih ima n,


mnoi se svojim teinskim koeficijentom wki. Ovako pomnoene
vrednosti se potom sabiraju, i dobija se vrednost z.

Zatim se vrednost z koristi kao ulaz u aktivacionu funkciju


Neuronska mrea
Neuronska mrea:

sastoji se od meusobno povezanih neurona

motivacija: znaajna sposobnost mree da rauna


kada ima dovoljano velik broj neurona

nain raunanja mree (algoritam) zavisi od


vrednosti teinskih faktora wij

obuavanje predstavlja promenu (podeavanje)


teina wij

ui na osnovu serije primera (uzoraka)


Funkcije aktivacije
Arhitektura neuronskih mrea

Mogu se podeliti prema vrstama veza tj. arhitekturi na:


1. slojevite - Neuroni su rasporeeni tako da formiraju slojeve. Na
ulaz jednog neurona se dovode izlazi svih neurona sa prethodnog
sloja, a njegov izlaz se vodi na ulaze svih neurona na narednom
sloju. Neuroni sa prvog (ulaznog) sloja imaju samo po jedan ulaz.
Izlazi neurona sa zadnjeg (izlaznog) sloja predstavljaju izlaze
mree. Predstavnik: backpropagation algoritam.
2. potpuno povezane - Izlaz jednog neurona vodi ka ulazu svih
neurona u mrei. Predstavnik: Hopfildova NM.
3. celularne - Meusobno su povezani samo susedni neuroni. Bez
obzira na lokalnu povezanost, signali se prostiru i na neurone i
van susedstva zbog indirektnog prostiranja informacija.
Predstavnik: CNN Cellular Neural Network.
Arhitektura neuronske mree
skriveni sloj

ulazni sloj izlazni sloj


Podela prema smeru prostiranja
informacija

Neuronske mree se prema smeru prostiranja informacija kroz


mreu mogu podeliti na:
1.Feedforward (nerekurzivne, nerekurentne ili nepovratne) - Vii
slojevi ne vraaju informaciju u nie slojeve. Vre prostiranje
(propagaciju) signala samo u jednom smeru (od ulaza prema izlazu).
Kao predstavnik ove vrste neuronske mree moe se navesti
vieslojni perceptron, odnosno mrea sa vie slojeva.
2.(Feedback) rekurzivne ili rekurentne ili povratne - Vii slojevi vraaju
informacije nazad u nie slojeve. Izlaz iz neurona se vraa u nie
slojeve ili u isti sloj. Predstavnici ove vrste mrea su: Hopfildova,
Celularna Neuronska Mrea (CNN), Kohonenova neuronska mrea,
dvostruko asocijativna, i sl. Feedback mree imaju mnogo vee
procesne sposobnosti od Feedforward mrea.
Uenje

Znaajna karakteristika neuronskih mrea je


njihova sposobnost da ue. Prema tipu uenja u
mrei, algoritmi neuronskih mrea se dele na:
1. Nagledano (supervised) uenje poznate su vrednosti
izlaznih varijabli skupa za uenje mree
(Backpropagation, Radial Basis Funktion, Probabilistika
mrea), i
2. Nenagledano (unsupervised) uenje nisu poznate
vrednosti izlaznih varijabli skupa za uenje mree
(Kohonenova samoorganizirajua, ART mrea).
* Npr. predvianje ponaanja kupaca u odnosu na neki
proizvod sa poznatim prolim akcijama kupaca ili bez
poznatih prolih akcija.
Nadgledano uenje

Najvie se koristi nadgledano uenje

Proces nadgledanog uenja sastoji se iz tri zadatka:


raunanje izlaza
uporeivanje dobijene vrednosti sa eljenom
podeavanje teina i vraanje na prvi korak

Pre poetka procesa uenja postavljaju se inicijalne


vrednosti teina sluajno ili po odreenom pravilu.

U praksi obino je sluaj da se zadaje nivo greke


(npr. 5%) koji treba postii da bi se okonao proces
uenja ili se unapred zadaje broj iteracija pri uenju.
Obuka neuronskih mrea

Neuronske mree obuene obukom sa


nadzorom i mree obuene bez nadzora
bitno razlikuju.

Obuka bez nadzora omoguava


organizovanje sloenih karakteristika
sistema u razliite klase, dok se obukom
sa nadzorom mogu izraunati
karakteristike posmatranih klasa.
Opte pravilo obuke NN

Obuka neuronskih mrea se ostvaruje


putem promena teinskih koeficijenata na
sinpsama.

Promene na sinapsama su posledica


dovoenja razliitih obuavajuih uzoraka
na ulaz u mreu.

Ako su pri obuci na raspolaganju i eljene


vrednosti izlaza, onda se radi o obuci sa
nadzorom. U suprotnom, obuka se naziva
obukom bez nadzora.
Opte pravilo obuke NN

Vektor teina sinapsi wi=[wi1 wi2 win]T i-tog neurona se menja


proporcionalno proizvodu ulaznog vektora x i signala obuke r. Signal
greke je funkcija od sinapsi wi, ulaza neurona x, a ponekad i signala
eljenih izlaza di, tj.
r=r(wi,x,di)

Promena vektora teina u diskretnom trenutku k moe se definisati


sa
wi(k)=r(wi(k),x(k),di(k))x(k)
brzina obuavanja

Ovaj izraz pokazuje zavisnost promene teina sinapsi od signala


greke i vrednosti ulaznog vektora. Pravilo obuke za diskretni sluaj
moe napisati kao:
wi(k+1)=wi(k)+ r(wi(k),x(k),di(k))x(k)
wi(k+1)=wi(k)+ wi(k)
Perceptron

Ulazni sloj je povezan sa izlaznim slojem.

Mogu se reavati problemi, koji su linearno separabilni (kao to su


AND i OR problem, ali ne i XOR problem).

Perceptron koji ima jedan neuron na ulazu, moe da klasifikuje ulazne


vektore u dve katergorije, jer izlaz moe biti 1 ili 0.

Ako je broj izlaznih neurona S i poto svaki neuron moe imati


vrednost 0 ili 1, postoji 2^S moguih kategorija
x1
w1
. f
. 1 ako je y >0
. inae 0
w0 y = wixi
xn wn x0
Linearno separabilni problemi

Separabilno Neseparabilno (XOR)

x2 x2
+
+ -
+
-

+ - x1 x1
-
- +
Perceptron

x1 wj1
hj=wixi+b yj=step(hj)

xi wji hj
yj

xn wjn b yj=1 za hj >= 0


yj=0 za hj < 0
Perceptron pravilo obuke

signal greke se formira kao razlika izmeu eljenog


i stvarnog izlaza neurona i jednak je
r=di-yi
yi=step(wiTx) stvarni izlaz neurona, a di je eljeni
izlaz i-tog neurona. Sada se promene na vektoru
teina sinapsi za i-ti neuron mogu izraziti kao
wi= (di-step(wiTx))x

Promena pojedinih sinapsi se izraunava po


sledeoj formuli:
wij= (di-sgn(wiTx))xj, j=1,2,...,n
Obuka perceptrona
1)Postaviti vrednosti teina i bijasa na
sluajne vrednosti izmeu -1 i 1
2)Za svaki obuavajui skup izraunati izlaz
neurona napraviti signal greke i korigovati
teine
3)Ponavljati korak 2 sve dok postoji greka ili
se ne dostigne maksimalan broj iteracija
Model neurona u javi

Neuron
Atributi: Metode:
- Double[] tezine - getTezina(int i)
- Double b; - getBijas()
- Int f; - getFunkcija()
- getBrojUlaza()
Konstruktor: - getY(double[] ulazi)
- Neuron(broj_ulaza, funkcija) - setTezina(int i, double t)
- getF(double suma)
Veba 2

Realizovati u javi obuku perceptrona za sledei


obuavajui skup:
Jednoslojna mrea
x1 w11

xi w1i h1
f(h1) y1

.
xn w1n
.
x1 wj1 .

xi wji hj m broj izlaza


f(hj) yj
n broj ulaza

xn wjn .
.
x1 wm1
.
xi wmi hm
f(hm) ym

xn wmn
Obuka neurona

U datom trenutku posmatramo samo j-ti neuron pa moemo napisati:

x1 wj1

xi wji hj
f(hj) yj

Bijas moemo predstaviti kao


xn wjn bj = w0*1
hj=wixi yj=f(hj)
Obuka neurona
Obuka neurona
Obuka neurona

Vidimo da korekcija teina zavisi od pravilnog izbora funkcije aktivacije.

Perceptron pravilo obuke je specijalan sluaj delta pravila obuavanja jer


prvi izvod nije mogue izraunati!

Ukupna greka se rauna kao suma srednjekvadratnih greaka za ceo


obuavajui skup za izlaz svakog neurona!
Funkcije aktivacije
naziv funkcija prvi izvod
Model sloja
Sloj
Atributi:
- Neuron[] neuroni
- Int f;

Konstruktor:
- Sloj(broj_ulaza, funkcija, broj_neurona)

Metode:
- getNeuron(int i)
- getFunkcija()
- getBrojNeurona()

You might also like