Documente Academic
Documente Profesional
Documente Cultură
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)
f(net)=net Etapa1: Construirea setului de antrenare Construim setul de antrenare(format din perechi intrare tinta):
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)}
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
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
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
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)
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
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)
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).
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.25 0.25 0 0
0.1 1 5 0 0
1 0 1
0 0 1
-0.25 0 0 0
0.25 0.25 0 0
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
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)
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)
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)
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)
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)