Rezumat teza Alin Tisan - Facultatea de Electronica ...
Rezumat teza Alin Tisan - Facultatea de Electronica ...
Rezumat teza Alin Tisan - Facultatea de Electronica ...
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