Sunteți pe pagina 1din 13

EXAMEN anul 4 calculatoare

La Conf.dr.ing. Adrian Moise PI, RNRA, Retele neuronale artificiale


`(pastreaza asta si trimite mai departe !!!!)

1.

Un perceptron are ponderile 0, 0.4 si pragul 0.3. El trebuie sa invete functia logica AND. Rata de invatare este 0.25. Aplicati algoritmul de antrenare si determinate toate valorile caracteristice acestui process.(fac 2 iteratii,adica reiau setul de antrenare de 2 ori). De obicei primele 2 iteratii sunt suficiente(este mult de calcul si la examen conteaza ideea algoritmului).

Desen:

Se cunosc ponderile w1=0, w2=0.4 pragul = 0.3( cu teta notam pragul) si rata de invatare(antrenare) =0.25=1/4 Intrarile sunt notate cu x1 si x2 W0=0 deoarece nu am polarizare a neuronului (se poate da si polarizarea) X0=-1 (poate avea valorile -1 sau 1 si reprezinta intrarea de polarizare se allege una din valori intotdeauna)

Alegem noi o functie de activare (functia liniara) f(x)=x in matematica aici :

f(net)=net Etapa1: Construirea setului de antrenare Construim setul de antrenare(format din perechi intrare tinta):

H={([0 0],0);([0 1],0);([1 0],0);([1 1],1)}

[0 0] s.a.md sunt vectori coloana nu linie

Daca aveam 3 ponderi w1,w2 si w3 pentru functia AND(SI) aveam setul de antrenare urmator: H={([0 0 0],0);([0 0 1],0);([0 1 0],0);([1 0 0],0);([0 1 1],0);([1 1 0],0);([1 0 1,0]);([1 1 1],1)}

Tot vectori coloana prima componenta a fiecarei perechi adica 0 0 0;0 0 1 s.a.m.d nu linie cum sunt scrisi mai sus la H

Pentru intelegerea construirii setului de antrenare avem mai jos 2 exemple sugestive: Obs1. Daca aveam functia OR(SAU) si 2 ponderi w1 si w2 aveam perechile : H={([0 0],0);([0 1],1);([1 0],1);([1 1],1)}

Etapa2: Parcurgerea celor 2 iteratii

Iteratia1: Luam primul set de antrenare ([0 0],0) ; [0 0 ] e vector coloana scrii valorile pe coloana Pasul1: Calculez activarea(pe care o notam sa zic cu a sau net):

a=net=w1*x1+w2*x2+w0*x0=0*0+0.4*0+0*(-1)=0

Pasul2: Calculez iesirea :

y= f(net)=f(0)=0 Iar functia noastra de activare era f(net)=net(functia liniara) am ales noi intial o functie de activare convenabila(acesta poate fi si data in problema daca nu se alege ca exemplu de functie de activare pt.ca apar calcule simple) Ca regula y=1 , daca f(net)>= (pragul) y=0, daca f(net)< (pragul) Pasul3: Calculez W1, W2, :

W1= *(t-y)*x1=0.25*(0-0)*0=0 W2= *(t-y)*x2=0.25*(0-0)*0=0 = *(t-y)*x0=0.25*(0-0)*(-1)=0 Obs. x1 e primul element al vectorului coloana x2 al doilea element al vectorului coloana Pasul4: Actualizam ponderile si pragul:

W1= W1+W1=0+0=0 W2= W2+W2=0.4+0=0.4 = 1+ =0.3+0=0.3 Luam al doilea set de antrenare ([0 1],0) dar [0 1] e vector coloana si folosim acum valorile obtinute la pasul4 adica avem: w1= 0, w2=0.4 si =0.3 Pasul1: Calculez activarea: a=net= w1*x1+w2*x2+w0*x0=0*0+0.4*1+0*0=0.4

Pasul2: Calculez iesirea :

y= f(net)=f(0.4)=1 (iesirea se noteaza cu y sau o)

Iar functia noastra de activare era f(net)=net(functia liniara) am ales noi intial o functie de activare convenabila(acesta poate fi si data in problema daca nu se alege ca exemplu de functie de activare pt.ca apar calcule simple)

Ca regula y=1 , daca f(net)>= (pragul) y=0, daca f(net)< (pragul) Pasul3: Calculez W1, W2, :

W1= *(t-y)*x1=0.25*(0-1)*0=0 W2= *(t-y)*x2=0.25*(0-1)*1=-0.25 = *(t-y)*x0=0.25*(0-1)*(-1)=0.25 Obs. x1 e primul element al vectorului coloana x2 al doilea element al vectorului coloana Pasul4: Actualizam ponderile si pragul:

W1= W1+W1=0+0=0 W2= W2+W2=0.4-0.25=0.15 = 1+ =0.3+0.25=0.55 Luam al treilea set de antrenare ([1 0],0) dar [1 0] e vector coloana si folosim acum valorile obtinute la pasul4 adica avem: w1= 0, w2=0.15 si =0.55 Pasul1: Calculez activarea: a=net= w1*x1+w2*x2+w0*x0=0*1+0.15*0+0*0=0

Pasul2: Calculez iesirea :

y= f(net)=f(0)=0 (iesirea se noteaza cu y sau o)

Iar functia noastra de activare era f(net)=net(functia liniara) am ales noi intial o functie de activare convenabila(acesta poate fi si data in problema daca nu se alege ca exemplu de functie de activare pt.ca apar calcule simple) Ca regula y=1 , daca f(net)>= (pragul) y=0, daca f(net)< (pragul)

Pasul3: Calculez W1, W2, :

W1= *(t-y)*x1=0.25*(0-0)*1=0 W2= *(t-y)*x2=0.25*(0-0)*0=0 = *(t-y)*x0=0.25*(0-0)*(-1)=0 Obs. x1 e primul element al vectorului coloana x2 al doilea element al vectorului coloana Pasul4: Actualizam ponderile si pragul:

W1= W1+W1=0+0=0 W2= W2+W2=0.15+0=0.15 = 1+ =0.55+0=0.55 Luam al treilea set de antrenare ([1 1],1) dar [1 1] e vector coloana si folosim acum valorile obtinute la pasul4 adica avem: w1= 0, w2=0.15 si =0.55 Pasul1: Calculez activarea: a=net= w1*x1+w2*x2+w0*x0=0*1+0.15*1+0*0=0.15

Pasul2: Calculez iesirea :

y= f(net)=f(0.15)=0 (iesirea se noteaza cu y sau o)

Iar functia noastra de activare era f(net)=net(functia liniara) am ales noi intial o functie de activare convenabila(acesta poate fi si data in problema daca nu se alege ca exemplu de functie de activare pt.ca apar calcule simple) Ca regula y=1 , daca f(net)>= (pragul) y=0, daca f(net)< (pragul)

Pasul3: Calculez W1, W2, : W1= *(t-y)*x1=0.25*(1-0)*1=0.25

W2= *(t-y)*x2=0.25*(1-0)*1=0.25 = *(t-y)*x0=0.25*(1-0)*(-1)=-0.25 Obs. x1 e primul element al vectorului coloana x2 al doilea element al vectorului coloana Pasul4: Actualizam ponderile si pragul:

W1= W1+W1=0+0.25=0.25 W2= W2+W2=0.15+0.25=0.4 = 1+ =0.55-0.25=0.3 Acum vom incepe iteratia 2 si vom lua din nou cele 4 seturi de antrenare(ca de obicei luam ultimele date adica w1=0.25, w2=0.4 si =0.3 si aplicam pasii 1-4)

Deci calculezi dupa acelasi principiu luand inca o data pe rand fiecare pereche a setului de antrenare.( e destul de mult de lucru de calcul).

Etapa3: Trasarea tabelului

w1 0 0 0 0

w2

x1 x2 a 0 1 0 1 0 0 1 0

y 0 0 0

t 0 0 0 1 0

*(t- W W2 y) 1 0 0 0 -0.25 0 0 0

0.4 0.3 0 0.4 0.3 0 0.1 0.5 1 5 5 0.1 0.5 1 5 5

0.25 0.25 0 0

0.1 1 5 0 0

0.25 0.2 0.25 5 0.25 0 0 0 0

0.2 0.4 0.3 0 5

0.2 0.4 0.3 0 5 0.2 0.1 0.5 1 5 5 5 0.2 0.1 0.5 1 5 5 5

1 0 1

0.4 0 0.2 0 5 0.4 1

0 0 1

-0.25 0 0 0

0.25 0.25 0 0

0.25 0.2 0.25 5 0.25

2. Caracteristica dorita pentru un convertor D/A (digital-analogic) este precizata in tabelul de mai jos. Unitatea trebuie sa fie antrenat fara intrare de polarizare si cu o functie de activare liniara. Functia de activare: f(net)=net

Intrari 0 0 0 1 1 0 1 1 1/8 3/8 5/8

Iesire

7/8

Formultati Solutia si determinate ponderile folosind algoritmul LMS. Practic la aceasta problema setul de antrenare este dat implicit:

H={([0 0],1/8);([0 1],3/8];([1 0],5/8);([1 1],7/8)} [0 0];[0 1];[1 0];[1 1] sunt vectori coloana
Pasul1: Initializez ponderile(deoarece nu mi se dau): Fie w11=1 si w12=1

Pasul2: Aleg rata de invatare =0.5=1/2 (deoarece nu mi se da in problema si ea trebuie aleasa a.i sa fie o valoare cuprinsa intre 0.1 si 1)

Pasul3: Desenul (intrarile sunt notate cu i1 si i2): i1 i2 w11 w12 o

Pasul4: Luam primul set de antrenare ([0 0],1/8) ; [0 0]- e vector coloana nu linie net= w11*i1+w12*i2=0*1+0*1=0 (calculul activarii) o=f(net)=f(0)=0 deoarece f(net)=net =>f(0)=0 ek=tp-WkT*ip => relatia erorii(forma generala) W1=[1 1] vector coloana reprezentand ponderile nu linie cum e scris e1=t1-W1T*i1=1/8-[1 1][0 0]=1/8-0=1/8 (calculam e1)

fiind vector coloana(nu linie) e1=- * e1=-1/2*1/8=-1/16 (calculam variatia erorii e1) Wk+1=WK+ WK => reprezinta relatia de actualizare a ponderilor(forma generala) W2=W1+W1( conform relatiei de mai sus) W1= e1*i1=-1/16*[0 0]=[0 0] vector coloana (calculam W1)

fiind vector coloana W2=W1+W1=[1 1]+[0 0]=[1 1] vector coloana

Vectori coloana( nu linie)

Pasul5: Luam al doilea set de antrenare ([0 1],3/8) ; [0 1]- e vector coloana nu linie

net= w11*i1+w12*i2=1*0+1*1=1 (calculul activarii) o=f(net)=f(1)=1 deoarece f(net)=net =>f(1)=1 ek=tp-WkT*ip => relatia erorii(forma generala) W2=[1 1] vector coloana reprezentand ponderile nu linie cum e scris e2=t2-W2T*i2=3/8-[1 1][0 1]=3/8-1=-5/8 (calculam e2)

fiind vector coloana(nu linie) e2=- * e2=-1/2*(-5/8)=5/16 (calculam variatia erorii e2) Wk+1=WK+ WK => reprezinta relatia de actualizare a ponderilor(forma generala) W3=W2+W2( conform relatiei de mai sus) W2= e2*i2=5/16*[0 1]=[0 5/16] vector coloana (calculam W2)

fiind vector coloana W3=W2+W2=[1 1]+[0 5/16]=[1 21/16] vector coloana

Vectori coloana( nu linie)

Pasul6: Luam al treilea set de antrenare ([1 0],5/8) ; [1 0]- e vector coloana nu linie

net= w11*i1+w12*i2=0*1+5/16*0=0 (calculul activarii) o=f(net)=f(0)=0 deoarece f(net)=net =>f(0)=0 ek=tp-WkT*ip => relatia erorii(forma generala) W3=[1 21/16] vector coloana reprezentand ponderile nu linie cum e scris e3=t3-W3T*i3=5/8-[1 21/16][1 0]=7/8-(19/16*1+21/16*1)=7/8-5/2=-13/8 (calculam e3)

fiind vector coloana(nu linie) e3=- * e3=-1/2*(-3/8)=3/16 (calculam variatia erorii e3) Wk+1=WK+ WK => reprezinta relatia de actualizare a ponderilor(forma generala)

W4=W3+W3( conform relatiei de mai sus) W3= e3*i3=3/16*[1 0]=[3/16 0] vector coloana (calculam W3)

fiind vector coloana W4=W3+W3=[1 21/16]+[3/16 0]=[19/16 21/16] vector coloana

Vectori coloana( nu linie)

Pasul7: Luam al patrulea set de antrenare ([1 1],7/8) ; [1 1]- e vector coloana nu linie

net= w11*i1+w12*i2=(19/16)*1+(21/16)*1=40/16=5/2 (calculul activarii) o=f(net)=f(5/2)=5/2 deoarece f(net)=net =>f(5/2)=5/2 ek=tp-WkT*ip => relatia erorii(forma generala) W4=[19/16 21/16] vector coloana reprezentand ponderile nu linie cum e scris e4=t4-W4T*i4=7/8-[19/16 21/16][1 1]=5/8-(1*1+21/16*0)=5/8-1=-3/8 (calculam e4)

fiind vector coloana(nu linie) e4=- * e4=-1/2*(-13/8)=13/16 (calculam variatia erorii e4) Wk+1=WK+ WK => reprezinta relatia de actualizare a ponderilor(forma generala) W5=W4+W4( conform relatiei de mai sus) W4= e4*i4=13/16*[1 1]=[13/16 13/16] vector coloana (calculam W4)

fiind vector coloana


W5=W4+W4=[19/16 21/16]+[13/16 13/16]=[2 17/8] vector coloana

Vectori coloana( nu linie)