Tehnici de Inteligenta Computationala

TEHNICI DE INTELIGENȚĂ COMPUTAȚIONALĂ

Tehnicile de Inteligență Computațională se utilizează în rezolvarea problemelor ce nu pot fi rezolvate prin tehnici tradiționale sau când nu există suficiente informații despre o problemă în scopul elaborării unui model, pe baza căruia să se poată dezvolta un algoritm de rezolvare.

În acest capitol va fi prezentat, conceptul de Inteligență Computațională din literatura de specialitate și vor fi abordate două tehnici de Inteligență Computațională, respectiv rețele neuronale și mașini cu vectori suport, tehnici de mare interes și actualitate, având în vedere numărul mare de cercetări și articole publicate pe plan mondial.

5.1 Definirea conceptului de Inteligență Computațională

Dezvoltarea calculatoarelor digitale a făcut posibilă invenția sistemelor inginerești care gândesc ca oamenii și prezintă un comportament inteligent. Ramura de cunoaștere și știința care a apărut împreună cu astfel de sisteme, se numește Inteligența Artificială (AI).

În locul folosirii acestui nume general, pentru a acoperi practic orice abordare a sistemelor inteligente, comunitatea de cercetare a inteligenței artificiale restrânge sensul său prin reprezentări simbolice și manipulări într-un mod de sus în jos, după cum au arătat Craenen & Eiben (2003).

Cu alte cuvinte, AI construiește un sistem inteligent prin studierea primei structuri a problemei (de obicei, în termeni logici formali), apoi procedurile formale de raționament sunt aplicate acelei structuri.

Alternativ, abordările non-simbolice și de jos în sus (în care este descoperită structura rezultată dintr-o sursă neordonată) ale sistemelor inteligente sunt de asemenea cunoscute. Abordările convenționale pentru înțelegerea și predicția comportamentului unor astfel de sisteme bazate pe tehnici analitice se pot dovedi a fi insuficiente, chiar și în etapele inițiale de a stabili un model matematic adecvat.

Rudas (2002) subliniază că „mediul computațional utilizat într-o astfel de o abordare analitică poate fi categorică și inflexibilă, în scopul de a face față complexității sistemelor industriale din lumea reală. Se pare că în relațiile cu astfel de sisteme, trebuie să se confrunte cu un grad ridicat de incertitudine și tolerare a impreciziei, iar încercarea de a crește precizia poate fi foarte costisitoare”.

În 1994, nașterea Inteligenței Computaționale (CI) a fost atribuită la Congresul International de Inteligență Computațională (IEEE World Congress on Computational Intelligence , Orlando, Florida).

Din acel moment nu doar un număr mare de lucrări și manifestări științifice au fost dedicate Inteligenței Computaționale, dar au fost publicate numeroase definiții ale conceptului. În continuare, vor fi prezentate două definiții dintre cele mai interesante.

Prima definiție a fost propusă de Bezdek (1994) și va fi prezentată în cele ce urmează.

Definiția 1. Un sistem este numit sistem de calcul inteligent atunci când se ocupă numai cu date numerice, are o componentă de recunoaștere a formelor, și nu utilizează cunoștințele în sensul inteligenței artificiale și, în plus, atunci când începe să prezinte adaptivitate de calcul, toleranță la erori de calcul, viteză de abordare a răspunsului uman, ratele de eroare se aproximează cu performanța umană.

Marks (1993), în unul din articolele sale privind Inteligența Computațională, definește acest concept prin enumerarea elementelor constitutive, respectiv rețele neuronale, algoritmi genetici, sisteme fuzzy, programare evolutivă.

Eberhart et al.(1996) au formulat următoarea definiție și relația definiției lui cu cea a lui Bezdek.

Definiția 2. Inteligența Computațională este definită ca o metodologie care implică calculul (indiferent că este un calculator, creier uman, etc.) și care manifestă capacitatea de a învăța și/sau a face față situațiilor noi, astfel încât sistemul să fie perceput și să dispună de unul sau mai multe atribute de rațiune, cum ar fi: generalizarea, descoperirea, asocierea și abstractizarea.

5.2 Rețele neuronale

Rețelele neuronale (NN) sunt tehnici de Inteligență Computațională moderne, bazate pe construirea unui model matematic asemănător funcționării rețelelor neuronale biologice.

NN sunt utilizate în dezvoltarea modelelor predictive, în special atunci când există o bază de date foarte mare, fiind des utilizate în rezolvarea aplicațiilor din economie, informatică, inginerie, medicină, fiind cea mai utilizată tehnică dintre tehnicile de Inteligență Computațională (Chen & Shih, 2006) și (Boyacioglu et al.,2008).

Spre deosebire de alte tehnici de Inteligență Computațională, rețelele neuronale au avantajul că au o mare capacitate de autoinstruire și adaptabilitate.

În comparație cu metodele statistice, rețelele neuronale prezintă următoarele avantaje (Demyanyk & Hasan, 2009):

NN pot să realizeze presupuneri cu privire la distribuția statistică sau proprietățile datelor, fiind utile în aplicațiile practice;

NN se bazează pe abordările neliniare, astfel încât modelul să fie cât mai corect, atunci când se testează modelele de date complexe.

La mijlocul anilor 1980, Haykin a fost printre primii cercetători care au studiat rețelele neuronale, rezultatele studiilor sale fiind aplicate și în prezent. În anul 1999 a enunțat următoarea definiție a rețelelor neuronale: „Rețelele neuronale pot fi asimilate unor masive procesoare distribuite paralel, alcătuite din simple unități de procesare cu înclinație spre stocarea cunoștințelor experimentale și utilizarea lor ulterioară ”.

5.2.1 Concepte fundamentale în definirea rețelelor neuronale

O rețea neuronală este formată din două elemente fundamentale, neuronii care reprezintă un ansamblu de unități elementare de procesare și conexiunile care reprezintă o mulțime de legături între neuroni.

Într-o rețea neuronală există trei tipuri de neuroni:

neuronii de intrare care reprezintă valorile variabilelor de intrare, iar numărul neuronilor de intrare este numit strat de intrare;

neuronii ascunși care sunt dispuși pe straturi, numite straturi ascunse, aflate între stratul de intrare și cel de ieșire, numărul lor depinzând de complexitatea rețelei neuronale;

neuronii de ieșire care calculează valorile indicate de rețeaua neuronală și le compară cu anumite valori de referință, pentru a actualiza sau nu, ponderile conexiunilor.

Neuronul este o unitate de prelucrare informațională care poate propaga un semnal electrochimic, iar fiecare neuron din sistemul nervos central primește câte o informație de la ceilalți neuroni vecini cu ajutorul structurii de conexiuni, numite dendrite. Apoi, o procesează și trimite semnale răspuns prin intermediul canalului de comunicație, numit axon care și el la rândul lui se împarte în mii de ramuri.

Structura care se afla la capătul fiecărei ramuri, se numește sinapsă, și procesează semnalul transmis prin axon transformându-l într-un impuls electric care poate să stopeze sau să înceapă activitatea de la axon la neuronul la care este conectat.

Conform cercetărilor efectuate de Kohonen, primul neuron artificial a fost realizat în anul 1943 de către Warren McCulloch și Walter Pitts, fiind cunoscut sub numele de neuron McCulloch-Pitts sau unitate prag (Treshold unit).

Neuronul McCulloch-Pitts primește un semnal boolean (valorile 0 sau 1) pe fiecare dintre conexiunile sale de intrare, emițând la ieșire tot un semnal boolean. În orice model, neuronul artificial se aseamănă neuronului biologic fiind format dintr-un corp, un set de date de intrare și o ieșire.

Intrările sunt ponderate și însumate, iar suma obținută se aplică unei funcții , numită funcție de activare care determină ieșirea neuronului, reprezentând rezultatul problemei sau intrarea pentru alți neuroni.

Modelul neuronului McCulloch-Pitts este prezentat în figura următoare (Figura 5.1) este un neuron cu un set de date de intrare notate cu și cu o ieșire notată cu . Unitatea prag este liniară, și clasifică setul de date de intare în două clase diferite. Așadar ieșirea este binară.

O astfel de funcție poate fi descrisă matematic folosind următoarele ecuații:

(5.1)

(5.2)

unde semnifică ponderile aplicate intrărilor, este suma ponderilor și T este o constantă prag, este funcția de activare care determină ieșirea

Sursa: http://wwwold.ece.utep.edu/research/webfuzzy/docs/kk-thesis/kk-thesis-html/node12.html#figThreshold

Figura 5.1 Modelul neuronului McCulloch-Pitts

În continuare, vor fi prezentate câteva dintre cele mai cunoscute funcții de activare.

Funcția de activare treaptă f:ℝ→{0,1} definită prin:

Funcția de activare semn f:ℝ→{-1,1} definită prin:

Funcția de activare sigmoidală f:ℝ→(-1,1) definită prin:

unde a este parametrul pantă al sigmoidei.

Privit ca un mecanism singular un singur neuron artificial are un anumit număr m de intrări, notate cu valorile reale care sunt ponderate cu ponderile , însumate și apoi introduse într-o funcție de activare în scopul producerii ieșirii. Deci, putem spune că într-o rețea neuronală, o intrare cu valoarea reală care ajunge la intrarea în sinapsa conectată la neuronul , va fi înmulțită cu ponderea sinaptică.

În cazul acestui model neuronal, intrările (scalare) , reprezintă ieșirile altor neuroni conectați la neuronul , iar ponderile , reprezintă interconexiunile (sinapsele) între neuroni, ale căror valori pot fi și negative.

Intrările sunt ponderate, fiind apo i însumate, iar suma obținută se aplică unei funcții , numită funcție de activare care determină ieșirea neuronului, reprezentând rezultatul problemei sau intrarea pentru alți neuroni.

Din punct de vedere matematic, putem scrie următoarea ecuație ce reprezintă activitatea neuronului din rețeaua neuronală construită:

(5.3)

unde notația , reprezintă ieșirea corespunzătoare intrărilor.

De asemenea, trebuie menționat că neuronul artificial mai include și o intrare constantă notată cu , numită deplasare sau „bias” (Haykin,1999), care are scopul de a crește sau descrește valoarea de intrare a funcției de activare, în funcție de semnul său (pozitiv sau negativ).

Valoarea de ieșire a neuronului va fi exprimată de următoarea ecuație:

(5.4)

Dacă până în acest moment am considerat deplasarea ca un parametru extern, în cazul în care este considerat parametru intern, atunci este considerat pondere pentru intrarea .

Prin urmare, putem defini rețeaua neuronală artificială ca fiind un ansamblu de neuroni artificiali care au funcții diferite și sunt legați prin conexiuni care sunt de tip orientat sau direcțional. În continuare, putem spune că informația circulă de la un neuron la altul, numai într-un anumit sens cel care indică direcția fluxului calculelor într-o rețea.

Construcția unei rețele neuronale se face pe nivele, informația circulă într-un singur sens, astfel încât neuronii de intrare se conectează numai cu neuronii ascunși sau cu neuronii de ieșire ai rețelei, iar neuronii ascunși se conectează numai cu alți neuroni ascunși sau, direct cu neuronii de ieșire. În mod evident, neuronii de ieșire se conectează numai cu neuronii din straturile ascunse anterioare.

Numărul de conexiuni dintr-o rețea este teoretic nelimitat, singurele limitări sunt impuse doar de capacitatea de memorare și de viteza de prelucrare a sistemelor de calcul, unde sunt implementate rețelele neuronale.

Neuronii de intrare preiau din mediul extern, fără nici o transformare informațiile care sunt transmise neuronilor ascunși, apoi sunt transmise mai departe neuronilor de ieșire. Aceste unități transformă prin calcul intrările primite, în funcție de potențialul de activare al acestora, iar valorile produse de către neuronii de ieșire se numesc, valori indicate. Deci valoarea de ieșire pentru neuronii de intrare este chiar valoarea variabilei cu care unitatea este asociată, rolul acestor neuroni fiind doar de a transfera respectiva valoare către neuronii ascunși, sau către neuronii de ieșire ai rețelei.

5.2.2 Arhitectura și instruirea rețelei neuronale

Arhitectura rețelelor neuronale este apropiată de arhitectura creierului uman care este alcătuită din neuroni interconectați între ei, prin zeci de mii de conexiuni pentru fiecare pereche. În vederea realizării unei rețele neuronale care poate fi antrenată pentru a rezolva o anumită problemă și pentru a avea un anumit comportament, este important să se stabilească arhitectura rețelei, modul de operare al activităților desfășurate în timpul procesării informației și algoritmul de instruire.

În construirea arhitecturii unei rețele trebuie avut în vedere faptul că, într-un sistem dinamic exista o conexiune inversă atunci când ieșirea unui element din sistem influențează intrarea acelui element prin intermediul circuitului de reacție.

Prin urmare, o rețea neuronală are o structură de tip feedforward, dacă ieșirile neuronilor trec spre straturile următoare, și nu spre cele anterioare. Având în vedere faptul că neuronii sunt organizați într-unul sau mai multe straturi, Haykin în anul 1999 a împărțit tipurile de arhitectură a rețelei în următoarele trei categorii :

Rețele feedforward cu un singur strat (single-layer feedforward networks)

În acest tip de rețea, conexiunile de la un strat de neuroni către alt strat de neuroni se realizează într-un singur sens (Figura 5.2).

Sursa: http://en.wikibooks.org/wiki/Artificial_Neural_Networks/Feed-Forward_Networks

Figura 5.2 Arhitectura unei rețele feedforward cu un singur strat

Rețele feedforward multistrat (multilayer feedforward networks)

Spre deosebire de rețeaua cu un singur strat, în această rețea avem unul sau mai multe straturi „ascunse” (hidden layers) ale căror elemente sunt neuronii ascunși, care acționează între statul de intrare și cel de ieșire în vederea îmbunătățirii performanței rețelei (Figura 5.3).

Sursa: http://en.wikibooks.org/wiki/Artificial_Neural_Networks/Feed-Forward_Networks

Figura 5.3 Arhitectura unei rețele feedforward multistrat

Principiul de funcționare al acestei arhitecturi este următorul: nodurile sursă din stratul de intrare sunt valori de intrare pentru funcția de activare, iar rezultatul reprezintă intrările pentru neuronii din primul strat ascuns; aplicarea funcției de activare pentru intrările din primul strat de neuroni determină valorile de intrare pentru neuronii din cel de-al doilea strat ascuns, etc.; procedeul continuă până la ultimul strat pe care se află nodurile de ieșire.

Rețele recurente (reccurent networks)

Arhitectura unei rețele recurente spre deosebire de o rețea feedforward, are conexiuni înainte și înapoi între straturi, poate avea sau nu straturi ascunse de neuroni. Deci, putem spune că, se deosebește prin existența a cel puțin unui circuit de reacție, care are o importanță deosebită pentru algoritmul de învățare al rețelei (Figura 5.4).

Sursa: http://en.wikibooks.org/wiki/Artificial_Neural_Networks/Feed-Forward_Networks

Figura 5.4 Arhitectura unei rețele recurente

Instruirea unei rețele neuronale necesită o succesiune de operații, numite reguli de învățare care configurează rețeaua pentru efectuarea analizei sau predicției specifice tipului de probleme pentru care a fost realizată și instruită.

O rețea neuronală este construită sub forma unor straturi conectate în funcție de structura intrărilor și ieșirilor, iar ponderile sinaptice sunt actualizate pe baza unei analize a setului de instruire.

Regula de învățare reprezintă actualizarea, și se utilizează secvențial sau repetat până când valorile efective de ieșire ale rețelei neuronale sunt apropiate de valorile prestabilite.

Cele mai cunoscute reguli de învățare sunt învățarea hebbiană (hebbian learning) și învățarea cu corectarea erorii (error-correction learning).

Învățarea hebbiană (hebbian learning)

Această regulă de învățare este descrisă de Hebb în anul 1949 care precizează că dacă, rețeaua răspunde corect sau greșit pentru a anumită intrare, atunci ponderile trebuie modificate astfel încât să crească sau să scadă probabilitatea unui răspuns asemănător pentru intrări similare.

În continuare vom arăta cea mai simplă formă pentru învățarea hebbiană, propusă de Haykin:

(5.5)

unde semnifică ponderea sinaptică dinspre neuronul (intrare) către neuronul (ieșire) la momentul de timp n; – este ieșirea și – este intrarea, este o constantă pozitivă care reprezintă rata de învățare.

Formula obținută indică natura sinapsei Hebbiene, adică intrarea aplicată în mod repetat neuronului duce la creșterea ponderii sinaptice corespunzătoare lui.

Învățarea cu corectarea erorii (error-correction learning)

Această regulă de învățare stă la baza algoritmilor de învățare supervizată pentru rețelele de tip feedforward. Este cunoscut faptul că, în cadrul unei rețele ieșirea obținută din rețea este comparată cu o ieșire fixată, notată cu , iar eroarea obținută va fi .

În vederea minimizării erorilor, vom minimiza funcția:

(5.6)

Această regulă de învățare a fost demonstrată de Widrow & Hoff (1960) fiind cunoscută și sub numele de regula delta, care are forma :

(5.7)

În concluzie, putem afirma că ajustarea ponderilor sinaptice pentru conexiunea dintre doi neuroni este proporțională cu produsul dintre eroare și valoarea de intrare pentru conexiunea respectivă.

În ceea ce privește algoritmul de instruire a rețelei, avem două paradigme esențiale ale procesului de învățare:

învățarea „cu profesor”, din care face parte învățarea supervizată (supervized learning) și se utilizează în special în problemele de clasificare;

învățarea „fără profesor”, din care face parte învățarea nesupervizată (unsupervized learning) în care rețeaua primește inputurile, dar nu și ieșirile dorite.

5.2.3 Învățarea supervizată

Rețeaua neuronală cu învățare supervizată este antrenată să furnizeze rețelei exemple reprezentative de perechi de intrare/ieșire. Astfel, odată cu estimarea erorii, exprimată ca diferența dintre răspunsul așteptat și cel dorit, aceasta ajută rețeaua să își ajusteze ponderile, în funcție de algoritmii de învățare aleși.

În continuare, introducând noțiunea de perceptron ca fiind cea mai simplă formă de rețea neuronală, vom prezenta două tipuri de rețele neuronale, perceptron cu un singur strat, respectiv perceptronul multistrat.

Perceptronul cu un singur strat (SLP)

Perceptronul cu un singur strat are la bază neuronul McCulloch-Pitts, și este reprezentat sub forma:

unde:

intrările neuronului sunt notate cu ,

ieșirea neuronului este notată cu ,

ponderile sunt notate cu ,

deplasarea va fi inclusă printre ponderile cu intrarea +1.

Rolul perceptronului cu un singur strat este clasificarea corectă a unui set de vectori de intrare într-una din clasele .

Ieșirea perceptronului reprezintă următoarea regulă de decizie:

dacă , atunci ,

dacă , atunci .

Din punct de vedere geometric, cele două clase de separare reprezintă două regiuni ale spațiului m-dimensional, separate de un hiperplan a cărui ecuație este:

(5.8)

Atunci când cele două clase sunt liniar separabile, perceptronul cu un singur strat poate fi aplicat, iar când cele două clase nu sunt liniar separabile (adică, în anumite puncte sunt foarte apropiate una de alta și nu există un hiperplan care să le separe) atunci perceptronul nu se poate aplica, neavând puterea de a separa cele două clase.

Instruirea perceptronului se face prin ajustarea ponderilor sinaptice cu ajutorul unui algoritm iterativ, care se bazează pe regula de corecție a erorilor.

Pentru a înțelege acest cum funcționează acest algoritm, în continuare vom prezenta teorema de convergență a perceptronului.

Presupunem că vectorii de intrare provin din două clase liniar separabile și.

Fie mulțimea vectorilor test care aparțin clasei : , iar mulțimea vectorilor de testare care aparțin clasei : .

Rezolvarea problemei constă în construirea vectorului de ponderi notată cu , astfel încât hiperplanul determinat de ecuația să separe perfect cele două clase .

Dându-se seturile de vectori de instruire , trebuie aflat vectorul de ponderi, astfel încât să fie satisfăcute inegalitățile:

Cele două clase liniar separabile asigură existența vectorului de ponderi , care satisface inegalitățile mai sus menționate.

Algoritmul de ajustare a lui se formulează astfel:

dacă la pasul , elementul vectorului de instruire este clasificat corect de către vectorul de ponderi calculat la acest pas, atunci nu se efectuează nici o corecție a vectorului de ponderi:

dacă și

și

altfel, dacă la pasul n vectorul de instruire nu este clasificat corect de către vectorul de ponderi , atunci acesta trebuie să se modifice după cum urmează:

, dacă și

, dacă și .

unde reprezintă rata de învățare (parametrul care permite ajustarea vectorului de ponderi).

În continuare va fi demonstrată convergența algoritmului de instruire pentru o rată de învățare (fixă, pozitivă) considerată a fi egală cu 1. Acest artificiu de calcul este util datorită faptului că o valoare a ratei de instruire diferită de 1 nu produce decât o scalare a vectorilor.

Teorema de convergență a algoritmului perceptronului a fost prezentată pentru prima dată de Rosenblatt (1962).

Enunț: Să presupunem că submulțimile și ale mulțimii elementelor de antrenament sunt liniar separabile. Atunci perceptronul va converge după un număr finit de iterații.

Demonstrație:

Inițializăm vectorul de ponderi: și considerăm rata de învățare

Presupunem că pentru

Prin urmare vectorul de ponderi clasifică greșit vectorii de intrare și conform algoritmului de ajustare (adaptare), respectiv cazul al doilea avem:

, unde

Vom rescrie ecuația iterativ astfel: , având în vedere că .

Din ipoteză, cele două clase sunt liniar separabile, atunci există o soluție pentru care: , pentru vectorii .

Vom defini numărul pozitiv pentru o soluție fixă , astfel:

Odată cu definirea lui , vom înmulți ultima expresie obținută pentru cu și vom obține următoarea ecuație:

(5.9)

Vom aplica inegalitatea Cauchy-Schwartz pentru partea din stânga a ecuației de mai sus și utilizând tranzitivitatea între relații, vom obține:

, unde este norma euclidiană. (5.10)

Rescriem relația de mai sus astfel:

(5.11)

Revenind la ecuația inițială și o vom rescrie:

și (5.12)

Aplicăm norma euclidiană pentru ecuația (5.12) și vom obține:

(5.13)

Deoarece perceptronul clasifică eronat pe , vom avea , iar relația (5.13) se va transforma în următoarea inegalitate:

(5.14)

Cunoscând din ipoteză că , vom aduna cele 2 inegalități din relația (5.14) și vom obține pentru următoarea relație:

, unde (5.15)

Observăm că relațiile (5.11) și (5.15) sunt în contradicție, iar pentru a fi îndeplinite trebuie să avem următoarea egalitate:

, (5.16)

unde reprezintă iterația maximă a algoritmului și existența lui este asigurată de ipoteza de separabilitate liniară a claselor.

În concluzie, am demonstrat că dacă există un vector pondere pentru care toate elementelor de antrenament sunt corect clasificate, atunci adaptarea ponderilor sinaptice ale perceptronului se va realiza după cel mult iterații, deci putem afirma că algoritmul va fi convergent.

q.e.d.

În continuare vom prezenta algoritmul de convergență al perceptronului (Lippmann, 1987).

Date de intrare:

vectorii de intrare pentru testare : ;

vectorul pondere: ;

răspuns actual: ;

răspuns dorit: ;

rata de învățare: parametrul constant care este pozitiv și subunitar.

Pasul 1: Inițializare

vectorul de ponderi este inițializat: , după cum am procedat și în demonstrația teoremei de convergență

Pasul 2: Repetare

se introduc valorile vectorilor de intrare pentru testare, și răspunsul dorit , pentru ;

se calculează răspunsul actual , unde sign este funcția semn;

se realizează ajustarea vectorului pondere, prin actualizarea vectorului pondere al perceptronului:

, unde

Se observă că în momentul în care vectorul de ponderi clasifică corect vectorul atunci se va obține , prin urmare formula de mai sus se transformă în , iar vectorul de ponderi nu se modifică.

Pasul 3: Se repetă pasul 2 până se obține convergența algoritmului.

Perceptronul multistrat feedforward (MLP)

Printre caracteristicile importante ale unui MLP menționăm faptul că un perceptron multistrat conține unul sau mai multe straturi ascunse, iar rețeaua multistrat are o conectivitate înaltă (Figura 5.5).

Sursa: Hamdi (2012)

Figura 5.5 Perceptronul multistrat

Instruirea perceptronului multistrat este realizată prin aplicarea algoritmului de învățare cu propagare înapoi (Back-propagation), cunoscut și sub numele de „propagarea înapoi a erorilor”, adică valorile de ieșire sunt comparate cu valorile reale și se calculează eroarea cu ajutorul unei funcții predefinite, apoi în funcție de aceasta se acționează înapoi în rețea pentru ajustarea ponderilor în vederea minimizării erorii.

Algoritmul de învățare cu propagare înapoi este un algoritm de învățare supervizată. Studiile privind algoritmul de învățare cu propagare înapoi, au fost realizate din 1971, urmând ca Rumelhart et al.(1986) să readucă algoritmul în atenția cercetătorilor.

La iterația , eroarea calculată la ieșirea neuronului este:

(5.17)

unde poate fi un nod de ieșire sau un nod aflat într-un strat ascuns.

Valoarea instantanee a erorii pentru neuronul este definită ca , iar valoarea instantanee a erorii totale este egală cu:

(5.18)

unde notația a fost utilizată, pentru mulțimea neuronilor din stratul de ieșire al rețelei pentru care se poate calcula eroarea.

Scopul procesului de învățare este ajustarea ponderilor astfel încât eroarea medie generală să fie minimă, ajustarea ponderilor realizându-se în funcție de erorilor calculate pentru fiecare vector al rețelei.

În vederea prezentării algoritmului de retropropagare pentru rețelele de tip feedforward cu straturi ascunse, vom utiliza formulele obținute anterior:

, reprezintă intrările primite de la neuronul , care conduc la iterația o activare a neuronului ;

, reprezintă ieșirea asociată neuronului la iterația , iar este funcția de activare.

Ponderea sinaptică, devine și este proporțională cu derivata numită gradient și ajută la ponderarea modificărilor conexiunilor sinaptice.

Folosind un artificiu de calcul vom transforma gradientul într-o formă care se poate calcula astfel:

(5.19)

În continuare, fiecare factor din membrul drept al ecuației gradientului obținute se poate rescrie astfel:

(5.20)

= (5.21)

(5.22)

(5.23)

Formula echivalentă pentru gradient va fi următoarea:

(5.24)

În continuare se va trece la ajustarea ponderii care se realizează cu regula delta, adică se va aplica gradientul asupra ratei de învățare, notată cu :

(5.25)

unde s-a folosit notația

Înlocuind în derivatele mai sus obținute, vom obține:

= (5.26)

În funcție de stratul pe care se află neuronul apar două cazuri, astfel apărând o problemă în calcularea lui :

dacă este un neuron din stratul de ieșire, atunci se cunoaște ieșirea dorită, notată cu și se poate calcula eroarea asociată și gradientul în vederea aplicării regulii delta;

dacă este un neuron dintr-un strat ascuns, atunci nu se cunoaște ieșirea dorită și intervine retropropagarea.

Pentru obținerea lui , vom lua în calcul ultima formă obținută (5.26) pe care o vom rescrie astfel:

(5.27)

În vederea diferențierii indicilor neuronilor vom recurge la următoarele notații:

indicele j va reprezenta neuronii din straturile ascunse;

indicele k va reprezenta neuronii din straturile de ieșire.

Deci, pentru a calcula vom parcurge următorii pași:

– pornim de la

– rescriem

– din ecuația erorii pentru neuronul , ,

va rezulta

– calculând va rezulta .

Obținând aceste rezultate putem trece la înlocuirea lor în și vom aplica pentru neuronul definiția pentru , după cum urmează:

(5.28)

În continuare, vom înlocui în formula pentru expresia (5.28) și vom obține:

(5.29)

Obținând formula retropropagării vom trece la prezentarea algoritmului de învățare prin retropropagarea erorilor, care este un algoritm iterativ, nu este convergent și nu are condiții impuse de oprire.

Pentru realizarea algoritmului vom avea în vedere parcurgerea următoarele etape :

etapa „înainte” – începe de la primul strat de neuroni ascunși ai rețelei și se continuă de la un strat la altul până la stratul de neuroni de ieșire, funcția de activare trebuie să fie continuă și derivabilă (va fi folosită derivata de ordinul întâi), iar ponderile sinaptice nu vor fi ajustate;

etapa „înapoi” – utilizează calcularea gradientului și aplică regula delta pentru fiecare nod.

În continuare, vom prezenta algoritmul de instruire prin retropropagarea erorilor.

Inițializăm ponderile cu valori aleatoare;

Introducem vectorii de intrare și răspunsurile (ieșirile) dorite;

Calculăm răspunsurile actuale și se aplică funcțiile de activare ;

Se realizează ajustarea ponderilor în funcție de stratul pe care se află neuronul după cum urmează:

În demonstrațiile anterioare am obținut următoarele rezultate:

dacă neuronul se află pe statul de ieșire, avem

dacă neuronul se află pe statul de ascuns, avem:

Vom repeta pașii algoritmului, începând cu pasul al doilea.

Similar Posts