25.08.2013 Views

Rezumat teza Alin Tisan - Facultatea de Electronica ...

Rezumat teza Alin Tisan - Facultatea de Electronica ...

Rezumat teza Alin Tisan - Facultatea de Electronica ...

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

UNIVERSITATEA TEHNICĂ DIN CLUJ NAPOCA<br />

FACULTATEA DE ELECTRONICĂ, TELECOMUNICAŢII<br />

ŞI TEHNOLOGIA INFORMAŢIEI<br />

Ing. <strong>Alin</strong> Saşa TISAN<br />

<strong>Rezumat</strong>ul tezei <strong>de</strong> doctorat<br />

Contribuţii privind studiul, sin<strong>teza</strong> si<br />

implementarea unor aplicaţii cu sisteme <strong>de</strong> senzori<br />

inteligenţi. Nasul electronic<br />

Cluj-Napoca,<br />

2008<br />

Conducător ştiinţific:<br />

Prof. Dr. Ing. Lelia FEŞTILĂ


UNIVERSITATEA TEHNICĂ DIN CLUJ NAPOCA<br />

FACULTATEA DE ELECTRONICĂ, TELECOMUNICAŢII<br />

ŞI TEHNOLOGIA INFORMAŢIEI<br />

COMPONENŢA COMISIEI DE DOCTORAT<br />

PREŞEDINTE: Prof.dr.ing. Marina Ţopa, Decan<br />

<strong>Facultatea</strong> <strong>de</strong> Electronică, Telecomunicaţii şi Tehnologia<br />

Informaţiei<br />

Universitatea Tehnică din Cluj-Napoca<br />

CONDUCĂTOR ŞTIINTIFIC: Prof.dr.ing. Lelia Feştilă<br />

<strong>Facultatea</strong> <strong>de</strong> Electronică,Telecomunicaţii şi Tehnologia<br />

Informaţiei<br />

Universitatea Tehnică din Cluj-Napoca<br />

MEMBRI: Prof.dr.ing. Mircea Bo<strong>de</strong>a<br />

<strong>Facultatea</strong> <strong>de</strong> Electronică, Telecomunicaţii şi Tehnologia<br />

Informaţiei<br />

Universitatea “Politehnica” din Bucureşti<br />

Prof.dr.ing. Claudius Dan<br />

<strong>Facultatea</strong> <strong>de</strong> Electronică, Telecomunicaţii şi Tehnologia<br />

Informaţiei<br />

Universitatea “Politehnica” din Bucureşti<br />

Prof.dr.ing. Sorin Hintea<br />

<strong>Facultatea</strong> <strong>de</strong> Electronică, Telecomunicaţii şi Tehnologia<br />

Informaţiei<br />

Universitatea Tehnică din Cluj-Napoca


Cuprins<br />

Capitolul I. Introducere................................................................................................................................................ 1<br />

1.1 Obiective şi soluții ale tezei .................................................................................................................................................. 1<br />

1.2 Obiectivele specifice ............................................................................................................................................................. 2<br />

1.3 Contribuții aduse .................................................................................................................................................................. 2<br />

Capitolul II. Sistemul olfactiv artificial ............................................................................................................................................ 3<br />

2.1 Sistemul olfactiv biologic ...................................................................................................................................................... 3<br />

2.2 Mecanismele biologice <strong>de</strong> recunoaştere a mirosului ............................................................................................................ 3<br />

2.3 Conceptul <strong>de</strong> Nas Electronic ................................................................................................................................................. 3<br />

2.4 Nasul electronic .................................................................................................................................................................... 3<br />

2.5 Senzori pentru un Sistem Olfactiv Artificial .......................................................................................................................... 3<br />

2.6 Sisteme olfactive artificiale actuale ...................................................................................................................................... 3<br />

2.7 Aplicații ................................................................................................................................................................................ 3<br />

Capitolul III. Soluții <strong>de</strong> achiziție a semnalelor unui sistem olfactiv artificial .................................................................................... 4<br />

Capitolul IV. Tehnici <strong>de</strong> analiză inteligentă a semnalelor unui sistem senzorial olfactiv .................................................................. 4<br />

Capitolul V. Implementări hardware ale rețelelor neuronale artificiale .......................................................................................... 4<br />

Capitolul VI. Soluții <strong>de</strong> proiectare şi implementare a sistemului <strong>de</strong> recunoaştere .......................................................................... 5<br />

Capitolul VII. Implementarea hardware a rețelelor neuronale cu autoorganizare .......................................................................... 6<br />

7.1 Funcții <strong>de</strong> implementat ........................................................................................................................................................ 6<br />

7.2 Arhitectura rețelelor neuronale cu autoorganizare şi învățare on‐chip ............................................................................... 6<br />

7.2.1 Mo<strong>de</strong>lul hardware al neuronului ..................................................................................................................................... 7<br />

7.2.2 Stratul neuronal .............................................................................................................................................................. 7<br />

7.2.3 Blocul <strong>de</strong> control ............................................................................................................................................................. 8<br />

7.2.4 Blocul <strong>de</strong> selectare a neuronului câştigător .................................................................................................................... 8<br />

7.2.5 Blocul <strong>de</strong> selectare a vecinătății ...................................................................................................................................... 8<br />

7.2.6 Blocul generator eta_beta ............................................................................................................................................... 9<br />

7.2.7 Blocul generator we ...................................................................................................................................................... 10<br />

7.2.8 Implementarea hardware ale rețelelor neuronale cu autoorganizare şi învățare on‐chip ........................................... 11<br />

7.3 Realizarea bibliotecii <strong>de</strong> componente ................................................................................................................................. 11<br />

7.4 Concluzii şi contribuții ......................................................................................................................................................... 11<br />

Capitolul VIII. Implementarea hardware a rețelelor neuronale feedforward multistrat ................................................................ 13<br />

8.1 Funcții <strong>de</strong> implementat ...................................................................................................................................................... 13<br />

8.2 Mo<strong>de</strong>lul hardware al neuronului ........................................................................................................................................ 13<br />

8.2.1 Implementarea funcție <strong>de</strong> activare ‐ Funcția Sigmoid ................................................................................................... 14<br />

8.3 Stratul neuronal ................................................................................................................................................................. 18<br />

8.4 Blocul <strong>de</strong> control ................................................................................................................................................................. 18<br />

8.5 Blocul <strong>de</strong> calcul al erorilor şi a pon<strong>de</strong>rilor stratului <strong>de</strong> ieşire .............................................................................................. 19<br />

8.6 Blocul <strong>de</strong> calcul al pon<strong>de</strong>rilor stratului ascuns .................................................................................................................... 19<br />

8.7 Arhitectura rețelei neuronale FF‐BP cu învățare on‐chip .................................................................................................... 20<br />

8.8 Realizarea bibliotecilor <strong>de</strong> componente ............................................................................................................................. 21<br />

8.9 Concluzii şi contribuții ......................................................................................................................................................... 21<br />

Capitolul IX. Aplicații cu sistemul olfactiv artificial ....................................................................................................................... 23<br />

9.1 Introducere ......................................................................................................................................................................... 23<br />

9.2 Senzorii pentru aplicație ..................................................................................................................................................... 23<br />

9.3 Sistemul <strong>de</strong> eşantionare a probei volatile .......................................................................................................................... 23<br />

9.3.1 Gazul <strong>de</strong> referință .......................................................................................................................................................... 24<br />

9.3.2 Camera <strong>de</strong> recoltare ...................................................................................................................................................... 24<br />

9.3.3 Pompa electrică ............................................................................................................................................................. 24<br />

9.3.4 Camera <strong>de</strong> test .............................................................................................................................................................. 24<br />

9.4 Circuitul <strong>de</strong> interfațare ....................................................................................................................................................... 24<br />

9.5 Achiziția datelor ................................................................................................................................................................. 24<br />

9.5.1 Determinarea timpului <strong>de</strong> absorbție ............................................................................................................................. 26<br />

9.5.2 Determinarea timpului <strong>de</strong> <strong>de</strong>sorbție ............................................................................................................................. 26<br />

9.6 Procesarea datelor ............................................................................................................................................................. 26<br />

9.6.1 Manipularea valorilor <strong>de</strong> răspuns ................................................................................................................................. 26<br />

9.6.2 Extragerea trăsăturilor .................................................................................................................................................. 28<br />

9.7 Recunoaşterea tiparelor ..................................................................................................................................................... 28<br />

9.7.1 Rețeaua neuronală FF‐BP .............................................................................................................................................. 28<br />

9.7.2 Simularea rețelelor FF‐BP .............................................................................................................................................. 30<br />

9.8 Concluzii şi contribuții ......................................................................................................................................................... 31<br />

Capitolul X. Contribuții originale şi direcții <strong>de</strong> continuare a cercetării .......................................................................................... 33<br />

10.1 Contribuții originale............................................................................................................................................................ 33<br />

10.2 Direcții <strong>de</strong> continuare a cercetării ...................................................................................................................................... 35


<strong>Rezumat</strong> pag. 1<br />

Capitolul I<br />

Introducere<br />

In ultimii zece ani, sistemele olfactive artificiale au generat un interes <strong>de</strong>osebit pentru potenţialul <strong>de</strong><br />

rezolvare a unor game largi <strong>de</strong> probleme ce se regăsesc in cele mai diverse domenii ce pornesc <strong>de</strong> la cele <strong>de</strong>ja<br />

consacrate ca industria farmaceutică, ingineria chimica, monitorizarea mediului, industria alimentară si ajung<br />

la domenii care până nu <strong>de</strong>mult erau doar concepte teoretice cum sunt telechirurgia, i<strong>de</strong>ntificarea situaţiilor<br />

<strong>de</strong> criză, diagnosticarea medicală neinvazivă şi nu în ultimul rând i<strong>de</strong>ntificarea persoanelor pe baza tehnicilor<br />

biometrice.<br />

Dezvoltarea <strong>de</strong> sisteme olfactive artificiale este cu atât mai atractivă cu cât încercarea <strong>de</strong> imitare a<br />

simţului olfactiv biologic, alături <strong>de</strong> cel gustativ, este <strong>de</strong>parte <strong>de</strong> a egala performanţele obţinute în realizarea<br />

<strong>de</strong> sisteme artificiale corespunzătoare celor trei simţuri biologice ca simţul vizual, auditiv şi cel tactil pentru<br />

care senzorii acestor sisteme <strong>de</strong>păşesc cu mult performanţele receptorilor biologici.<br />

Cu toate acestea, folosirea sistemelor olfactive artificiale in locul simţului olfactiv biologic rezidă din<br />

faptul că subiecţii umani prezintă o mare subiectivitate in recunoaşterea <strong>de</strong> substanţe olfactive şi sunt a<strong>de</strong>sea<br />

afectaţi <strong>de</strong> condiţiile fizice şi mentale. In consecinţă, nevoia unui instrument care să mimeze simţul olfactiv<br />

biologic şi care să poată furniza o estimare obiectivă, calitativă şi cantitativă este imperios necesară.<br />

Realizarea unui astfel <strong>de</strong> instrument, <strong>de</strong>ci a unui nas electronic, presupune crearea unui dispozitiv capabil să<br />

<strong>de</strong>tecteze şi să recunoască un spectru cât mai larg <strong>de</strong> compuşi organici volatili. Astfel că structura nasului<br />

electronic va cuprin<strong>de</strong> un sistem senzorial necesar <strong>de</strong>tectării semnalelor olfactive şi un modul <strong>de</strong><br />

recunoaştere a semnalelor <strong>de</strong>tectate.<br />

Din acest motiv direcţiile principale in <strong>de</strong>zvoltarea sistemelor olfactive artificiale se împart în:<br />

• crearea <strong>de</strong> senzori cu parametrii cât mai apropiaţi <strong>de</strong> receptorii olfactivi biologici<br />

• <strong>de</strong>zvoltarea unui sistem <strong>de</strong> recunoaştere care să imite cât mai bine modul <strong>de</strong> funcţionare a creierului uman<br />

Direcţia <strong>de</strong> cercetare în această teză o va constitui <strong>de</strong>zvoltarea unui sistem olfactiv artificial bazat pe o<br />

platformă inteligentă cu capabilităţi <strong>de</strong> învăţare si adaptare, care sa recunoască amprenta biometrică a<br />

persoanelor <strong>de</strong> i<strong>de</strong>ntificat.<br />

Dezvoltarea unei astfel <strong>de</strong> platforme va presupune implementarea hardware in circuite FPGA a<br />

diferitelor reţele neuronale artificiale prin intermediul mediului Matlab, ISE şi EDK, prin crearea <strong>de</strong><br />

biblioteci <strong>de</strong> componente pre<strong>de</strong>finite necesare implementării unei structuri <strong>de</strong> calcul <strong>de</strong> tip neuronal si<br />

setarea <strong>de</strong> către utilizator a acestor componente in ve<strong>de</strong>rea creării, in principiu, a oricărei reţele neuronale.<br />

Avantajul folosirii acestei meto<strong>de</strong> consta in posibilitatea <strong>de</strong> adaptare a reţelei neuronale in funcţie <strong>de</strong> o<br />

aplicaţie dată: in funcţie <strong>de</strong> tipul si numărul senzorilor folosiţi in cadrul sistemului olfactiv artificial, <strong>de</strong><br />

concentraţia moleculelor organice volatile din gazul <strong>de</strong> analizat, <strong>de</strong> condiţiile mediului ambiant, etc.<br />

Domeniul abordat ca aplicaţie în această teză se referă la i<strong>de</strong>ntificarea sortimentului <strong>de</strong> cafea prezentate.<br />

A fost aleasă cafeaua pentru compoziţia complexă a acesteia: în literatură sunt raportate peste 700 <strong>de</strong><br />

molecule volatile diferite, şi pentru faptul că nici una dintre aceste molecule nu poate <strong>de</strong> una singură să<br />

reprezinte în mod <strong>de</strong>finitoriu un anumit sortiment <strong>de</strong> cafea. Din acest motiv un anumit tip <strong>de</strong> cafea va putea<br />

fi i<strong>de</strong>ntificat doar prin luare în consi<strong>de</strong>rare a întregului spectru <strong>de</strong> semnături specifice moleculelor volatile<br />

constituente.<br />

1.1 Obiective şi soluţii ale tezei<br />

Teza îşi propune realizarea unui mediu integrat hardware-software care sa permită <strong>de</strong>zvoltarea rapidă a<br />

unui sistem inteligent folosind următoarele resurse:<br />

- senzori specifici aplicaţiei,<br />

- module hardware care pot fi uşor interconectate,<br />

- module, <strong>de</strong>scrise cu ajutorul limbajul <strong>de</strong> programare grafică Labview, <strong>de</strong> gestionare a modulului <strong>de</strong><br />

analogic <strong>de</strong> achiziţie („instrumente virtuale”),<br />

- module <strong>de</strong>scrise în limbajul <strong>de</strong> programare MCo<strong>de</strong> (Matlab) pentru preprocesarea semnalului şi pentru<br />

extragerea trăsăturilor,<br />

- reţele neuronale artificiale (utilizate pentru recunoaşterea tiparelor);<br />

Având acest cadru, <strong>de</strong>zvoltarea unui sistem <strong>de</strong> i<strong>de</strong>ntificare a diferiţilor compuşi chimici olfactivi, constă<br />

in proiectarea şi sin<strong>teza</strong> unor module (<strong>de</strong>scrise in Labview şi MCo<strong>de</strong>) pentru modulul <strong>de</strong> achiziţie folosit şi a<br />

unor reţele neuronale specifice aplicaţiei.<br />

Implementarea unui sistem <strong>de</strong> recunoaştere a diverselor tipare (semnătura moleculelor organice olfactive)<br />

folosind reţele neuronale implementate in circuite logice programabile <strong>de</strong> tip FPGA (Field Programmable<br />

Gate Arrays), reprezintă un pas important in crearea <strong>de</strong> sisteme senzoriale inteligente.


<strong>Rezumat</strong> pag. 2<br />

1.2 Obiectivele specifice<br />

Obiectivele specifice ale acestei teze sunt:<br />

- <strong>de</strong>zvoltarea diferitelor soluţii <strong>de</strong> preprocesare a semnalelor generate <strong>de</strong> diferitele tipuri <strong>de</strong> senzori chimici<br />

- implementarea hardware in circuitele FPGA a soluţiilor privind implementarea in FPGA a algoritmilor <strong>de</strong><br />

recunoaştere a tiparelor prin intermediul reţelelor neuronale artificiale.<br />

- crearea bibliotecilor <strong>de</strong> componente pre<strong>de</strong>finite necesare implementării unei structuri <strong>de</strong> calcul <strong>de</strong> tip<br />

neuronal specifice<br />

- crearea reţelei neuronale prin setarea <strong>de</strong> către utilizator a acestor componente<br />

- crearea sistemului experimental necesar achiziţiei amprentelor olfactive<br />

- creşterea gradului <strong>de</strong> inteligenţă a sistemului <strong>de</strong> recunoaştere implementat<br />

Implementarea hardware in circuitele FPGA a reţelelor neuronale artificiale se va face prin intermediul<br />

mediului <strong>de</strong> programare Matlab si a toolbox-ului Simulink.<br />

In prezent, reţelele neuronale sunt construite software prin setarea numărului <strong>de</strong> neuroni, a numărului <strong>de</strong><br />

straturi, a modului <strong>de</strong> propagare a semnalului si a meto<strong>de</strong>i <strong>de</strong> învăţare si antrenate software in ve<strong>de</strong>rea<br />

stabilirii pon<strong>de</strong>rilor care sa răspundă cel mai bine cerinţelor algoritmului <strong>de</strong> recunoaştere ales. Toate acestea<br />

fac ca odată implementata hardware, reţeaua neuronala respectivă si implicit circuitul hardware realizat, sa<br />

poată fi folosita doar la recunoaşterea tiparelor iniţiale.<br />

Soluţia propusă în această teză privind conferirea <strong>de</strong> autonomie circuitelor hardware <strong>de</strong> recunoaştere a<br />

tiparelor constă in realizarea unor blocuri <strong>de</strong> calcul neuronale capabile sa-si autoreconfigureze pon<strong>de</strong>rile<br />

calculate in funcţie <strong>de</strong> o anumita regula <strong>de</strong> învăţare, in<strong>de</strong>pen<strong>de</strong>nt <strong>de</strong> un sistem <strong>de</strong> calcul ajutător si anume <strong>de</strong><br />

un PC. In acest fel reţeaua neuronala folosită va putea sa se adapteze, intr-o anumita plaja a valorilor, in mod<br />

continuu la modificările <strong>de</strong> factorilor externi.<br />

O altă soluţie propusă, ce ar putea sa-i confere o autonomie totala fata <strong>de</strong> sisteme <strong>de</strong> calcul exterioare,<br />

constă in realizarea unei sistem <strong>de</strong> <strong>de</strong>zvoltare, capabil să reconfigureze in mod automat FPGA-ul folosit in<br />

funcţie <strong>de</strong> o aplicaţie dată – practic sistemul <strong>de</strong> recunoaştere va fi capabil sa se autoreconfigureze hardware<br />

la parametrii optimi (tip <strong>de</strong> reţea neuronale, număr <strong>de</strong> neuroni, număr <strong>de</strong> straturi, etc.) in funcţie <strong>de</strong> orice<br />

situaţie nouă ivită. Cu alte cuvinte, sistemul hardware va putea învăţa si acumula cunoştinţe in mod continuu.<br />

1.3 Contribuţii aduse<br />

În această teză, principala preocupare este <strong>de</strong> a integra sistemul senzorial olfactiv alături <strong>de</strong> un sistem <strong>de</strong><br />

recunoaştere a tiparelor cu funcţii <strong>de</strong> autoreconfigurare şi <strong>de</strong> învăţare continuă necesare abilităţilor <strong>de</strong><br />

adaptare la multitudinea <strong>de</strong> factori variabili ce apar inerent în aplicaţiile <strong>de</strong> recunoaştere a amprentelor<br />

biometrice olfactive.<br />

În concluzie, aşa cum s-a explicat în prezentarea obiectivelor, au fost aduse un număr relevant <strong>de</strong><br />

contribuţii. Aceste contribuţii specifice cuprind:<br />

- <strong>de</strong>zvoltarea unei meto<strong>de</strong> noi <strong>de</strong> creare a reţelelor neuronale artificiale;<br />

- folosirea circuitelor reconfigurabile FPGA în locul sistemelor hardware clasice (microcontrolere, DSPuri,<br />

ASIC-uri);<br />

- realizarea <strong>de</strong> algoritmi implementabili în FPGA <strong>de</strong> emulare a comportării reţelelor neuronale specifice<br />

aplicaţiei;<br />

- realizarea algoritmilor <strong>de</strong> autoreconfigurare a sistemului <strong>de</strong> recunoaştere;<br />

- realizarea driverelor pentru modului analogic <strong>de</strong> achiziţie;<br />

- <strong>de</strong>zvoltarea modulelor <strong>de</strong> procesare a semnalelor;<br />

- implementarea hardware in circuitele FPGA a sistemului <strong>de</strong> recunoaştere şi control;<br />

- realizarea standului experimental <strong>de</strong> achiziţie a amprentei olfactive;<br />

- crearea unei baze date cu amprente olfactive.


<strong>Rezumat</strong> pag. 3<br />

Capitolul II<br />

Sistemul olfactiv artificial<br />

Scopul acestui capitol este acela <strong>de</strong> a face o <strong>de</strong>scriere cuprinzătoare a stadiului actual al domeniul<br />

sistemelor olfactive electronice. Capitolul va centraliza cele mai relevante aspectele ale cercetării şi<br />

<strong>de</strong>zvoltării senzorilor <strong>de</strong> gaz, a tehnicilor <strong>de</strong> recunoaştere a tiparelor aplicate datelor provenite <strong>de</strong> la senzori<br />

şi a aplicaţiilor ce au contribuit la <strong>de</strong>zvoltarea sistemelor olfactive artificiale. Acest capitol se doreşte a fi<br />

unul <strong>de</strong> informare la nivel teoretic fundamental şi <strong>de</strong> sintetizare a informaţiilor ce se regăsesc în literatura <strong>de</strong><br />

specialitate.<br />

2.1 Sistemul olfactiv biologic<br />

Încercarea <strong>de</strong> imitare a sistemului olfactiv biologic a făcut ca cercetările în domeniu să cunoască o<br />

<strong>de</strong>zvoltare semnificativă în ceea ce priveşte senzorii folosiţi la <strong>de</strong>tectarea moleculelor organice volatile şi<br />

procesele cognitive implicate în recunoaşterea acestor molecule. Însă, performanţele nasului electronic sunt<br />

<strong>de</strong>parte <strong>de</strong> cele ale sistemului biologic şi din cauza faptului că există numeroase zone neacoperite ştiinţific a<br />

sistemului olfactiv uman.<br />

2.2 Mecanismele biologice <strong>de</strong> recunoaştere a mirosului<br />

Funcţiile chimice ce <strong>de</strong>clanşează la om recunoaşterea mirosurilor sunt încă din păcate necunoscute. Se<br />

presupune că celulele receptoare pot reacţiona la mai mult din un singur tip <strong>de</strong> moleculă odorizantă, dar<br />

oricum mecanismul <strong>de</strong> reacţie la molecula odorizantă este diferit si <strong>de</strong>pin<strong>de</strong> <strong>de</strong> fiecare tip <strong>de</strong> moleculă.<br />

Numeroase regiuni ale creierului sunt implicate in procesul olfactiv <strong>de</strong> recunoaştere ce poate implica<br />

următoarele mecanisme: discriminarea percepţiilor conştiente, încărcarea şi reproducerea senzaţiilor,<br />

imprimarea şi memorarea lor.<br />

2.3 Conceptul <strong>de</strong> Nas Electronic<br />

Folosirea senzorilor chimici la măsurarea şi analizarea odoranţilor a dus la <strong>de</strong>zvoltarea unui domeniu aflat<br />

într-o continua extin<strong>de</strong>re ce a acaparat atenţia specialiştilor din domeniul senzorial şi al sistemelor <strong>de</strong><br />

recunoaştere şi s-a concretizat prin <strong>de</strong>zvoltarea a numeroase variante <strong>de</strong> dispozitive senzoriale şi <strong>de</strong> tehnici<br />

<strong>de</strong> procesare a datelor bazate <strong>de</strong> exemplu pe reţelele neuronale artificiale RNA, analiza componentelor<br />

principale ACP şi tehnicile fuzzy [13].<br />

2.4 Nasul electronic<br />

Principiul ce stă la baza i<strong>de</strong>ntificării mirosurilor este faptul că fiecare miros lasă o amprentă caracterizată<br />

<strong>de</strong> semnalele electrice rezultate în urma conversei reacţiei chimice ale fiecărui senzor din cadrul matricei<br />

senzoriale a sistemului olfactiv artificial. Aceste semnale electrice sunt măsurate şi procesate, <strong>de</strong> obicei sub<br />

formă digitală, după care sunt aplicate tehnicile <strong>de</strong> extragere a trăsăturilor cu scopul <strong>de</strong> a reducere<br />

complexitatea semnalelor sistemului multisenzorial. Ultima etapă în procesul <strong>de</strong> i<strong>de</strong>ntificare este aplicarea<br />

sistemului <strong>de</strong> recunoaştere, ce aprioric a fost antrenat în clasificarea bazată pe o colecţie <strong>de</strong> răspunsuri<br />

prei<strong>de</strong>ntificate [12,28].<br />

2.5 Senzori pentru un Sistem Olfactiv Artificial<br />

Sistemul senzorial poate fi compus dintr-un şir <strong>de</strong> senzori chimici în care fiecare senzor este sensibil la un<br />

anumit tip <strong>de</strong> substanţă chimică, sau poate fi compus dintr-un singur dispozitiv <strong>de</strong> <strong>de</strong>tecţie (<strong>de</strong> ex.<br />

cromatograful sau spectrometrul) sau poate fi o combinaţie a celor două. Fiecare compus volatil va produce<br />

prin intermediul sistemului senzorial o semnătură caracteristică. Prin expunerea senzorilor la mai mulţi<br />

odoranţi (compuşi chimici volatili) se va construi o bază <strong>de</strong> date <strong>de</strong> semnături proprii fiecărui analit, necesară<br />

procesului <strong>de</strong> antrenare a sistemului <strong>de</strong> recunoaştere a tiparelor.<br />

Senzorii chimici ce în<strong>de</strong>plinesc cerinţele unui sistem olfactiv artificial sunt: semiconductori cu oxizi ai<br />

metalelor, polimerii conductori (CP), senzorii piezoelectrici (QMB, SAW, BAW), tranzistorii chimici cu<br />

efect <strong>de</strong> câmp (ChemFET), senzorii capacitivi, senzorii cu fibra optică (FO).<br />

2.6 Sisteme olfactive artificiale actuale<br />

Principalii producători <strong>de</strong> sisteme olfactive artificiale sunt: Alpha M.O.S., Smiths Detection (Cyrano<br />

Science, Inc.), Moses II (Lennartz Electronic GmbH), Kamina (Karlsruhe Reserch Center), Nordic Sensor<br />

Technologies AB, Marconi Applied Technologies, Osmetech Microbial Analyser (OMA).<br />

2.7 Aplicaţii<br />

Principalele aplicaţii ale sistemelor olfactive artificiale comerciale sunt în domeniul asigurării calităţii<br />

alimentelor, în industria farmaceutică, diagnosticări medicale, monitorizarea mediului, securitate şi aplicaţii<br />

militare, i<strong>de</strong>ntificarea persoanelor pe baza tehnicilor biometrice olfactive


<strong>Rezumat</strong> pag. 4<br />

Capitolul III<br />

Soluţii <strong>de</strong> achiziţie a semnalelor unui sistem olfactiv artificial<br />

În acest capitol am analizat o serie <strong>de</strong> soluţii <strong>de</strong> condiţionare si preprocesare a semnalelor provenite <strong>de</strong> la<br />

senzorii chimici rezistivi <strong>de</strong> tip MOS dintr-un sistem olfactiv artificial, precum şi analiza datelor generate <strong>de</strong><br />

senzorii chimici rezistivi. De asemenea am prezentat componenta software şi hardware ce constituie interfaţa<br />

între blocul senzorial şi modulul <strong>de</strong> recunoaştere a tiparelor.<br />

S-au analizat circuitele <strong>de</strong> interfaţare specifice senzorilor <strong>de</strong> gaz folosiţi în sistem, senzori rezistivi MOS.<br />

În scopul liniarizării răspunsului senzorilor şi al implementării diferitor funcţii <strong>de</strong> compensare<br />

(temperatura, umiditate) s-au examinat o serie <strong>de</strong> circuite analogice <strong>de</strong> condiţionare specifice senzorilor<br />

folosiţi. Pentru ca datele generate <strong>de</strong> senzori să se înscrie în parametrii ceruţi <strong>de</strong> modulul <strong>de</strong> recunoaştere,<br />

acestea trebuie preprocesate cu ajutorul algoritmilor <strong>de</strong> preprocesare propuşi, [10].<br />

În cadrul capitolului s-a subliniat faptul că alegerea unui circuit <strong>de</strong> interfaţare, a unui circuit analogic <strong>de</strong><br />

condiţionare şi aplicarea algoritmilor <strong>de</strong> preprocesare sunt esenţiali în atingerea unor performanţe optime a<br />

sistemului olfactiv artificial.<br />

În final, am analizat performanţele şi arhitectura blocurilor constituente platforma <strong>de</strong> achiziţie <strong>de</strong> date<br />

propusă, şi s-a subliniat avantajele folosirii acesteia. În acest scop am realizat o analiză a modului în care<br />

influenţa factorilor <strong>de</strong> mediu asupra semnalelor unui chemosenzor poate fi compensată.<br />

Soluţia propusă în cazul achiziţiei datelor constă dintr-un sistem <strong>de</strong> achiziţie PCI-MIO-16E-1 a căror<br />

caracteristici <strong>de</strong> performanţa sunt analizate.<br />

Capitolul IV<br />

Tehnici <strong>de</strong> analiză inteligentă a semnalelor unui sistem senzorial olfactiv<br />

Datorită naturii datelor furnizate <strong>de</strong> senzorii unui sistem olfactiv artificial, algoritmul <strong>de</strong> recunoaştere<br />

necesar trebuie să fie unul cât mai „puternic”, astfel încât să fie capabil să facă faţă analizării datelor<br />

neliniare, să se poată auto-organiza, generaliza, învăţa şi să tolereze erorile (zgomotele), [14].<br />

În încercarea <strong>de</strong> a mima mo<strong>de</strong>lul biologic <strong>de</strong> recunoaştere <strong>de</strong>zvoltat <strong>de</strong> creierul uman, s-a emis ipo<strong>teza</strong><br />

conform căreia algoritmul matematic folosit trebuie <strong>de</strong>zvoltat în urma analizării tiparelor. Astfel că, s-au<br />

creat diferiţi algoritmi <strong>de</strong> recunoaştere <strong>de</strong> inspiraţie biologică: reţele neuronale artificiale, sisteme fuzzy,<br />

algoritmi genetici, sisteme neuro-fuzzy, etc., care să prezinte proprietăți asemănătoare cu cele ale creierului:<br />

<strong>de</strong> asociere, generalizare, căutare (calcul) paralel, învăţare şi flexibilitate.<br />

În literatură există numeroase lucrări ce atestă folosirea unui număr mare <strong>de</strong> tehnici <strong>de</strong> analiză a tiparelor<br />

unui sistem olfactiv artificial. În acesta teză s-au abordat doar tehnicile inteligente <strong>de</strong> analiză <strong>de</strong>oarece doar<br />

acestea fac scopul implementărilor în circuitele logice reconfigurabile.<br />

Din analiza tehnicilor <strong>de</strong> analiză abordate, particularităţile şi cerinţele care trebuie să le în<strong>de</strong>plinească un<br />

sistem olfactiv artificial sunt <strong>de</strong>terminate <strong>de</strong> următorii factori: o dimensiune cât mai mică a tiparului <strong>de</strong><br />

recunoscut faţă <strong>de</strong> cea generată <strong>de</strong> aplicaţiile clasice (spectroscopia sau cromatografia) concretizată printr-o<br />

reducere substanţială a resurselor hardware şi <strong>de</strong> timp necesare clasificării odoranţilor ţintă; operare cu<br />

acelaşi grad <strong>de</strong> succes şi în medii şi situaţii noi neacoperite <strong>de</strong> procesul <strong>de</strong> antrenare<br />

Din păcate nu există nici un algoritm <strong>de</strong> clasificare care să poată în<strong>de</strong>plini concomitent toate cerinţele<br />

unui sistem <strong>de</strong> recunoaştere i<strong>de</strong>al, dar există studii, ce pot să indice pentru o anumită aplicaţie un algoritm <strong>de</strong><br />

clasificare optim.<br />

Capitolul V<br />

Implementări hardware ale reţelelor neuronale artificiale<br />

In acest capitol am realizat un studiu privind tehnicile <strong>de</strong> implementare a reţelelor neuronale artificiale. De<br />

asemenea sunt prezentate avantajele şi <strong>de</strong>zavantajele implementărilor hardware analogice şi digitale, hibri<strong>de</strong><br />

analogice-digitale şi hibri<strong>de</strong> hardware-software şi am pus în evi<strong>de</strong>nţă tehnicile <strong>de</strong> paralelizare în cazul<br />

reţelelor neuronale insistându-se asupra celor cu propagare înainte şi cu autoorganizare [20, 29].<br />

Din analiza raportărilor din literatură se poate spune că în funcţie <strong>de</strong> numărul <strong>de</strong> circuite ce se doresc a fi<br />

produse, consumul energetic al acestora, rata <strong>de</strong> eşantionare, dimensiuni, precizie, repetabilitate sunt<br />

preferate un anumit tip <strong>de</strong> implementare. Astfel vom avea implementări analogice dacă se doreşte o<br />

producţie în serie mare, un consum redus <strong>de</strong> putere, rată <strong>de</strong> eşantionare mare, pon<strong>de</strong>ri fixe şi cu o precizie<br />

mică, dimensiuni mici. Se vor prefera implementările digitale cu memorie pe chip atunci când sunt necesare<br />

o precizie mai mare, repetabilitate mare, sensibilitate mică la perturbaţii, testabilitate mai bună, flexibilitate<br />

mai mare şi compatibilitate cu alte tipuri <strong>de</strong> procesare, <strong>de</strong> obicei pentru reţele neuronale <strong>de</strong> dimensiuni mai<br />

mici.


<strong>Rezumat</strong> pag. 5<br />

Avantajul implementărilor digitale, faţa <strong>de</strong> cele analogice constau în uşurinţa realizării acestora, aceasta şi<br />

datorită existenţei programelor <strong>de</strong> proiectare asistată şi în gradul mare <strong>de</strong> flexibilitate al circuitelor obţinute.<br />

În cazul implementărilor analogice acestea sunt mult mai greu <strong>de</strong> proiectat fiind potrivite producţiile <strong>de</strong> serie<br />

mare sau aplicaţii foarte specifice, dar au un consum <strong>de</strong> putere redus şi o frecvenţa <strong>de</strong> eşantionare ridicată.<br />

Folosirea circuitelor FPGA la implementarea RNA constituie o soluţie convenabilă privind raportul<br />

preţ/performanţe în cazul seriilor mici şi medii, cu excepţia cazurilor în care se doresc implementarea <strong>de</strong><br />

aplicaţii <strong>de</strong> viteză foarte mare.<br />

Proiectarea integrată hardware-software a reţelelor neuronale artificiale conferă o proiectarea simplă a<br />

sistemelor on-chip, sisteme ce pot integra pe un chip atât parte hardware şi cea software, toleranţă crescută la<br />

<strong>de</strong>fecte <strong>de</strong>oarece părţile HW şi SW se pot testa sau îşi pot compensa <strong>de</strong>fectele reciproc şi o viteză <strong>de</strong><br />

procesare foarte mare sau medie spre mare la un preţ mai scăzut.<br />

De asemenea s-au pus în evi<strong>de</strong>nţă tehnicile <strong>de</strong> paralelizare în cazul reţelelor neuronale insistându-se<br />

asupra celor cu propagare înainte şi cu autoorganizare şi au fost specifice avantajele şi <strong>de</strong>zavantajele<br />

fiecărora.<br />

Capitolul VI<br />

Soluţii <strong>de</strong> proiectare şi implementare a sistemului <strong>de</strong> recunoaştere<br />

În acest capitol am <strong>de</strong>scris mediul <strong>de</strong> proiectare şi platforma hardware folosită la implementarea<br />

modulului <strong>de</strong> recunoaştere a unui sistem olfactiv artificial. În acest scop am trecut în revista etapele clasice<br />

<strong>de</strong> proiectare a unui sistem cu reţele neuronale şi metoda propusă <strong>de</strong> autor. Totodată, pentru o mai bună<br />

utilizare a resurselor <strong>de</strong> implementare am analizat componentele platformei <strong>de</strong> <strong>de</strong>zvoltare folosită la<br />

implementarea proiectului insistându-se în mod special pe circuit FPGA cu care platforma este echipată.[7,<br />

19]<br />

Metoda propusă permite proiectanţilor sistemului <strong>de</strong> control să se concentreze asupra specificaţiilor <strong>de</strong><br />

nivel înalt şi <strong>de</strong> asemenea obţinerea unui rezultat rapid în ceea ce priveşte performanţele algoritmului <strong>de</strong><br />

control ales şi costurile generate <strong>de</strong> implementarea acestuia în hardware. Spre <strong>de</strong>osebire <strong>de</strong> modalităţile<br />

clasice în care algoritmi <strong>de</strong> control erau implementaţi cu ajutorul limbajelor <strong>de</strong> asamblare sau a celor <strong>de</strong> nivel<br />

înalt, noua metodă permite folosirea elementelor grafice <strong>de</strong> proiectare, elemente organizate în blocuri <strong>de</strong><br />

control.<br />

Proiectarea, verificarea, implementarea în hardware şi testarea unui sistem <strong>de</strong> recunoaştere este o<br />

operaţiune extrem <strong>de</strong> laborioasă si presupune angajarea unor resurse hardware, dar în special software, foarte<br />

complexe. Astfel că autorul sistematizează totalitatea resurselor folosite şi stabileşte cu exactitate rolul<br />

fiecăreia în procesul <strong>de</strong> proiectare al unui sistem <strong>de</strong> control.<br />

Metoda consacrată <strong>de</strong> implementare a sistemelor <strong>de</strong> control în FPGA cuprin<strong>de</strong> două etape distincte una <strong>de</strong><br />

cealaltă şi presupunea colaborarea strânsă între proiectantul <strong>de</strong> reţele neuronale şi cel <strong>de</strong> circuite digitale,<br />

pentru obţinerea unor rezultate optime. Metoda propusă va permite însă, proiectanţilor sistemului să se<br />

concentreze asupra specificaţiilor <strong>de</strong> nivel înalt.<br />

Metoda propusă <strong>de</strong> autorul prezentei lucrări, foloseşte Simulink/System Generator ca şi platformă<br />

principală <strong>de</strong> proiectare, program ce va interacţiona cu toate celelalte medii şi prin intermediul căruia se vor<br />

parcurge toate etapele <strong>de</strong> proiectare prezentate în subcapitol. Acest algoritm are avantajul <strong>de</strong> a putea fi<br />

aplicat folosind mediul Matlab/Simulink, mediu <strong>de</strong> proiectare şi simulare familiar proiectanţilor <strong>de</strong> sisteme<br />

<strong>de</strong> control.<br />

În urma analizării mediilor şi a meto<strong>de</strong>lor <strong>de</strong> proiectare/implementare propuse s-au stabilit următoarele:<br />

‐ etapele ce trebuie urmate în proiectarea unui sistem <strong>de</strong> recunoaştere implementabil cu circuite logice<br />

programabile<br />

‐ resursele software necesare în procesului <strong>de</strong> proiectare, simulare funcţională, implementare şi<br />

testare;acestea rezultă rezultate în urma i<strong>de</strong>ntificării, sistematizării şi stabilirii cu exactitate a rolului<br />

fiecărei resurse<br />

‐ elaborarea meto<strong>de</strong>i <strong>de</strong> lucru (algoritm) care exploatează la maxim facilităţile oferite <strong>de</strong> unificarea<br />

programelor <strong>de</strong> proiectare, simulare, implementare şi testare.<br />

‐ meto<strong>de</strong>le <strong>de</strong> simulare ce se pretează în cazul sistemelor <strong>de</strong> recunoaştere implementate cu circuite<br />

logice programabile;


<strong>Rezumat</strong> pag. 6<br />

Capitolul VII<br />

Implementarea hardware a reţelelor neuronale cu autoorganizare<br />

Implementarea hardware a unei reţele neuronale cu autoorganizare a presupus <strong>de</strong>zvoltarea unor sisteme ce<br />

permit calcularea unei funcţii <strong>de</strong> transfer ce are proprietatea <strong>de</strong> a <strong>de</strong>scoperi tipare, trăsături, regularităţi şi<br />

corelaţii existente în datele <strong>de</strong> intrare precum şi modul <strong>de</strong> codare sau reprezentare internă a acestora. O astfel<br />

<strong>de</strong> funcţie poate impune folosirea unor algoritmi <strong>de</strong> învăţare nesupervizaţi (cu autoorganizare) a căror ecuaţii<br />

le-am <strong>de</strong>zvoltat şi implementat cu ajutorul blocurilor <strong>de</strong> calcul fundamentale din biblioteca pre<strong>de</strong>finită a<br />

System Generator şi a blocurilor <strong>de</strong>finite <strong>de</strong> utilizator prin intermediul limbajelor <strong>de</strong> programare VHDL sau<br />

MCo<strong>de</strong> şi integrate <strong>de</strong> asemenea in bibliotecile din System Generator.<br />

7.1 Funcţii <strong>de</strong> implementat<br />

Reţelele neuronale artificiale cu autoorganizare şi învăţare <strong>de</strong> tip competitiv au neuronii stratului <strong>de</strong> ieşire<br />

dispuşi în straturi uni sau bidimensionale (rar structuri multidimensionale). În timpul procesului <strong>de</strong> antrenare,<br />

anumiţi neuroni sunt selecţionaţi în scopul ajustării pon<strong>de</strong>rilor pentru a răspun<strong>de</strong> tiparelor aplicate la intrarea<br />

reţelei neuronale. Funcţia <strong>de</strong> selecţie a neuronilor este dată <strong>de</strong> algoritmul <strong>de</strong> învăţare competitiv standard la<br />

care se introduc conexiuni laterale între neuronii stratului <strong>de</strong> ieşire. Pon<strong>de</strong>rile asociate conexiunilor laterale<br />

variază în funcţie <strong>de</strong> distanţa dintre neuroni după aşa numita formă a “pălăriei <strong>de</strong> mexican” <strong>de</strong>finită <strong>de</strong> două<br />

zone distincte: zona învecinată neuronului consi<strong>de</strong>rat, caracterizată prin existenţa pon<strong>de</strong>rilor sinaptice<br />

excitatorii şi zona în<strong>de</strong>părtată ce se manifestă prin pon<strong>de</strong>ri inhibitorii.[4 – 6,11,13,15,21,41]<br />

La implementarea hardware a reţelelor neuronale cu autoorganizare am adoptat algoritmul <strong>de</strong> învăţare<br />

Kohonen ce va modifica pon<strong>de</strong>rile neuronilor ţinând cont <strong>de</strong> relaţiile <strong>de</strong> vecinătate dintre neuronii stratului<br />

<strong>de</strong> ieşire.<br />

7.2 Arhitectura reţelelor neuronale cu autoorganizare şi învăţare on-chip<br />

Topologia reţelei aleasă pentru implementare şi analiză este compusă din 7 neuroni în stratul <strong>de</strong> intrare şi<br />

25 neuroni în stratul <strong>de</strong> ieşire.<br />

Figura 7.1. Arhitectura reţelei neuronale cu autoorganizare<br />

Arhitectura reţelei neuronale SOM cu algoritm <strong>de</strong> învăţare Kohonen şi cu învăţare on-chip este prezentată<br />

în figura 7.1.<br />

Blocurile componente necesare realizării arhitecturii reţelei neuronale sunt [37]:<br />

‐ Bloc control: blocul ce generează semnalele <strong>de</strong> control ale blocurilor <strong>de</strong> calcul;<br />

‐ Bloc strat neuronal: blocul ce conţine neuronii din stratul <strong>de</strong> ieşire;<br />

‐ Bloc selectare câştigător: blocul ce conţine modulele <strong>de</strong> calcul şi <strong>de</strong> selectare a neuronului câştigător<br />

(neuronul cu pon<strong>de</strong>rile cele mai asemănătoare cu vectorul <strong>de</strong> intrare prezentat)<br />

‐ Bloc selectare vecinătate: blocul ce selectează neuronii ce aparţin vecinătăţii calculate în funcţie <strong>de</strong><br />

pon<strong>de</strong>rile fiecărui neuron şi <strong>de</strong> epoca la care se calculează această vecinătate<br />

‐ Blocul generator we: blocul ce setează semnalul <strong>de</strong> enable a memoriei <strong>de</strong> pon<strong>de</strong>ri pentru fiecare neuron


<strong>Rezumat</strong> pag. 7<br />

‐ Blocul generator eta_beta: blocul ce <strong>de</strong>termină funcţiei <strong>de</strong> scalare a pon<strong>de</strong>rilor ,( ) () h t şi calculează<br />

mărimea vecinătăţii β () t .<br />

7.2.1 Mo<strong>de</strong>lul hardware al neuronului<br />

Arhitectura neuronului din componenţa unei reţele neuronale cu autoorganizare este proiectată astfel încât<br />

acesta să răspundă cerinţelor <strong>de</strong> calcul a algoritmilor <strong>de</strong> implementat atât în etapa <strong>de</strong> propagare cât şi în cea<br />

<strong>de</strong> învăţare.<br />

Neuronul adoptat este format din următoarele blocuri <strong>de</strong> calcul: o unitate MAC, un multiplicator, un<br />

sumator, 2 multiplexoare şi un bloc <strong>de</strong> memorie RAM pentru memorarea pon<strong>de</strong>rilor.<br />

Unitatea MAC din componenţa neuronul poate fi implementată prin intermediul a unui bloc multiplicator<br />

si a unui acumulator, figura 7.2,<br />

Figura 7.2. Arhitectura hardware a neuronului Figura 7.3. Arhitectura hardware a neuronului cu<br />

unităţi DSP<br />

sau cu ajutorul unui bloc <strong>de</strong> calcul <strong>de</strong>dicat XtremeDSP. De asemenea tan<strong>de</strong>mul bloc multiplicator – bloc<br />

sumator poate fi implementat printr-un bloc XtremeDSP, figura 7.3.<br />

Tipul arhitecturii neuronului implementat va <strong>de</strong>pin<strong>de</strong> <strong>de</strong> resursele hardware disponibile şi <strong>de</strong> numărul<br />

neuronilor <strong>de</strong> implementat.<br />

Pentru <strong>de</strong>terminarea consumului <strong>de</strong> resurse ale celor trei tipuri <strong>de</strong> arhitecturi neuronale (blocuri<br />

XtremeDSP, blocuri multiplicatoare <strong>de</strong>dicate - blocuri acumulator şi blocuri <strong>de</strong> calcul distribuite) am<br />

implementat hardware fiecare tip arhitectural.<br />

Configurarea mărimii memoriei RAM utilizată la memorarea pon<strong>de</strong>rilor, iniţializarea pon<strong>de</strong>rilor şi<br />

setarea numărului <strong>de</strong> biţi pe care datele sunt reprezentate este realizată prin intermediul ferestrelor popup <strong>de</strong><br />

parametrizare a componentelor<br />

7.2.2 Stratul neuronal<br />

Deoarece reţeaua neuronală adoptată are paralelism <strong>de</strong> neuron, toţi neuronii dintr-un strat vor trebui sa fie<br />

activi in acelaşi timp. Astfel încât pentru implementarea hardware a unui strat neuronal se impune adoptarea<br />

unei arhitecturi în care fiecare neuron sa fie comandat <strong>de</strong> aceleaşi semnale <strong>de</strong> comanda.<br />

Figura 7.4. Reprezentarea stratului neuronal cu paralelismul <strong>de</strong> neuron<br />

Semnalele <strong>de</strong> control necesare sunt: semnalul <strong>de</strong> resetare al acumulatorului (rst_acc), semnalul <strong>de</strong> activare a<br />

ji X


<strong>Rezumat</strong> pag. 8<br />

acumulatorului (en_acc), adresă RAM (addrW), datele intrare (x), semnalul <strong>de</strong> enable scriere RAM (weW),<br />

funcţia <strong>de</strong> scalare a pon<strong>de</strong>rilor (alpha*h) şi <strong>de</strong> setare a comportării neuronale în faza <strong>de</strong> învăţare sau<br />

propagare (learn/propag).<br />

Stratul neuronal <strong>de</strong> ieşire este format din 25 <strong>de</strong> neuroni aranjaţi într-o structură pătratică bidimensională,<br />

figura 7.4.<br />

7.2.3 Blocul <strong>de</strong> control<br />

Blocul <strong>de</strong> control al reţelei neuronale cu autoorganizare este <strong>de</strong>scris în VHDL şi implementat prin<br />

intermediul unui bloc Black box. Rolul acestui bloc este acela <strong>de</strong> a seta semnalele <strong>de</strong> control ale elementelor<br />

<strong>de</strong> calcul din stratul neuronal şi din blocul <strong>de</strong> selectare a neuronului câştigător.<br />

Acest bloc este unul configurabil în funcţie <strong>de</strong> numărul <strong>de</strong> neuroni din stratul neuronal. Numărul <strong>de</strong><br />

neuroni din stratul neuronal este implementat ca parametru generic în codul VHDL şi în funcţie <strong>de</strong> acesta se<br />

vor seta limita numărătorului şi momentele <strong>de</strong> timp la care semnalele <strong>de</strong> control ale blocului XtremeDSP<br />

(reset şi enable) şi blocului RAM (adresa) ale neuronilor, registrului (enable) şi comparatorului blocului <strong>de</strong><br />

selectare neuron câştigător.<br />

Comportarea blocului <strong>de</strong> control este <strong>de</strong>terminată <strong>de</strong> două faze: o prima fază se referă la comportarea<br />

stratului neuronal, a blocurilor <strong>de</strong> selectare neuron câştigător şi <strong>de</strong> selectare a vecinătăţii în faza <strong>de</strong> învăţare şi<br />

o a doua fază ce se referă la comportarea stratului neuronal în faza <strong>de</strong> propagare. În faza <strong>de</strong> antrenare stratul<br />

neuronal va calcula distanţa euclidiană faţa <strong>de</strong> vectorul <strong>de</strong> intrare iar în faza <strong>de</strong> propagare va calcula suma<br />

pon<strong>de</strong>rată a intrărilor. Trecerea <strong>de</strong> la o fază la alta se face în funcţie <strong>de</strong> parametrul ce setează numărul <strong>de</strong><br />

epoci <strong>de</strong> antrenare.<br />

7.2.4 Blocul <strong>de</strong> selectare a neuronului câştigător<br />

Blocul <strong>de</strong> selectare a neuronului câştigător va <strong>de</strong>termina gradul <strong>de</strong> asemănare (matching) dintre vectorul<br />

pon<strong>de</strong>ri ale neuronilor şi vectorul <strong>de</strong> intrare prin compararea distanţelor euclidiene dintre cei doi vectori,<br />

găsirea celei mai mici distanţe şi atribuirea <strong>de</strong> indici corespunzători aşezării planare.<br />

Blocul este compus din alte două blocuri: unul <strong>de</strong> selectare a neuronului câştigător (bloc „selectare<br />

câştigător”) şi unul <strong>de</strong> atribuire <strong>de</strong> indici bidimensionali corespunzători indicelui iniţial unidimensional (bloc<br />

„1to2dim”), figura 7.5.<br />

Figura 7.5. Componenţa blocului <strong>de</strong> selectare a neuronului câştigător<br />

Blocul „selectare câştigător” este <strong>de</strong>scris cu ajutorul componentelor din biblioteca Xilinx Blockset şi are<br />

rolul <strong>de</strong> a selecta în funcţie <strong>de</strong> datele <strong>de</strong> intrare neuronul a căror pon<strong>de</strong>ri sunt cele mai asemănătoare cu<br />

vectorul prezentat la intrare la epoca respectivă. Comparaţia este una serială în urma căreia este reţinut<br />

indicele corespunzător neuronului câştigător. Blocul „1to2dim” este implementat cu ajutorul componentelor<br />

din biblioteca Xilinx Blockset şi are rolul <strong>de</strong> a <strong>de</strong>termina indici bidimensionali corespunzători indicelui<br />

unidimensionali al neuronului <strong>de</strong>semnat câştigător.<br />

7.2.5 Blocul <strong>de</strong> selectare a vecinătăţii<br />

Rolul acestui bloc este <strong>de</strong> a selecta neuronii ce aparţin vecinătăţii neuronului câştigător sau altfel spus este<br />

blocul ce va calcula funcţia centrată pe neuronul câştigător <strong>de</strong> scalare a valorii cu care pon<strong>de</strong>rile sunt<br />

ajustate.<br />

Funcţia <strong>de</strong>pin<strong>de</strong> <strong>de</strong> distanţa dintre neuronul câştigător şi neuronul asupra căreia se aplică funcţia şi mărimea<br />

vecinătăţii la epoca la care este calculată noua pon<strong>de</strong>re. Deoarece implementarea hardware a unei funcţii<br />

exponenţiale aplicată asupra unui raport este relativ greoaie şi consumatoare <strong>de</strong> resurse am ales ca<br />

aproximare a acestei funcţii funcţia <strong>de</strong>finită <strong>de</strong> ecuaţia ec. 7.1.<br />

⎧ 1 dacă d( j, i( X)<br />

) = 0<br />

⎪<br />

h ( t) =⎨0.5 dacă d<br />

( )<br />

( j, i<br />

,<br />

( X<br />

ji X<br />

) ) < β ( t)<br />

(ec.7.1)<br />

⎪⎪⎩<br />

0 altfel<br />

un<strong>de</strong>


- d( j, i( X)) este distanţa dintre neuronul câştigător i(X) şi neuronul j<br />

()<br />

- β () t este mărimea Vi( X)<br />

t<br />

- h<br />

ji , X<br />

t este funcţia <strong>de</strong> scalare aplicată neuronului j la epoca t<br />

( ) ()<br />

<strong>Rezumat</strong> pag. 9<br />

Forma ariei vecinătăţii adoptată este una circulară şi<br />

este calculată în funcţie <strong>de</strong> variabila β () t (raza cercului<br />

<strong>de</strong> vecinătate) a cărei valoare este setată <strong>de</strong> blocul<br />

ki<br />

„generator alpha_beta”, <strong>de</strong>scris in subcapitolul următor.<br />

Astfel că neuronii ce aparţin vecinătăţii neuronului<br />

câştigător vor avea distanţa euclidiană faţă <strong>de</strong> acesta<br />

mai mică sau cel mult egală cu raza cercului <strong>de</strong><br />

vecinătate β () t la epoca t (D1, D2, D3, etc. ≤ Dmax),<br />

figura 7.6.<br />

kj<br />

Figura 7.6. Selectarea neuronilor ce aparţin<br />

vecinătăţii neuronului câştigător<br />

De asemenea datorită proprietăţilor <strong>de</strong> simetrie ridicate, procesul <strong>de</strong> căutare a neuronilor ce aparţin<br />

vecinătăţii nu se va efectua pe toată aria cercului ci pe un sfert <strong>de</strong> cerc.<br />

Blocul va furniza in<strong>de</strong>xul n(ki,kj) al tuturor neuronilor ce în<strong>de</strong>plinesc condiţia:<br />

2 2 2<br />

i + j ≤ max<br />

k k D<br />

(ec.7.2)<br />

un<strong>de</strong> ki şi kj sunt indicii linie şi respectiv coloană a poziţiile neuronilor faţa <strong>de</strong> centrul cercului în care este<br />

situat neuronul câştigător.<br />

Deoarece neuronii vecini vor fi căutaţi doar într-un sfert <strong>de</strong> cerc, restul neuronilor ce aparţin cercului <strong>de</strong><br />

vecinătate vor fi generaţi în mod automat în funcţie <strong>de</strong> următoarele valori <strong>de</strong> a<strong>de</strong>văr ale următoarelor<br />

inegalităţi: “j>=kj”, “kj+j


<strong>Rezumat</strong> pag. 10<br />

În cazul ariei adoptate parametrii nr_neuro_rand şi nr_neuro_col sunt egali astfel încât ecuaţia 7.6. <strong>de</strong>vine:<br />

βτ ( ) = 2⋅nr _neuro _rand − 1= 2⋅nr _total _neuroni − 1<br />

(ec.7.6)<br />

La implementarea hardware cu un minim <strong>de</strong> resurse a ecuaţiei <strong>de</strong> <strong>de</strong>pen<strong>de</strong>nţa a factorului <strong>de</strong> învăţare<br />

funcţie <strong>de</strong> epocă (ec. 7.7) pentru cazul t ≥ τ , funcţia<br />

τ<br />

η() t = η( τ)<br />

(ec.7.7)<br />

t<br />

am aproximat cu funcţii liniare pe porţiuni ce se adaptează la numărul <strong>de</strong> epoci necesare antrenării reţelei<br />

neuronale.<br />

Pentru <strong>de</strong>terminarea numărului optim <strong>de</strong> segmente funcţie <strong>de</strong> numărul <strong>de</strong> epoci am <strong>de</strong>zvoltat în mediul <strong>de</strong><br />

calcul Matlab un script (fişier <strong>de</strong> tip .m) care să calculeze eroarea relativă a funcţiei <strong>de</strong> aproximare, numărul<br />

minim <strong>de</strong> segmente <strong>de</strong> aproximare pentru care eroarea relativă introdusă <strong>de</strong> funcţiile <strong>de</strong> aproximare să scadă,<br />

coeficienţii funcţiei <strong>de</strong> aproximare: panta funcţiei <strong>de</strong> aproximare (a) şi valoarea <strong>de</strong> ofset a funcţiei <strong>de</strong><br />

aproximare (b) şi intervalele pe care funcţie este <strong>de</strong>finită. Modalitatea <strong>de</strong> generare a intervalelor <strong>de</strong><br />

aproximare se obţine prin împărţirea succesivă la 2 a intervalului <strong>de</strong> aproximat pornind <strong>de</strong> la intervalul<br />

maxim, (epoca maximă).<br />

Pentru un număr maxim <strong>de</strong> epoci egal cu 10000 funcţiile <strong>de</strong> aproximare a ecuaţiei ce dau valorile<br />

factorului <strong>de</strong> învăţare la o anumită epocă le-am <strong>de</strong>scris cu ajutorul ecuaţiei 7.8.<br />

⎧<br />

−4<br />

0,0328 −0,1280⋅10 ⋅t, pentru t∈[1000,<br />

1562)<br />

⎪<br />

−4<br />

⎪0,0222<br />

−0,0603⋅10 ⋅t, pentru t∈[1562,<br />

2125)<br />

⎪<br />

−4<br />

η(<br />

t) = ⎨0,0156<br />

−0,0290⋅10 ⋅t, pentru t∈[2125,<br />

3250)<br />

(ec.7.8)<br />

⎪<br />

−4<br />

⎪0,0098<br />

−0,0112⋅10 ⋅t, pentru t∈[3250,<br />

5500)<br />

⎪<br />

−4<br />

⎪⎩<br />

0,0056 −0,0036⋅10 ⋅t, pentru t∈[5500,<br />

10000]<br />

Resursele hardware utilizate la implementarea<br />

blocului <strong>de</strong> calcul al factorului <strong>de</strong> învăţare sunt<br />

in<strong>de</strong>pen<strong>de</strong>nte <strong>de</strong> numărul <strong>de</strong> neuroni şi <strong>de</strong>pind doar<br />

<strong>de</strong> numărul <strong>de</strong> segmente <strong>de</strong> aproximare.<br />

Blocurile <strong>de</strong> calcul ale factorului <strong>de</strong> învăţare (η) şi<br />

a razei <strong>de</strong> vecinătate (β) funcţie <strong>de</strong> numărul curent <strong>de</strong><br />

epoci le-am prezentat în figura 7.7 şi sunt compuse<br />

dintr-un bloc <strong>de</strong> calcul al razei <strong>de</strong> vecinătate, un bloc<br />

<strong>de</strong> calcul al factorului <strong>de</strong> vecinătate şi un bloc<br />

comparator al epocii curente cu epoca τ (epoca <strong>de</strong> la<br />

care se trece din faza <strong>de</strong> ordonare pe întreaga<br />

suprafaţa la faza <strong>de</strong> ordonare pe porţiuni).<br />

Figura 7.7. Blocurile <strong>de</strong> calcul al factorului <strong>de</strong> învăţare<br />

şi a razei <strong>de</strong> vecinătate<br />

Fiecare bloc <strong>de</strong> calcul va implementa ecuaţia <strong>de</strong>scrise <strong>de</strong> ec. 7.3 – 7.4, astfel că pentru blocul <strong>de</strong> calcul al<br />

factorului <strong>de</strong> învăţare vom avea arhitecturi specifice cele două blocuri <strong>de</strong> calcul: cazul t < τ respectiv t > τ<br />

În urma analizării rezultatelor, se poate trage concluzia că resursele utilizate la implementarea blocului <strong>de</strong><br />

calcul al factorului <strong>de</strong> învăţare şi a razei <strong>de</strong> vecinătate rămân relativ constante cu creşterea numărului maxim<br />

<strong>de</strong> epoci şi a numărului <strong>de</strong> neuroni din stratul <strong>de</strong> ieşire.<br />

7.2.7 Blocul generator we<br />

Blocul generator we este blocul ce setează starea semnalului <strong>de</strong> enable a memoriei <strong>de</strong> pon<strong>de</strong>ri pentru<br />

fiecare neuron în funcţie <strong>de</strong> nivelul semnalelor provenite <strong>de</strong> la blocul <strong>de</strong> selectare a vecinătăţii. Acest bloc<br />

este în întregime <strong>de</strong>scris în cod VHDL şi implementat în proiect prin intermediul unui bloc Black Box.<br />

Datele <strong>de</strong> ieşire ale acestui bloc vor fi pe un număr <strong>de</strong> biţi egal cu numărul <strong>de</strong> neuroni din stratul <strong>de</strong> ieşire.<br />

Valoarea fiecărui bit reprezentând nivelul semnalului <strong>de</strong> enable scriere memorie pon<strong>de</strong>ri a neuronului<br />

corespunzător poziţiei bitului astfel că în funcţie <strong>de</strong> valoarea bitului corespunzător fiecărui neuron, pon<strong>de</strong>rile<br />

vor fi sau nu modificate figura 7.8


<strong>Rezumat</strong> pag. 11<br />

Figura 7.8. Reprezentarea biţilor <strong>de</strong> enable scriere memorie pon<strong>de</strong>re<br />

.<br />

7.2.8 Implementarea hardware ale reţelelor neuronale cu autoorganizare şi învăţare on-chip<br />

Implementarea hardware a topologiei reţelei neuronale cu autoorganizare şi învăţare on-chip a constat în: 7<br />

neuroni în stratul <strong>de</strong> intrare şi 25 neuroni în stratul <strong>de</strong> ieşire.<br />

Din analiza datelor am concluzionat că pentru fiecare neuron din stratul <strong>de</strong> ieşire sunt necesare câte 32<br />

LUT-uri, 2 blocuri DSP <strong>de</strong>dicate XtremeDSP şi câte un bloc RAMB <strong>de</strong>dicat pentru implementarea blocului<br />

neuronal şi un număr constant (indiferent <strong>de</strong> numărul <strong>de</strong> neuroni din reţeaua neuronală) <strong>de</strong> 12 multiplicatoare<br />

<strong>de</strong> <strong>de</strong>dicate şi 925 LUT-uri.<br />

Neuronii <strong>de</strong> pe stratul <strong>de</strong> intrare nu contribuie semnificativ la utilizarea resurselor circuitului FPGA.<br />

Luând în consi<strong>de</strong>rare aceste rezultate se poate face o estimare apriorică a consumului <strong>de</strong> resurse exprimat<br />

în blocuri RAM, DSP48 şi LUT-uri pentru o anumită arhitectură a reţelei adoptate:<br />

Nr blocuri RAM = No<br />

Nr blocuri DSP = 2No + 12bloc<br />

calc<br />

(ec.7.9)<br />

Nr LUT − uri = 32 N + 925<br />

o bloccalc<br />

un<strong>de</strong>: No este numărul <strong>de</strong> neuroni <strong>de</strong> pe stratul <strong>de</strong> ieşire iar bloc calc sunt blocurile implicate în calcul<br />

pon<strong>de</strong>rilor neuronilor din stratul <strong>de</strong> ieşire<br />

În acest mod se poate previziona că numărul maxim <strong>de</strong> neuroni ce pot fi implementaţi şi care să utilizeze<br />

strict blocurile Block RAM şi XtremeDSP sunt <strong>de</strong> 95 neuroni în stratul <strong>de</strong> ieşire ce vor utiliza un număr <strong>de</strong><br />

3965 LUT-uri din cele 30720 disponibile. În cazul în care neuronii folosesc multiplicatoarele distribuite si<br />

blocurile Block RAM se mai pot implementa încă 42 <strong>de</strong> neuroni ce ar utiliza ţinând cont <strong>de</strong> consumul <strong>de</strong><br />

resurse la implementarea blocurilor XtremeDSP restul <strong>de</strong> 26755 <strong>de</strong> LUT-uri. Numărul total <strong>de</strong> neuroni<br />

implementabili în circuitul 4VSX35 este <strong>de</strong> aproximativ 135.<br />

7.3 Realizarea bibliotecii <strong>de</strong> componente<br />

Biblioteca <strong>de</strong> componente necesare proiectării reţelelor neuronale cu autoorganizare cu antrenare onchip,<br />

a presupus realizarea unor module <strong>de</strong> calcul specifice, ce au capabilitatea <strong>de</strong> a fi reconfigurate şi<br />

gruparea acestora intr-o bibliotecă <strong>de</strong>numită SOM.<br />

Blocurile proiectate sunt grupate în blocuri <strong>de</strong> control, blocuri neuronale, blocul <strong>de</strong> selectare vecinătate,<br />

blocul <strong>de</strong> selectare neuron câştigător şi blocul <strong>de</strong> setare stare a semnalului <strong>de</strong> activare a memoriei <strong>de</strong> pon<strong>de</strong>ri<br />

şi blocul <strong>de</strong> calcul al funcţiei <strong>de</strong> scalare a pon<strong>de</strong>rilor. Crearea bibliotecii am realizat-o cu ajutorul Toolboxului<br />

Xilinx System Generator din cadrul Simulink al mediului <strong>de</strong> calcul MATLAB.<br />

7.4 Concluzii şi contribuţii<br />

In acest capitol am prezentat implementarea reţelelor neuronale cu autoorganizare şi antrenare on-chip şi<br />

am propus o metodă <strong>de</strong> proiectare a unei reţele neuronale SOM cu ajutorul componentelor pre<strong>de</strong>finite<br />

realizate <strong>de</strong> autor.<br />

Blocurile <strong>de</strong> proiectare a reţelei SOM propuse sunt:<br />

Blocul neuronal. În cadrul acestui bloc am propus două arhitecturi ale unităţii neuronale <strong>de</strong> calcul<br />

“neuron_distribuit” şi “neuron_XtremeDSP” pentru a da posibilitatea creării unor straturi neuronale cu un<br />

număr mai mare <strong>de</strong>cât numărul <strong>de</strong> blocuri <strong>de</strong>dicate XtremeDSP (blocurile ce conţin multiplicatoarele<br />

<strong>de</strong>dicate). Pentru compararea celor doua arhitecturi am realizat o sinteză a frecvenţelor maxime <strong>de</strong> utilizare şi<br />

a consumului <strong>de</strong> resurse necesar implementării neuronului prin intermediul blocurilor XtremeDSP, a<br />

multiplicatoarelor <strong>de</strong>dicate şi a acumulatoarelor.<br />

Blocul <strong>de</strong> control. Blocul <strong>de</strong> control este <strong>de</strong>scris în VHDL şi implementat prin intermediul unui bloc<br />

Black box. Rolul acestui bloc este acela <strong>de</strong> a seta semnalele <strong>de</strong> control ale elementelor <strong>de</strong> calcul din stratul<br />

neuronal şi din blocul <strong>de</strong> selectare a neuronului câştigător


<strong>Rezumat</strong> pag. 12<br />

Blocul <strong>de</strong> selectare a neuronului câştigător. Rolul blocului <strong>de</strong> selectare a neuronului câştigător este acela<br />

<strong>de</strong> a <strong>de</strong>termina gradul <strong>de</strong> asemănare (matching) dintre vectorul pon<strong>de</strong>ri ale neuronilor şi vectorul <strong>de</strong> intrare<br />

prin compararea distanţelor euclidiene dintre cei doi vectori, găsirea celei mai mici distanţe şi atribuirea <strong>de</strong><br />

indici corespunzători aşezării planare. Blocul este compus din două module: unul <strong>de</strong> selectare a neuronului<br />

câştigător (bloc „selectare câştigător”) şi unul <strong>de</strong> atribuire <strong>de</strong> indici bidimensionali corespunzători indicelui<br />

iniţial unidimensional (bloc „1to2dim”)<br />

De asemenea am realizat o sinteză a frecvenţelor maxime <strong>de</strong> utilizare şi a consumului <strong>de</strong> resurse necesar<br />

implementării blocurilor ce formează blocul <strong>de</strong> selectare a neuronului câştigător<br />

Blocul <strong>de</strong> selectare a vecinătăţii. În cadrul acestui subcapitol am prezentat modalitatea <strong>de</strong> selectare a<br />

neuronilor<br />

ce aparţin unei vecinătăţi a unui neuron. Pentru implementarea hardware a acestuia am propus<br />

arhitectura din figura 7.10. De asemenea am realizat o sinteză privind frecvenţele maxime <strong>de</strong> utilizare şi a<br />

consumului <strong>de</strong> resurse necesar implementării acestui bloc în funcţie <strong>de</strong> numărul <strong>de</strong> neuroni al reţelei<br />

neuronale, tabelul 7.4.<br />

Blocul generator eta_beta.<br />

În cadrul acestui subcapitol am prezentat modalitatea <strong>de</strong> calcul al ariei razei <strong>de</strong><br />

vecinătate<br />

a neuronului câştigător şi a factorului <strong>de</strong> învăţare în funcţie <strong>de</strong> numărul <strong>de</strong> epoci <strong>de</strong> antrenare.<br />

Pentru implementarea hardware a ecuaţiilor <strong>de</strong> calcul şi a factorului <strong>de</strong> învăţare am propus o funcţie <strong>de</strong><br />

aproximare şi am <strong>de</strong>zvoltat un script (fişier <strong>de</strong> tip m) care să calculeze în mod automat în funcţie <strong>de</strong> numărul<br />

<strong>de</strong> epoci maxim şi numărul <strong>de</strong> epoci <strong>de</strong> la care reţeaua trece din faza <strong>de</strong> ordonare pe regiuni la faza <strong>de</strong><br />

ordonare locală a erorii relative a funcţiei <strong>de</strong> aproximare, numărul minim <strong>de</strong> segmente <strong>de</strong> aproximare pentru<br />

care eroarea relativă introdusă <strong>de</strong> funcţiile <strong>de</strong> aproximare să scadă, coeficienţii funcţiei <strong>de</strong> aproximare: panta<br />

funcţiei <strong>de</strong> aproximare (a) şi valoarea <strong>de</strong> ofset a funcţiei <strong>de</strong> aproximare (b) şi intervalele pe care funcţie este<br />

<strong>de</strong>finită.<br />

Blocul generator<br />

we. Blocul generator we este <strong>de</strong>scris in limbajul VHDL şi are rolul <strong>de</strong> a seta starea<br />

semnalului <strong>de</strong> enable a memoriei <strong>de</strong> pon<strong>de</strong>ri pentru fiecare neuron în funcţie <strong>de</strong> nivelul semnalelor provenite<br />

<strong>de</strong> la blocul <strong>de</strong> selectare a vecinătăţii.<br />

În cadrul subcapitolului “Implementarea<br />

hardware ale reţelelor neuronale cu autoorganizare şi învăţare<br />

on-chip”<br />

am prezentat o sinteză a resurselor şi a puterii consumate <strong>de</strong> fiecare bloc component în parte. Pe<br />

baza acestei sinteze am <strong>de</strong>zvoltat o serie <strong>de</strong> ecuaţii ce estimează consumul <strong>de</strong> resurse exprimat in număr<br />

blocuri XtremeDSP, Block RAM şi LUT-uri în funcţie <strong>de</strong> numărul <strong>de</strong> neuroni ecuaţiile 7.9. În funcţie <strong>de</strong><br />

consumul <strong>de</strong> resurse în circuit FPGA am stabilit tipul <strong>de</strong> neuron ce poate fi implementat.<br />

De asemenea am estimat că numărul maxim <strong>de</strong> neuroni implementabil în circuitul 4VSX35<br />

ce posedă<br />

proprietatea<br />

<strong>de</strong> învăţare on-chip este <strong>de</strong> 135. De asemenea am prezentat biblioteca <strong>de</strong> componente ce compun<br />

reţeaua neuronală cu autoorganizare (SOM).


<strong>Rezumat</strong> pag. 13<br />

Capitolul VIII<br />

Implementarea hardware a reţelelor neuronale feedforward multistrat<br />

Implementarea hardware în circuitele FPGA a unei reţele feedforward multistrat cu antrenare backpropagation,<br />

BP (propagare înapoi a erorii), a presupus emularea funcţiilor FF-BP cu ajutorul blocurilor <strong>de</strong><br />

calcul fundamentale din biblioteca pre<strong>de</strong>finită a System Generator şi a blocurilor <strong>de</strong>finite <strong>de</strong> utilizator prin<br />

intermediul limbajelor <strong>de</strong> programare VHDL sau MCo<strong>de</strong> şi integrate <strong>de</strong> asemenea in bibliotecile din System<br />

Generator.[ 23-27,35,40,31-34,36,38,39]<br />

Algoritmul <strong>de</strong> instruire şi funcţiile <strong>de</strong> implementat pentru reţeaua feedforward multistrat cu antrenare BP,<br />

au rolul <strong>de</strong> a modifica pon<strong>de</strong>rile aferente fiecărui neuron astfel încât tiparul datelor <strong>de</strong> ieşire a reţelei<br />

neuronale să fie cât mai “asemănător” cu tiparul dorit, tiparul ţintă (target).<br />

8.1 Funcţii <strong>de</strong> implementat<br />

Datele <strong>de</strong> ieşire ale reţelei neuronale, reprezentate prin matricea O, rezultă în urma aplicării asupra<br />

vectorului <strong>de</strong> intrare, reprezentat prin matricea coloană X, a unui operator compus neliniar matricial dat <strong>de</strong><br />

suprapunerea succesiva a matricelor <strong>de</strong> pon<strong>de</strong>ri asupra vectorilor <strong>de</strong> intrare corespunzători:<br />

O = f Wf ( PX )<br />

(ec.8.1)<br />

( )<br />

un<strong>de</strong> f ( ... ) este funcţia <strong>de</strong> activare adoptată, în cazul nostru funcţia sigmoid modificată, W matricea <strong>de</strong><br />

pon<strong>de</strong>ri a stratului <strong>de</strong> ieşire şi P este matricea <strong>de</strong> pon<strong>de</strong>ri a stratului intermediar. Activarea sau oprirea<br />

procesul <strong>de</strong> instruire a reţelei neuronale este în funcţie rezultatul comparării gradientului erorii pătratice<br />

cumulate cu o valoare <strong>de</strong> prag.<br />

8.2 Mo<strong>de</strong>lul hardware al neuronului<br />

In proiectarea neuronului ce compune reţeaua neuronală multistrat cu propagare înainte am avut în ve<strong>de</strong>re<br />

cerinţele <strong>de</strong> calcul atât în etapa <strong>de</strong> propagare în paralelism <strong>de</strong> neuron cât şi în cea <strong>de</strong> învăţare ale reţelei<br />

neuronale. Blocurile ce compun neuronul adoptat sunt formate din blocuri <strong>de</strong> calcul: o unitate MAC, un<br />

multiplexor cu două intrări, şi un bloc <strong>de</strong> implementare a funcţiei <strong>de</strong> activare proiectat <strong>de</strong> autor. De asemenea<br />

neuronul va fi format din blocuri <strong>de</strong> memorare: un bloc <strong>de</strong> memorie RAM pentru memorarea pon<strong>de</strong>rilor şi un<br />

registru <strong>de</strong> iniţializare a valorii bias-ului.<br />

Unitatea MAC din componenţa neuronul poate fi implementată prin intermediul a unui bloc multiplicator<br />

si a unui acumulator, figura 8.1, sau prin intermediul blocului DSP48 implementabil cu blocurile<br />

XtremeDSP, figura 8.2<br />

Figura 8.1. Arhitectura hardware a neuronului<br />

Figura 8.2. Arhitectura hardware a neuronului cu unitate<br />

DSP<br />

Configurarea mărimii memoriei RAM utilizată la memorarea pon<strong>de</strong>rilor, iniţializarea pon<strong>de</strong>rilor şi<br />

setarea numărului <strong>de</strong> biţi pe care datele sunt reprezentate şi procesate este realizată prin intermediul<br />

ferestrelor popup <strong>de</strong> parametrizare a componentelor, figura 8.3.<br />

Figura 8.3. Fereastra <strong>de</strong> parametrizare<br />

Din analiza resurselor utilizate funcţie <strong>de</strong> performanţele vitezei <strong>de</strong> calcul a diferitelor arhitecturi ale<br />

neuronului consi<strong>de</strong>rat am concluzionat că arhitectura ce foloseşte resursele blocurilor XtremeDSP are cel<br />

mai mare randament. Astfel că în continuare unitatea MAC a neuronului va fi implementată prin intermediul<br />

blocurilor XtremeDSP.


<strong>Rezumat</strong> pag. 14<br />

8.2.1 Implementarea funcţie <strong>de</strong> activare - Funcţia Sigmoid<br />

O componentă <strong>de</strong>finitorie a comportării neuronului artificial este blocul funcţiei <strong>de</strong> activare. Implementarea<br />

hardware a funcţiei <strong>de</strong> activare adoptate – funcţia sigmoid, aşa cum este <strong>de</strong>finită în literatură, ar necesita un<br />

consum însemnat <strong>de</strong> resurse.<br />

N<br />

1<br />

o = output( net) = f ( bias + ∑ wkxk) =<br />

⎞ (ec.8.2)<br />

k = 1<br />

1+<br />

e<br />

⎛ N<br />

− ⎜bias+ wkxk ⎟<br />

⎜ ∑ ⎟<br />

⎝ k=<br />

1 ⎠<br />

Pentru limitarea unui astfel <strong>de</strong> consum am căutat adoptarea unei aproximaţii liniare pe porţiuni care să<br />

prezinte erori minime faţă <strong>de</strong> valoarea sigmoidului pe intervalul <strong>de</strong> valori în care funcţia este <strong>de</strong>finită.<br />

Modalităţile principale <strong>de</strong> implementarea digitală a funcţiei <strong>de</strong> activare se împart în două categorii:<br />

folosirea <strong>de</strong> look-up table implementate prin intermediul memoriilor ROM şi însumări a unor <strong>de</strong>zvoltări în<br />

serie Taylor, care la rândul ei se poate împărţii in următoarele subclase <strong>de</strong> aproximări:<br />

• constante pe intervale <strong>de</strong> valori [1, 3, 18]<br />

• funcţii liniare pe porţiuni [22,30]<br />

• combinaţii ale celor două aproximării<br />

• alte aproximări <strong>de</strong>dicate [2,8]<br />

Cele mai bune rezultate raportate în literatură obţinute la folosirea meto<strong>de</strong>i constantelor pe intervale <strong>de</strong><br />

valori se găsesc in intervalul <strong>de</strong> erori <strong>de</strong> ±8% şi ±13,1%. În cazul folosirii funcţiilor liniare pe porţiuni sau<br />

obţinut erori minime <strong>de</strong> ±5,07%, ±4,89% şi <strong>de</strong> ±1,14%. Cea din urmă metoda presupune multiplicări în<br />

virgulă flotantă metodă ce presupune un consum <strong>de</strong> resurse mult prea ridicat pentru obţinerea unor erori cu<br />

puţin mai mici faţa <strong>de</strong> meto<strong>de</strong>le in care reprezentarea se face în virgulă fixă.<br />

În continuare sunt analizate a resurselor hardware folosite şi a erorilor generate diferitele meto<strong>de</strong> <strong>de</strong><br />

aproximare propuse în literatură:<br />

Implementarea <strong>de</strong> tabelele lookup cu valorile corespon<strong>de</strong>nte aplicării funcţiei sigmoid presupune un<br />

consum relativ mare <strong>de</strong> resurse faţă <strong>de</strong> cazul în care sunt implementate aproximările cu funcţii liniare pe<br />

porţiuni doar dacă memoria ROM nu este implementată într-un Block RAM pre<strong>de</strong>finit, tabelul 8.1.<br />

Tabelul 8.1. Resursele hardware necesare implementării Tabelului Lookup<br />

Aproximare TABEL LOOKUP<br />

Utilizarea resurselor circuitului 4VSX35<br />

Distribuţia resurselor Utilizat Disponibil Utilizare (%)<br />

Număr <strong>de</strong> slice-uri 0 15,360 0<br />

Număr <strong>de</strong> LUT 0 30,720 0<br />

Număr <strong>de</strong> RAMB16 1 192 0,52 %<br />

Număr <strong>de</strong> DSP48 - 192 0<br />

Total porţi logice echivalente 131072 3,5 M 3,7 %<br />

Metoda A-low pentru obţinerea unei curbe modificate este formată din segmente liniare a căror gradient<br />

sunt exprimate in funcţie <strong>de</strong> puterile lui 2 ceea ce duce la înlocuirea multiplicatoarelor cu regiştrii <strong>de</strong><br />

<strong>de</strong>plasare. Curba este aproximată prin intermediul a 7 funcţii liniare a căror valori în punctele <strong>de</strong> intersecţie<br />

sunt prezentate in tabelul 8.2.<br />

Tabelul 8.2. Metoda A-low <strong>de</strong> aproximare a funcţiei sigmoid<br />

x -8.0 -4.0 -2.0 -1.0 1.0 2.0 4.0 8.0<br />

y 0.0 0.0625 0.125 0.25 0.75 0.875 0.9375 1.0<br />

Pentru evi<strong>de</strong>nţierea erorilor introduse <strong>de</strong> metoda A-low, funcţia este reprezentată în comparaţie cu funcţia<br />

sigmoid folosind mediul <strong>de</strong> calcul Matlab, figura 8.4 şi 8.5<br />

Figura 8.4. Reprezentarea comparativă a funcţiilor<br />

sigmoid şi A-low<br />

Figura 8.5. Reprezentarea erorilor introduse <strong>de</strong> funcţia<br />

A-low


<strong>Rezumat</strong> pag. 15<br />

In urma analizării rezultatelor reprezentate in figura 8.4 eroarea maxim introdusă este <strong>de</strong> 5,63% iar cea<br />

medie este 0.6335%. Implementarea hardware a funcţiei A-low este prezentată în figura 8.6. Resursele<br />

hardware utilizate se rezumă la 1 block MCo<strong>de</strong> <strong>de</strong> comparare, 4 registrii <strong>de</strong> <strong>de</strong>plasare, 2 multiplexoare şi un<br />

sumator.<br />

Figura 8.6. Arhitectura hardware a funcţiei <strong>de</strong> activare<br />

A-low<br />

Tabelul 8.3. Resursele hardware necesare implementării<br />

funcţiei <strong>de</strong> activare A-low<br />

Aproximare ALOW<br />

Utilizarea resurselor circuitului 4VSX35<br />

Distribuţia resurselor Utilizat Disponibil Utilizare<br />

(%)<br />

Număr <strong>de</strong> slice-uri 27 15,360 1%<br />

Număr <strong>de</strong> LUT 44 30,720 1%<br />

Număr <strong>de</strong> RAMB16 - 192 0<br />

Număr <strong>de</strong> DSP48 - 192 0<br />

Total porţi logice echivalente 411 3,5 M 0 1 x≤0<br />

Consi<strong>de</strong>rând doar numerele negative, axa negativa a lui x, şi <strong>de</strong>finind INT(x) ca fiind partea întreagă a lui x,<br />

partea fracţionară a numărului x împreună cu semnul aferent notat cu FRAC(x) este <strong>de</strong>finită ca:<br />

FRAC( x) = x + INT ( x)<br />

(ec.8.4)<br />

Astfel că expresia funcţiei Allipi <strong>de</strong> aproximare a funcţiei sigmoid poate <strong>de</strong>finită ca:<br />

( )<br />

⎧ 12+ FRAC −x4<br />

⎪1<br />

− pentru x > 0<br />

INT ( x<br />

⎪<br />

)<br />

Allipi<br />

2<br />

( x)<br />

= ⎨<br />

⎪12+<br />

FRAC ( x)<br />

4<br />

⎪<br />

pentru x ≤ 0<br />

INT ( x)<br />

⎩ 2<br />

(ec.8.5)<br />

Pentru evi<strong>de</strong>nţierea erorilor introduse <strong>de</strong> metoda Allipi, funcţia este reprezentată grafic în comparaţie cu<br />

funcţia sigmoid folosind mediul <strong>de</strong> calcul Matlab, figura 8.7 şi 8.8<br />

Figura 8.7. Reprezentarea comparativă a funcţiilor<br />

sigmoid şi Allipi<br />

Figura 8.8. Reprezentarea erorilor introduse <strong>de</strong> funcţia<br />

Allipi<br />

In urma analizării rezultatelor reprezentate in figura 8.8 eroarea maxim introdusă este <strong>de</strong> 1,89% iar cea<br />

medie este <strong>de</strong> 1,11%.<br />

Implementarea hardware a funcţiei Allipi am realizat-o cu ajutorul toolbox-ului System Generator al<br />

Simulink al mediului <strong>de</strong> <strong>de</strong>zvoltare Matlab. Întrucât funcţia se rezumă la o sumă <strong>de</strong> numere exprimate prin<br />

puterile lui 2, formula va putea fi implementată doar cu ajutorul sumatoarelor şi a regiştrilor <strong>de</strong> <strong>de</strong>plasare,<br />

figura 8.9. Pentru <strong>de</strong>terminarea numărului <strong>de</strong> porţi logice echivalente folosite la implementarea hardware a<br />

funcţiei Allipi am folosit mediul <strong>de</strong> <strong>de</strong>zvoltare ISE al cărui raport este prezentat în tabelul 8.4.


Figura 8.9. Arhitectura hardware a funcţiei <strong>de</strong> activare<br />

Allipi<br />

<strong>Rezumat</strong> pag. 16<br />

Tabelul 8.4. Resursele hardware necesare implementării<br />

funcţiei <strong>de</strong> activare Allipi<br />

Aproximarea PLAN (Piecewise Linear Approximation of a Nonlinear function) a fost propusă <strong>de</strong> Amin,<br />

Curtis şi Hayes–Gill. Funcţia <strong>de</strong> aproximare PLAN este <strong>de</strong>scrisă în tabelul 8.5.<br />

Tabelul 8.5. Funcţia <strong>de</strong> aproximare PLAN<br />

Plan(x) Condiţie<br />

1 |X| ≥ 5<br />

0,03125 · |X| + 0,84375 2,375 ≤ |X| < 5<br />

0,0125 · |X| + 0,625 1≤ |X| < 2.375<br />

0,25 · |X| + 0,5 0 ≤ |X| < 1<br />

Comparativ sau reprezentat grafic cele două funcţii precum şi erorile introduse <strong>de</strong> reprezentarea funcţiei<br />

sigmoid cu ajutorul aproximaţiei PLAN figura 8.10 şi 8.11<br />

Figura 8.10. Reprezentarea comparativă a funcţiilor<br />

sigmoid şi PLAN<br />

Figura 8.11. Reprezentarea erorilor introduse <strong>de</strong><br />

funcţia PLAN<br />

In urma analizării rezultatelor reprezentate in figura 8.11 eroarea maxim introdusă este <strong>de</strong> 1,89% iar cea<br />

medie este <strong>de</strong> 0,63%.<br />

Pentru <strong>de</strong>terminarea numărului <strong>de</strong> porţi logice echivalente folosite pentru implementarea hardware a<br />

funcţiei PLAN am folosit mediul ISE a căror rapoarte sunt prezentat în tabelul 8.6.<br />

Tabelul 8.6. Resursele hardware necesare implementării<br />

funcţiei <strong>de</strong> activare PLAN<br />

Figura 8.12. Arhitectura hardware a funcţiei PLAN<br />

Aproximare cu funcţii <strong>de</strong> ordinul 2 <strong>de</strong>finite pe porţiuni. Funcţia sigmoid poate fi aproximată şi cu ajutorul<br />

funcţiilor <strong>de</strong> ordinul 2 <strong>de</strong>finite pe porţiuni. Această aproximare se face cu ajutorul funcţiilor generice <strong>de</strong>finite<br />

<strong>de</strong> ecuaţia 6.14. Dezavantajul major apare din cauza obligativităţii implementării multiplicatoarelor. Schema<br />

<strong>de</strong> aproximare<br />

2<br />

( ) = + +<br />

y x c0 c1x c2x (ec.8.6)<br />

din ecuaţia 8.7 a fost propusă <strong>de</strong> Zhang, Vassiliadis şi Delgado–Frias, în care numărul <strong>de</strong> multiplicatoare<br />

necesare se reduce la unul singur


⎧ ⎛ 2 ⎞<br />

<strong>Rezumat</strong> pag. 17<br />

( x + 4)<br />

⎪1 ⎜1 − ⎟ pentru x


8.3 Stratul neuronal<br />

Deoarece paralelismul <strong>de</strong> procesare adoptat este unul <strong>de</strong><br />

neuron, toţi neuronii dintr-un strat vor trebui sa fie activi<br />

in acelaşi timp. Astfel încât pentru implementarea<br />

hardware a unui strat neuronal se impune adoptarea unei<br />

arhitecturi în care fiecare neuron sa fie comandat <strong>de</strong><br />

aceleaşi semnale <strong>de</strong> comanda, figura 8.16. Semnalele <strong>de</strong><br />

control necesare sunt: semnalul <strong>de</strong> selecţie a biasului sau<br />

a ieşirii multiplicatorului (sel_b_mult), semnalul <strong>de</strong><br />

resetare al acumulatorului (rst_acc), semnalul <strong>de</strong> activare<br />

a acumulatorului (en_acc), adresă RAM (addrW), datele<br />

intrare (x), semnalul <strong>de</strong> enable scriere RAM (weW),<br />

pon<strong>de</strong>re ajustată (w_in).<br />

8.4 Blocul <strong>de</strong> control<br />

Blocul <strong>de</strong> control are rolul <strong>de</strong> a comanda prin<br />

intermediul semnalelor <strong>de</strong> control toate elementele <strong>de</strong><br />

procesare ce compun neuronii atât din stratul ascuns cât<br />

şi din cel <strong>de</strong> ieşire. Pentru sincronizarea elementelor <strong>de</strong><br />

procesare, blocul <strong>de</strong> control are în componenţă un bloc<br />

<strong>Rezumat</strong> pag. 18<br />

Figura 8.16. Reprezentarea paralelismului <strong>de</strong><br />

neuron<br />

numărător pentru furnizarea unei baze <strong>de</strong> timp pentru întreaga reţea neuronală şi câte un bloc “Signal<br />

generator” pentru generarea semnalelor <strong>de</strong> control către cele două straturi ce compun reţeaua neuronală<br />

Blocul numărător este <strong>de</strong>scris in VHDL şi implementat prin intermediul unui Black box. Limitele<br />

intervalului <strong>de</strong> numărare sunt stabilite in funcţie <strong>de</strong> faza <strong>de</strong> învăţare sau <strong>de</strong> sau <strong>de</strong> propagare a reţelei<br />

neuronale <strong>de</strong> numărul <strong>de</strong> straturi ce compun reţeaua neuronală şi <strong>de</strong> numărul <strong>de</strong> neuron <strong>de</strong> pe stratul <strong>de</strong><br />

intrare, ascuns şi respectiv <strong>de</strong> ieşire. Funcţiile ce dau <strong>de</strong>pen<strong>de</strong>nţa valorilor maxime <strong>de</strong> numărare <strong>de</strong> faza<br />

reţelei respectiv numărul <strong>de</strong> neuroni pe strat sunt redate in ecuaţiile <strong>de</strong> mai jos:<br />

In cazul fazei <strong>de</strong> propagare ecuaţia este:<br />

prop _ max = n + n + 6( t -1) + 4<br />

(ec.8.8)<br />

1 2<br />

iar in cazul fazei <strong>de</strong> învăţare ecuaţia este:<br />

learn _ max = n1+ n2 + 6 t + ( t -1)( n2ceil((( n1+ n2) + 6t + 12) / n2)<br />

−<br />

− (( n + n ) + 6t+ 12) + 3 + n ) + 12 + n<br />

1 2 2 2<br />

(ec.8.9)<br />

un<strong>de</strong>: n1 este numărul <strong>de</strong> neuroni <strong>de</strong> pe stratul <strong>de</strong> intrare; n2 este numărul <strong>de</strong> neuroni <strong>de</strong> pe stratul ascuns; n3<br />

este numărul <strong>de</strong> neuroni <strong>de</strong> pe stratul <strong>de</strong> ieşire; t este numărul <strong>de</strong> straturi (mai puţin stratul <strong>de</strong> intrare); ceil<br />

este funcţia Matlab <strong>de</strong> rotunjire în sus către numărul întreg cel mai apropiat.<br />

Blocul numărător auto-configurează valorile parametrilor în funcţie <strong>de</strong> mărimea reţelei neuronale prin<br />

intermediul ferestrelor <strong>de</strong> configurare. Blocul “Signal generator” este configurat pentru stratul neuronal pe<br />

care trebuie sa-l controleze. Acesta este format din alte două blocuri: unul <strong>de</strong> generare a valorilor <strong>de</strong> timp la<br />

care componentele <strong>de</strong> calcul ale neuronului trec dintr-o stare în alta – valorile <strong>de</strong> comandă, iar altul <strong>de</strong> este <strong>de</strong><br />

generare a semnalelor <strong>de</strong> comandă funcţie <strong>de</strong> valorile <strong>de</strong> comandă. Aceste valori sunt calculate în funcţie <strong>de</strong><br />

parametrii reţelei neuronale şi pot fi modificaţi prin intermediul ferestrei <strong>de</strong> configurare a parametrilor, figura<br />

8. 18.<br />

Figura 8.17. Fereastra <strong>de</strong> parametrizare a blocului<br />

numărător<br />

Ecuaţiile folosite la calculul valorilor <strong>de</strong> comandă sunt următoarele:<br />

Figura 8.18. Fereastra <strong>de</strong> parametrizare a blocului<br />

„Signal generator”


<strong>Rezumat</strong> pag. 19<br />

set _rst _ acc = ( t -1)( n + 6) + 2;<br />

en _acc_ start = ( t -1)( n + 6) + 4;<br />

en _acc_ stop = ( t -1)( n + 6) + 4+ n -1;<br />

propag _ start = ( t - 1)( n + 6);<br />

(ec.8.10)<br />

propag _ stop = ( t - 1)( n + 6) + n -1;<br />

update _ layer( t)_ start = t( n + 6) + 12;<br />

update _ lay er()_ t stop = t( n + 6) + 12+ n -1;<br />

un<strong>de</strong> :<br />

‐ set_rst_acc: reprezintă timpul la care portul <strong>de</strong> „reset” al componentei acumulator va lua valoarea ‘1’;<br />

‐ en_acc_start: timpul la care portul <strong>de</strong> „enable” al componentei acumulator va lua valoarea ‘1’;<br />

‐ en_acc_stop: timpul la care portul <strong>de</strong> „enable” al componentei acumulator va lua valoarea ‘0’;<br />

‐ propag_start: timpul la care neuronul va trece în starea <strong>de</strong> propagare;<br />

‐ propag_stop: timpul la care neuronul va trece din starea <strong>de</strong> propagare;<br />

‐ update_layer(t)_start: timpul la care va începe înscrierea pon<strong>de</strong>rilor ajustate în memoria <strong>de</strong> pon<strong>de</strong>ri;<br />

‐ update_layer(t)_stop: timpul la care va înceta înscrierea pon<strong>de</strong>rilor ajustate în memoria <strong>de</strong> pon<strong>de</strong>ri;<br />

‐ n: este numărul <strong>de</strong> neuroni <strong>de</strong> pe stratul t<br />

‐ t: este numărul stratului <strong>de</strong> neuroni<br />

Descrierea comportamentală este realizată in MCo<strong>de</strong> şi VHDL şi implementată hardware printr-un bloc<br />

MCo<strong>de</strong> şi respectiv Black Box.<br />

8.5 Blocul <strong>de</strong> calcul al erorilor şi a pon<strong>de</strong>rilor stratului <strong>de</strong> ieşire<br />

Rolul blocurilor ce formează blocul <strong>de</strong> calcul al<br />

erorilor şi a pon<strong>de</strong>rilor stratului <strong>de</strong> ieşire este acela<br />

<strong>de</strong> a calcula eroarea cumulată, gradientul erorii (δ) şi<br />

valoarea cu care pon<strong>de</strong>rile trebuie modificate pentru<br />

ca eroare cumulată să <strong>de</strong>screască (Δw). Blocurile<br />

implementează formulele <strong>de</strong> calcul specifice, figura<br />

8.19.<br />

Blocul “Delay w” este necesar sincronizării<br />

pon<strong>de</strong>rilor (w) ale stratului <strong>de</strong> ieşire cu valorile cu<br />

care acestea trebuie modificate (Δw) şi are valoarea<br />

<strong>de</strong> 17 unităţi <strong>de</strong> tact.<br />

Figura 8.19. Blocurile componente ale blocului <strong>de</strong> calcul<br />

al erorilor şi a pon<strong>de</strong>rilor stratului <strong>de</strong> ieşire<br />

8.6 Blocul <strong>de</strong> calcul al pon<strong>de</strong>rilor stratului ascuns<br />

Este blocul compus din cele mai multe componente şi implementează formulele <strong>de</strong> calcul a pon<strong>de</strong>rilor<br />

stratului ascuns. Blocurile ce compun blocul <strong>de</strong> calcul al pon<strong>de</strong>rilor stratului ascuns sunt prezentate în figura<br />

8. 20.<br />

Figura 8.20. Blocurile componente ale blocului <strong>de</strong> calcul al pon<strong>de</strong>rilor stratului ascuns


Acestea sunt:<br />

‐ blocul <strong>de</strong> calcul ( 1− )<br />

<strong>Rezumat</strong> pag. 20<br />

y y etaun<strong>de</strong> eta este rata <strong>de</strong> învăţare, iar y este valoarea netă a ieşirii neuronului din<br />

stratul ascuns<br />

‐ blocul <strong>de</strong> calcul mult(<strong>de</strong>lta,w) un<strong>de</strong> <strong>de</strong>lta este gradientul erorilor corespunzătore straturilor <strong>de</strong> ieşire, w sunt<br />

pon<strong>de</strong>rile stratului <strong>de</strong> ieşire<br />

‐ blocul <strong>de</strong> calcul suma(<strong>de</strong>ltaxw) în care este calculată suma produselor dintre gradientul erorilor şi pon<strong>de</strong>rile<br />

stratului <strong>de</strong> ieşire<br />

‐ blocul <strong>de</strong> calcul mult(eta,<strong>de</strong>ltay) este blocul <strong>de</strong> calcul al gradientului erorilor stratului ascuns<br />

‐ blocul <strong>de</strong> paralelizare a rezultatelor în care valorile calculate in mod serial sunt paralelizate în ve<strong>de</strong>rea<br />

înscrierii în mod paralel în memoriile <strong>de</strong> pon<strong>de</strong>ri a neuronilor din stratul ascuns<br />

‐ blocul <strong>de</strong> calcul a valorilor <strong>de</strong> ajustare va înmulţi gradientul erorilor stratului ascuns cu ieşirea netă a<br />

neuronilor din stratul ascuns obţinându-se valoarea cu care pon<strong>de</strong>rile sunt ajustate<br />

‐ blocul <strong>de</strong> <strong>de</strong>lay in care valorile pon<strong>de</strong>rilor sunt întârziate o anumită perioadă <strong>de</strong> timp, ec. 8.11<br />

‐ blocul <strong>de</strong> calcul al noilor pon<strong>de</strong>ri<br />

Valoarea întârzierii este calculată cu ajutorul formulei 8.19.<br />

Delay = n ⋅ ceil((( n + n ) + 6t + 12) / n ) - ( n + n ) + 6t + 15<br />

2 1 2 2 1 2<br />

(ec.8.11)<br />

un<strong>de</strong>: n1 este numărul <strong>de</strong> neuroni <strong>de</strong> pe stratul ascuns, n2 este numărul <strong>de</strong> neuroni <strong>de</strong> pe stratul <strong>de</strong> ieşire şi t<br />

este numărul <strong>de</strong> straturi (mai puţin stratul <strong>de</strong> intrare)<br />

8.7 Arhitectura reţelei neuronale FF-BP cu învăţare on-chip<br />

Topologia reţelei alese pentru implementare este compusă din 7 neuroni în stratul <strong>de</strong> intrare, 7 neuroni în<br />

stratul ascuns şi 4 neuroni în stratul <strong>de</strong> ieşire. Arhitectura reţelei neuronale FF-BP cu regula <strong>de</strong> învăţare <strong>de</strong>lta<br />

şi cu învăţare on-chip este prezentată în figura 8.21<br />

Figura 8.21. Arhitectura reţelei neuronale FF-BP<br />

În urma analizării acestor rapoarte se va putea face o estimare a resurselor ocupate <strong>de</strong> o reţea neuronală <strong>de</strong><br />

o anumită arhitectură.<br />

Pentru fiecare neuron din stratul <strong>de</strong> ieşire se vor adăuga câte 40 LUT-uri şi 4 multiplicatoare <strong>de</strong>dicate la<br />

blocul <strong>de</strong> calcul al pon<strong>de</strong>rilor neuronilor din stratul <strong>de</strong> ieşire şi câte 1 multiplicatoare şi 49 LUT-uri la blocul<br />

<strong>de</strong> calcul al pon<strong>de</strong>rilor neuronilor din stratul ascuns.<br />

În cazul neuronilor din stratul ascuns, pentru fiecare neuron se vor adăuga câte 1 multiplicator şi 32 LUTuri.<br />

Astfel că se poate face o estimare apriorică a consumului <strong>de</strong> resurse exprimat în blocuri RAM, DSP48 şi


<strong>Rezumat</strong> pag. 21<br />

LUT-uri pentru o anumită arhitectură a reţelei adoptate:<br />

Nr blocuri RAM = 2(<br />

Na + Ni)<br />

Nr blocuri DSP = Na + Ni + 12 + 4Ni + 3 + Na + Ni<br />

( ) ( )<br />

bloc _ neuroni<br />

( )<br />

strat _ ascuns<br />

ctr _ bloc<br />

Nr LUT − uri =<br />

= 15 + 6Ni + 2Na<br />

40 + 8Na + 32 Ni + 7 Ni + 200<br />

strat iesire ctr _bloc<br />

(ec.8.12)<br />

un<strong>de</strong> Na este numărul <strong>de</strong> neuroni <strong>de</strong> pe stratul ascuns iar Ni este numărul <strong>de</strong> neuroni <strong>de</strong> pe stratul <strong>de</strong> ieşire.<br />

În acest mod se poate previziona că numărul maxim <strong>de</strong> neuroni ce pot fi implementaţi şi care să utilizeze<br />

strict blocurile Block RAM şi XtremeDSP sunt <strong>de</strong> 15 neuroni în stratul <strong>de</strong> ieşire şi 45 <strong>de</strong> neuroni din stratul<br />

ascuns. În cazul în care neuronii folosesc multiplicatoarele distribuite si blocurile Block RAM se mai pot<br />

implementa încă 26 <strong>de</strong> neuroni, 20 în stratul ascuns şi 6 în stratul <strong>de</strong> ieşire ce vor utiliza 6878 <strong>de</strong> LUT-uri şi<br />

76 <strong>de</strong> blocuri RAM. Astfel că cei 71 <strong>de</strong> neuroni vor utiliza 192 blocuri XtremeDSP, 192 blocuri RAM şi<br />

8063 <strong>de</strong> LUT-uri. Cele 22657 <strong>de</strong> LUT-uri neutilizate se pot redistribui pentru implementarea neuronilor<br />

ştiind că numărul <strong>de</strong> LUT-uri utilizate <strong>de</strong> către fiecare neuron în parte (din stratul <strong>de</strong> ieşire sau ascuns) este<br />

<strong>de</strong> 630 LUT-uri/neuron strat ascuns şi 860 LUT-uri/neuron strat ieşire.<br />

Numărul maxim <strong>de</strong> neuroni implementaţi în acest mod este <strong>de</strong> 20 <strong>de</strong> neuroni in stratul ascuns şi 10<br />

neuroni în stratul <strong>de</strong> ieşire. Numărul total <strong>de</strong> neuroni implementabili în circuitul 4VSX35 este <strong>de</strong> aproximativ<br />

120 <strong>de</strong> neuroni.<br />

8.8 Realizarea bibliotecilor <strong>de</strong> componente<br />

Biblioteca <strong>de</strong> componente necesare proiectării reţelelor neuronale feedforward multistrat cu antrenare BP onchip,<br />

a presupus realizarea unor module <strong>de</strong> calcul specifice cu posibilităţi <strong>de</strong> reconfigurare şi gruparea<br />

acestora intr-o bibliotecă <strong>de</strong>numită RNA FF. Blocurile proiectate se grupează în blocuri <strong>de</strong> control, blocuri<br />

<strong>de</strong> calcul al pon<strong>de</strong>rilor neuronilor din stratul ascuns şi din stratul <strong>de</strong> ieşire, blocurile <strong>de</strong> aproximare a funcţiei<br />

sigmoid (blocurile <strong>de</strong> activare) şi blocurile neuronale.<br />

8.9 Concluzii şi contribuţii<br />

In acest capitol am prezentat implementarea reţelelor neuronale multistrat cu propagare înainte şi antrenare<br />

BP on-chip şi am propus o metodă <strong>de</strong> proiectare a unei reţele neuronale FF cu ajutorul componentelor<br />

pre<strong>de</strong>finite realizate <strong>de</strong> autor. Blocurile <strong>de</strong> proiectare a reţelei FF propuse sunt:<br />

a) Blocul neuronal. În cadrul acestui bloc am propus două arhitecturi ale unităţii neuronale <strong>de</strong> calcul<br />

“neuron_mult” şi “neuron_DSP” pentru a da posibilitatea creării unor straturi neuronale cu un număr mai<br />

mare <strong>de</strong>cât numărul <strong>de</strong> blocuri <strong>de</strong>dicate XtremeDSP (blocurile ce conţin multiplicatoarele <strong>de</strong>dicate). Pentru<br />

compararea celor doua arhitecturi am realizat o sinteză privind frecvenţele maxime <strong>de</strong> utilizare şi a<br />

consumului <strong>de</strong> resurse necesar implementării neuronului prin intermediul blocurilor XtremeDSP, a<br />

multiplicatoarelor <strong>de</strong>dicate şi a acumulatoarelor.<br />

b) Funcţia <strong>de</strong> activare. Pentru implementarea hardware într-un mod cât mai eficient, ceea ce presupune<br />

consum cât mai mic <strong>de</strong> resurse la o viteză <strong>de</strong> calcul cât mai mare, a funcţiei <strong>de</strong> activare sigmoid am propus o<br />

serie <strong>de</strong> funcţii <strong>de</strong> aproximare. Fiecare funcţie a fost implementată hardware, i-a fost estimat consumul <strong>de</strong><br />

resurse şi frecvenţa maximă <strong>de</strong> calcul şi i-am calculat, prin intermediul unui script MATLAB (fişier m),<br />

erorile maxime şi medii introduse. De asemenea am realizat un tabel <strong>de</strong> sinteză ce explicitează pentru fiecare<br />

tip <strong>de</strong> funcţie <strong>de</strong> aproximare resursele consumate (exprimate în număr <strong>de</strong> slice-uri, LUT-uri şi total porţi<br />

logice echivalente), frecvenţa maximă <strong>de</strong> calcul şi puterea consumată. În urma acestei sinteze am<br />

concluzionat cu privire la alegerea celei mai eficiente funcţii <strong>de</strong> aproximare pentru o situaţie dată a resurselor<br />

disponibile.<br />

c) Blocul <strong>de</strong> control. Blocul <strong>de</strong> control propus este format din două tipuri <strong>de</strong> blocuri: unul <strong>de</strong> furnizare a<br />

unei baze <strong>de</strong> timp pentru întreaga reţea neuronală,”Numărător general” şi unul pentru generarea semnalelor<br />

<strong>de</strong> control către cele două straturi ce compun reţeaua neuronală,“Signal generator”. Deoarece starea<br />

semnalele <strong>de</strong> control este funcţie <strong>de</strong> numărul <strong>de</strong> neuroni din fiecare strat şi <strong>de</strong> numărul <strong>de</strong> straturi ce compun<br />

reţeaua neuronală, am <strong>de</strong>zvoltat un set <strong>de</strong> ecuaţii care să calculeze momentele <strong>de</strong> timp la care semnalele <strong>de</strong><br />

control vor trece dintr-o stare în alta.<br />

d) Blocul <strong>de</strong> calcul al erorilor şi a pon<strong>de</strong>rilor stratului <strong>de</strong> ieşire. În cadrul blocului <strong>de</strong> calcul al erorilor şi a<br />

pon<strong>de</strong>rilor stratului <strong>de</strong> ieşire am stabilit componenţa blocurilor <strong>de</strong> calcul a erorii cumulate, gradientului erorii<br />

şi a pon<strong>de</strong>rilor stratului neuronal <strong>de</strong> ieşire. Structura blocurilor este una modulară şi poate fi adaptată pentru<br />

orice configuraţie a arhitecturii reţelei neuronale.<br />

e) Blocul <strong>de</strong> calcul al pon<strong>de</strong>rilor stratului ascuns. Structura blocul <strong>de</strong> calcul al pon<strong>de</strong>rilor stratului ascuns<br />

a fost propusă în funcţie <strong>de</strong> formulele <strong>de</strong> calcul necesare implementării meto<strong>de</strong>i <strong>de</strong> învăţare Delta. Deoarece<br />

în calculul paralel al pon<strong>de</strong>rilor, <strong>de</strong>terminat <strong>de</strong> paralelismul <strong>de</strong> neuron adoptat, există o secvenţă <strong>de</strong> calcul ce


<strong>Rezumat</strong> pag. 22<br />

presupune serializarea rezultatelor şi re-paralelizarea lor, a fost necesară introducerea unei bloc <strong>de</strong> întârziere<br />

a cărei valoare este calculată cu formula propusă <strong>de</strong> autor funcţie <strong>de</strong> numărul <strong>de</strong> neuroni din fiecare strat şi<br />

<strong>de</strong> numărul <strong>de</strong> straturi ce compun reţeaua neuronală, ecuaţia 8.11.<br />

f) Arhitectura reţelei neuronale FF-BP cu învăţare on-chip. În subcapitolul Arhitectura reţelei neuronale<br />

FF-BP cu învăţare on-chip sunt prezentate global blocurile ce compun reţeaua neuronală. În cadrul acestui<br />

subcapitol sunt realizate o serie <strong>de</strong> implementări ale reţelei neuronale compuse dintr-un număr diferit <strong>de</strong><br />

neuroni şi prezentată o sinteză a resurselor şi a puterii consumate <strong>de</strong> fiecare bloc component în parte. Pe baza<br />

acestei sinteze am <strong>de</strong>zvoltat o serie <strong>de</strong> ecuaţii ce estimează consumul <strong>de</strong> resurse exprimat in număr blocuri<br />

XtremeDSP, Block RAM şi LUT-uri în funcţie <strong>de</strong> numărul <strong>de</strong> neuroni din cele două tipuri <strong>de</strong> straturi din<br />

reţea, ecuaţiile 8.12. În funcţie <strong>de</strong> consumul <strong>de</strong> resurse în circuit FPGA am stabilit tipul <strong>de</strong> neuron ce poate fi<br />

implementat. De asemenea am estimat că numărul maxim <strong>de</strong> neuroni implementabil în circuitul 4VSX35 ce<br />

posedă proprietatea <strong>de</strong> învăţare on-chip este <strong>de</strong> 120 din care 85 în stratul ascuns şi 35 în stratul <strong>de</strong> ieşire.


<strong>Rezumat</strong> pag. 23<br />

Capitolul IX<br />

Aplicaţii cu sistemul olfactiv artificial<br />

9.1 Introducere<br />

Aplicaţia realizată cu sistemul olfactiv artificial se referă la recunoaşterea tipului <strong>de</strong> cafea prezentată în<br />

camera <strong>de</strong> probă. Pentru experiment am folosit 4 tipuri <strong>de</strong> cafea măcinată existentă pe piaţă: Jacobs, Eduscho<br />

Aroma Clasic, Peru Coffee Vanilie şi Peru Coffee Robusta.<br />

Sistemul olfactiv artificial propus este format dintr-un set <strong>de</strong> 9 senzori montaţi în partea superioară a unei<br />

camere <strong>de</strong> test, o camera <strong>de</strong> recoltare, 3 pompe <strong>de</strong> transport a gazului, circuite <strong>de</strong> interfaţare a senzorilor şi <strong>de</strong><br />

comanda a pompelor, o placă <strong>de</strong> achiziţie a datelor montat pe portul PCI al unui calculator, aplicaţia <strong>de</strong><br />

achiziţia a datelor <strong>de</strong>zvoltată în Labview 8.2 şi modulul <strong>de</strong> recunoaştere a tiparelor <strong>de</strong>zvoltat in Matlab,<br />

figura 9.1<br />

Figura 9.1. Configuraţia sistemului olfactiv artificial<br />

9.2 Senzorii pentru aplicaţie<br />

În cadrul aplicaţiilor realizate cu sistemul olfactiv artificial am folosit 7 senzori <strong>de</strong> gaz MOS (metal oxi<strong>de</strong><br />

semiconductor), un senzor <strong>de</strong> temperatură şi unul <strong>de</strong> umiditate. Rolul acestor senzori este <strong>de</strong> a obţine<br />

informaţii privind natura gazului analizat, temperatura şi umiditatea mediul gazos.<br />

Senzorii <strong>de</strong> gaz sunt <strong>de</strong> tipul TGS (Taguchi Gas Sensors) şi au fost aleşi astfel încât să aibă un consum<br />

mic, o <strong>de</strong>pen<strong>de</strong>nţă scăzută <strong>de</strong> umiditate a mediului şi să răspundă la un spectru cât mai larg <strong>de</strong> odoranţi şi<br />

concentraţii ale acestora: monoxid <strong>de</strong> carbon, metan, hidrogen (TGS842), amoniac, etanol, izobutan<br />

(TGS826), noxe <strong>de</strong> tipul NOx, H2, sau CO (TGS2601), contaminanţi ai aerului (TGS2600), toluen, hidrogen<br />

sulfurat (TGS2602), alcool, solvenţi organici (TGS2620). Senzorii sunt produşi <strong>de</strong> firma Figaro.<br />

Senzorul <strong>de</strong> temperatură este un senzor analogic <strong>de</strong> tipul LM35 cu un domeniu al sensibilităţii cuprins<br />

între -55 °C şi +150 °C, a cărui tensiune <strong>de</strong> ieşire este liniară cu temperatura exprimată în gra<strong>de</strong> Celsius.<br />

Senzorul este produs <strong>de</strong> firma National Semiconductor.<br />

Senzorul <strong>de</strong> umiditate este unul <strong>de</strong> tip rezistiv (SY- HS-230) cu un domeniu al sensibilităţii RH cuprins în<br />

intervalul 10% - 90% şi cu o tensiune <strong>de</strong> ieşire ce <strong>de</strong>pin<strong>de</strong> liniar (pe porţiuni) <strong>de</strong> umiditatea relativă (raportul<br />

dintre presiunea <strong>de</strong> vaporilor <strong>de</strong> apă şi presiunea vaporilor <strong>de</strong> apă saturanţi la temperatura gazului).<br />

Senzorul este produs <strong>de</strong> firma Syhitech.<br />

9.3 Sistemul <strong>de</strong> eşantionare a probei volatile<br />

Sistemul <strong>de</strong> eşantionare folosit în cadrul aplicaţiile cu sistemul olfactiv artificial este compus din dintr-o<br />

cameră <strong>de</strong> recoltare a compusului volatil, 3 pompe electrice <strong>de</strong> diferite <strong>de</strong>bite pentru transportul compusului<br />

volatil şi a gazului <strong>de</strong> referinţa în camera <strong>de</strong> test şi camera <strong>de</strong> test în care proba este introdusă şi analizată<br />

prin intermediul senzorilor.


<strong>Rezumat</strong> pag. 24<br />

9.3.1 Gazul <strong>de</strong> referinţă<br />

Gazul <strong>de</strong> referinţă folosit este aerul din laboratorul <strong>de</strong> experimentare. Parametrii <strong>de</strong> umiditate şi<br />

temperatură sunt monitorizaţi prin intermediul unui senzor <strong>de</strong> temperatură şi unul <strong>de</strong> umiditate.<br />

Rolul gazului <strong>de</strong> referinţă este <strong>de</strong> a sigura un ofset constant al sistemului senzorial ce se obţine prin<br />

“spălarea” senzorilor într-un flux <strong>de</strong> gaz <strong>de</strong> referinţă.<br />

9.3.2 Camera <strong>de</strong> recoltare<br />

Camera <strong>de</strong> recoltare este format dintr-un vas din sticlă, acoperit, <strong>de</strong> capacitate 150 ml în care este produs<br />

prin încălzire compusul volatil <strong>de</strong> analizat. În partea superioară a vasului sunt practicate două orificii unul <strong>de</strong><br />

admisie a aerului din mediul înconjurător (cameră) şi unul <strong>de</strong> emisie a gazului <strong>de</strong> analizat. Gazul <strong>de</strong> analizat<br />

este obţinut în urma evaporării probei la o temperatură termostatată <strong>de</strong> 60 °C timp <strong>de</strong> 30 min. Termostatarea<br />

este realizată prin intermediul unei plite.<br />

9.3.3 Pompa electrică<br />

În scopul transportării gazului <strong>de</strong> referinţă şi a celui <strong>de</strong> analizat în şi din camera <strong>de</strong> test am folosit 3<br />

pompe electrice: două pompe cu diafragmă şi una rotativă.<br />

Pompa electrică rotativă este una comercială şi are un motor monofazat <strong>de</strong> 12 V curent continuu <strong>de</strong> <strong>de</strong>bit<br />

mare, (aprox. 5l/min) şi are rolul <strong>de</strong> evacuare a odoranţilor din camera <strong>de</strong> test.<br />

Cele două pompe electrice cu diafragmă sunt compuse dintr-un sistem vibrator electromagnetic format<br />

dintr-un magnet permanent şi o bobină ce generează un câmp magnetic variabil. Cele două pompe, cu <strong>de</strong>bite<br />

diferite sunt folosite la transportul odoranţilor din camera <strong>de</strong> recoltare în camera <strong>de</strong> test şi respectiv <strong>de</strong><br />

transport a gazului <strong>de</strong> referinţa (aerul din camera) în camera <strong>de</strong> test.<br />

9.3.4 Camera <strong>de</strong> test<br />

Camera <strong>de</strong> test este format dintr-un vas din plastic acoperit <strong>de</strong> capacitate 1700 ml. Gazul <strong>de</strong> analizat este<br />

introdus prin parte superioară a camerei cu ajutorul pompei electrice. Omogenizarea amestecului din cameră<br />

este realizată prin intermediul unui ventilator montat pe unul din pereţii camerei <strong>de</strong> test. Senzorii utilizaţi<br />

sunt montaţi în partea superioară a camerei <strong>de</strong> test.<br />

9.4 Circuitul <strong>de</strong> interfaţare<br />

Circuitul <strong>de</strong> interfaţare a sistemului olfactiv artificial cuprin<strong>de</strong> două module:<br />

− circuitul <strong>de</strong> interfaţare a senzorilor format dintr-o arie în care elementul senzitiv al senzorului este plasat<br />

într-o configuraţie <strong>de</strong> tip divizor <strong>de</strong> tensiune, pentru măsurarea că<strong>de</strong>rii <strong>de</strong> tensiune pe rezistenţa divizoare,<br />

a cărei valoare este o măsură a rezistenţei senzorului, şi o arie formată din circuite Darlington pentru<br />

controlul tensiunii pe rezistenţa <strong>de</strong> încălzire a senzorului. Această ultimă arie este folosită la modularea<br />

temperaturii <strong>de</strong> încălzire a senzorului.<br />

− circuit <strong>de</strong> interfaţare a funcţionării pompelor format din 2 relee <strong>de</strong> comandă cu două şi respectiv un<br />

contact şi câte un circuit <strong>de</strong> comandă în tensiune a releelor.<br />

9.5 Achiziţia datelor<br />

Pentru a <strong>de</strong>termina meto<strong>de</strong>le <strong>de</strong> extragere a parametrilor <strong>de</strong> interes, am achiziţionat datele obţinute în<br />

urma experimentelor prin intermediul unei placi <strong>de</strong> achiziţie instalată pe portul PCI al calculatorului, am<br />

salvat aceste date pe computer şi le-am analizat cu ajutorul toolbox-ului “Curve fitting tool” al mediului <strong>de</strong><br />

calcul Matlab.<br />

Placa <strong>de</strong> achiziţie folosită are <strong>de</strong>numirea PCI-MIO-16E-1 şi este produsă <strong>de</strong> compania National<br />

Instruments. Aceasta este una <strong>de</strong> cost scăzut, are o rată <strong>de</strong> eşantionare <strong>de</strong> 200kS/s, 16 porturi analogice <strong>de</strong><br />

intrare şi 2 porturi analogice <strong>de</strong> ieşire pe 12 biţi.<br />

Pentru achiziţia datelor furnizate <strong>de</strong> cei 9 senzori am realizat în Labview un instrument virtual (fişier <strong>de</strong><br />

tip .vi) care să achiziţioneze datele <strong>de</strong> la senzori, să proceseze semnalul (filtrare, eliminare drift) şi să salveze<br />

datele în mod text într-un fişier <strong>de</strong> tip *.lvm.<br />

Interfaţa cu utilizatorul a VI-ului realizat, permite setarea timpului <strong>de</strong> calcul al semnalului <strong>de</strong> referinţă,<br />

timpul <strong>de</strong> absorbţie a componentului volatil în camera <strong>de</strong> testare şi timpul <strong>de</strong> <strong>de</strong>sorbţie a componentului<br />

volatil din camera <strong>de</strong> testare, adresa şi numele fişierelor în care datele vor fi salvate. De asemenea prin<br />

intermediul interfeţei cu utilizatorul (front panel) pot fi vizualizate valorile momentane a senzorilor, timpii<br />

setaţi şi reprezentarea grafică a semnalelor din timpul achiziţiei.<br />

Diagrama bloc a modulului <strong>de</strong> control al subVI-urilor în funcţie <strong>de</strong> timpii setaţi <strong>de</strong> utilizator, controlează<br />

semnalele <strong>de</strong> activare/<strong>de</strong>zactivare a VI-urilor <strong>de</strong> procesare semnale, a VI-urilor <strong>de</strong> salvare date şi <strong>de</strong> comandă<br />

a pompei folosită la absorbţia/<strong>de</strong>sorbţia compusului volatil din camera <strong>de</strong> test.


<strong>Rezumat</strong> pag. 25<br />

Figura 9.2. Interfaţa cu utilizatorul a VI-ului <strong>de</strong> achiziţie<br />

În cadrul modului <strong>de</strong> procesare a semnalelor<br />

− am realizat filtrarea semnalului cu ajutorul unui filtru IIR trece jos cu topologie Butterworth <strong>de</strong> ordinul 3,<br />

− am calculat media aritmetică a valorilor ce reprezintă semnalul <strong>de</strong> referinţă pentru eliminarea driftului ce<br />

apare <strong>de</strong> la un experiment la altul ca urmare a modificării condiţiilor din mediul camerei <strong>de</strong> test<br />

(temperatură, umiditate, sau <strong>de</strong> <strong>de</strong>sorbţie incompletă a compuşilor volatili <strong>de</strong> analizat),<br />

− am generat un semnal <strong>de</strong> tensiune constantă <strong>de</strong> valoare egală cu cea a mediei aritmetice calculate şi<br />

− am salvat datele a căror valoare a fost obţinută din diferenţa dintre semnalele achiziţionate <strong>de</strong> la senzori şi<br />

valoarea <strong>de</strong> referinţă corespunzătoare.<br />

Diagrama bloc a modulului <strong>de</strong> procesare a semnalului achiziţionat <strong>de</strong> la senzorul <strong>de</strong> umiditate cuprin<strong>de</strong><br />

modulul <strong>de</strong> filtrare, <strong>de</strong> salvare a datelor şi <strong>de</strong> conversie a valorii tensiunii în valoare procentuală a umidităţii<br />

relative, %RH (raportul dintre umiditatea din aer şi cantitatea maximă <strong>de</strong> umiditate din aerul saturat cu<br />

vapori <strong>de</strong> apă). Diagrama bloc a modulului <strong>de</strong> procesare a semnalului achiziţionat <strong>de</strong> la senzorul <strong>de</strong><br />

temperatură cuprin<strong>de</strong> modulul <strong>de</strong> filtrare, <strong>de</strong> salvare a datelor şi <strong>de</strong> conversie a valorii tensiunii în gra<strong>de</strong><br />

Celsius,<br />

În figura 9.3 am prezentat rezultatul aplicării setărilor <strong>de</strong> timp şi influenţa acestuia asupra că<strong>de</strong>rii <strong>de</strong><br />

tensiune pe rezistenţa senzorului <strong>de</strong> gaz rezultată în urma absorbţiei compusului volatil.<br />

Figura 9.3. Variaţia tensiunii funcţie <strong>de</strong> timpii <strong>de</strong> revenire referinţă, <strong>de</strong> mediere, <strong>de</strong> absorbţie şi <strong>de</strong> <strong>de</strong>sorbţie


modulul <strong>de</strong> control<br />

număr absorbţii consecutive<br />

<strong>Rezumat</strong> pag. 26<br />

modulul <strong>de</strong> control<br />

pompa <strong>de</strong>sorbţie<br />

modulul <strong>de</strong> control pompa<br />

absorbţie proba şi pompa<br />

absorbţie gaz referinţă<br />

modulul <strong>de</strong> control<br />

al subVI-urilor<br />

modulele <strong>de</strong> procesare a<br />

semnalelor achiziţionate<br />

<strong>de</strong> la senzorii <strong>de</strong> gaz<br />

modulul <strong>de</strong> procesare a<br />

semnalului achiziţionat <strong>de</strong><br />

la senzorul <strong>de</strong> umiditate<br />

modulul <strong>de</strong> procesare a<br />

semnalului achiziţionat <strong>de</strong><br />

la senzorul <strong>de</strong> temperatură<br />

Figura 9.4. Diagrama bloc a VI-ului <strong>de</strong> achiziţie<br />

9.5.1 Determinarea timpului <strong>de</strong> absorbţie<br />

Pentru <strong>de</strong>terminarea timpului necesar absorbţiei am luat în consi<strong>de</strong>rare <strong>de</strong>bitul pompei folosite (1L/min) şi<br />

volumul camerei <strong>de</strong> probă (150 cm 3 ) şi variaţia rezistenţei senzorului ca urmare a absorbţie.<br />

9.5.2 Determinarea timpului <strong>de</strong> <strong>de</strong>sorbţie<br />

Pentru a avea o <strong>de</strong>sorbţie completă a moleculelor <strong>de</strong> pe suprafaţa senzorilor, ţinând cont <strong>de</strong> faptul că<br />

senzorii folosiţi sunt diferiţi şi în consecinţă au timpi <strong>de</strong> <strong>de</strong>sorbţie diferiţi, am urmărit ca valorile rezistenţelor<br />

senzorilor să crească la valoarea <strong>de</strong> dinainte <strong>de</strong> absorbţie, folosind o pompa <strong>de</strong> <strong>de</strong>sorbţie <strong>de</strong> <strong>de</strong>bit relativ<br />

mare 10 l/min comandată <strong>de</strong> un modul <strong>de</strong> tip *.VI ce urmăreşte ca datele <strong>de</strong> la toţii senzorii sa fie mai mici<br />

sau egale cu 0,01.<br />

9.6 Procesarea datelor<br />

9.6.1 Manipularea valorilor <strong>de</strong> răspuns<br />

Pentru a extrage informaţia relevantă din răspunsul senzorului şi a pregătii datele în ve<strong>de</strong>rea analizării lor<br />

cu ajutorul unui algoritm <strong>de</strong> recunoaştere a tiparelor în ve<strong>de</strong>rea i<strong>de</strong>ntificării compusului olfactiv am creat o<br />

serie <strong>de</strong> funcţii <strong>de</strong> manipulare a valorilor <strong>de</strong> răspuns cu un impact semnificativ asupra performanţelor <strong>de</strong><br />

analiză a modulelor <strong>de</strong> recunoaştere a tiparelor.<br />

In figura 9.5 am prezentat variaţia valorilor <strong>de</strong> răspuns a senzorilor S1÷S7 pentru un set <strong>de</strong> 10 absorbţii


<strong>Rezumat</strong> pag. 27<br />

consecutive funcţie <strong>de</strong> variaţia concentraţiei compusului volatil, a umidităţii şi a temperaturii din camera <strong>de</strong><br />

test.<br />

Figura 9.5. Influenţa variaţiei concentraţiei compusului volatil, a umidităţii şi a temperaturii din camera <strong>de</strong> test<br />

asupra senzorilor S1, S2.<br />

In figura 9.6 este prezentate variaţia temperaturii şi a umidităţii în camera <strong>de</strong> test in timpul celor 10 absorbţii<br />

consecutive. După cum se observă din figură, atât temperatura cât şi umiditatea comportă o variaţie relativ<br />

majoră la fiecare absorbţie. Aceste variaţii se vor regăsi în valorile <strong>de</strong> răspuns ale senzorilor <strong>de</strong> gaz S1 ÷ S7.<br />

Figura 9.6. Variaţia temperaturii (P1T_04) şi a umidităţii (P1U_04) din camera <strong>de</strong> test<br />

Deoarece <strong>de</strong> la fiecare senzor în parte se obţine un fişier <strong>de</strong> achiziţie format din datele ce provin <strong>de</strong> la 10<br />

absorbţii consecutive, pentru ca aceste date să poată fi procesate (scalate, normalizate, fitate) acestea au fost<br />

grupate in câte 10 variabile corespunzătoare fiecărei absorbţii prin intermediul funcţiei<br />

„<strong>de</strong>sfacere_10date.m”.<br />

Scalarea datelor<br />

Datorită <strong>de</strong>pen<strong>de</strong>nţei puternice a răspunsului senzorului faţă <strong>de</strong> temperatura şi umiditatea atmosferei din<br />

camera <strong>de</strong> test, pentru obţinerea unei “semnături” ce caracterizează cât mai fi<strong>de</strong>l comportarea senzorului la<br />

aplicarea unui anumit odorant este imperios necesară efectuarea unei operaţii <strong>de</strong> scalare a datelor.<br />

Comportarea senzorilor funcţie <strong>de</strong> temperatură şi umiditate este una liniară şi sunt prezentate (pentru un<br />

anumit gaz) <strong>de</strong> către producători.<br />

Pentru realizarea corespunzătoare a scalării am realizat funcţia „functie_set_scl_nrm.m” ce <strong>de</strong>termină<br />

variaţia valorilor temperaturii şi a umidităţii faţă <strong>de</strong> valorile <strong>de</strong> referinţă (T = 38 °C, U = 20%) şi le ajustează<br />

în sensul compensării acestor variaţii.<br />

Normalizarea datelor<br />

Deoarece concentraţia <strong>de</strong> compus volatil <strong>de</strong> la o absorbţia la alta este diferită, datele trebuie normalizate<br />

(conf. ec. 3.17, cap 3, teză). Deoarece diferenţele <strong>de</strong> concentraţii apar <strong>de</strong> la o absorbţie la alta, normalizarea<br />

va fi realizată doar între valorile trăsăturilor extrase <strong>de</strong> la fiecare senzor în parte. În figura 9.7 sunt prezentate<br />

grafic valorile scalate şi normalizate ale răspunsului maxim al senzorilor la o anumită absorbţie.


<strong>Rezumat</strong> pag. 28<br />

Figura 9.7. Reprezentarea valorilor normalizate ale răspunsului senzorilor<br />

9.6.2 Extragerea trăsăturilor<br />

Pe baza analizei modalităţilor <strong>de</strong> extragere a trăsăturilor ce caracterizează răspunsul senzorilor la produsul<br />

volatil aplicat, explicitate în cap V, pentru aplicaţiile cu sistemul senzorial artificial am optat pentru metoda<br />

euristică. În acest scop am selectat următorii parametrii ce caracterizează funcţia <strong>de</strong> răspuns a senzorilor:<br />

− valoarea medie, Med(y), (A1);<br />

− valoarea maxima, ymax, (A2);<br />

− integrala funcţiei, Int(y), (A3);<br />

− integrala funcţiei pe timpul absorbţiei, Intabs(y), (A4);<br />

− panta maximă a funcţiei la absorbţia compusului volatil, (dy/dx)max, (A5);<br />

− panta maximă a funcţiei la <strong>de</strong>sorbţia compusului volatil, (dy/dx)max, (A6);<br />

− timpul la care se atinge panta maximă a funcţiei la absorbţie, T(dy/dx)max, (A7);<br />

− timpul la care se atinge panta maximă a funcţiei la <strong>de</strong>sorbţie, T(dy/dx)max, (A8);<br />

În urma achiziţiei datelor şi salvării acestora în mod text în fişiere <strong>de</strong> tip *.lvm, datele au fost importate ca<br />

variabile în Workspace-ul programului Matlab prin intermediul unui fişier <strong>de</strong> tip *.m.<br />

În urma analizării parametrilor <strong>de</strong> performanţă a diverselor funcţii <strong>de</strong> fitare a datelor din mediul Matlab<br />

cu ajutorul toolbox-ului “Curve fitting tool” am ajuns la concluzia că cea mai bună funcţie <strong>de</strong> fitare pentru<br />

tipul răspunsului senzorilor <strong>de</strong> gaz la aplicarea compuşilor volatili este funcţia Fourier <strong>de</strong> ordinul 7. Această<br />

funcţie va fi folosită în continuare pentru <strong>de</strong>terminarea parametrilor caracteristici răspunsului senzorial.<br />

Pentru extragerea vectorului <strong>de</strong> trăsături ce caracterizează răspunsul senzorilor la aplicarea unui anumit<br />

compus volatil organic am creat funcţia “extragere_trăsături.m” <strong>de</strong> două variabile “date” şi “nr_date” un<strong>de</strong>:<br />

− date : reprezintă vectorul <strong>de</strong> date achiziţionat <strong>de</strong> la senzor<br />

− nr_date : reprezintă numărul <strong>de</strong> date dintre datele achiziţionate luate în consi<strong>de</strong>rare<br />

Matricea rezultată în urmă compunerii vectorilor <strong>de</strong> trăsături este formată pe coloane din trăsăturile<br />

corespunzătoare unui anumit compus iar pe linii sunt valorile trăsăturii unui anumit senzor.<br />

9.7 Recunoaşterea tiparelor<br />

Reţelele neuronale folosite pentru recunoaşterea tiparului dat <strong>de</strong> forma trăsăturilor extrase din răspunsul<br />

senzorilor la aplicarea unui anumit tip <strong>de</strong> odorant diferă <strong>de</strong> la un autor la altul şi <strong>de</strong>pind <strong>de</strong> numărul <strong>de</strong><br />

senzori folosiţi în sistemul olfactiv şi <strong>de</strong> numărul <strong>de</strong> trăsături extrase.<br />

Pentru a putea alege o RNA capabilă să recunoască cât mai corect tipul cafelei prezentate în aplicaţie am<br />

simulat mai multe tipuri <strong>de</strong> RNA a căror rezultate sunt prezentate în continuare.<br />

9.7.1 Reţeaua neuronală FF-BP<br />

Reţeaua feedforward multistrat cu antrenare BP este cel mai utilizat algoritm în recunoaşterea <strong>de</strong> odoranţi.<br />

Arhitectura acesteia este în principiu aceiaşi şi constă dintr-un strat <strong>de</strong> intrare <strong>de</strong> dimensiune egală cu<br />

dimensiunea vectorului <strong>de</strong> intrare, un strat ascuns <strong>de</strong> mărime aproximativ egală cu cea a stratului <strong>de</strong> intrare şi<br />

un strat <strong>de</strong> ieşire <strong>de</strong> dimensiune egală cu numărul odoranţilor <strong>de</strong> recunoscut.<br />

Antrenarea RNA FF-BP<br />

Reţelele neuronale implementate au fost antrenate prin mai multe meto<strong>de</strong> <strong>de</strong> antrenare. Una din meto<strong>de</strong>le<br />

<strong>de</strong> antrenare testate este metoda Levenberg-Marquardt, care face parte din categoria algoritmilor rapizi <strong>de</strong><br />

antrenare a RNA FF-BP.


<strong>Rezumat</strong> pag. 29<br />

Formarea datelor <strong>de</strong> antrenare<br />

Datele <strong>de</strong> antrenare a reţelei neuronale cuprind două seturi <strong>de</strong> date: datele <strong>de</strong> intrare şi datele ţintă şi sunt<br />

formate respectiv din vectori <strong>de</strong> lungime egală cu numărul <strong>de</strong> trăsături extrase înmulţit cu 7 (numărul <strong>de</strong><br />

senzori) ce au fost obţinute prin combinarea datele generate în urma aplicării funcţiei <strong>de</strong> extragere a<br />

trăsăturilor asupra răspunsului senzorului la aplicarea compusului volatil şi din vectori ce caracterizează<br />

clasa vectorilor <strong>de</strong> intrare. Crearea matricei <strong>de</strong> vectori <strong>de</strong> antrenare (vectori antrenare – vectori ţintă) am<br />

realizat-o prin intermediul scriptului date_input_target.m, aplicat asupra matricei trăsăturilor <strong>de</strong> dimensiune<br />

56 x 258.<br />

Erori şi calcularea erorilor<br />

Erorile <strong>de</strong> recunoaştere ale reţelei neuronale în funcţie <strong>de</strong> compunerea setului <strong>de</strong> date <strong>de</strong> antrenare le-am<br />

calculat cu ajutorul funcţiilor “obt_erori.m” şi “numarare_erori.m” explicitate in cele ce urmează.<br />

Funcţia este aplicată datelor obţinute în urma simulării reţelei antrenate şi datelor ţintă şi returnează grafic,<br />

poziţiile nerecunoscute şi valoric, numărul <strong>de</strong> poziţii recunoscute exprimate in procente, anexa 9.6.<br />

O altă sursă <strong>de</strong> erori apare la implementarea hardware a reţelei neuronale şi este <strong>de</strong>terminată <strong>de</strong> precizia<br />

<strong>de</strong> reprezentare a valorilor, ce se regăseşte la stocarea datelor în memoria <strong>de</strong> pon<strong>de</strong>ri şi la efectuarea<br />

calculelor pe un anumit număr <strong>de</strong> biţi.<br />

Pentru analiza erorilor funcţie <strong>de</strong> numărul <strong>de</strong> biţi <strong>de</strong> reprezentare şi calcul am realizat în Simulink un<br />

mo<strong>de</strong>l care să emuleze comportamental o reţea neuronală Ff-Bp implementată hardware. Mo<strong>de</strong>lul este unul<br />

general şi în funcţie <strong>de</strong> setările efectuate în fereastra <strong>de</strong> configurare a parametrilor va modifica numărul <strong>de</strong><br />

biţi în care partea întreagă şi cea fracţionară a datelor este reprezentată şi tipul reţelei.<br />

Figura 9.8. Arhitectura mo<strong>de</strong>lului <strong>de</strong> simulare a relei<br />

neuronale<br />

Figura 9.9. Fereastra <strong>de</strong> configurare a<br />

parametrilor <strong>de</strong> reprezentare a<br />

datelor şi <strong>de</strong> importare a reţelei<br />

Reţeaua neuronală simulata este formată dintr-un bloc <strong>de</strong> procesare a vectorilor <strong>de</strong> intrare un strat ascuns,<br />

un strat <strong>de</strong> ieşire şi un bloc <strong>de</strong> procesare a vectorilor <strong>de</strong> ieşire, figura 9.10<br />

Figura 9.10. Componenţa reţelei neuronale FF-BP<br />

Procesarea vectorilor <strong>de</strong> intrare constă in implementarea funcţiilor <strong>de</strong> <strong>de</strong>terminare şi înlocuire a valorilor<br />

NAN, funcţia fixunknowns.m, <strong>de</strong> eliminare a rândurilor cu valori constante, funcţia removeconstantrows.m<br />

şi <strong>de</strong> mapare a valorilor vectorilor într-un interval prestabilit <strong>de</strong> valori, <strong>de</strong> obicei [-1 1] folosind algoritmul:<br />

x - xmin<br />

y = ( y max - ymin ) ⋅ + y<br />

(9.1)<br />

min<br />

x - x<br />

max min<br />

un<strong>de</strong> ymax şi ymin sunt valorile minime şi maxime ale intervalului în care se mapează valorile <strong>de</strong> intrare,<br />

xmin şi xmax sunt valorile minime şi maxime ale datelor <strong>de</strong> mapat, x este valoarea <strong>de</strong> mapat şi y este valoare<br />

mapată. Procesarea vectorilor <strong>de</strong> intrare constă in implementarea funcţiilor <strong>de</strong> restabilire a valorilor <strong>de</strong><br />

dinaintea mapării, funcţia mapminmax_reverse.m şi <strong>de</strong> refacere a rândurilor cu valori constante înlăturate<br />

iniţial, funcţia removeconstantrows_reverse.m.<br />

Stratul ascuns şi cel <strong>de</strong> ieşire este format din blocurile <strong>de</strong> conversie a datelor pe un număr <strong>de</strong> biţi setat în<br />

fereastra <strong>de</strong> configurare a parametrilor, un bloc <strong>de</strong> calcul al intrărilor pon<strong>de</strong>rate, bloc <strong>de</strong> stocare a biasului, un<br />

bloc <strong>de</strong> însumare a intrărilor pon<strong>de</strong>rate şi a biasului şi un bloc <strong>de</strong> calcul al valorilor <strong>de</strong> ieşire a stratului<br />

neuronal prin aplicare funcţiei <strong>de</strong> activare tansig.m,<br />

Bloc <strong>de</strong> calcul al intrărilor pon<strong>de</strong>rate conţine la rândul lui blocurile <strong>de</strong> multiplicare a intrărilor cu<br />

pon<strong>de</strong>rile aferente stocate<br />

Implementarea reţelei pe un număr <strong>de</strong> biţi fix constituie o sursă <strong>de</strong> erori în recunoaşterea tiparului


<strong>Rezumat</strong> pag. 30<br />

prezentat. În scopul <strong>de</strong>terminării influenţei numărului <strong>de</strong> biţi <strong>de</strong> reprezentare asupra gradului <strong>de</strong> recunoaştere<br />

a tiparelor am realizat o serie <strong>de</strong> simulări ale reţelei FF-BP cu diferite valori ale numărului <strong>de</strong> neuroni<br />

implementate pe un număr diferit <strong>de</strong> biţi.<br />

Arhitectura reţelei FF-BP<br />

Reţeaua neuronală FF-BP a fost creată prin intermediul funcţiei creare_retea.m explicitat mai jos, în care<br />

se specifică domeniul <strong>de</strong> valori a vectorilor <strong>de</strong> intrare, numărul <strong>de</strong> neuroni din stratul ascuns, numărul <strong>de</strong><br />

neuroni din stratul <strong>de</strong> ieşire, tipul funcţiilor <strong>de</strong> activare <strong>de</strong> pe cele două straturi (tansig), funcţia <strong>de</strong> antrenare<br />

(trainlm), numărul maxim <strong>de</strong> epoci (100), eroarea pătratică medie (0).<br />

9.7.2 Simularea reţelelor FF-BP<br />

Pentru <strong>de</strong>terminarea arhitecturii optime a reţelei FF-BP pentru recunoaşterea celor patru tipuri <strong>de</strong> cafea<br />

am simulat o serie <strong>de</strong> reţele neuronale <strong>de</strong> diferite arhitecturi a căror rezultate sunt prezentate in cele ce<br />

urmează.<br />

FF‐BF_56_56_4<br />

Arhitectura reţelei neuronale FF-BF_56_56_4 este formată din 56 <strong>de</strong> neuroni pe stratul <strong>de</strong> intrare, 56 <strong>de</strong><br />

neuroni pe stratul ascuns şi 4 neuroni pe stratul <strong>de</strong> ieşire.<br />

Pentru a pune în evi<strong>de</strong>nţă relaţiei dintre numărul <strong>de</strong> biţi pe care este implementată reţeaua FF-BF-<br />

56_56_4 şi gradul <strong>de</strong> recunoaştere a tiparelor prezentate, am simulat şi calculat gradul <strong>de</strong> recunoaştere a<br />

tiparelor prezentate pentru următoarele configuraţii <strong>de</strong> implementare: (1,32,16), (1,16,8), (1,15,8), (1,13,6),<br />

(1,10,5), (1,8,4). Rezultatele implementărilor şi a simulărilor sunt prezentate în figura 9.11.<br />

Figura 9.11. Reprezentarea gradului <strong>de</strong> recunoaştere a reţelei FF-BF- 56_56_4 în funcţie <strong>de</strong> numărul <strong>de</strong> biţi pe care<br />

reţeaua este implementată<br />

FF‐BF_21_21_4<br />

În scopul reducerii numărului <strong>de</strong> neuroni din reţea am creat un vector <strong>de</strong> intrare reprezentat doar din unele<br />

dintre trăsăturile extrase obţinând seturile <strong>de</strong> antrenare: set1: A1, A2, A3; set2: A4, A5, A6; set3: A6, A7,<br />

A8; set4: A2, A4, A7. Gradul <strong>de</strong> recunoaştere al reţelei FF-BF_21_21_4 pentru diferite seturi <strong>de</strong> trăsături.<br />

Tabelul 9.1. Gradul <strong>de</strong> recunoaştere al reţelei FF-BF_21_21_4 pentru diferite seturi <strong>de</strong> trăsături<br />

Grad <strong>de</strong><br />

Recunoaştere (%)<br />

set1 set2 set3 set4<br />

94,57 85,65 77,90 89,14<br />

Procentele <strong>de</strong> recunoaştere a reţelei neuronale <strong>de</strong> arhitectură FF-BF_21_21_4 folosind ca vectori <strong>de</strong><br />

antrenare vectorii set1, set2, set3 şi set4 sunt prezentate in tabelul 9.1<br />

Figura 9.12. Reprezentarea gradului <strong>de</strong> recunoaştere în funcţie <strong>de</strong> numărul <strong>de</strong> biţi pe care reţeaua este implementată


<strong>Rezumat</strong> pag. 31<br />

Reţelele neuronale rezultate în urma aplicării celor 4 seturi <strong>de</strong> vectori <strong>de</strong> antrenare au fost simulate şi<br />

după implementarea lor pe un număr <strong>de</strong> biţi prestabilit. În acest sens am simulat şi calculat gradul <strong>de</strong><br />

recunoaştere a tiparelor prezentate pentru următoarele configuraţii <strong>de</strong> implementare: (1,32,16), (1,16,8),<br />

(1,10,5), (1,8,4). Rezultatele implementărilor şi a simulărilor sunt prezentate în figura 9.36.<br />

FF‐BF_7_21_4<br />

În scopul caracterizării aportului fiecărei trăsături la gradul <strong>de</strong> recunoaştere a reţelei neuronale am<br />

<strong>de</strong>zvoltat 8 seturi <strong>de</strong> date <strong>de</strong> antrenare. Aceste date <strong>de</strong> antrenare sunt caracterizate <strong>de</strong> către o singură<br />

trăsătură: set-i1: A1, set-i2: A2, set-i3: A3, set-i4: A4, set-i5: A5, set-i6: A6, set-i7: A7, set-i8: A8;<br />

In tabelul 9.2 sunt prezentate gradul <strong>de</strong> recunoaştere a reţelei cu arhitectura FF-BF_7_21_4 atunci când<br />

este antrenată cu setul <strong>de</strong> date set-i1, set-i2, set-i3, set-i4, set-i5, set-i6, set-i7 şi set-i8.<br />

Tabelul 9.2. Gradul <strong>de</strong> recunoaştere al reţelei FF-BF_7_21_4 pentru diferite seturi <strong>de</strong> trăsături<br />

Grad <strong>de</strong><br />

Recunoaştere<br />

(%)<br />

set-i1 set-i2 set-i3 set-i4 set-i5 set-i6 set-i7 set-i8<br />

87,20 90,31 75,19 78,68 74,03 52,32 36,82 41,08<br />

Pentru evi<strong>de</strong>nţierea relaţiei dintre numărul <strong>de</strong> biţi pe care este implementată reţeaua FF-BF-7_21_4 şi<br />

gradul <strong>de</strong> recunoaştere a tiparelor prezentate am simulat şi calculat gradul <strong>de</strong> recunoaştere a tiparelor<br />

prezentate pentru următoarele configuraţii <strong>de</strong> implementare: (1,32,16); (1,16,8); (1,10,5); (1,8,4);<br />

Gradul <strong>de</strong> recunoaştere a tiparelor prezentate funcţie <strong>de</strong> configuraţie <strong>de</strong> implementare este prezentată în<br />

figura 9.13<br />

Figura 9.13. Reprezentarea gradului <strong>de</strong> recunoaştere în funcţie <strong>de</strong> numărul <strong>de</strong> biţi pe care reţeaua este implementată<br />

9.8 Concluzii şi contribuţii<br />

In acest capitol am propus o arhitectură a unui sistem olfactiv artificial şi am realizat o aplicaţie ce se<br />

referă la recunoaşterea tipului <strong>de</strong> cafea prezentată în camera <strong>de</strong> probă. Pentru această aplicaţie am folosit 4<br />

tipuri <strong>de</strong> cafea măcinată existentă pe piaţă: Jacobs, Eduscho Aroma Clasic, Peru Coffee Vanilie şi Peru<br />

Coffee Robusta.<br />

În cadrul sistemului olfactiv artificial am folosit 6 senzori <strong>de</strong> gaz MOS cu sensibili la un spectru larg <strong>de</strong><br />

odoranţi (TGS826, TGS842, TGS2600, TGS2601, TGS2602, TGS2620), un senzor <strong>de</strong> temperatură (LM35)<br />

şi unul <strong>de</strong> umiditate (SY- HS-230).<br />

Achiziţia datelor a fost realizate prin intermediul plăcii <strong>de</strong> achiziţie PC-MIO-16E-1 şi a unui instrument<br />

virtual pe care l-am realizat în Labview pentru preprocesarea semnalelor şi salvarea datelor în fişiere text <strong>de</strong><br />

tip *.lvm. Instrumentul virtual creat permite prin intermediul interfeţei cu utilizatorul setarea timpilor <strong>de</strong><br />

absorbţie, <strong>de</strong>sorbţie (prin valoarea <strong>de</strong> prag) şi revenire la valoarea <strong>de</strong> referinţă şi a numărului <strong>de</strong> absorbţii<br />

succesive realizate <strong>de</strong> la o singură probă. Modulele ce compun instrumentul virtual sunt: modulul <strong>de</strong> control<br />

al subVI-urilor în funcţie <strong>de</strong> timpii setaţi <strong>de</strong> utilizator, modulul <strong>de</strong> control al achiziţiei, modulul <strong>de</strong> procesare<br />

semnal, modulul <strong>de</strong> conversie in °C a datelor generate <strong>de</strong> senzorul <strong>de</strong> temperatură, modulul <strong>de</strong> conversie în<br />

%RH a datelor generate <strong>de</strong> senzorul <strong>de</strong> umiditate.<br />

În scopul extragerii trăsăturilor răspunsului senzorului la aplicarea odoranţilor, am realizat o serie <strong>de</strong><br />

funcţii <strong>de</strong> procesare a semnalului. Pe baza analizei modalităţilor <strong>de</strong> extragere a trăsăturilor ce caracterizează<br />

răspunsul senzorilor la produsul volatil aplicat, pentru aplicaţia <strong>de</strong> recunoaştere a tipului <strong>de</strong> cafea prezentat<br />

sistemului senzorial artificial, am optat pentru metoda <strong>de</strong> analiză euristică. În acest scop am selectat<br />

următorii parametrii ce caracterizează funcţia <strong>de</strong> răspuns a senzorilor: valoarea medie, Med(y), (A1),<br />

valoarea maximă, ymax, (A2) integrala funcţiei, Int(y), (A3); integrala funcţiei pe timpul absorbţiei, Intabs(y),<br />

(A4); panta maximă a funcţiei la absorbţia compusului volatil, (dy/dx)max, (A5); panta maximă a funcţiei la<br />

<strong>de</strong>sorbţia compusului volatil, (dy/dx)max, (A6); timpul la care se atinge panta maximă a funcţiei la absorbţie,


<strong>Rezumat</strong> pag. 32<br />

T(dy/dx)max, (A7); timpul la care se atinge panta maximă a funcţiei la <strong>de</strong>sorbţie, T(dy/dx)max, (A8);<br />

Pentru extragerea trăsăturilor selectate, datele au fost fitate prin intermediul unei funcţii <strong>de</strong> fitare selectate<br />

dintr-o serie <strong>de</strong> funcţii, pe baza parametrilor <strong>de</strong> analiză a erorilor introduse: suma pătratelor erorilor, pătratul<br />

coeficientului <strong>de</strong> corelaţie multiplă, Adj R-sq şi abaterea medie pătratică. Funcţia <strong>de</strong> fitare cu parametrii cei<br />

mai mari <strong>de</strong> performanţă a fost funcţia Fourier. În urma stabilirii funcţiei <strong>de</strong> fitare, pentru extragerea<br />

trăsăturilor am creat funcţia „extragere_trăsături.m” compusă din următoarele submodule ce <strong>de</strong>termină<br />

lungimea vectorului <strong>de</strong> analizat fitarea datelor, calculează <strong>de</strong>rivatele <strong>de</strong> ordinul 1 şi integralele, calculează<br />

valorile maxime ale <strong>de</strong>rivatei <strong>de</strong> ordinul 1 (panta maximă la absorbţie), <strong>de</strong>termină x pentru care <strong>de</strong>rivata <strong>de</strong><br />

ordinul 1 este maximă, calculează <strong>de</strong>rivatele <strong>de</strong> ordinul 1 minime (panta maximă la <strong>de</strong>sorbţie), <strong>de</strong>termină x<br />

pentru care <strong>de</strong>rivata <strong>de</strong> ordinul 1 este minimă, <strong>de</strong>termină x pentru care răspunsul senzorului este maxim,<br />

creează vectorul <strong>de</strong> trăsături caracteristice răspunsului senzorului. Matricea rezultată în urmă compunerii<br />

vectorilor <strong>de</strong> trăsături este formată pe coloane din trăsăturile corespunzătoare unui anumit compus iar pe linii<br />

sunt valorile trăsăturii unui anumit senzor.<br />

Tiparele prezentate sistemului (tipul cafelei) au fost recunoscute prin intermediul reţelelor neuronale.<br />

Pentru alegerea RNA-ului cu gradul cel mai ridicat <strong>de</strong> recunoaştere a tipul cafelei prezentate în aplicaţie am<br />

simulat mai multe tipuri <strong>de</strong> RNA.<br />

Pentru setarea diferiţilor parametri ce caracterizează arhitectura reţelei neuronale FF-BP am creat funcţia<br />

„creare_retea.m” în care se specifică domeniul <strong>de</strong> valori a vectorilor <strong>de</strong> intrare, numărul <strong>de</strong> neuroni din<br />

stratul ascuns, numărul <strong>de</strong> neuroni din stratul <strong>de</strong> ieşire, tipul funcţiilor <strong>de</strong> activare <strong>de</strong> pe cele două straturi<br />

(tansig), funcţia <strong>de</strong> antrenare (trainlm), numărul maxim <strong>de</strong> epoci (100), eroarea pătratică medie (0).<br />

Arhitecturile analizate prezintă următoarele topologii: FF-BF_56_60_4; FF-BF_56_56_4; FF-BF_21_21_4;<br />

FF-BF_7_21_4;<br />

Pentru analiza erorilor <strong>de</strong> recunoaştere introduse <strong>de</strong> implementarea reţelei neuronale pe un anumit număr<br />

<strong>de</strong> biţi, am realizat în Simulink un mo<strong>de</strong>l care să emuleze comportamental o reţea neuronală FF-BF<br />

implementată hardware. Mo<strong>de</strong>lul este unul general şi în funcţie <strong>de</strong> setările efectuate în fereastra <strong>de</strong><br />

configurare a parametrilor va modifica numărul <strong>de</strong> biţi în care partea întreagă şi cea fracţionară a datelor este<br />

reprezentată şi tipul reţelei. Reţeaua neuronală simulata este formată dintr-un bloc <strong>de</strong> procesare a vectorilor<br />

<strong>de</strong> intrare un strat ascuns, un strat <strong>de</strong> ieşire şi un bloc <strong>de</strong> procesare a vectorilor <strong>de</strong> ieşire.<br />

În cadrul capitolului am analizat relaţia dintre numărul <strong>de</strong> biţi pe care este implementată reţeaua şi gradul<br />

<strong>de</strong> recunoaştere a tiparelor prezentate, am simulat şi calculat gradul <strong>de</strong> recunoaştere a tiparelor prezentate.<br />

Rezultatele simulării au constat în reprezentarea grafică gradului <strong>de</strong> recunoaştere a tiparelor prezentate<br />

funcţie <strong>de</strong> numărul <strong>de</strong> biţi <strong>de</strong> reprezentare.<br />

Din analiza rezultatelor simulărilor diverselor arhitecturi ale reţelei neuronale, a implementării acestora<br />

pe un număr diferit <strong>de</strong> biţi şi a compunerii vectorilor <strong>de</strong> antrenare din diferite trăsături ale semnalului ce<br />

caracterizează tipul cafelei se pot trage următoarele concluzii:<br />

Arhitectura reţelei neuronale FF-BP cu gradul maxim <strong>de</strong> recunoaştere <strong>de</strong> 100% a vectorilor <strong>de</strong> intrare are<br />

configuraţia 56-56-4 şi foloseşte toate trăsăturile extrase (A1, A2, A3, A4, A5, A6, A7 şi A8). Gradul <strong>de</strong><br />

recunoaştere a acestui tip <strong>de</strong> reţea <strong>de</strong>pin<strong>de</strong> în foarte mare măsură <strong>de</strong> numărul <strong>de</strong> biţi <strong>de</strong> implementare. Astfel<br />

daca pentru o configuraţie <strong>de</strong> (1,32,16) – (1,16,8) gradul <strong>de</strong> recunoaştere variază între 100% şi 95%, pentru o<br />

configuraţie <strong>de</strong> (1,15,8) gradul <strong>de</strong> recunoaştere sca<strong>de</strong> la 50%, ca mai apoi odată cu scă<strong>de</strong>rea numărului <strong>de</strong> biţi<br />

<strong>de</strong> implementare aceasta să scadă sub 10%.<br />

O situaţie relativ diferită este întâlnită la implementarea reţelei cu topologia 21-21-4. Gradul <strong>de</strong> recunoaştere<br />

al acestei reţele neuronale variază cu tipul trăsăturilor prezentate într-o proporţie <strong>de</strong> 15% dar este mult mai<br />

solidă la implementarea pe un domeniu larg <strong>de</strong> valori ale numărului <strong>de</strong> biţi <strong>de</strong> reprezentare. Astfel, gradul <strong>de</strong><br />

recunoaştere, la implementarea reţelei într-o configuraţie <strong>de</strong> (1,32,16), este egal cu gradul <strong>de</strong> recunoaştere al<br />

reţelei neuronale reprezentate pe domeniul maxim <strong>de</strong> valori şi sca<strong>de</strong> cu aproximativ 5% faţa <strong>de</strong> valoarea<br />

iniţială la implementarea in configuraţii <strong>de</strong> până la (1,8,4).<br />

În cazul implementării intr-o arhitectură <strong>de</strong> 7-21-4, gradul <strong>de</strong> recunoaştere <strong>de</strong>pin<strong>de</strong> puternic <strong>de</strong> tipul trăsăturii<br />

din care este compus vectorul <strong>de</strong> antrenare. Astfel, in cazul compunerii vectorului <strong>de</strong> antrenare din valorile<br />

integralei datelor <strong>de</strong> răspuns <strong>de</strong> la cei 7 senzori, gradul <strong>de</strong> recunoaştere este <strong>de</strong> 90% şi sca<strong>de</strong> până la 35% în<br />

cazul compunerii vectorilor <strong>de</strong> antrenare din valoarea timpului la care se atinge panta maximă a funcţiei la<br />

absorbţie. De asemenea performanţele <strong>de</strong> recunoaştere a reţelei sunt foarte sensibile la numărul <strong>de</strong> biţi pe care<br />

reţeaua este implementată. Gradul <strong>de</strong> recunoaştere rămâne constant până la o configuraţie <strong>de</strong> implementare <strong>de</strong><br />

(1,16,8) după care sca<strong>de</strong> dramatic la 40% pentru (1,8,4).<br />

În concluzie, sistemul <strong>de</strong> recunoaştere îşi păstrează performanţele <strong>de</strong> recunoaştere pentru implementări în<br />

configuraţii <strong>de</strong> până la (1,16,8) şi prezintă cel mai bun raport arhitectură – performanţe pentru o configuraţie<br />

<strong>de</strong> 21 <strong>de</strong> neuroni pe stratul <strong>de</strong> intrare, 21 <strong>de</strong> neuroni pe stratul ascuns şi 4 neuroni pe stratul <strong>de</strong> ieşire.


<strong>Rezumat</strong> pag. 33<br />

Capitolul X<br />

Contribuţii originale şi direcţii <strong>de</strong> continuare a cercetării<br />

Direcţia <strong>de</strong> cercetare în această teză o constituie <strong>de</strong>zvoltarea unui sistem olfactiv artificial bazat pe o<br />

platformă inteligentă cu capabilităţi <strong>de</strong> învăţare si adaptare. Dezvoltarea unei astfel <strong>de</strong> platforme a presupus<br />

implementarea hardware in circuite FPGA a diferitelor reţele neuronale artificiale prin intermediul mediului<br />

Matlab, ISE şi EDK, prin crearea <strong>de</strong> biblioteci <strong>de</strong> componente pre<strong>de</strong>finite necesare implementării unei<br />

structuri <strong>de</strong> calcul <strong>de</strong> tip neuronal si setarea <strong>de</strong> către utilizator a acestor componente in ve<strong>de</strong>rea creării, in<br />

principiu, a oricărei reţele neuronale.<br />

Avantajul folosirii acestei meto<strong>de</strong> constă in posibilitatea <strong>de</strong> adaptare a reţelei neuronale in funcţie <strong>de</strong> o<br />

aplicaţie dată <strong>de</strong>pen<strong>de</strong>ntă <strong>de</strong> tipul si numărul senzorilor folosiţi in cadrul sistemului olfactiv artificial, <strong>de</strong><br />

concentraţia moleculelor organice volatile din gazul <strong>de</strong> analizat, <strong>de</strong> condiţiile mediului ambiant, etc.<br />

Domeniul abordat ca aplicaţie în această teză se referă la i<strong>de</strong>ntificarea tipului cafelei prezentate.<br />

Rezultatele prezentate în continuare reprezintă contribuţiile autorului şi au fost obţinute în cadrul<br />

programului <strong>de</strong> cercetare doctorală. Aceste rezultate sunt validate prin implementări pe sistemul <strong>de</strong><br />

<strong>de</strong>zvoltare cu circuit FPGA şi simulări pe calculator prin intermediul programelor <strong>de</strong> simulare specializate.<br />

10.1 Contribuţii originale<br />

Rezultatele obţinute în prezenta <strong>teza</strong> constituie contribuţii ale autorului în următoarele direcţii <strong>de</strong> cercetare:<br />

• Dezvoltarea unui mediu integrat hardware-software, pentru implementarea RNA în circuite FPGA,<br />

• Implementarea <strong>de</strong> RNA cu arhitecturi cunoscute în circuite FPGA,<br />

• Dezvoltarea unui sistem olfactiv artificial pentru recunoaşterea tipului cafelei utilizând RNA<br />

implementate în circuite FPGA.<br />

Principalele contribuţii originale ale autorului sunt:<br />

1. Am studiat implementarea reţelelor neuronale cu autoorganizare şi antrenare on-chip şi am propus o<br />

metodă <strong>de</strong> proiectare a unei reţele neuronale SOM cu ajutorul componentelor pre<strong>de</strong>finite realizate <strong>de</strong><br />

autor.<br />

Pentru <strong>de</strong>zvoltarea blocurilor <strong>de</strong> proiectare a reţelei neuronale SOM am realizat următoarele:<br />

Am propus două arhitecturi ale unităţii neuronale <strong>de</strong> calcul pentru a da posibilitatea creării unor straturi<br />

neuronale cu un număr cât mai mare <strong>de</strong> neuroni. Pentru compararea celor doua arhitecturi am realizat o<br />

sinteză a frecvenţelor maxime <strong>de</strong> utilizare şi a consumului <strong>de</strong> resurse necesar implementării neuronului prin<br />

intermediul blocurilor XtremeDSP, a multiplicatoarelor <strong>de</strong>dicate şi a acumulatoarelor.<br />

Pentru implementarea hardware a ecuaţiilor <strong>de</strong> calcul şi a factorului <strong>de</strong> învăţare am propus o funcţie <strong>de</strong><br />

aproximare şi am <strong>de</strong>zvoltat un script (fişier <strong>de</strong> tip m) care să calculeze în mod automat în funcţie <strong>de</strong> numărul<br />

maxim <strong>de</strong> epoci şi numărul <strong>de</strong> epoci <strong>de</strong> la care reţeaua trece din faza <strong>de</strong> ordonare pe regiuni la faza <strong>de</strong><br />

ordonare locală a erorii relative a funcţiei <strong>de</strong> aproximare, numărul minim <strong>de</strong> segmente <strong>de</strong> aproximare pentru<br />

care eroarea relativă introdusă <strong>de</strong> funcţiile <strong>de</strong> aproximare să scadă, coeficienţii funcţiei <strong>de</strong> aproximare: panta<br />

funcţiei <strong>de</strong> aproximare şi valoarea <strong>de</strong> ofset a funcţiei <strong>de</strong> aproximare şi intervalele pe care funcţie este<br />

<strong>de</strong>finită.<br />

Am prezentat o sinteză a resurselor şi a puterii consumate <strong>de</strong> fiecare bloc component a reţelei neuronale<br />

în parte. Pe baza acestei sinteze am <strong>de</strong>zvoltat o serie <strong>de</strong> ecuaţii ce estimează consumul <strong>de</strong> resurse exprimat in<br />

număr blocuri XtremeDSP, Block RAM şi LUT-uri în funcţie <strong>de</strong> numărul <strong>de</strong> neuroni.<br />

În funcţie <strong>de</strong> consumul <strong>de</strong> resurse în circuit FPGA am stabilit tipul <strong>de</strong> neuron ce poate fi implementat.<br />

Am calculat numărul maxim <strong>de</strong> neuroni implementabil în circuitul 4VSX35 ce posedă proprietatea <strong>de</strong><br />

învăţare on-chip, acesta este <strong>de</strong> 135.<br />

Am realizat biblioteca <strong>de</strong> componente ce compun reţeaua neuronală cu autoorganizare (SOM).<br />

2. Am studiat implementarea reţelelor neuronale multistrat cu propagare înainte şi antrenare BP on-chip şi<br />

am propus o metodă <strong>de</strong> proiectare a unei reţele neuronale FF cu ajutorul componentelor pre<strong>de</strong>finite<br />

realizate <strong>de</strong> autor.<br />

Pentru <strong>de</strong>zvoltarea blocurilor <strong>de</strong> proiectare a reţelei neuronale cu propagare înainte am realizat<br />

următoarele<br />

Am realizat o sinteză a frecvenţelor maxime <strong>de</strong> utilizare şi a consumului <strong>de</strong> resurse necesar implementării<br />

neuronului prin intermediul blocurilor XtremeDSP, a multiplicatoarelor <strong>de</strong>dicate şi a acumulatoarelor.<br />

Am implementat hardware o serie <strong>de</strong> funcţii <strong>de</strong> aproximare a funcţiei <strong>de</strong> activare sigmoid şi pentru fiecare<br />

am estimat consumul <strong>de</strong> resurse şi frecvenţa maximă <strong>de</strong> calcul şi am calculat erorile maxime şi medii<br />

introduse.<br />

Am realizat un tabel <strong>de</strong> sinteză ce explicitează pentru fiecare tip <strong>de</strong> funcţie <strong>de</strong> aproximare resursele<br />

consumate (exprimate în număr <strong>de</strong> slice-uri, LUT-uri şi total porţi logice echivalente), frecvenţa maximă <strong>de</strong>


<strong>Rezumat</strong> pag. 34<br />

calcul şi puterea consumată. În urma acestei sinteze am concluzionat cu privire la alegerea celei mai eficiente<br />

funcţii <strong>de</strong> aproximare pentru o situaţie dată a resurselor disponibile.<br />

Am <strong>de</strong>zvoltat un set <strong>de</strong> ecuaţii care în funcţie <strong>de</strong> numărul <strong>de</strong> neuroni din fiecare strat şi <strong>de</strong> numărul <strong>de</strong><br />

straturi ce compun reţeaua neuronală să calculeze momentele <strong>de</strong> timp la care semnalele <strong>de</strong> control a<br />

blocurilor <strong>de</strong> calcul vor trece dintr-o stare în alta, ecuaţiile 8.16 – 8.18.<br />

Am stabilit componenţa blocurilor <strong>de</strong> calcul a erorii cumulate, gradientului erorii şi a pon<strong>de</strong>rilor stratului<br />

neuronal <strong>de</strong> ieşire. Structura blocurilor propuse este una modulară şi poate fi adaptată pentru orice<br />

configuraţie a arhitecturii reţelei neuronale.<br />

Am realizat o serie <strong>de</strong> implementări ale reţelei neuronale FF-BP cu învăţare on-chip compuse dintr-un<br />

număr diferit <strong>de</strong> neuroni<br />

Am realizat o sinteză a resurselor şi a puterii consumate <strong>de</strong> fiecare bloc component în parte, pe baza<br />

căreia am <strong>de</strong>zvoltat o serie <strong>de</strong> ecuaţii ce estimează consumul <strong>de</strong> resurse exprimat in număr blocuri<br />

XtremeDSP, Block RAM şi LUT-uri în funcţie <strong>de</strong> numărul <strong>de</strong> neuroni din cele două tipuri <strong>de</strong> straturi din<br />

reţea, ecuaţiile 1.20.<br />

Am estimat că numărul maxim <strong>de</strong> neuroni implementabil în circuitul 4VSX35 ce posedă proprietatea <strong>de</strong><br />

învăţare on-chip este <strong>de</strong> 120 din care 85 în stratul ascuns şi 35 în stratul <strong>de</strong> ieşire.<br />

Am realizat biblioteca <strong>de</strong> componente ce compun reţeaua neuronala FF-BP cu învăţare on-chip<br />

3. Am studiat, propus şi implementat o arhitectură a unui sistem olfactiv artificial capabilă să recunoască<br />

tipul cafelei prezentate:<br />

Am stabilit sistemul senzorial compus din 7 senzori <strong>de</strong> gaz MOS, sensibili la un spectru larg <strong>de</strong> odoranţi<br />

(TGS826, TGS842, TGS2600, TGS2601, TGS2602, TGS2620), un senzor <strong>de</strong> temperatură (LM35) şi unul <strong>de</strong><br />

umiditate (SY- HS-230).<br />

Am creat un instrument virtual <strong>de</strong> achiziţie a datelor ce permite setarea timpilor <strong>de</strong> absorbţie, <strong>de</strong>sorbţie<br />

(prin valoarea <strong>de</strong> prag) şi revenire la valoarea <strong>de</strong> referinţă şi a numărului <strong>de</strong> absorbţii succesive realizate <strong>de</strong> la<br />

o singură probă.<br />

Am creat o funcţie <strong>de</strong> compensare a temperaturii şi a umidităţii prin scalarea răspunsului senzorilor la o<br />

valoare <strong>de</strong> referinţa caracterizată <strong>de</strong> parametrii mediului exterior <strong>de</strong> 38°C şi o umiditate relativă <strong>de</strong> 50%;<br />

Am realizat o serie <strong>de</strong> funcţii <strong>de</strong> procesare a semnalului în scopul extragerii trăsăturilor răspunsului<br />

senzorului la aplicarea odoranţilor:<br />

− modulul <strong>de</strong> extragere a datelor corespunzătoare fiecărei absorbţii din setul <strong>de</strong> 10 în care au fost<br />

achiziţionate;<br />

− modulul <strong>de</strong> compensare a <strong>de</strong>pen<strong>de</strong>nţei răspunsului senzorului faţă <strong>de</strong> temperatura şi umiditatea<br />

atmosferei din camera <strong>de</strong> test;<br />

− modulul <strong>de</strong> compensare a influenţei variaţiei concentraţiei compusului volatil <strong>de</strong> la o absorbţie la alta<br />

Am selectat parametrii ce caracterizează funcţia <strong>de</strong> răspuns a senzorilor<br />

Am analizat parametrii <strong>de</strong> performanţă a mai multor funcţii <strong>de</strong> fitare: suma pătratelor erorilor, pătratul<br />

coeficientului <strong>de</strong> corelaţie multiplă, Adj R-sq şi abaterea medie pătratică.<br />

Am creat funcţia <strong>de</strong> extragere a trăsăturilor.<br />

Am creat funcţia <strong>de</strong> setare a diferiţilor parametri ce caracterizează arhitectura reţelei neuronale FF-BP în<br />

care se specifică domeniul <strong>de</strong> valori a vectorilor <strong>de</strong> intrare, numărul <strong>de</strong> neuroni din stratul ascuns, numărul <strong>de</strong><br />

neuroni din stratul <strong>de</strong> ieşire, tipul funcţiilor <strong>de</strong> activare <strong>de</strong> pe cele două straturi, funcţia <strong>de</strong> antrenare, numărul<br />

maxim <strong>de</strong> epoci, eroarea pătratică medie;<br />

Am analizat diferite arhitecturi ale reţelei neuronale din punct <strong>de</strong> ve<strong>de</strong>re al gradului <strong>de</strong> recunoaştere funcţie<br />

<strong>de</strong> trăsăturile ce compun vectorii <strong>de</strong> antrenare;<br />

Am realizat o analiză a erorilor <strong>de</strong> recunoaştere introduse <strong>de</strong> implementarea reţelei neuronale pe un anumit<br />

număr <strong>de</strong> biţi;<br />

Am realizat în Simulink pe baza mo<strong>de</strong>lului creat <strong>de</strong> funcţia gensim.m a toolbox-ului NNtool un mo<strong>de</strong>l care<br />

să emuleze comportamental o reţea neuronală FF-BP implementată hardware. Mo<strong>de</strong>lul este unul general şi în<br />

funcţie <strong>de</strong> setările efectuate în fereastra <strong>de</strong> configurare a parametrilor, modifică tipul reţelei şi numărul <strong>de</strong> biţi<br />

în care partea întreagă şi cea fracţionară a datelor este reprezentată;<br />

Am analizat relaţia dintre numărul <strong>de</strong> biţi pe care este implementată reţeaua neuronală şi gradul <strong>de</strong><br />

recunoaştere a tiparelor prezentate;<br />

Am simulat şi calculat gradul <strong>de</strong> recunoaştere a tiparelor prezentate pentru diferite configuraţii <strong>de</strong><br />

implementare;<br />

Am analizat rezultatele simulărilor diverselor arhitecturi ale reţelei neuronale, a implementării acestora pe<br />

un număr diferit <strong>de</strong> biţi şi a compunerii vectorilor <strong>de</strong> antrenare din diferite trăsături ale semnalului ce<br />

caracterizează tipul cafelei


<strong>Rezumat</strong> pag. 35<br />

10.2 Direcţii <strong>de</strong> continuare a cercetării<br />

Imensul potenţial pe care un nas electronic îl are în rezolvarea în timp real şi la costuri reduse a unor<br />

probleme ce se regăsesc într-o serie <strong>de</strong> domenii cum ar fi cel alimentar, <strong>de</strong> securitate şi ajungând până la cel<br />

farmaceutic sau medical face din continuarea cercetărilor în direcţia <strong>de</strong>zvoltării unui sistem olfactiv mai<br />

performant o cerinţă imperativă.<br />

Posibilele direcţiile <strong>de</strong> cercetare <strong>de</strong> interes ştiinţific şi tehnic ce au la bază rezultate prezentate în această<br />

teză sunt:<br />

Analiza informaţiilor noi aduse prin crearea <strong>de</strong> pseudosenzori. Cunoscându-se faptul că răspunsul senzorilor<br />

<strong>de</strong> gaz <strong>de</strong> tip MOS este puternic influenţat <strong>de</strong> temperatura la care aceştia sunt încălziţi, crearea <strong>de</strong> pseudosenzori,<br />

prin încălzirea acestora la diferite temperaturi, poate constitui o soluţie privind îmbunătăţirea<br />

informaţiilor generate <strong>de</strong> chemosenzori.<br />

Implementarea unor tipuri noi <strong>de</strong> sisteme <strong>de</strong> recunoaştere inteligente. Pe lângă alte sisteme <strong>de</strong> recunoaştere<br />

cu reţele neuronale a căror biblioteci pot fi <strong>de</strong> asemenea <strong>de</strong>zvoltate, implementarea sistemelor fuzzy sau a<br />

celor hibri<strong>de</strong>: sistemele neuro-fuzzy, pot constitui o alternativă viabilă în aplicaţiile <strong>de</strong> recunoaştere a<br />

tiparelor.<br />

Aplicaţii <strong>de</strong> biometrie. Extin<strong>de</strong>rea cercetării asupra aplicaţiilor ce privesc recunoaşterea <strong>de</strong> amprente<br />

biometrice umane prin adaptarea sistemul <strong>de</strong>zvoltat în această teză la particularităţile acestui tip <strong>de</strong> aplicaţii.<br />

Extin<strong>de</strong>rea sistemului <strong>de</strong> analiză. Simţul olfactiv este in mare măsură asemănător şi strâns legat <strong>de</strong> cel<br />

gustativ, completându-se unul pe celălalt. Astfel încât, pornind <strong>de</strong> la sistemul olfactiv <strong>de</strong>zvoltat în această<br />

teză şi prin selectarea unor senzori corespunzători măsurării fazei lichi<strong>de</strong> şi a unui sistem <strong>de</strong> eşantionare<br />

a<strong>de</strong>cvat se poate obţine un sistem gustativ artificial - aşa numita limbă artificială.


Bibliografie selectivă<br />

1. Alippi C., G. Storti‐Gajani. Simple Approximation of Sigmoidal Functions: Realistic Design of Digital<br />

Neural Networks Capable of Learning. Proc. ISCAS’91, Singapore, IEEE Press, pp. 1505‐1508, June 1991.<br />

2. Amin H., Curtis, K.M., and Hayes–Gill, B.R.: ‘Piecewise linear approximation applied to nonlinear<br />

function of a neural network’, IEE Proc. Circuits, Devices Sys., 1997, 144, (6), pp. 313–317<br />

3. Beiu V., J.A. Peperstraete, and R. Lauwereins. Using Threshold Gates to Implement Sigmoid<br />

Nonlinearity.Proc. ICANN’92, Elsevier Science Publishers, Amsterdam, vol. II, pp. 1447‐1450, 1992.<br />

4. Berglund E., J. Sitte, The parameterless self‐organizing map algorithm. Neural Networks, IEEE<br />

Transactions on. vol. 17, nr 2, 2006<br />

5. Bishop C. M., M. Svensen, and C. K. I. Williams. Gtm: The generative topographic mapping. Neural<br />

Computation, 10(1):215–235, 1998.<br />

6. Bishop C. M., M. Svensen, C. K. I. Williams, A principled alternative to the self‐organizing map.<br />

Advances in Neural Information Processing Systems, (9), 1997.<br />

7. Cirstea M., A. Dinu, D. Nicula: "A Practical Gui<strong>de</strong> to VHDL Design", Ed. Tehnica, Bucharest, Romania,<br />

May 2001, ISBN: 973‐31‐1539‐8.<br />

8. Deville Y., A Neural Implementation of Complex Activation Functions for Digital VLSI Neural Networks.<br />

Microelectronic J., 24(3), 259‐262 (1993).<br />

9. Dinu A., M. Cirstea , A Digital Neural Network FPGA Direct Hardware Implementation Algorithm<br />

Industrial Electronics, 2007. ISIE 2007. IEEE International Symposium on Volume , Issue , 4‐7 June 2007<br />

Page(s):2307 – 2312.<br />

10. Fra<strong>de</strong>n J., Handbook of Mo<strong>de</strong>rn Sensors. Physics, Designs and Applications, 2nd Edition, American<br />

Institute of Physics, Woodbury, New York, 1997.<br />

11. Fritzke B., A growing neural gas network learns topologies. In G. Tesauro, D. S. Touretzky, and T. K.<br />

Leen, editors, Advances in Neural Information Processing Systems, pages 625–632. MIT Press,<br />

Cambridge MA, 1995.<br />

12. Gardner J. W., P.N. Bartlett, “Electronic noses: Principles and Applications”, Oxford University Press:<br />

New York, 1999.<br />

13. Gardner J.W. , P.N. Bartlett, Sensors and Actuators B‐Chemical, 1994, 18(1‐3), 211‐220;<br />

14. Hu Yu Hen, Handbook of Neural Network Signal Processing, Crc Press, 2002.<br />

15. Hulle M. M. V. , K. U. Leuven. Globally‐or<strong>de</strong>red topologypreserving maps achieved with a learning rule<br />

performing local weight updates only. Neural Networks for Signal Processing [1995] V. Proceedings of<br />

the 1995 IEEE Workshop, pages 95–104, Sep 1995.<br />

16. Jurs P.C., G.A. Bakken, Computational Methods for the Analysis of Chemical Sensor Array Data from<br />

Volatile Analytes, Chem. Rev. 2000, 100, 2649‐2678.<br />

17. Kohonen T., Self‐Organizing Maps. Springer‐Verlag, 1997.<br />

18. Krykelis A., A Novel Massively Parallel Associative Processing Architecture for the Implementation of<br />

Artificial Neural Networks. Proc. of the Intl. Conf. on Acoustics, Speech, and Signal Processing<br />

ICASSP’91, Toronto, Canada, IEEE Press, vol. II, pp. 1057‐1060, May 1991.<br />

19. Lavagno L., and others, A Simulink based Approach to System Level Design and Architecture Selection,<br />

research report Universita di Udine, 2004<br />

20. Luca Mari, and others, A Simulink based Hardware / Software Co<strong>de</strong>sign Tool for Rapid Prototyping of<br />

Control Systems, research report Politecnico di Torino, 2004.<br />

21. Mulier F., V. Cherkassky. Learning rate schedules for selforganizing maps. In Computer Vision & Image<br />

Processing.,Proceedings of the 12th IAPR International. Conference on, volume 2, pages 224–228. IEEE,<br />

1994<br />

22. Myers D.J., R.A. Hutchinson. Efficient Implementation of Piecewise Linear Activation Function for<br />

Digital VLSI Neural Networks. Electronics Letters, 25(24), pp. 1662‐1663, 1989<br />

23. Oniga, A. <strong>Tisan</strong>, A. Buchman, C. Lung: Hardware Implementation of Simple Competitive Artificial<br />

Neural Networks with Neuron Parallelism. Conference on Embed<strong>de</strong>d and Ambient Systems, RCEAS<br />

2007, Budapest, Hungary, November 22‐24, 2007, p 23‐24, ISBN 978‐963‐8431‐96‐7<br />

24. Oniga, A. <strong>Tisan</strong>, C. Gavrincea, D. Mic, Implementari digitale ale retelelor neuronale artificiale,<br />

Symposium of Electronics and Telecommunications, ‐ Fifth Edition – Etc 2002, September, 19‐20, 2002,<br />

Timisoara, Romania, pp 43‐47. ISSN 1224‐6034<br />

25. Oniga, A. <strong>Tisan</strong>, D. Mic, A. Buchman, A. Vida‐Ratiu, Hand Postures Recognition System Using Artificial


Neural Networks Implemented in FPGA, 30th International Spring Seminar on Electronics Technology,<br />

ISSE 2007. Technical University of Cluj‐Napoca, ROMANIA, May 9‐13, 2007, p. 507 ‐ 512, ISBN 1‐4244‐<br />

1218‐8, IEEE Catalog Number: 07EX1780C, Library of Congress: 2007924573<br />

26. Oniga, A. <strong>Tisan</strong>, D. Mic, A. Buchman, A. Vida‐Ratiu, Optimizing FPGA implementation of feed‐forward<br />

neural networks, Proce<strong>de</strong>engs of the 11th International Conference on Optimization of Electrical and<br />

Electronic Equipment OPTIM 2008, 2008, Brasov, Romania, May 22‐23, p. 31‐36, IEEE Catalog Number<br />

08EX1996, ISBN 1‐4244‐1544‐6, Library of the Congress 2007905111, ISBN 978‐973‐131‐032‐9.<br />

27. Oniga, A. <strong>Tisan</strong>, D. Mic, A. Buchman, C. Gavrincea, Hardware implementation of simple competitive<br />

neural networks with layer parallelism, International symposium for <strong>de</strong>sign and technology of<br />

electronics packaging, september 2007, pp19‐199, ISBN 978<br />

28. Pearce T.C., S. S. Schiffman; H. T. Nagle; J.W. Gardner (Editors). Handbook of Machine Olfaction:<br />

Electronic Nose Technology. VCH‐Wiley, 1 ed., 2003.<br />

29. Savran A., S. Unsal, Hardware Implementation of a Feedforward Neural Network using FPGAs.<br />

International Conference on Electrical and Electronics Engineering. Bursa, December 2003.<br />

30. Spaanenburg L., B. Hoefflinger, S. Neusser, J.A.G. Nijhuis, and A. Siggelkow. A Multiplier‐Less Digital<br />

Neural Network. Proc. MICRO‐NEURO’91, Kirill & Method Verlag, pp. 281‐289, 1991.<br />

31. <strong>Tisan</strong>, A. Buchman, S. Oniga, C. Gavrincea, A Generic Control Block for Feedforward Neural Network<br />

with On‐Chip Delta Rule Learning Algorithm, 30th International Spring Seminar on Electronics<br />

Technology, ISSE 2007. Technical University of Cluj‐Napoca, ROMANIA, May 9‐13, 2007, p. 567 ‐ 570,<br />

ISBN 1‐4244‐1218‐8, IEEE Catalog Number: 07EX1780C, Library of Congress: 2007924573<br />

32. <strong>Tisan</strong>, C. Gavrincea, S. Oniga, A Generic Building Block for Hebbian Neural Network with On‐Chip<br />

Learning, Buletin Stiintific Seria al Universitatii Politehnica din Timisoara, Seria <strong>Electronica</strong> si<br />

Telecomunicatii, Tom 51(65), Fascicola 1, 2006, ISSN1583‐3380, Cod CNCSIS 252, pag. 5‐8<br />

33. <strong>Tisan</strong>, C. Gavrincea, S. Oniga, Methods for embed<strong>de</strong>d systems <strong>de</strong>sign with on‐chip learning neural<br />

networks, International symposium for <strong>de</strong>sign and technology of electronics packaging, september<br />

2007, pp283‐287, ISBN 978‐973‐713‐188‐1<br />

34. <strong>Tisan</strong>, S. Oniga, A. Buchman, C. Gavrincea, Architecture and Algorithms for Syntetizable Neural<br />

Networks with On‐Chip Learning, 8‐th International Symposium on Signals, Circuits and Systems. ISSCS<br />

2007, Iasi, iulie 12 ‐13, vol 1, pag 265 – 268, ISBN 1‐4244‐0968‐3, IEEE Catalog Number: 07EX1678,<br />

Library of Congress: 2007920356.<br />

35. <strong>Tisan</strong>, S. Oniga, A. Buchman, C. Gavrincea, D. Mic, Mecanisme <strong>de</strong> conductie si recunoastere moleculara<br />

a senzorilor olfactivi semiconductori pe baza <strong>de</strong> SnO2, Buletinul Stiintific, Seria C, Volumul X, Fascicola<br />

<strong>Electronica</strong>, Electrotehnica, Automatizari, Simpozionul Stiintific National, Baia Mare, 8 – 9 Mai 2003,<br />

pp. 109 – 114. ISSN 1224‐3272<br />

36. <strong>Tisan</strong>, S. Oniga, A. Buchman, C. Gavrincea: Hardware/software co<strong>de</strong>sign of a pattern recognition<br />

system with on‐chip learning, Regional Conference on Embed<strong>de</strong>d and Ambient Systems, RCEAS 2007,<br />

Budapest, Hungary, November 25‐26, 2007, p 23‐24, ISBN 978‐963‐8431‐96‐7<br />

37. <strong>Tisan</strong>, S. Oniga, C. Gavrincea, A. Buchman, Hardware/Software Co‐<strong>de</strong>sign of a Self‐organized map with<br />

on‐chip learning, Proce<strong>de</strong>engs of the 11th International Conference on Optimization of Electrical and<br />

Electronic Equipment OPTIM 2008, 2008, Brasov, Romania, May 22‐23, p. 81‐86, IEEE Catalog Number<br />

08EX1996, ISBN 1‐4244‐1544‐6, Library of the Congress 2007905111, ISBN 978‐973‐131‐032‐9.<br />

38. <strong>Tisan</strong>, S. Oniga, C. Gavrincea, Hardware implementation of a MLP network with on‐chip learning,<br />

Proceedings of the 5th WSEAS International Conference on DATA NETWORKS, COMMUNICATIONS &<br />

COMPUTERS, Bucharest, Romania, October 16‐17, 2006, ISSN 1790‐5117, ISBN 960‐8457‐54‐8<br />

39. <strong>Tisan</strong>, S. Oniga, C. Gavrincea, Hardware Implementation of Various Neural Network with On‐Chip<br />

Learning, WSEAS TRANSACTIONS on SIGNAL PROCESSING, Issue 10, Volume 2, October 2006, ISSN<br />

1790‐5022, pag. 1357‐1364<br />

40. <strong>Tisan</strong>, S. Oniga, Current Status of Electronic Nose: the Sensing System, International Multidisciplinary<br />

Conference, 5th edition, Baia Mare, 23‐24 May 2003, Scientific Bulletin, serie C, Volume XVII, pp. 517‐<br />

522. ISSN: 1224‐3264<br />

41. Wilson D. R. , T. R. Martinez. The need for small learning rates on large problems. In Neural Networks,<br />

2001. Proceedings. IJCNN ’01. International Joint Conference on, volume 1, pages 115–119. IEEE, IEEE,<br />

July 2001.


CURRICULUM VITAE<br />

Date personale:<br />

• Numele şi prenumele : <strong>Tisan</strong> <strong>Alin</strong> Saşa<br />

• Data naşterii : 19 martie 1974<br />

• Adresa <strong>de</strong> contact : str. Victor Babeş 62A, Baia Mare<br />

Diplome universitare si funcţia didactică :<br />

• Diploma <strong>de</strong> inginer în profilul Fizică Tehnologică din cadrul Facultăţii <strong>de</strong> Fizică a Universităţii<br />

Babeş Bolyai, Cluj-Napoca, în 1997<br />

• Diploma <strong>de</strong> Studii Aprofundate, specializarea Fizica stării con<strong>de</strong>nsate, din cadrul Facultăţii <strong>de</strong><br />

Fizică a Universităţii Babeş Bolyai, Cluj-Napoca, în 1998<br />

• Şef <strong>de</strong> lucrări în cadrul Catedrei <strong>de</strong> Electronică şi Calculatoare din cadrul Facultăţii <strong>de</strong> Inginerie<br />

a Universităţii <strong>de</strong> Nord din Baia Mare<br />

Experienţa profesională:<br />

1999 – 2000: Preparator, Catedra <strong>de</strong> Electronică şi Calculatoare, <strong>Facultatea</strong> <strong>de</strong> Inginerie,<br />

Universitatea <strong>de</strong> Nord din Baia Mare (UNBM). Activităţi didactice susţinute:<br />

laborator la disciplina “Materiale electrotehnice”, anul II EM,EE şi EA.<br />

2000 – 2004: Asistent, Catedra <strong>de</strong> Electronică şi Calculatoare, <strong>Facultatea</strong> <strong>de</strong> Inginerie,<br />

Universitatea <strong>de</strong> Nord din Baia Mare (UNBM). Activităţi didactice susţinute:<br />

laborator la disciplinele “Măsurări electrice si electronice” şi “Materiale<br />

electrotehnice”,(anul II), laborator şi proiect la disciplina “Sisteme <strong>de</strong> achiziţie a<br />

datelor”, (anul III EA şi CAL).<br />

2004 – în prezent: Şef <strong>de</strong> lucrări, Catedra <strong>de</strong> Electronică şi Calculatoare, <strong>Facultatea</strong> <strong>de</strong> Inginerie,<br />

Universitatea <strong>de</strong> Nord din Baia Mare (UNBM). Activităţi didactice susţinute:<br />

laborator la disciplinele “Măsurări electrice si electronice”, “Medii <strong>de</strong> calcul<br />

Ingineresc” şi “Materiale electrotehnice”,(anul II EA şi CAL), laborator şi proiect<br />

la disciplina “Sisteme <strong>de</strong> achiziţie a datelor” (anul III EA şi CAL), laborator la<br />

disciplina “Prelucrarea digitală a semnalelor” (anul IV EA), curs la disciplinele<br />

“Măsurări electrice si electronice”, “Medii <strong>de</strong> calcul Ingineresc” şi “Materiale<br />

electrotehnice” (anul II EA şi CAL), “Sisteme <strong>de</strong> achiziţie a datelor” (anul III EA şi<br />

CAL), “Optoelectronică” (anul IV EA) şi “Prelucrarea digitală a semnalelor”<br />

(anul IV EA).<br />

Perioa<strong>de</strong> <strong>de</strong> mobilităţi în străinătate:<br />

• European Short Course ON Electronic Noses and Tongues: ‘What Is Causing The Signal’,<br />

organizat <strong>de</strong> European Network on Artificial Olfactory Sensing, , La Lon<strong>de</strong>-Les-Maures,<br />

Franta, 31 August – 5 Septembrie, 2003,<br />

• 3rd European Short Course of the Nose II Network, ” Advanced training on Fundamentals of<br />

signal and data processing”, Alpbach, Austria, 21 - 26 Martie 2004;<br />

• Fourth GOSPEL Summer School, Network of Excellence in Artificial Olfaction, Creta, Grecia,<br />

25-31 mai 2008<br />

Publicaţii în calitate <strong>de</strong> autor si co-autor:<br />

Manuale, culegeri <strong>de</strong> probleme, îndrumătoare <strong>de</strong> laborator publicate pe plan local: 1<br />

îndrumar <strong>de</strong> laborator ca şi autor<br />

Lucrări ştiinţifice: 28 lucrări ştiinţifice (dintre care 12 ca prim autor)<br />

• 1 lucrare publicată în revistă <strong>de</strong> specialitate internaţională<br />

• 5 lucrări publicate în volumele unor manifestări ştiinţifice naţionale<br />

• 22 lucrări publicate în volumele unor manifestări ştiinţifice internaţionale


Contracte <strong>de</strong> cercetare:<br />

2007-2008 Director proiect: contract nr. 602/2007, cod CNCSIS TD-277, „Contribuţii privind<br />

studiul, sin<strong>teza</strong> si implementarea unor aplicaţii cu sisteme <strong>de</strong> senzori inteligenţi.<br />

Nasul electronic”. Valoare 28333 RON<br />

2006-2008: Responsabil ştiinţific: contract nr.: 253/01.08.2006, „Dezvoltarea PArteneriatelor<br />

la nivel naţional şi internaţional, în domeniul SistemE Dedicate, în ve<strong>de</strong>rea<br />

organizării <strong>de</strong> manifestări ştiinţifice si pregătirea <strong>de</strong> proiecte comune în programul<br />

cadru 7 UE -PASED”, Director proiect conf. dr. ing. Oniga Ştefan, Valoare<br />

200.000 RON;<br />

2004 - 2006: Membru: contract 33343/2004, CNCSIS, „Dezvoltarea unor module <strong>de</strong> translaţie<br />

<strong>de</strong> tip actuator liniar electromecanic cu aplicaţie la sistemele flexibile <strong>de</strong> fabricaţie<br />

şi ecotehnologie”. Director proiect prof. dr. ing. Năsui Vasile<br />

2004 - 2006: Membru al Grantului cu compania Xilinx Inc. din SUA. „Dezvoltare infrastructură<br />

cercetare în domeniul proiectării cu circuite logice programabile”<br />

2001 - 2003: Membru al Grantului cu compania Xilinx Inc. din SUA. „Dotare laborator<br />

cercetare în domeniul proiectării cu circuite logice programabile”.<br />

♦ Limbi străine cunoscute:<br />

• Engleză – foarte bine

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!