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

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

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!