10
Mašinski fakultet Niš Inteligentno računarsko upravljanje i robotika Zadatak : U Matlabu kreirati neuro mrežu koja aproksimira funkciju dve promenljive “peaks” (pokrenuti naredbu peaks u matlabu koja daje informaciju o funkciji) na opsegu [-3,3] za obe promenljive. Podatke za obučavanje mreže kreirati tačnim izračunavanje vrednosti funkcije na zadatom opsegu sa korakom promenljivih 0.2. Opisati postupak i dobijeno rešenje (3 strane). Za istu funkciju i na istom opsegu genetskim algoritmom u Matlabu pronaći globalni minimum funkcije, pa opisati postupak i dobijeno rešenje (3 strane). Rešenje : A) Neuro mreža koja aproksimira funkciju dve promenljive “peaks” Neuro mreža je jedan oblik implementacije sistema veštačke inteligencije, koji predstavlja sistem koji se sastoji od određenog broja međusobno povezanih procesora ili čvorova, ili procesnih elemenata koje nazivamo veštačkim neuronima. Telo neurona naziva se čvor ili jedinica. Svaki od neurona ima lokalnu memoriju u kojoj pamti podatke koje obrađuje. Podaci koji se obrađuju su lokalni podaci kao i oni koji se primaju preko veze. Podaci koji se ovim kanalima razmenjuju su obično numerički. Arhitektura neuro mreže predstavlja specifično povezivanje neurona u jednu celinu. Struktura neuro mreže se razlikuje po broju slojeva. Prvi sloj se naziva ulazni, a poslednji izlazni, dok se slojevi između nazivaju skriveni slojevi. Najčešće ih ima tri. Prvi sloj, tj. ulazni je jedini sloj koji prima podatke iz spoljašnje sredine, sledeći (skriveni) prosleđuje relevantne podatke do trećeg (izlaznog) sloja. Na izlazu trećeg sloja dobijamo konačan rezultat. Složenije neuronske mreže imaju više skrivenih slojeva. Slojevi su međusobno potpuno povezani. Slojevi komuniciraju tako što se izlaz svakog neurona iz prethodnog sloja povezuje sa ulazima svih neurona narednog sloja. Znači, svaki čvor ima nekoliko ulaza i jedan izlaz. Jačina veza kojom su neuroni povezani naziva se težinski faktor (weight). Postoje različiti tipovi neuro mreža kao na primer: Feedforward NN 1 Nenad Nikolić

IRUIR-zadatak

  • Upload
    neoa

  • View
    38

  • Download
    2

Embed Size (px)

Citation preview

Page 1: IRUIR-zadatak

Mašinski fakultet Niš Inteligentno računarsko upravljanje i robotika

Zadatak :

U Matlabu kreirati neuro mrežu koja aproksimira funkciju dve promenljive “peaks” (pokrenuti naredbu peaks u matlabu koja daje informaciju o funkciji) na opsegu [-3,3] za obe promenljive. Podatke za obučavanje mreže kreirati tačnim izračunavanje vrednosti funkcije na zadatom opsegu sa korakom promenljivih 0.2. Opisati postupak i dobijeno rešenje (3 strane). Za istu funkciju i na istom opsegu genetskim algoritmom u Matlabu pronaći globalni minimum funkcije, pa opisati postupak i dobijeno rešenje (3 strane).

Rešenje :

A) Neuro mreža koja aproksimira funkciju dve promenljive “peaks”

Neuro mreža je jedan oblik implementacije sistema veštačke inteligencije, koji predstavlja sistem koji se sastoji od određenog broja međusobno povezanih procesora ili čvorova, ili procesnih elemenata koje nazivamo veštačkim neuronima.

Telo neurona naziva se čvor ili jedinica. Svaki od neurona ima lokalnu memoriju u kojoj pamti podatke koje obrađuje. Podaci koji se obrađuju su lokalni podaci kao i oni koji se primaju preko veze. Podaci koji se ovim kanalima razmenjuju su obično numerički.

Arhitektura neuro mreže predstavlja specifično povezivanje neurona u jednu celinu. Struktura neuro mreže se razlikuje po broju slojeva. Prvi sloj se naziva ulazni, a poslednji izlazni, dok se slojevi između nazivaju skriveni slojevi. Najčešće ih ima tri. Prvi sloj, tj. ulazni je jedini sloj koji prima podatke iz spoljašnje sredine, sledeći (skriveni) prosleđuje relevantne podatke do trećeg (izlaznog) sloja. Na izlazu trećeg sloja dobijamo konačan rezultat. Složenije neuronske mreže imaju više skrivenih slojeva. Slojevi su međusobno potpuno povezani.

Slojevi komuniciraju tako što se izlaz svakog neurona iz prethodnog sloja povezuje sa ulazima svih neurona narednog sloja. Znači, svaki čvor ima nekoliko ulaza i jedan izlaz. Jačina veza kojom su neuroni povezani naziva se težinski faktor (weight).

Postoje različiti tipovi neuro mreža kao na primer: Feedforward NN Radial basis function (RBF) NN Kohonenove samoroganizovane NN Rekurentne NN Hopfildove NN “Echo state” NN

Za rešenje postavljenog zadatka opredelio sam se za Radial basis function (RBF) NN.Mrežu s radijalnom funkcijom (engl. „Radial Basis Function“, skr. „RBF“) predložio je M. J. D.

Powel. Ta mreža upotrebljava radijalno simetričnu i radijalno ograničenu aktivacijsku funkciju u svom skrivenom sloju. Ova neuro mreža je linearna kombinacija radijlnih baznih funkcija. RBF NN imaju najčešće 3 sloja: ulazni sloj, skriveni sloj u kome su primenjene nelienarne RBF funkcije, i izlazni sloj. Izlaz je:

N je broj neurona u skrivenom sloju, ai su težinske funkcije, a ρ je radijus centralnog vektora neurona i.

1 Nenad Nikolić

Page 2: IRUIR-zadatak

Mašinski fakultet Niš Inteligentno računarsko upravljanje i robotika

U opštem slučaju svi ulazni neuroni su povezani sa svim neuronima u skrivenom sloju, Radijus neuorna se posmatra kao Euklidsko rastojanje, i pretpostavlja se slučajna (Gausova) raspodela.

i pri ovome postavlja uslov:

Ovaj uslov praktično znači da je uticaj radijusa radijalne funkcije samo na blisku okolinu.

Jednostavan prikaz mreže s radijalnom funkcijom

Algoritam učenja u mreži s radijalnom funkcijom može se, kroz slojeve, opisati na sledeći način:1. Učenje počinje u skrivenom sloju s nenadgledanim algoritmom kako bi se odredilo središte.2. Učenje se nastavlja u izlaznom sloju s nadgledanim algoritmom kako bi se izračunala greška.3. Istovremeno se primenjuje nadgledani algoritam u skrivenom i izlaznom sloju kako bi se

prilagodile težine u mreži.

Grafički prikaz funkcije peaks u Matlabu izgleda ovako:

2 Nenad Nikolić

Page 3: IRUIR-zadatak

Mašinski fakultet Niš Inteligentno računarsko upravljanje i robotika

Prvi korak u kreiranju odgovarajuće mreže predstavlja definisanje ulaza P i i ciljanih veza T. To radimo sledećim komandama u Matlabu:

[X,Y] = meshgrid(-3:.2:3);P=[X;Y];T = peaks(X,Y);

Ovim smo definisali 2x31 ulazni podatak matrice P i 31 ciljani rezultat vektora T. Izgled trening vektora predstavljen je na sledećoj slici

Pomoću Matlabove funkcije NEWRB brzo kreiramo Radial basis function NN koji aproksimira funkciju zadatu pomoću P i T. Pored definisanih P i T komandi NEWRB zadaćemo jos dva argumenta, vrednos srednje kvadratne greske i širenje. Sama sintaksa funkcije izgleda ovako:

newrb(P,T,goal,spread,MN,DF)

gde je:

P - R x Q matrica Q ulaznih vektoraT - S x Q matrica Q traženih klasa vektoraGoal – vrednost srednje kvadratne greske (default = 0.0)Spread – širenje RBF-a (default = 1.0)MN – maksimalni broj neurona (default is Q)DF – broj neurona dodat između izlaza (default = 25)

3 Nenad Nikolić

Page 4: IRUIR-zadatak

Mašinski fakultet Niš Inteligentno računarsko upravljanje i robotika

Tako da sledeći redovi koje dodajemo u m-file izgledaju ovako:

eg = 0.02; % sum-squared error goalsc = 1; % spread constantnet = newrb(P,T,eg,sc);

U komandnom prozoru Matlaba dobijamo poruku:

NEWRB, neurons = 0, MSE = 2.42945

Da bismo videli rezultat aproksimacije mreže vrsimo grafičko predstavljanje rezultata sledećim komandama:

Z = sim(net,P);plot3(X,Y,Z);

Kao rezultat dobijamo:

Ceo m-file koji je napisan za ovu aproksimaciju izgleda ovako:

%U Matlabu kreirati neuro mrežu koja aproksimira funkciju dve promenljive%“peaks” na opsegu [-3,3] za obe promenljive.%Podatke za obuèavanje mreže kreirati taènim izraèunavanje vrednosti%funkcije na zadatom opsegu sa korakom promenljivih 0.2. clcfigure(1)peaks[X,Y] = meshgrid(-3:.2:3);P=[X;Y];

4 Nenad Nikolić

Page 5: IRUIR-zadatak

Mašinski fakultet Niš Inteligentno računarsko upravljanje i robotika

T = peaks(X,Y);eg = 0.02; sc = 1;net = newrb(P,T,eg,sc);figure(2)plot3(X,Y,T,'+');xlabel('x');ylabel('y');zlabel('z');title('Trening vektor')Z = sim(net,P);figure(3)plot3(X,Y,Z);xlabel('x');ylabel('y');zlabel('z');title('aproksimacija')

B) Nalaženje globalnog minimuma funkcije peaks pomoću genetskog algoritma

Genetski algoritam (GA) je stohastični metod pretraživanja, koji oponaša biološki proces evolucije. Karakteristično za njega je da održava veću grupu mogućih rešenja problema, koja se naziva populacijom. Odabrana rešenja iz populacije se međusobno kombinuju kako bi formirala novu generaciju rešenja koja bi potencijalno sadržala bolje potomke. Glavna odlika GA u odnosu na druge stohastične metode je postojanje operacija ukrštanja i mutacije. Simbolično, podatak o stanju neke promenljive se naziva genom, a skup stanja promenljivih koje definišu jedno rešenje se naziva hromozomom.

Rad GA se može opisati u osam odnosno sedam koraka:1. Definisanje svih potrebnih parametara problema i GA2. Formiranje početne populacije3. Dekodiranje hromozoma - ovaj korak se javlja samo kod binarnih GA4. Određivanje cena hromozomima5. Odabir selekcije hromozoma koji će opstati za parenje6. Parenje - obično se iz boljeg dela populacije odabiru roditelji koji će na neki način ukrstiti svoj

genetski materijal i dati jednog ili više potomaka koji obično zamene nekog od lošijih hromozoma7. Mutcije, pri kojima se menja genetski sadržaj hromozoma8. Ispitivanje konvergencije, da bi se utvrdilo da li ima osnova da se tok algoritma prekine. Ukoliko

nije ispunjen uslov konvergencije, vratiti se na korak 3 odnosno 4.

Želimo da nadjemo globalni minimum funkcije peaks na području od -3 do 3. Izgled funkcije prikazan je na narednoj slici.

5 Nenad Nikolić

z = 3*(1-x).^2.*exp(-(x.^2) - (y+1).^2) ... - 10*(x/5 - x.^3 - y.^5).*exp(-x.^2-y.^2) ... - 1/3*exp(-(x+1).^2 - y.^2)

Page 6: IRUIR-zadatak

Mašinski fakultet Niš Inteligentno računarsko upravljanje i robotika

Vrednost nelinearnih ograničenja definisana je radijusom poluprečnika 3 oko početka. Ovo ograničenje je zadato pomoću funkcije circularConstraint koja ima sledeći kod:

function [c,ceq] = circularConstraint(x)ceq = [];c = x(:,1).^2 + x(:,2).^2 - 9;

Optimizacioni problem definišemo sledećom naredbom:

problem = createOptimProblem('fmincon',... 'objective',@(x) peaks(x(1),x(2)), ... 'nonlcon',@circularConstraint,... 'x0',[-1 -1],... 'lb',[-3 -3],... 'ub',[3 3],... 'options',optimset('OutputFcn',... @peaksPlotIterates));

Možemo videti da dobijeno rešenje nije globalni minimum:

[x,f] = fmincon(problem);

x =

-1.3473 0.2045

f =

-3.0498

6 Nenad Nikolić

Page 7: IRUIR-zadatak

Mašinski fakultet Niš Inteligentno računarsko upravljanje i robotika

Ovaj problem rešićemo primenom GA

problem.solver = 'ga';problem.fitnessfcn = problem.objective;problem.nvars = 2;problem.options = gaoptimset('PopInitRange',[-3;3],... 'OutputFcn',@peaksPlotIterates,... 'Display','iter'); [x,f] = ga(problem);

Kao rešenje dobijamo:

problem =

objective: @(x)peaks(x(:,1),x(:,2)) x0: [-1 -1] Aineq: [] bineq: [] Aeq: [] beq: [] lb: [-3 -3] ub: [3 3] nonlcon: @circularConstraint solver: 'ga' options: [1x1 struct] fitnessfcn: @(x)peaks(x(:,1),x(:,2)) nvars: 2

Best max StallGeneration f-count f(x) constraint Generations 1 1060 -6.55112 0 0 2 2100 -6.55113 0 0 3 3140 -6.55113 0 0 4 4180 -6.55113 0 1 5 5220 -6.55113 0 2Optimization terminated: average change in the fitness value less than options.TolFun and constraint violation is less than options.TolCon.

x =

0.2283 -1.6255

f =

-6.5511

7 Nenad Nikolić

Page 8: IRUIR-zadatak

Mašinski fakultet Niš Inteligentno računarsko upravljanje i robotika

m-file korišćen za rešavanje ovog problema izgleda ovako:

clear allclose allclcpeakstype('circularConstraint')problem = createOptimProblem('fmincon',... 'objective',@(x) peaks(x(1),x(2)), ... 'nonlcon',@circularConstraint,... 'x0',[-1 -1],... 'lb',[-3 -3],... 'ub',[3 3],... 'options',optimset('OutputFcn',... @peaksPlotIterates));[x,f] = fmincon(problem);problem.solver = 'ga';problem.fitnessfcn = problem.objective;problem.nvars = 2;problem.options = gaoptimset('PopInitRange',[-3;3],... 'OutputFcn',@peaksPlotIterates,... 'Display','iter'); [x,f] = ga(problem);

8 Nenad Nikolić