Proiectarea Unui Neurochip Pentru Operatii Aritmetice Si Logice

Cuprins

1 Calculul inteligent si rezolvarea problemelor

1.1 Specificul calculului evolutiv

1.1.1 Domenii de aplicabilitate

1.2 Specificul calculului fuzzy

1.2.1 Structura unui sistem fuzzy

1.2.2 Domenii de aplicabilitate

1.3 Domeniul de aplicație al neurochip-ului

1.3.1 Legarea neurochip-ului la celulele animalelor

1.3.2 Sistemul Neurochip-biosenzor (NBS)

1.3.3 Folsirea neurochip-ului în stimularea și evaluarea culturilor de neuroni

1.3.4 Neurochip mutiparametric

1.3.5 Neurochip cu operanzi de lungime variabilă

2 Specificul calculului neuronal

2.1 Motivația biologică

2.2 Structura unei rețele neuronale artificiale

2.3 Ce pot și ce nu pot face rețelele neuronale

2.4 Clase de probleme ce pot fi rezolvate cu rețele neuronale

2.5 Descriere a unor aplicații clasice

2.5.1 Eliminarea adaptivă a zgomotului – "adaptive noise canceling"

2.5.2 Evaluarea riscului creditului ipotecar

2.5.3 Cititor de coduri poștale

2.5.4 Recunoașterea vorbirii

2.5.5 Clasi_carea semnalelor produse de "sonar"

2.6 Calculul neuronal în comparație cu calculul clasic

2.7 Rețelele neuronale în comparație cu sistemele expert

2.8 Motivații pentru studiul rețelelor neuronale

2.9 Scurt istoric

3 Proiectarea rețelelor neuronale artificiale

3.1 Modelul neuronului biologic

3.2 Modelul neuronului formal

3.3 Arhitectura

3.3.1 Topologii

3.3.2 Coneziuni

3.3.3 Flux informațional

3.4 Funcționare

3.5 Învățare

3.6 Rezolvarea unei probleme folosind rețele neuronale

4 Proiectarea neurochip-ului

4.1 Maparea algoritmilor pe arhitectură

4.1.1 Capacitate și performanță

4.1.2 Optimizarea algoritmilor

4.2 Arhitectura

4.2.1 Pipelineing

4.2.2 Precizia

4.2.3 Iterația

4.2.4 Concureța

4.2.5 Regularitate

4.2.6 Localizare

4.3 Construirea blocurilor

4.3.1 Logica stilului de implementare

4.3.2 Latch-uri și clock-ul

4.3.3 Multiplexoare

4.3.4 Elemnete aritmetice

4.3.5 Memoria

4.3.6 Sursa de zgomot

4.4 Implmentarea mașinii Boltzmann

4.5 Descrierea funcționării

4.5.1 Structura rețelei

4.5.2 Algoritmul de învățare

4.5.3 Resurse

4.5.4 Performanțe

4.5.5 Disiparea puterii

4.5.6 Reprezentarea numerică

4.5.7 Stocarea ponderilor

4.5.8 Stocarea semnalelor de activare

4.5.9 Procesoarele neuronale

4.5.10 Procesoarele de actualizare a ponderilor

4.5.11 Unitățile sigmoide

4.5.12 Acumulatorul de erori

4.5.13 Mașinile de stare

4.5.14 Inerfața externă

4.5.15 Rețele multichip

4.5.16 Testabilitate

5 Descriere Aplicație

6 Concluzii

1 Calculul inteligent si rezolvarea problemelor

Din punctul de vedere al rezolvării automate problemele pot fi clasificate în două categorii:

Probleme "bine-puse": caracterizate prin faptul că li se poate asocia un model formal (de exemplu, un model matematic) pe baza căruia se poate dezvolta o metoda de rezolvare cu caracter algoritmic.

Probleme "rău-puse": caracterizate prin faptul că nu pot fi descrise complet printr-un model formal, ci cel mult se cunosc exemple de rezolvare a problemei. Rezolvarea unei probleme înseamnă stabilirea unei asocieri între datele de intrare (valori inițiale, ipoteze etc.) și rpspunsul corect.

În cazul problemelor bine-puse această asociere este o relație funcțională explicită construită pe baza modelului asociat problemei. În cazul problemelor rău-puse, însă, o astfel de relație explicită nu poate fi pusă în evidență, rolul sistemului care rezolvă problema fiind de a dezvolta o relație de asociere întrebare-răspuns pe baza unor exemple. Procesul prin care sistemul își formează modelul propriu al problemei și pe

baza acestuia relația de asociere se numește adaptare sau chiar învățare. Pe de altă parte, din punctul de vedere al complexității rezolvării și al relevanței răspunsului

problemele pot fi clasificate în:

Probleme pentru care este esențială obținerea unui răspuns exact indiferent de resursele implicate. Acestea necesită utilizarea unor tehnici exacte.

Probleme pentru care este preferabil să se obțină un răspuns "aproximativ" folosind resurse "rezonabile" decât un răspuns exact dar folosind resurse foarte costisitoare.

Calculul inteligent este un domeniu al Inteligenței Artificiale care grupează tehnici de rezolvare a problemelor "rău-puse" sau a celor pentru care modelele formale conduc la algoritmi foarte costisitori.

Principalele direcții ale calculului inteligent sunt:

Calcul neuronal. Este folosit în principal în rezolvarea problemelor de asociere (clasificare, aproximare, predicție etc), bazându-se pe extragerea, prin învățare, a unui model pornind de la exemple. Sursa de inspirație o reprezintă structura și funcționarea creierului.

Calcul evolutiv. Este folosit în principal în rezolvarea problemelor bazate pe căutarea soluției într-un spațiu mare de soluții potențiale (în particular în rezolvarea problemelor de optimizare). Sursa de inspirație o reprezintă principiile evoluționismului darwinist.

Calcul fuzzy. Este folosit atunci când datele problemei (și relațiile dintre acestea) nu pot fi descrise exact ci există un grad de incertitudine ("fuzziness"). Ideea de bază este de a înlocui valorile exacte ("crisp") cu "valori fuzzy" descrise prin funcții de apartenență.

În fiecare dintre cele trei direcții majoritatea prelucrărilor care se efectuează au caracter numeric, fiind necesară o codificare numerică adecvată a problemei. Aceasta motivează prezentă cuvântului calcul în denumirea domeniului. Pe de altă parte în fiecare dintre direcțiile de mai sus se încearcă simularea unor comportamente inteligente ceea ce motivează prezentă termenului inteligent. Principiul fundamental al calculului neuronal și al celui evolutiv este de a dezvolta sisteme de calcul inteligent pornind de la implementarea unor reguli simple, comportamentul complex al acestor sisteme derivând aplicarea în paralel și în manieră interactivă a acestor reguli. Această

abordare de tip bottom-up este în contrast cu abordarea de tip "top-down" specifică altor abordări din Inteligentă Artificială. Calculul neuronal și cel evolutiv fac parte din sfera mai largă a calculului natural al cărui principiu este de a prelua idei de rezolvare a problemelor din sistemele naturale (fizice, chimice, biologice, ecologice). Obiectivul principal al calculului natural este de a dezvolta metode de rezolvare a problemelor rău-puse și a celor nerezolvabile prin metodele tradiționale (de exemplu, rezolvarea

problemelor NP-complete în timp polinomial).

Pe lângă componentele amintite deja, calculul natural mai include calculul molecular (DNA Computing), calculul cu membrane (Membrane Computing) și calculul cuantic (Quantum Computing). Dacă primele două direcții sunt deja tradiționale, ultimele trei sunt încă in primele faze de dezvoltare.

1.1 Specificul calculului evolutiv

Calculul evolutiv oferă mecanisme de căutare în spațiul soluțiilor bazate pe principiile evoluției naturale (de tip darwinist). Pentru găsirea soluției se utilizează o populație de căutători. Această populație este supusă unui proces de evoluție aracterizat prin: selecție, încrucișare, mutație. În funcție de modul în care este cosnstruită populația și de modul în care este implementată evoluția, sistemele de calcul evolutiv se încadrează în una dintre următoarele categorii:

Algoritmi genetici. Se folosesc în special pentru rezolvarea unor probleme de optimizare discretă. Populația este reprezentată de stări din spațiul problemei codificate binar (un element al populației este un șir de biți) iar principalii operatori sunt cei de încrucișare și selecție, cel de mutație având probabilitate mică de aplicare. Algoritmii genetici au fost propuși inițial de către .

Programare genetică. Se folosesc pentru dezvoltarea unor "modele" de calcul (programe simple). Populația este reprezentată de programe care candidează la rezolvarea problemei. Acestea sunt descrise mai degrabă ca arbori de derivare a cuvântului pe care îl reprezintă în cadrul limbajului în care este scris și nu ca linii de cod; de exemplu, "programul-expresie" "a+b*c" este (+ a (* b c)). O astfel de structură este descrisă ușor în Lisp, astfel că în elaborarea sistemelor bazate pe GP se folosește adeseori Lisp-ul. Încrucișarea este realizată selectând aleator subarbori din arborele asociat programelor părinte și interschimbându-le. Ca și în cazul algoritmilor genetici mutația are pondere mică. Părintele programării genetice este considerat Koza.

Strategii evolutive. Au fost concepute inițial pentru a rezolva probleme de optimizare în tehnică fiind destinate rezolvării problemelor de optimizare continuă. Populația este constituită din elemente din domeniul de definiție al funcției obiectiv. Operatorul principal este cel de mutație dar și recombinarea este folosită. Pentru strategiile evolutive au fost dezvoltate scheme de adaptare a parametrilor de control (auto-adaptare). La dezvoltarea strategiilor evolutive contribuții importante au adus Rechenberg și Schwefel.

Programare evolutivă. Se folosesc atât pentru optimizarea cât și pentru dezvoltarea unor structuri de calcul (automate). Operatorul principal este cel de mutație. Bazele domeniului au fost puse de către Fogel.

Toate aceste metode se bazează pe faptul că simulează evoluția unei mulțimi (populație) de structuri informaționale (configurații sau indivizi) sub acțiunea unor procese similare celor din evoluția naturală și anume: selecție, mutație și încrucișare.

Acțiunea acestor procese este controlată prin intermediul unei funcții de performanță ("fitness") care măsoară gradul de adecvare a fiecărui individ la mediul din care face parte. De exemplu, în cazul rezolvării unei probleme de optimizare (maximizare) funcția "fitness" este chiar funcția obiectiv a problemei.

1.1.1 Domenii de aplicabilitate

La fel ca și rețelele neuronale, sistemele evolutive pot calcula orice funcție calculabilă. Se utilizează atunci când nu exisța alța strategie de rezolvare a problemei și este acceptat un răspuns aproximativ. Principalele aplicații ale calculului evolutiv sunt:

optimizare multidimensională (funcții obiectiv cu multe puncte de optim, pentru care nu trebuie impuse ipoteze de netezime);

probleme de optimizare combinatorială NP-complete (de exemplu, problema comis voiajorului);

probleme de ordonanțare ("job-shop scheduling");

prelucrarea imaginilor;

antrenarea rețelelor neuronale.

1.2 Specificul calculului fuzzy

Calculul fuzzy se caracterizează prin faptul că permite manipularea conceptelor vagi care nu pot modelate prin concepte matematice exacte (numere, mulțimi sau funcții clasice). Probleme în care intervin concepte vagi apar în teoria controlului când sistemele au caracter neliniar iar sțarile lor nu pot fi descrise în mod exact ci doar prin enunțuri care au un grad de ambiguitate. Să considerăm spre exemplu un sistem de control a temperaturii și umidițații aerului într-o încăpere. Regulile pe care trebuie să le respecte un astfel de sistem ar putea fi:

Dacă temperatura și umiditatea sunt scăzute atunci mărește viteza ventilatorului (pentru

aer cald și umed).

Dacă temperatura și umiditatea sunt ridicate atunci micșorează viteza ventilatorului

(pentru aer cald și umed).

Regulile de mai sus sunt exemple de reguli fuzzy de inferență. Prelucrările efectuate de un

sistem expert care prelucrează cunoștințe vagi se bazează pe teoria mulțimilor fuzzy și logica fuzzy.

1.2.1 Structura unui sistem fuzzy

Un sistem fuzzy este constituit din:

_ un subsistem de extragere a regulilor fuzzy pornind de la datele problemei (etapa de fuzzi_-

care);

_ un subsistem de efectuare a inferențelor fuzzy (etapa de raționament)

_ un subsistem de transformare a cunoștințelor fuzzy ^_n date efective (etapa de defuzzi_care).

1.2.2 Domenii de aplicabilitate

Principalele aplicații ale calcului fuzzy sunt:

recunoașterea formelor;

aproximarea funcțiilor;

controlul sistemelor;

compresia imaginilor.

2 Specificul calculului neuronal

Din punct de vedere funcțional o rețea neuronală este un sistem ce primește date de intrare (corespunzătoare datelor inițiale ale unei probleme) ș exemplu, în cazul rezolvării unei probleme de optimizare (maximizare) funcția "fitness" este chiar funcția obiectiv a problemei.

1.1.1 Domenii de aplicabilitate

La fel ca și rețelele neuronale, sistemele evolutive pot calcula orice funcție calculabilă. Se utilizează atunci când nu exisța alța strategie de rezolvare a problemei și este acceptat un răspuns aproximativ. Principalele aplicații ale calculului evolutiv sunt:

optimizare multidimensională (funcții obiectiv cu multe puncte de optim, pentru care nu trebuie impuse ipoteze de netezime);

probleme de optimizare combinatorială NP-complete (de exemplu, problema comis voiajorului);

probleme de ordonanțare ("job-shop scheduling");

prelucrarea imaginilor;

antrenarea rețelelor neuronale.

1.2 Specificul calculului fuzzy

Calculul fuzzy se caracterizează prin faptul că permite manipularea conceptelor vagi care nu pot modelate prin concepte matematice exacte (numere, mulțimi sau funcții clasice). Probleme în care intervin concepte vagi apar în teoria controlului când sistemele au caracter neliniar iar sțarile lor nu pot fi descrise în mod exact ci doar prin enunțuri care au un grad de ambiguitate. Să considerăm spre exemplu un sistem de control a temperaturii și umidițații aerului într-o încăpere. Regulile pe care trebuie să le respecte un astfel de sistem ar putea fi:

Dacă temperatura și umiditatea sunt scăzute atunci mărește viteza ventilatorului (pentru

aer cald și umed).

Dacă temperatura și umiditatea sunt ridicate atunci micșorează viteza ventilatorului

(pentru aer cald și umed).

Regulile de mai sus sunt exemple de reguli fuzzy de inferență. Prelucrările efectuate de un

sistem expert care prelucrează cunoștințe vagi se bazează pe teoria mulțimilor fuzzy și logica fuzzy.

1.2.1 Structura unui sistem fuzzy

Un sistem fuzzy este constituit din:

_ un subsistem de extragere a regulilor fuzzy pornind de la datele problemei (etapa de fuzzi_-

care);

_ un subsistem de efectuare a inferențelor fuzzy (etapa de raționament)

_ un subsistem de transformare a cunoștințelor fuzzy ^_n date efective (etapa de defuzzi_care).

1.2.2 Domenii de aplicabilitate

Principalele aplicații ale calcului fuzzy sunt:

recunoașterea formelor;

aproximarea funcțiilor;

controlul sistemelor;

compresia imaginilor.

2 Specificul calculului neuronal

Din punct de vedere funcțional o rețea neuronală este un sistem ce primește date de intrare (corespunzătoare datelor inițiale ale unei probleme) și produce date de ieșire (ce pot fi interpretate ca răspunsuri ale problemei analizate). O caracteristică esențială a rețelelor neuronale este capacitatea de a se adapta la mediul informațional corespunzător unei probleme concrete printr-un proces de învătăre. În felul acesta rețeaua extrage modelul problemei pornind de la exemple. Din punct de vedere structural o rețea neuronală este un ansamblu de unități interconectate fiecare fiind caracterizată de o funtionare simplă.

Funcționarea unităților este inuentătă de o serie de parametri adaptabili. Astfel o rețea neuronală este un sistem extrem de flexibil. Structura unităților funcționale, prezentă conexiunilor și a parametrilor adaptivi precum și modul de funcționare sunt inspirate de creierul uman. Fiecare unitățe funcțională primește câteva semnale de intrare pe care le prelucrează și produce un semnal de ieșire. Interacțiunea multor unități

cu funcționare simplă conduce la un sistem care poate să rezolve probleme complexe. Funcționarea sistemului este controlată de un set numeros de parametri ajustabili care permit acestuia să se adapteze cât mai fidel mediului informațional în care este amplasat (specific problemei de rezolvat).

Una dintre cele mai importante caracteristici ale unui sistem neuronal este caracterul său adaptiv, faptul că poate să-și stabilească parametrii de funcționare printr-un proces de învătăre bazat pe informațiile primite. Astfel de sisteme sunt adecvate, astfel, pentru problemele ce sunt dificil sau chiar imposibil de formalizat pentru ele existând doar exemple de rezolvare.

2.1 Motivația biologică

În încercarea de a proiecta sisteme inteligente cel mai la îndemână model este chiar creierul uman. Acesta este capabil să prelucreze cantități mari de date la un moment dat și surclasează în mod cert calculatoarele (în special cele seriale) în probleme complexe de tipul înțelegerii scenelor (cum ar fi recunoașterea unei imagini familiare într-un mediu necunoscut). Din punct de vedere biologic creierul este constituit dintr-un număr mare de celule (neuronii, cca 1010 -1012) care efectuează sarcini simple și la o viteză nu prea mare (timp de răspuns 10-3s) dar care sunt puternic interconectate (există cca 1014-1015 interconexiuni) și lucrează în paralel. Având în vedere faptul că, componentele electronice care stau la baza calculatoarelor actuale au timpi de răspuns mult mai mici (10-9s) și totuși sunt surclasate de către creier în rezolvarea unor probleme complexe (vedere, decizii pe baza unor date incomplete etc.), rezultă că puterea

computațională a creierului rezidă în faptul că bilioane de neuroni operează simultan. Evident, ar fi de dorit realizarea de sisteme care să lucreze cu viteza componentelor electronice și să fie caracterizate de conectivitatea creierului.

Dintre caracteristicile creierului care sunt de dorit și în sistemele artificiale pot fi enumerate: robustețe și toleranță la erori (mor zilnic neuroni, fără ca aceasta să afecteze semnificativ performanțele creierului), flexibilitate (ființele sunt capabile să se adapteze la un nou mediu prin învătăre), capacitatea de a prelucra informație incompletă, nedeterministă sau chiar inconsistentă. În ceea ce privește robustețea și tolerantă la erori ea este asigurată de faptul că informația este reprezentată în mod distribuit și nu localizat. Astfel, din punct de vedere cibernetic creierul este un sistem natural de prelucrare paralel-distribuită a informației.

Rețelele neuronale pot fi văzute atât ca modele ale creierului cât și ca sisteme de prelucrare a informației și rezolvare a problemelor. Acestea sunt două direcții distincte în domeniul rețelelor neuronale fiind diferite atât din punct de vedere al tehnicilor utilizate cât și din punct de vedere al aplicațiilor. În ceea ce urmează ne vom referi doar la rețele neuronale artificiale destinate rezolvării unor probleme computaționale.

2.2 Structura unei rețele neuronale artificiale

O rețea neuronală artificială este un ansamblu de unități funcționale amplasate în nodurile unui graf orientat și între care circulă semnale de-a lungul arcelor grafului. Elementele definitorii ale unei rețele neuronale sunt:

Arhitectura: specifică modul în care sunt amplasate și interconectate unitățile funcționale. Arhitectura determină și fluxul informațional în cadrul rețelei.

Funcționarea: specifică modul în care fiecare unitățe în parte și rețeaua în ansamblul ei transformă semnalele de intrare în semnale de ieșire. Funcționarea este inuentătă de arhitectură, în special de modul de interconectare a unităților.

Adaptarea (învătărea): specifică modul de stabilire a parametrilor ajustabili astfel încât rețeaua să poate rezolva anumite probleme. În funcție de natura informației de care se dispune, învătărea poate fi supervizată sau nesupervizată. Învătărea constă în modificarea funcționalității rețelei prin modificarea parametrilor și/sau a structurii acesteia. Procesul de învătărea bazat pe adaptarea parametrilor constă în existentă unor reguli de modificare a parametrilor și un algoritm (de regulă iterativ) de aplicare a acestor reguli.

Structura generală a unui algoritm de învătăre bazat pe modificarea parametrilor este:

// initializarea (aleatoare) a parametrilor retelei

init W(0)

// initializarea indicatorului de iteratie

t=0

// prelucrare repetitiva

repeat

W(t+1)=adjust(W(t),X(t)[,d(t)])

t=t+1

until <criteriu de stop>

unde W(t) reprezintă valorile parametrilor la momentul t, X(t) reprezintă semnalul de intrare, iar d(t) semnalul de învătăre corespunzător (poate fi chiar răspunsul corespunzător intrării X(t) sau doar un indicator de corectitudine/eroare a răspunsului dat de rețea). În cazul învățării nesupervizate d(t) poate lipsi din regula de învătăre.

2.3 Ce pot și ce nu pot face rețelele neuronale

Ce pot face rețelele neuronale ? În principiu, pot reprezenta orice funcție calculabilă. Ceea ce este însă mai important este că pot învătă orice astfel de funcție pornind de la exemple. Nu sunt însă eficiente pentru orice problemă, ele fiind utile în rezolvarea problemelor pentru care se dispune de un număr mare de exemple și pentru care nu pot fi găsite ușor și rapid reguli de formalizare.

2.4 Clase de probleme ce pot fi rezolvate cu rețele neuronale

Clasificare și recunoaștere.

Date de intrare. Descriere sintetică a unui obiect (de exemplu descrierea grafică a unei litere sau ansamblul caracteristicilor acesteia). În majoritatea situațiilor descrierea este un vector de valori numerice obținute printr-o prelucrare prealabilă (preprocesare) a informațiilor brute.

Date de ieșire. Indicator al clasei căreia îi aparține obiectul (de exemplu numărul de ordine al literei în cadrul alfabetului). Abilitatea de clasificare a rețelei este rezultatul unui proces de învătăre pornind de la exemple de clasificare corectă.

Pe lângă exemplul de mai sus, de recunoaștere a caracterelor, alte probleme concrete de clasificare sunt: recunoașterea vorbirii, clasificarea semnalelor (de exemplu separarea electrocardiogramelor în normale și anormale), clasificarea celulelor în normale și anormale, recunoașterea unor fețe într-o imagine, clasificarea texturilor etc.

Gruparea și categorizarea datelor. Este similară problemei de clasificare cu diferentă că antrenarea rețelei se realizează pornind doar de la date de intrare, fără a specifica clasele cărora le aparțin. Clasele sunt construite pornind doar de la similarități existente în datele de intrare. În felul acesta rețeaua neuronală descoperă criteriul de grupare. Probleme concrete din această categorie intervin în analiza datelor (în special în domeniul cunoscut sub denumirea de "data mining") și compresia datelor.

Aproximare și estimare. Se referă la la extragerea dependenței funcționale dintre două mărimi pornind de la un set de valori ale celor două mărimi. De regulă valorile din set sunt alterate de zgomot (afectate de erori de măsurare sau de altă natură). Folosind acest set rețeaua este antrenată pentru a determina dependență dintre cele două mărimi. O dată rețeaua antrenată, pentru orice valoare a argumentului ea furnizează aproximarea valorii asociate. O problemă concretă din aceasta clasă este reprezentată de determinarea dependenței funcționale între mărimi măsurate

experimental. În aceeași clasă se încadrează determinarea parametrilor unor modele din inginerie sau orice problemă de asociere.

Predicție.

Date de intrare. O succesiune de valori (numită serie temporală) pentru care nu este cunoscută o relație formală care să le genereze.

Dată de ieșire. Aproximarea următoarei valori din serie.Antrenarea rețelei se realizează pornind de la valorile cunoscute din serie. Probleme concrete din această clasă sunt predicția evoluției stocurilor, predicția în meteorologie, predicție în evoluția vânzărilor etc.

Optimizare.

Diferite probleme din știință, inginerie și economie pot fi formulate ca probleme de optimizare constând în necesitatea determinării unei valori care satisface anumite restricții și optimizează o funcție obiectiv. Rețelele neuronale sunt adecvate pentru rezolvarea problemelor de optimizare dificile pentru care este suficient să se obțină soluții suboptimale. Probleme concrete din această categorie sunt cele ce intervin în proiectarea circuitelor electronice, în alocarea resurselor, în rezolvarea problemelor de rutare în rețele etc.

Stocarea și regăsirea informației după conținut.

Rețelele neuronale permit stocarea informației astfel încât aceasta să fie ulterior regăsită pornind de la indicii legate de conținut (indiciile pot fi porțiuni din informația stocată). Astfel de sisteme de stocare sunt mai tolerante la erori în raport cu memoriile bazate pe adrese. Aplicații concrete sunt în proiectarea bazelor de date multi-media.

Modelare și control adaptiv.

Controlul unui sistem dinamic se referă la a determina un semnal de control, u(t), care asigură producerea unui semnal de ieșire dorit y(t). Rețeaua neuronală este antrenată pornind de la un model de referință.

Prelucrarea și analiza semnalelor.

Date de intrare. Un semnal, care poate fi o imagine sau un semnal sonor.

Date de ieșire. Semnalul transformat (de exemplu prin eliminarea zgomotului) sau o informație extrasă din cadrul lui.

2.5 Descriere a unor aplicații clasice

2.5.1 Eliminarea adaptivă a zgomotului – "adaptive noise canceling"

La transmiterea unui semnal (sonor sau de altă natură) printr-un canal de comunicație (de exemplu o linie telefonică) intervine un zgomot care afectează calitatea transferului. Pentru a înțelege mai bine această problemă trebuie să înțelegem modul în care oamenii clasifică și analizează sunetele. Pentru oameni a separa un sunet dintr-un anumit context sonor (de exemplu a înțelege ceea ce spune o persoană într-o încăpere în care se aude și muzică) nu este o problemă dificilă. Aceasta este o abilitate de a elimina zgomotul pe care o utilizăm fără să ne gândim explicit la ceea ce facem. În mod analog dacă în timpul unei convorbiri telefonice intervine un zgomot pe linie îl putem ignora deși zgomotul respectiv nu are o anumită caracterizare. Tocmai datorită acestui fapt este foarte dificil dacă nu imposibil să separăm prin metodele clasice zgomotul de sunetul util. Oamenii sunt capabili să ignore acest zgomot deoarece au învătăt această abilitate din experiență. Acesta este motivul pentru care această problemă a fost rezolvată utilizând rețele neuronale încă din primii ani ai dezvoltării lor (1950-1960, rețeaua ADALINE proiectată de B. Widrow).

2.5.2 Evaluarea riscului creditului ipotecar

Unul dintre cele mai importante aspecte pe care o bancă trebuie să le ia în considerare înaintea aprobării unui credit unei persoane este evaluarea riscului ca persoana să nu fie capabilă să returneze împrumutul. O rețea antrenată pe baza a câtorva mii de informații privind cererile acceptate sau respinse a obținut o rată de succes de 98% (în timp ce rata de succes a funcționarilor este în jur de 85%).

2.5.3 Cititor de coduri poștale

Serviciul poștal din SUA manevrează volume mari de corespondență. Una dintre sarcinile angajaților este clasificarea corespondenței pe baza codului poștal. Un sistem care asigură clasificarea pe baza codului poștal rezolvă următoarele subprobleme:

identificarea zonei in care este scris codul;

împărțirea acestei zone în subzone mai mici care se suprapun pentru izolarea cifrelor.

recunoașterea cifrelor;

A doua etapă este repetată în paralel cu recunoașterea cifrelor până când sunt recunoscute toate cifrele. Rețelele neuronale sunt folosite de regulă în etapa de recunoaștere propriu-zisă. Rata de succes a acestei aplicații este de 95%. Ea a reprezentat punctul de pornire pentru aplicațiile destinate recunoașterii scrisului de mână (deși rata de succes a acestor aplicații este mult mai mică).

2.5.4 Recunoașterea vorbirii

Pentru oameni, recunoașterea vorbirii pare ceva intuitiv dar a realiza o aplicație care să facă acest lucru nu mai este deloc un lucru simplu. La începutul anilor 1980, Intel a proiectat o aplicație bazată pe o rețea neuronală artificială care putea să identifice vocea unei persoane pe baza unui vocabular limitat. Acest sistem, cunoscut sub numele de sistem de recunoaștere automată a vorbirii, poate identifica vocea unei persoane ce folosește un vocabular limitat pe baza căruia a fost antrenată rețeaua de către acea persoană. Această aplicație este utilizată în liniile de asamblare unde un inspector poate comunica cu calculatorul printr-o interfață vocala pentru a controla procesul de

asamblare.

2.5.5 Clasi_carea semnalelor produse de "sonar"

"Sonar"-ul este un echipament care permite detectarea obstacolelor submarine. Utilizarea echipamentului necesită un operator experimentat care să recunoască adevăratele obstacole în raport cu cele false. A fost realizată o aplicație bazată pe o RNA antrenată pe baza unor date ale sonarului înregistrate din cât mai multe direcții posibile. Sistemul a reușit să identifice 98% dintre obstacolele din setul de antrenare și 90% din datele noi.

2.6 Calculul neuronal în comparație cu calculul clasic

Între abordarea problemelor cu ajutorul rețelelor neuronale artificiale și cea clasică bazată pe implementarea unui algoritm pornind de la un model formal există o serie de diferenț. Câteva sunt marcate în continuare.

2.7 Rețelele neuronale în comparație cu sistemele expert

Un studiu comparativ al rețelelor neuronale și al sistemele clasice din Inteligența artificială conduce la:

2.8 Motivații pentru studiul rețelelor neuronale

Exisța mai multe motive de a studia rețelele neuronale. Dintre acestea amintim:

1. Sunt o alternativă la paradigma computațională clasică bazața pe descompunerea problemelor în unițați logice și pe secvența de instrucțiuni programate.

2. Pot fi considerate ca realizări prototip ale conceptului de procesare paralelă și distribuița lucru de interes având în vedere că tehnologiile actuale nu permit o mărire considerabilă a vitezei componentelor, prin urmare accelerarea rezolvării sarcinilor computaționale impune procesarea paralelă. Paralelizarea algoritmilor clasici nu este un lucru tocmai ușor, deci este de dorit să existe sisteme implicit paralele cărora să li se prezinte probleme formulate clasic.

3. Integrează rezultate din discipline variate în scopul obținerii unor arhitecturi simple de calcul. Reformularea unitară, în cadrul teoriei rețelelor neuronale, a unor tehnici deja clasice dar aparținând unor domenii variate asigură acoperirea unor zone de graniță, fapt important în condițiile în care interdisciplinaritatea câștigă tot mai mult teren.

4. Modelează inteligența umană, putând contribui la o mai bună înțelegere a modului cum

funcționează creierul uman.

2.9 Scurt istoric

Etape principale în evoluția rețelelor neuronale artificiale:

[McCullough and Pitts, 1943] Au propus primul model formal al neuronului punând în evidență

abilitatea de calcul a acestuia și posibilitatea de a imita funcționarea acestuia prin circuite

electrice.

[Hebb, 1949] A enuntăt principiul adaptării permeabilității sinaptice conform căruia de fiecare

dată când o conexiune sinaptică este "folosită" permeabilitatea ei este crește. Acest principiu

stă la baza adaptării prin modificarea ponderilor sinaptice.

[Rosenblatt, 1957] A dezvoltat o rețea implementată hard, numită perceptron, pentru clasificarea

caracterelor tipărite.

[Widrow și Hoff, 1950-1960] Au dezvoltat algoritmi de învătăre bazați pe minimizarea erorii pe

setul de antrenare pentru rețele cu un nivel de unități funcționale (ADALINE – ADaptive

LINear Element și MADALINE – Multiple ADaptive LINear Element).

[Minsky și Papert, 1969] Au publicat cartea "Perceptrons" în care se pun în evidență limitele

rețelelor cu un singur nivel de unități funcționale. Reprezintă finalul primei etape de dezvoltare

a rețelelor neuronale după care a urmat o perioadă de circa 10 ani în care cercetările în domeniu au fost reduse considerabil.

[Hopfield, 1982] Propune o abordare a analizei rețelelor neuronale folosind formalismul fizicii statistice prin punerea în evidență a analogiei între rețelele recurente (destinate memorării asociative) și sistemele de spini magnetici . Marchează începutul unei noi perioade de interes in

domeniu caracterizată prin extinderea domeniilor de aplicabilitate și volumul mare de implement

ări soft și hard folosite în aplicații practice.

[Rumelhart, Parker, 1985] Este descris, într-o manieră accesibilă, algoritmul de învătăre al rețelelor cu mai multe nivele bazat pe ideea minimizării unei funcții de eroare calculată pornind de la un set de antrenare. Algoritmul este cunoscut sub denumirea de "backpropagation" provenită de la faptul că pentru determinarea ajustărilor ce vor fi aplicate ponderilor se propagă prin rețea în sens invers (de la nivelul de ieșire către cel de intrare) un semnal de eroare.

[Carpenter, Grosberg, 1983] Dezvoltă "teoria rezonanței adaptive" ce conduce la algoritmi de

învătăre nesupervizată bazată pe procese de competție.

[Kohonen, 1980] Dezvoltă rețele cu auto-organizare care modelează procese neuronale dar pot _

folosite și pentru prelucrarea datelor.

3 Proiectarea rețelelor neuronale artificiale

Din punct de vedre structural o rețet neuronala este un ansamblu de unitați funcționale simple interconectate. Orice rețea neuronala este caracterizată prin:

Specificul unităților funționale componenete

Arhitectura – modul de aranjare și interconctare a unităților funcționale

Funcționare – procesul prin care rețeaua transformă semnalele de intrare (de exemplu datele de intrare ale problemei de rezolvat) în semnale de ieșire (raspunsul retelei).

Învatare – procesul prin care rețeaua se adaptează la specificul problemei.

Unitățea funcțională este componenta elementară de prelucrare a informației în cadrul unei rețele neuronale. Funcționarea acestor unități este inspirata de modul de funcționare a neuronilor biologici fară a ține însă cont de toate particularitățile acestora. În rețelele artificiale sunt folosite și modele de unități funcționale care nu au relevantă biologica.

3.1 Modelul neuronului biologic

Celula nervoasă este constituită din:

• corp neuronal – constituit, in principal, din membrană și "substanță" intracelulară;

• axon – prelungire a corpului neuronal cu rol de canal de ieșire;

• dendrite – prelungiri ale corpului neuronal cu rol de canale de intrare.

La nivelul celulei nervoase au loc procese de natura fizico-chimică destul de complexe. Se consideră ca neuronul primește informație (prin intermediul dendritelor) sub formă de impulsuri nervoase de natură electrica. Aceste impulsuri provoacă depolarizari ale membranei neuronale adică modificari ale diferenței de potential dintre interiorul și exteriorul celulei. Potențialele locale generate pe suprafata membranei se "insumează" spațial și temporal, iar dacă potențialul rezultant depășește o anumită valoare prag, atunci se generează un potential de actiune (PA) care se transmite de-a lungul axonului.

Cercetările din biologie au condus la concluzia că (PA) au amplitudine și că aceasta nu depinde de intensitatea stimulilor sosiți pe neuron. Intensitatea și durata stimulilor de intrare influențează doar frecvența potențialelor de actiune, întrucat un stimul suficient de intens și de lung provoacă nu un PA singular (care nu poartă suficientă informație) ci o secvență de PA (tren de impulsuri).

La nivelul neuronului se poate considera că informația codificată sub forma intensității unor stimuli (deci analogic) este transformată intr-o informatie binară (prezentă sau absența PA) sau eventual discretă (frecventă potentialelor de acțiune ).

Din punct de vedere biologic lucrurile sunt mult mai complicate, punându-se în evidență fenomene ca: existența unei perioade refractare după activarea unui neuron, creșterea pragului de activare ("oboseala" neuronului), prezența unor descărcări (generare PA) spontane (in absența stimulului).

Informația pe care o primește un neuron din partea altora este codificată analogic datorită faptului ca semnalele discrete emise de acei neuroni au fost transformate printr-un proces chimic complex care se desfășoară la nivelul sinapsei (spațiul dintre terminația axonului unui neuron și dendritele altuia).

Sinapsa poate fi definita ca o joncțiune funcțională în spațiul dintre două celule excitabile. În momentul în care trenul de impulsuri propagat de-a lungul axonului a ajuns la terminația acestuia el provoacă "deschiderea" unor vezicule și eliberarea unor substante chimice purtătoare de informație (neurotransmițători) în spațiul sinaptic. Cantitatea de neurotransmițători depinde de numărul de impulsuri din cadrul "trenului" dar și de alți factori (unii dintre ei neidentificați).

Pe membrana postsinaptică sunt prezente formațiuni care "recepționează" neurotransmițătorii provocând modificari ale permeabilității ionice a membranei, deci depolarizări.

După efectul pe care-l provoacă, sinapsele sunt: excitatoare (provoacă depolarizare pozitivă) sau inhibitoare (provoacă depolarizare negativă). S-a observat că stimulări succesive ale unei perechi de neuroni conduc la creșterea permeabilității sinapsei corespunzătoare (de exemplu prin sporirea numărului de receptori). Pe această observație biologică se bazează ideea ca invățarea (adaptarea) poate fi realizată prin modificari ale permeabilității sinaptice.

3.2 Modelul neuronului formal

O unitățe funcțională primește semnale din partea altor unități și produce un semnal de ieșire. Atât semnalele de intrare cât și cele de ieșire sunt codificate numeric iar unitățea efectuează următoarele prelucrări:

integrează (de exemplu, insumează) semnalele de intrare ținând cont de ponderea asociată fiecăruia;

transformă semnalul "integrat" prin aplicarea unei funcții, numită funcție de transfer sau funcție de activare obținând astfel un număr care reprezintă semnalul de ieșire.

Ponderile asociate conexiunilor sunt parametri ai funcției de integrare, care pentru un vector de semnale de intrare, Y E RN, determină o valoare, Xi numită starea neuronului.

Funcția de integrare asociată unui neuron i care primește semnale de la N neuroni este de forma GWi : R:N->R unde reprezintă multimea ponderilor conexiunilor către neuronul i. Componenta Wij reprezintă ponderea conexiunii dintre unitățea j și unitățea i.

Fig.1 Exemplu de unitățe funcțională

y

3.3 Arhitectura

Arhitectura unei rețele neuronale se referă la modul în care sunt amplasate unitățile funcționale (topologie) și la modul în care sunt interconectate (conectivitate).

Din punct de vedere al arhitecturii o rețea neuronală poate fi formalizată printr-un graf orientat etichetat în nodurile căruia sunt amplasate unitățile funcționale și ale cărui arce specifică conexiunile și, implicit, fluxul informațional.

Din punctul de vedere al rolului pe care îl au unitățile funcționale în cadrul rețelei, ele pot fi descompuse în trei categorii principale

Unități de intrare. Primesc semnale din partea mediului. În cazul în care primesc semnale doar din exterior nu au alt rol decât de a retransmite semnalul primit către alte unități din rețea. În această situație nu sunt unități funcționale propriu-zise întrucat nu realizează nici o prelucrare asupra semnalului primit.

Unități ascunse. Sunt conectate doar cu alte unități ale rețelei fară a comunica direct cu mediul extern. Rolul lor este de a colecta semnale, de a le prelucra și de a distribui semnalul de ieșire către alte unități

Unități de ieșire. Colectează semnale de la alte unități, le prelucrează și transmit semnalul pe care îl obțin mediului extern

În unele rețele cele trei categorii de unități formează mulțimi distincte. Cazul cel mai frecvent intâlnit este cel al rețelelor organizate pe nivele: un nivel de unități de intrare, unul sau mai multe nivele de unități ascunse și un nivel de ieșire. o situație particulară o reprezintă rețelele ce nu conțin unități ascunse ci doar un nivel de unități de intrare și un nivel de unități de ieșire.

In alte retele nu se face distinctie neta intre unitățile de intrare și cele de ieșire: toate unitățile preiau semnale din mediu, Ie prelucreaza și transmit rezultatul atat unităților din rețea cat și mediului.

Modul de amplasare a unităților determină topologia rețelei. Din punctul de vedere al acesteia există:

Rețele în care nu are importanță (din punctul de vedere al algoritmilor de funcționare și/sau de învățare) pozitia geometrică a unităților. Astfel de topologii sunt asociate rețelelor organizate pe nivele (fig. 2) și retelelor Hopfield (fig. 3). În reprezentările schematice ale rețelelor organizate pe nivele unitățile aceluiași nivel sunt reprezentate grupat deși pozitia lor nu are semnificație pentru procesul de funcționare și cel de invățare.

Rețele in care este esentiala organizarea geometrică, relațiile de vecinătate dintre unități intervenind in algoritmul funcționare sau în cel de învatare. Astfel de topologii sunt cele asociate rețelelor Kohonen (fig. 4, fig. 5) sau rețelelor celulare (fig. 6). Esențial în acest caz este definirea unei relatii de vecinatate intre unități.

Modul de interconectare a unităților determina ftuxul de semnale prin rețea fiind un factor esential în stabilirea algoritmului de funcționare. Din perspectiva prezenței conexiunilor inverse în graful asociat, rețelele pot fi clasificate in:

Rețele de tip "feed-forward". Nu există conexiuni inverse, fluxul informațional fiind unidirecțional dinspre setul unităților de intrare catre cel al unităților de ieșire. Conectivitatea între nivele poate fi totală sau locală. Exemple de astfel de retele sunt ilustrate în fig. 7, 8, 9.

Rețele recurente. Graful asociat conține conexiuni inverse directe (bucle) sau indirecte (circuite). Exemple de rețele cu conexiuni inverse sunt ilustrate în fig.8, fig. 3 și fig. 10 .

Figura 2: Exemplu de rețea cu un nivel ascuns

În concluzie se pot accepta următoarele clasificări:

3.3.1 Topologii

Principalele tipuri de topologii sunt:

Arbitrară. Mulțime de unități pe care nu este definită nici o relație de ordine. În acest caz nu are importanță nici locul și nici distanțele dintre unități. Un model cu o astfel de topologie este modelul Hopfield. De regulă, acestei topologii ii corespunde o conectivitate totală.

Pe nivele. Unitățile sunt împărțite în mai multe submulțimi, numite nivele. În cadrul unui nivel nu are importanță modul de aranjare a unităților. În această categorie intră rețelele feedforward cu unul sau mai multe nivele.

Cu structură geometrică. Unitățile sunt amplasate în nodurile unei grile unidimensionale, bidimensionale sau chiar tridimensionale. În acest caz se poate defini o funcție distanță între unități. În această categorie intra rețelele de tip Kohonen și cele celulare.

În practică se utilizează și arhitecturi mixte în care fiecare nivel poate avea o anumită structură geometrică.

3.3.2 Coneziuni

Principalele tipuri de conexiuni sunt:

Conexiuni între elementele a două nivele distincte. Sunt folosite în specialla rețelele organizate pe nivele.

Conexiuni între elementele aceluiași nivel (conexiuni laterale). Se folosesc la rețelele cu structură geometrică.

Conexiuni inverse prin care o unitate este conectată cu ea însăși. Pot fi folosite la toate tipurile de topologii.

Figura 6: Exemple de rețele celulare

3.3.3 Flux informațional

Fluxul informațional reprezintă modul în care "curge" informația prin rețea (de la unitățile care preiau datele de intrare catre unitățile care produc semnalul de ieșire) În funcție de modul de interconectare a unitătilor, fluxul informațional poate fi de una dintre categoriile:

Feedforward: flux unidirecțional (informatia circulă doar dinspre nivelul unităților de intrare înspre cel al unităților de ieșire). Este întâlnit la rețelele organizate pe nivele în care nu există conexiuni inverse .

Feedback: flux multidirecțional (un semnal produs de o unitate poate să ajungă din nou la unitatea respectivă fie direct, fie prin intermediul altor unități). Este întâlnit la rețelele cu organizare oarecare și la cele în care sunt prezente conexiunile laterale sau inverse.

3.4 Funcționare

Funcționarea se referă la modul în care rețeaua transformă un semnal de intrare, X, într-un semnal de ieșire, Y. Ea depinde atât de modul în care functionează unitățile cât și de modul în care sunt interconectate.

Unul dintre parametrii cei mai importanti ai funcționării este ansamblul ponderilor asociate tuturor conexiunilor (W). La prima vedere, o rețea neuronală poate fi vazută ca o cutie neagră care primește date de intrare și produce un rezultat (figura 11).

În funcție de specificul fluxului informational există doua moduri principale de

funcționare:

Funcționare neiterativă. În cazul rețelelor în care fluxul informational este de tip feedforward, semnalul de ieșire, Y, se poate obține prin aplicarea unei funcții, Fw (care depinde de parametrii rețelei) , asupra semnalului de intrare, X (figura 12).

Funcționare iterativa. În cazul rețelelor în care sunt prezente conexiuni inverse nu este suficientă o singură "trecere" a semnalului de intrare, X, prin rețea pentru a obține semnalul de ieșire. Dimpotrivă, în acest caz funcționarea se desfășoară în timp, putând fi descrisă printr-un proces iterativ (fig. 13) de forma:

X(O) = X, X(t + 1) = Fw(X(t)), t ~ O.

Semnalul de ieșire se consideră ca fiind limita lui X(t) (X* = lim t->∞ X(t)). În implementări, limită se aproximează prin X(T), T fiind momentul în care este oprit procesul iterativ. Calitatea acestei aproximări depinde atât de proprietățile lui Fw cât și de X(O).

3.5 Învățare

Învățarea poate fi vazută ca fiind un proces prin care un sistem își îmbunătațește performanțele prin achizitie de cunoaștere.

Pentru rețelele neuronale învatarea se referă la orice modificare a mulțimii parametrilor (ponderile asociate conexiunilor și pragurile asociate unităților) care asigură o mai bună adecvare a comportării rețelei la problema pentru care a fost proiectată.

Capacitatea de a învăța este una dintre cele mai importante calități ale unei rețele neuronale, prin care aceasta este superioară altor metode. Posibilitatea învățarii din exemple permite evitarea formalizării în detaliu a problemei de rezolvat, un avantaj important mai ales în cazul problemelor pentru care o astfel de formalizare nu există. Prin procesul de învățare în parametrii rețelei este înglobată implicit o formalizare a problemei, aceasta putând fi utilizată în faza de funcționare.

Un alt aspect important al rețelelor neuronale este capacitatea de generalizare adică de a produce răspunsuri și pentru date pentru care nu a fost antrenată.

Procesul de învățare se bazează pe doua elemente:

O multime de informatii;

Un algoritm de adaptare la informatiile primite.

În funcție de natura informațiilor primite, învățarea poate fi de una dintre categoriile:

Nesupervizată (auto-organizare). Sistemul primește doar semnale de intrare din partea mediului și pe baza acestora descoperă trasăturile statistice ale populatiei stimulilor construindu-și o reprezentare codificată în ponderi a mediului. Această reprezentare poate fi ulterior utilizată pentru alți stimuli care provin din partea aceluiași mediu. Din punct de vedere algoritmic o asemenea metodă de adaptare consta într-un algoritm de construire a ponderilor care poate fi iterativ sau nu. Aceste metode sunt utilizate pentru aplicatii de memorare asociativă, grupare a datelor (clustering), analiza componentelor principale.

Supervizată. Se dispune de un set de antrenare (mulțime de exemple) care conține perechi de forma (i, d) cu i reprezentând semnalul de intrare, iar d răspunsul corect (în cazul învățarii supervizate propriu-zise) sau un indicator de corectitudine (în cazul celei de tip recompensă/ penalizare). Pe baza setului de antrenare ponderile se construiesc iterativ urmărind maximizarea unui indice de performanță sau minimizarea unei funcții de eroare. Relativ la această metodă de adaptare apar și următoarele probleme:

(a) Testarea retelei "antrenate" : se face de regulă prin reținerea din setul de antrenare a unui subset de testare (care nu este utilizat în determinarea ponderilor).

(b) Asigurarea unei bune capacități de generalizare: se mentine un nivel acceptabil de eroare pe setul de antrenare în scopul evitării supraînvățării (învățarea detaliilor nesemnificative din cadrul exemplelor).

3.6 Rezolvarea unei probleme folosind rețele neuronale

Rezolvarea clasică (cu algoritmi bine precizați pentru fiecare clasă de probleme) a problemelor necesită cunoașterea a suficiente date despre problemă pentru a o putea descompune în unități logice elementare și pentru a elabora un algoritm care va ramane " înghețat" în structura lui, modificându-se doar datele pe care le prelucrează.

Dacă datele despre problemă nu sunt suficiente atunci problema nu poate fi formalizată și metoda de mai sus nu poate fi aplicată. În aceste situații pot fi utilizate rețele neuronale, etapele de rezolvare fiind:

Stabilirea unei arhitecturi inițiale care să fie compatibilă cu problema (de exemplu structura nivelului de intrare în rețea trebuie sa fie compatibilă cu numarul de date inițiale ale problemei) și alegerea tipului de unități funcționale. Stabilirea gradului de maleabilitate al rețelei prin specificarea parametrilor ajustabili (o rețea va fi cu atât mai generală cu cat va avea mai mulți parametri ajustabili). Pentru fiecare instanțiere a parametrilor se obține o anumită funcție asociată rețelei (două rețele având aceeași arhitectură dar valori diferite ale parametrilor pot rezolva două probleme diferite). În anumite cazuri chiar și arhitectura (de exemplu numărul de unități) este maleabilă ea fiind stabilită prin procesul de învatare.

Alegerea unui algoritm de învățare potrivit cu arhitectura rețelei și cu cantitatea de informație de care se dispune despre problemă. În alegerea algoritmului de învățare trebuie sa se țină cont de:

(a) funcția pe care o poate realiza rețeaua (deci de arhitectură);

(b) specificul "mediului informațional" al problemei (de volumul și natura datelor despre problemă).

Antrenarea rețelei pentru a rezolva o anumită problemă. Antrenarea se realizează prin "amplasarea" rețelei în "mediul informațional" specific problemei și activarea algoritmului de învățare.

Testarea (validarea) rețelei presupune verificarea corectitudinii rîspunsurilor pe care le dă rețeaua când primește date de intrare care nu apartin setului de antrenare dar pentru care se cunoaște răspunsul corect.

Utilizarea propriu-zisă a rețelei

Primele două etape se referă la proiectarea rețelei iar celelalte la adaptarea (antrenarea) și utilizarea ei. Adeseori o etapă premergătoare o reprezintă preprocesarea datelor. De exemplu dacă datele de intrare se constituie în vectori de valori numerice o transformare utilă o reprezintă normalizarea acestora.

4 Descriere Aplicație

5 Proiectarea neurochip-ului

În acest capitol este decrisa metodologia de implmentare VLSI a neurochip-ului care pune în evidență puterea, performanța și domeniul care facilitează explorarea arhitecturii sale în stările de început ale dezvoltării.

5.1 Maparea algoritmilor pe arhitectură

Un algoritm reprezintă un set de instrucțiuni care sunt aplicate unor date într-o anumită ordine pentru a transforma intrările și stările interne în iesirile dorite. O arhitectură reprezintă un set de resurse și interconexiuni. Optimizarea unei arhitecturi să execute o clasă de algoritmi presupune un proces iterativ în care și algortmii dar și arhitectura sunt modificate pentru a îmbunatăți performanța.

5.1.1 Capacitate și performanță

Fig.1: Studiul DARA pentru cerințele de performanță și capacitate

Trendline-urile biologice sunt de 10 conexiuni/sec pe conexiune(CPS/C);

Pentru semnalul de procesare de 106 CPS/C

În multe tipuri de sistem, primele preocupări sunt relative la domeniul de memorare a programelor, a datelor si a resurselor procesorului. În implementarea neuronală aceasta poate fi exprimată prin numărul de conexiuni/procesor (CPP). Studiul DARPA asupra rețelelor neuronale prezintă o listă de aplicații și cerițele lor în conexiuni (C) și conexiuni pe secundă (CPS). Acestea sunt prezentate în Fig.1. CPP-ul optim este legat de C și CPP-ul unei aplicații prin formula: CPP=(CPS/C)(CPS/P), unde CPS/P, numărul de conexiuni pe secundă per procesor este determinat în principal de tehnologie. O arhitectură optimă este de aceea o funcței care depinde atât de aplicație cât și de tehnologie.

Acestă ecuație dă arhitectura optimă pentru o familie de aplicații care se bazează pe un trendline (o diagramă care descrie mișcarea în trecut și este flosită pentru a prezice mișcările viitoare) de constante CPS/C.

Rețelele biologice din Fig.1 merg pe un trendline de 10 CPS/C. Calculatoarele convenționale sunt apropiate de 1 CPS/C. Neurochip-urile implemntate până în prezent sunt între 104 CPS/C și 107 CPS/C.

Un singur multiplexor VLSI poate suporta 108 CPS. De aceea arhitecturile motivate biologic capabile de 10 CPS/C pot avea 107 conexiuni pe procesor (CPP). Un proces de învățare accelerată capabil de 1000 CPS/C poate avea 105 CPP.

Până în prezent toate neurochip-urile (analogice sau digitale) care au fost implementate sunt mai potrivite pentru aplicațiile de procesare a semnalelor decât celelate aplicații DARPA deoarece ele prezintă o încărcare sinaptică relativ mică pentru fiecare procesor. De exemplu soluția adaptivă CNAPS are 64 de procesoare și 4K celule de 8-biți pe procesor. Fiecare procesor poate executa 25 milioane CPS, rezultând aproximativ 104 CPS/C.

Fiecare procesor neuronal din soluția propusă de mașina Boltzmann ocupă aproximativ 500λx1000λ. Acest spațiu este suficient pentru 1000 celule sinaptice, așa că o arhitectură cu mai puțin de 104 CPS/C acordă peste 90% din suprafața de silicon pentru memorie. La 10 CPS/C, rata memorie/procesor este 104:1.

Procesoarele pentru rețele de dimensiune mare vor trebui optimizate pentru ca energia consumată de luarea unei decizii să fie minime, nu suprafața de silicon, deoarece disiparea de putere va fi dominantă. Optimizarea suprafeței este mai importantă în rețelele de procesare a semnalelor, unde rata memorie/procesor este 1:10. Tehnologia de 0.5μ suportă 106 conexiuni pe cm2, așa că ne putem aștepta la 1 procesor pe fiecare 10 cm2 la 10 CPS/C sau un procesor fracțional capabil de 107 CPS pentru fiecare cm2. Tehnologia de 0.2μ suportă 107 conexiuni pe cm2 și 1 procesor/cm2 la 10 CPS/C.

Treadline-ul pe care evoluează fiecare arhitectură depinde în mare măsură de lărgimea de bandă de memorie disponibilă, și dacă structura unui singur ciclu poate fi aplicată pentru multiple modele. Dacă celulele sunt salvate în memoria exterioară chipului CPS/C-ul sistemului este determinat de CPS/C-ul memoriei unui singur chip și adâncimea modelului de cache de pe chip. Un singur chip cu 16Mbit DRAM cu perioada de 200ns, organizat ca 4Mx4 poate oferi 2.5 MCPS și are o capacitate de 2MC, presupunând celule de 8-biți. Aceasta înseamnă doar 1.25 CPS/C. 10 CPS/C necesită 25ns pentru a accesa 16Mbit sau o adâncime de 8 penru modelul de cache de pe procesor. Dacă dorim să construim o rețea neuronală capabilă de învățare accelerată la 100×10 CPS/C este de dorit ca memoria de pe chip să aibă lărgimea de bandă de (de model 1K) pentru modelul de cache de pe chip.

O nouă tehnologie în arhitectură, Rambus, folosită în rețelele neuronale conectate în întregime poate suporta eficient Σwijxi . Dar numai wij este eficinet nu și wji. Aceasta poate fi o problemă în propagarea înapoi. Poate fi rezolvată prin flosirea a 2 copii: una pentru feedforward și alta pentru feedback.

În rețelele conctate rar arhitectura Rambus depinde de felul în care celulele sunt prezente în memorie.

O alternativă la Rambus care permite o mai mare rată de transfer și acces aleator ar fi pipelining. Cu memorie pipelined fiecare tranzacție în memorie va necesita mai multe cicluri până la terminare, dar o nouă tranzacție poate începe cu fiecare ciclu. Însă trebuie să existe o toleranță la întârzieri mari.

Lărgimea de bandă spre memorie poate fi redusă prin salvarea de module multiple pe chip și aplicând fiecare pondere care vine tuturor modelelor de cache înainte de aducerea noii ponderi.

De asemenea partiționarea sistemului în porcesoare și memorii separate mărește energia de acces la memorie deoarece memoria este îndepărtată de pe procesor. În timpul procesului de învățare toate celulele tind să fie modificate tot timpul astfel cache-ul nu reduce energia de acces la memorie. În acest caz energia de acces la memorie poate fi redusă în mod substanțial distribuind procesoare memoriei. Arhitectura optimă balansează între puterea de acces disipat la memorie și puterea de comunicare între procesoare. Un dezavantaj al combinării procesoarelor cu memoria pe acelși chip este că procesele logice nu sunt optimizate pentru celule mici de memorie și procesele de memorie nu sunt optimizate pentru circuite rapide de logică.

5.1.2 Optimizarea algoritmilor

Optimizarea algoritmilor implică alegerea structurii VLSI cea mai simplă. Această optimizare presupune alegera algoritmilor cât mai simplii care să poată oferi rezultatele dorite. Sre exemplu calcularea distanței: metrica Euclidiană față de metrica Manhattan. Metrica Manhattan poate fi implementată folosind mult mai puțini tranzistori.

5.2 Arhitectura

Folosind diverse tehnici performanțele pot fi mărite, se poate micșora suprafața și consumul de energie. Aceste tehnici sunt: pipelining, precizie, iterație, concurență, regularitate, localizare. Dintre acestea precizia și localizarea sunt cele mai folositoare în aplicațiile cu rețele neuronale.

5.2.1 Pipelineing

Pipelineing-ul poate fi folosit pentru rețelele neuronale deoarece multe operații sunt executate între deciziile dependente de date care pot provoca stări de așteptare în pipeline și întârzierea unei singure unități nu este atât de improtantă ca și comunicarea și puterea de computație a sistemului.

Pipelining a fost folosit pentru îmbunătățirea performanței. Poate fi folosit de asemenea pentru micșorarea puterii consumate păstrând însă nivelul de performanță. Pentru resurse date există o logică optimă de minimizare a energiei la o rată de transfer constantă. A fost demonstrat că logica optimă pentru un multiplexor 32×32 biți este egală cu propagarea întârzierii la un sumator 4:2. La această logică penalizarea suprafeței este de 37%.

5.2.2 Precizia

Implementările digitale necesită doar destulă precizie temporală ca să depășească rata Nyquist a exemplificării sistemului. Trebuie doar să aibă precizie aritmetică ca să distingă elementele care sunt distincte în implementări analoage. Cuantizarea erorilor datorate preciziei mici reprezentările numerice se comportă ca și zgomot, ceea ce de multe ori îmbunătățește performanța algortimilor de învățare.

Precizia poate avea un impact important asupra dimensiunii, a puterii și a performanței. Suprafața unui multiplexor este proporțională cu numărul său de biți la pătrat. Un multiplexor 32×32 biți este de 16 ori mai mare decât un multiplexor 8×8 biți.

Aritmetica de precizie mică are problemele sale speciale în primul rând în legătură cu păstrarea rezultatelor intermediare în domeniul dinamic disponibil, și minimizarea erorilor sistematice. Statisticile cu privire la erori vor fi influențate de tipul metodei de cuantizare folosită. Aceasta include trunchiere, rotunjire și blocare.

5.2.3 Iterația

Structuri iterative calculează un rezultat parțial la fiecare ciclu folosind o parte din hardware solicitat pentru o implementare paralelă în îtregime. Aceasta poate fi deosebit de folositor în operații convolutive sau acumulative ca și înmulțiri și produse interioare. Iterația este o tehnică excelentă pentru exploatarea nivelelor înalte de performanță atinse în tehnologiile submicronice în timp ce reduce și suprafața necesară implementării resurselor aritmetice.

Un aspect al structurii iterative este ca clock-urile de viteză mare să fie generate asincron în momentul folosirii și să fie distribuite local pe structura iterativă.

5.2.4 Concureța

Concurența este o tehnică larg folosită pentru creșterea performanței prin paralelism. Cu toate cî există o mare concurență la nivelul de sistem, concurența unui singur chip depinde de rata CPS/C a aplicației. În aplicațiile de procesare a semnalelor nivelul de paralelism într-un singur chip va fi limitată de densitatea de putere. În rețelele mari va fi limitată de necesitățile de memorie.

5.2.5 Regularitate

Regularitatea într-o arhitectură sau un algoritm permite un nivel mărit de complexitate să fie exprimată cu cat mai puțină energie pentru implementare. Rețelele neuronale sunt compuse dintr-un număr mare de elemente asemănătoare, care poate fi tarnspus direct într-o descriere de implementare simplificată.

5.2.6 Localizare

Este foarte important să se maximizeze localizarea pentru a se minimiza energia de comunicare. Cu cât cablurile sunt mai scurte cu atât mai bine deoarece energia de comunicare este proporțională cu lungimea cablurilor și lărgimea de bandă pentru comunicare este invers proporțională cu lungimea acestora. Arhitecturile masiv paralele trebuie să fie foarte prevăzătoare în legătură cu numărul de conexiuni lungi.

5.3 Construirea blocurilor

Un număr de circuite de bază și tehnici de implmentare pot fi folosite în avantajul implementării digitale a rețelelor neuronale. În continuare vor fi prezentate structurile specifice care sunt folositoare în rețelele neuronale digitale.

5.3.1 Logica stilului de implementare

Există mai multe logici de implementare din care se poate alege implementarea circuitelor CMOS dorită:

Logica implementării diferă în schimbul de viteză, putere și suprafață. Familia de logică cu viteza cea mai mare tinde să consume cea mai mare putere, iar cele mai compacte tind să fie încete.

Pentru operații care necesită voltaj scăzut, logica statică funcționează mai bine decât cea dinamică. Cea mai bună logică pentru aceste operații este L-DPTL. Aceasta este similară cu CPL sau DPTL dar folosirea inversoarelor transformă faza de ieșire într-una cu semnificație de aplificator diferețial.

5.3.2 Latch-uri și clock-ul

De asemenea există mai multe tipuri de clock pentru implementarea CMOS a circuitelor:

Fiecare stil de abordare este diferit prin schimbul de viteză, puetre, dimensiune și limita de oparare. Clock-ul cu cea mai mare performanță tinde să aibă limitele de operare cele mai restrânse. Cele cu limită mare de operare în general costă putere și dimensiune.

Latch-urile sunt strâns legate de clock. C2MOS, NORA și TSPC au fiecare propriile latch-uri. Majoritatea implementărilor folosesc fie latch-urile fully static fie pseudo-static. Acestea sunt de mare performanță, compacte și necesită putere mică. Prezintă însă și dezavantajul că nu funcționează la voltaj scăzut deoarece tranzistorul lor de trecere nu poate face trecerea peste un 0 salvat. Pentru latch-urile de voltaj scăzut, tranzitorul de trecere poate fi schimbat cu o poartă de transmisie. La voltaj scăzut

L-DPTL oferă cele mai bune performanțe.

În continuare sunt prezentate diferite tipuri de latch:

Distribuția clock-ului

Există trei tipuri de scheme de clock-uri cu o singură fază: cele care generează /CLK (complmentul CLK-ului) global, local și care nu îl generează. /CLK-ul global are cele mai bune performanțe, dar și marginile cele mai înguste. /CLK-ul local are margini mai largi, dar în general performanță scăzută.

Distribuția clock-ului la nivelul de chip este foarte importantă în special în sistemele de viteză mare, putere scăzută. A devenit tot mai dificil deoarece chip-urile cresc în performanță și scad în dimensiune. În mașina Boltzmann se atașează tuturor clock-urilor circuite identice pentru a avea aceeați latență. După care se reglează dimensiunea tranzistorilor că să se copmenseze diferența de încărcare.

Calibrarea alimentării

Alimentarea trebuie să fie calibrată pentru a evita căderile de rezistență excesive de-a lungul șinelor și pentru a se menține în limita de migrație a metalului. Limita de migare a metalului este aproximativ limita mediei curentului care poate circula printr-un cablu fără a despărții atomii metalului și a distruge cablul. Limita de migrare a metalului într-un proces de 2.0μ este aproximativ 0.7mA/μ. wmin este ponderea minimă a cablului și este dată de wmin=Ion/((Id/a)Jmax), unde Ion este curentul print-un dispozitiv pornit (ON) în mA, Id este profunzimea logicii din implementare, a este activitatea și Jmax este limita de migrație a metalului exprimată în mA/μ.

De asemenea există o limită a căderii tensiunii de rezistență. Pentru a păstra căderea de tensiune pentru o magistrală de putere sub 100mV la 5V în timp ce un singur dispozitiv 6:2 este comutat, trebuie ca 0.1/rs>4.9/rd, unde rs este rezistența de alimentare și rd este rezistența dispozitivului. În implementările mai vechi exista tendința de plasare a magistralelor de alimentare pe oricare parte a caii de date. Dacă calea de alimenatre este paralelă cu cea a datelor, puntul de maxim al curentului pe cale va fi mai mic decât dacă ele ar fi fost perpendiculare pe calea de date. O aboradere mai recentă implică trasarea cailor orizontal în metalul1, după care vor fi trase vertical în metalul2. Aceasta funcționează mai bine deoarece căderea de tensiune de rezistență este proporțională cu pătratul lungimii cablului, grosimea depinzând de numărul de dispozitive active ca și de lungimea cablului.

5.3.3 Multiplexoare

Multiplexoarele sunt folosite în circuite de comunicație, aritmetică, logică și memorie. Un multiplexor cu N intrări poate fi implementat folosind tranzistoare 4N/3. Cablajul, în general face ca densitatea de tranzistoare la multiplexor să fie mai mică decât la circuite logice. Foarte des multiplexoarele sunt îmbinate cu alte funcții pentru a reduce suprafața. Celulele multiplexoarelor sunt în general implementate folosind logica fully static pentru a funcționa corect în diferite condiții. Un multiplexor cu 2 intrări necesită trei porți /ȘI cu 2 intrări, ceea ce presupune 12 tranzistori. Însă într-un context favorabil această funcție poate fi implementată folosind doar 2 tranzistori de trecere.

5.3.4 Elemnete aritmetice

Sunt folosite o serie de circuite specializate pentru funții aritmetice și logice:

SAU-EXCLUSIV, elemente de șiftare, Comparatoare rapide, Numărătoare, Sumatoare, Înmulțitoare, Acumulatoare, elemente de înregistrare, elemente de extindere a semnului și mașini în virgulă flotantă.

5.3.5 Memoria

Înregistrarea sinaptică de energie și densitate sunt de mare importanță pentru rețelele neuronale. În tabelul prezentat mai jos sunt comparate diverse celule de memorie. MOSIS

sunt celule RAM fabricate folosind logica standard. În cele mai multe cazuri celulele digitale pot stoca un singur bit; stocarea a 5 biți necesită 5 celule digitale de memorie, dar doar o celulă analogică. Dimensiunea celulelor este specificată în λ pentru a fi scalate cu ușutință pentru diverse tehnologii.

Celulele analogice sinaptice sunt incluse pentru comparare. Se observă din tabelă că celulele de învățare sinaptice analogice au densitate de stocare mult mai mică decât celulele digitale de memorie, ceea ce este o piedică în implementarea rețelelor mari.

Memoriile dinamice cu acces random și un trazistor au densitatea cea mai mare. Memoria statică cu 6 tranzistoare consumă cea mai puțină putere.

Registrele de șiftare sunt implementate deseori folosind fie SRAM fie DRAM, astfel consumând mai puțină putere și spațiu.

În continuare sunt prezentate într-un tabel diferite tipuri de celule de memorie. Numerele din paranteză sunt suprafețe relative de sinapse digitale de 6-biți.

DRAM

DRAM-ul comercial oferă densitate de stocare limitată de îngrădirea de metal. Nodul de stocare este plasat la intersecția unei linii de cuvinte cu o linie de biți. DRAM-ul necesită mai multă esergie deoarece funcția de citire a lor este destructivă (la fiecare citire dintr-o celulă aceasta este rescrisă), iar scrierea necesită oscilarea linie de biți cu cel puțin un prag sub Vdd. De asemenea DRAM-ul trebuie să fie reactualizat datorită scurgerilor de curent. În mod normal puterea consumată pentru reactualizare este mică, dar poate să însemne ceva în cadrul unei rețele mari.

FLASH

Memoria FLASH EPROM este cel puțin la fel de densă ca și DRAM-ul cu un tranzistor deoarece datele sunt stocate într-o poartă în virgulă flotantă la intersecția dintre o linie de de cuvinte și una de biți. FLASH-ul este folosit pentru stocarea de valori analogice sau digitale. FLASH-ul cu un singur tranzistor de obicei citește la tensiune mică și scrie la tensiune mare, deci timpul de citire este limitat de tensiunea redusă, iar scrierile dureayă mai mult și consumă mai mult decât la alte tipuri de memorie. Celulele FLASH sunt folosite pentru a reduce timpii de citire și consumul de energie la citire.

SRAM

SRAM-ul consumă puțină energie deoarece citirile și scrierile necesită schimbări minore în linia de voltaj. Această diferență poate fi amplificată fără a influența liniile de biți.

Cache-ul

Pentru arhitectura internă accesele la memorie sunt predictibile și secvențiale. Memoria poate fi folosita ca internivel prin aducerea unui număr de cuvinte în paralel dintr-un bloc în cache și apoi accesând aceste cuvinte din cache. Internivelarea de dimensiune N permite ca printr-un singur acces la memorie să se ocupe N cicluri. Un port de memorie K poate fi implementat cu cache-uri K și internivelare de ordin N atâta timp cât timpul de acces al memoriei este mai mic decât N/K cicluri. Cache-ul este folosit pentru aducerea ponderilor procesorului neuronal și simultam să actualizeze ponderile.

5.3.6 Sursa de zgomot

Zgomotul joacă un rol important în multe aplicații ale algoritmilor neuronali. Generarea unui număr mare de zgomote este însă o problemă. În cadrul neurochipului descris se foloseste un registru de șiftare cu SAU-EXCLUSIV feedback așezate în locuri startegice. O asemenea structură generează o scurgere pseudoaleatoare de biți. Folosim fiecare din acești biți pentru a iniția unitățile ascunse ale masinii Boltzmann cu +/- 1.

5.4 Implmentarea mașinii Boltzmann

Aceasă mașină este un neurochip digital de învățare care implementează principalele idei ale algoritmului de învățare Boltzmann. Poate suporta rețele neuronale de până la 160 neuroni și 20.480 ponderi de 5 biți. Este implementată în tehnologia CMOS de 1.2μ, la 180MHz, disipă la 2.0W, atingând 5.76GCPS (miliarde de conexiuni pe secundă) și 720MCUPS (milioane de acualizări de conexiuni pe secundă). Folosește multe din tehnicile prezentate anterior, atinge performanțe înalte cu un consum mic de energie pe operație în primul rând datorită combinării pipelining-ului cu precizia aritmetică scăzută.

5.5 Descrierea funcționării

5.5.1 Structura rețelei

Rețelele mașinii Blotzmann sunt formate din trei tipuri de unități: unități vizibile, care se ocupă de intrări și ieșiri; unităși ascunse, care se ocupă cu conexiunile interne; unități reale, care oferă 1 tuturor celorlalte unități. Conexiunile între unități sunt în general simetrice (wij=wji), dar această constrâgere poate dispărea dacă ponderilor li se permite alterarea. Răspunsul rețelei la un vector de intrare este dat prin inițializarea unităților ascunse și activarea iețirii pentru valori aleatoare, și apoi regenerarea rețelei în conformitate cu un program de temperatură. Regenerarea este necesară datorită naturii recurente a conexiunilor. Structura neuronilor din cadrul mașinii Boltzmann prezentate sunt determinișsti și au valori multiple.

5.5.2 Algoritmul de învățare

Algoritmul de învățare este constitiut din 2 faze: faza profesor și faza student. În timpul fazei profesor toate unitățile vizibile sunt încărcate cu valorile dorite și sunt evaluate activitățile neuronale. În timpul fazei student ieșirile sunt lăsate libere.

Regenerarea este realizată prin înmulțirea sumei produșilor cu o valoare T a temperaturii înaintea aplicării neliniarității sigmoide:

Unde T este de valoare mare, răspunsul sigmoid este foarte restrâns, iar aria erorilor este necalară, facând neclar totul dar în special calitățile cele mai improtante. Când T este 0, sigmoida este o funcție treaptă deslușind structura rafinată a ariei erorilor.

Ponderile sunt actualizate în conformitate cu corelația dintre intrarea și ieșirea unui neuron în timpul fazelor profesor și student. Fiecare pondere este modificată cu o cantitate dată de valoarea medie așteptată în urma corelațiilor profesor-student în timp:

dwij=Є(<titj>-<sisj>)

relație ce poate fi implmentată astfel:

if ((ti&tj)&& rand()<Є) wij++;

if ((si&sj)&& rand()<Є)wij–;

unde wij este ponderea conexiunii sinaptice a neuronul i la neuronul j, dwij este schimbarea care se face asupra ponderii wij, Є este rata de învățare, ti este ieșirea neuronului i în timpul fazei professor și si este ieșirea neuronului i în timpul fazei student.

În cadrul unei rețele deterministe regula de învățare este:

dwij=Є(titj-sisj).

Cu toate că aceasta este o relație mai complexă, este evaluată doar la sfârșitul ciclului de regenerare pentru fiecare pondere în loc să fie calculată la fiecare iterație. Astfel abordarea deterministă face ca numărul de procesoare pentru actualizarea ponderilor să fie N/A, unde N este numărul de procesoare neuronale, iar A este numărul de pași în cadrul programului de regenerare.

5.5.3 Resurse

Neurochip-ul are 32 procesoare neuronale (NPs), 4 procesoare de actualizare a ponderilor (WPs), și 20.480 ponderi de 5-biți organizate în 4 blocuri. Fiecare bloc are 8NPs, un WP și 5.120 ponderi. Chipul are o unitate sigmoidă, o unitate de stocare de 160 de cuvinte, și o intefață externă cu un cache de instrucțiuni de 8 cuvinte. De asemenea prezintă un gererator aleator de valori pentru inițializarea unităților ascuse și un accumulator de erori pentru măsurarea ratelor de eroare în timpul învățării. Rata NP/WP a fost aleasă pentru a satisface necesitățile unui program de reagenerare tipic.

5.5.4 Performanțe

Toate căile din sistem sunt echilibrate pentru a satisface întârzierea unui sumator 4:2 de 5.3ns în tehnologie CMOS 1.2μ la 5V și 270C. Aceasta a fost dificil de realizat mai ales în controlul implementării deoarece memoria și căile de date folosesc tehnica pipeline. A fost folositoare ignorarea asimetriilor ciclului în timpul implementării controlului, după care evenimentele au fost șiftate la ciclurile lor reale.

5.5.5 Disiparea puterii

Este estimat că cea mai mare dispare de putere este pe aplificatoarele operaționale din DRAM (1280 de aplificatoare).

Un tabel în care este prețentată disiparea puterii la 5V, unde avem viteza de 180MHz și 3.3V, viteza de 130MHz este prezentat în continuare:

5.5.6 Reprezentarea numerică

S-a facut utilitate maximă de reducerea preciziei de calcul din cadrul chip-ului. Ponderile și semnalele de activare sunt pe 5 biți, temperature este exprimată ca număr în firgulă flotantă cu mantis ape 2 biți și exponentul pe 4 biți. Procesoarele de actualizare a ponderilor folosesc doar cei mai semnificativi 3 biți ai activării în calculul wij=wij+Є(titj-sisj). Є este doar o șiftare.

Înmulțitorul dintr-un processor neuronal gerează un rezultat pe 10 biți din 2 intrări pe 5 biți. t fi accumulate până la 128 sume parțiale, necesitând fie saturație logică fie 7 biți de gardă în acumulator. Se folosesc biți de gardă, astfel se implementează acumulatorul folosind sumatorul 4:2 pe 17 biți. Acest acumulator generează rezultatul de forma carry-save. Prin luarea a 17 cicluri extra la sfârșitul fiecărui produs intern pentru a netezi adausurile se micșorează numărul de biți necesitați în fiecare processor neuronal de la 34 la 17. Simulările facute arată că precizia de 5 biți este suficentă pentru acivare și ponderile sinaptice.

5.5.7 Stocarea ponderilor

Fiecare unitate de stocare are are 5.120 ponderi pe 5 biți organizate în 80 de cuvinte pe 320 biți. Este implementată folosind un rtanzistor DRAM. O singură celulă de memorie măsoară 12λx18λ. Nodul de stocare măsoară 9λx7λ, cu o capacitate de 35fF. Capacitatea fiecărei linii de cuvinte este 1.8pF; pe fiecare linie de biți 420fF. Aplificatoarele operaționale și decodificatoarele ocupă fiecare 10% din spațiul de memorie. Memoria are 8 internivele, dar pentru a salva spațiu cache-ul NP are doar 4 cuvinte. Celelate 4 cuvinte sunt citite direct din amplificatoarele operaționale. WP are aceeași dimensiune cu NP dar este citită/scrisă doar de 1/8 ori față de NP deoarece există un procesor de actualizare pentru fiecare 8 procesoare neuronale.

5.5.8 Stocarea semnalelor de activare

Unitatea de stocare a semnalelor de activare este constituită din trei blocuri de depunere: anterior, curent și ulterior. Ponderile sunt actualizate folosind valorile de activare din blocul anterior în timp ce chipul regenerează blocul curent și cuvântul extern este încarcă mătorul model de învățare în blocul ulterior.

Fiecare bloc are 2 coloane: una pentru activarea student-ului și alta pentru professor-ului. Sunt 160 de semnale de activare de 5 biți pe fiecare coloană. Fieacre bloc este organizat în 40 cuvinte pe 40 biți. Sunt implementate folosind 6 tranzistoare SRAM. Fiecare bloc are 4 intranivele și 2 cache-uri: una de citire și una de citire/scriere. Accesele la memorie durează 2 cicluri, astfel cache-urile suportă ori 2 citiri ori o citire și o scriere pe ciclu. 2 citiri sunt necesare pentru procesoarele de actualizare a ponderilor, iar o citire și o scriere este cerută de procesoarele neuronale pentru regenerare.

5.5.9 Procesoarele neuronale

Cele 32 de procesoare neuronale execută evaluări interne prin înmulțirea ponderilor cu semnalele de activare și acumulând rezultatul. Rezultatul este pus în latch-ul de ieșire al procesorului neuronal (un registru de șiftare implementat ca un tampon SRAM). De aici sunt trimise unității sigmoide un ape ciclu. Fiecare processor neuronal măsoară aproximativ 500λx1000λ și are 1400 tranzistoare.

5.5.10 Procesoarele de actualizare a ponderilor

Fiecare procesor de actualizare a ponderilor implmentează wij=wij+Є(titj-sisj) cu o frecvență de un pe ciclu. Aceasta necesită o citire și o scriere pe ciclu pentru cache-ul de actualizare a ponderilor. Fiecare procesor de actualizare a ponderilor are aproximativ aceeași dimensiune și complexitate ca și un procesor neuronal.

5.5.11 Unitățile sigmoide

Unitățile sigmide aduce o sumă acumulată pe 17 biți pe ciclu de la latch-urile de ieșire ale procesoarelor neuronale, o înmulțește cu valoarea raturii și o trece printr-o tabelă sigmoidă trece sus de 64 cuvinte pe 5 biți.

Programarea regenerării este stocată intr-o memorie de temperatură de 64 cuvinte a 12 biți. Fiecare cuvânt conține valoarea raturii pe 6 biți și un contor pe 6 biți care specifică numărul de pași pentru acea ratură. ratura are mantisa de 2 biți și exponentul de 4 biți. Din cei 17 biți de la ieșirea procesorului neuronal sunt selectați 6 la intrarea în înmulțitorul raturii folosind exponentul de 4 biți. Acești 6 biți sunt înmulțiți cu mantisa de 2 biți a raturii, iar cei mai semnificativi 6 biți ai rezultatului sunt folosiți pentru adresarea tabelei sigmoide.

5.5.12 Acumulatorul de erori

Acumulatorul de erori calculează Σ |ti-si| distanța dintre cei mai semnificativi 3 biți ai ieșirii actualei și ieșirii dorite. Aceasta permite unui cuvânt extern să monitorizeze rata de eroare fără a necesita citirea ieșirile în timpul învățării.

5.5.13 Mașinile de stare

Chipul prezintă mai multe asemenea mașini de stare care controlează învățarea și interacționează cu exteriorul. Aceste mașini folosesc contoare pentru a ține evidența curgerii datelor în interiorul chip-ului și pentru a genera poinerii de adresă pentru ponderi, semnalele de activare, sigmoide și ratură. Există o mașină de stare pentru procesoarele neuronale, una pentru procesoarele de actualizare a ponderilor, una pentru unitățile sigmoide și una pentru interfața externă. Aceste mașini sunt supuse tehnicii de pipeline pentru a echivala întârzierea unui sumator 4:2. În unele cazuri ecuațiile de stare au fost prea complexe și au fost împărțite în 2 cicluri.

5.5.14 Inerfața externă

Neurochip-ul comunică cu exteriorul prontr-o magstrală externă de intrare/ieșire(I/O). Această magistrală este alcătuită din 16 linii de adrese 23 linii de date și 3 linii de control: citire/scriere, selectare_chip și confiramare. Cele 23 linii de date permit transerul a 4 semnale de acivare de 5 biți sau o valoare de 8 biți în fiecare tranzacție pe magistrală.

Pentru a citi din chip, se plasează pe magistrala de adrese o adresă și se activează citire și selectare_chip. Interfața aduce adresa și datele într-un ciclu, urmând selectare_chip și activează confirmare. Operația de scriere se execută intern în timp ce interfața așteaptă deactivarea semnalului selectare_chip. Utilizatorul ar putea cere o nouă scriere înainte ca scrierea curentă să fie terminată o dată la 2 cicluri.

Transferul de date se efectuează sub controlul semnalelor selectare_chip și confirmare, cu clock-ul chip-ului fiind decuplat de exterior. Dar există și posibilitatea ca clock-urile să fie sincronizate pot si executate 90 milioane de tranzacții pe senundă. Aceasta furnizează un model de 360 miloane activări pe secundă.

5.5.15 Rețele multichip

Neurochip-ul este proiectat astfe încât să poată fi conectat într-un șir regulat pentru a forma rețele multichip sub forma unei matrici. Unitățile sigmoide vor fi deactivate, cu excepția celor de pe diagonala principală a matricii. Semnalele de activare sunt acumulate parțial în fiecare chip din matrice și apoi șiftate vertical spre diagonala principală. Sigmoidele sunt calculate pe diagonala principală și apoi semnalele de activare rezultate sunt șiftate vertical și orizontal pentru a face xi și xj disponibile în actualizarea wij. Fiecare neurochip are 4 intrări și 4 ieșiri.

5.5.16 Testabilitate

Fiecare registru de pe chip este mapat în memorie și poate fi supus unei citiri sau scrieri prin magistrala I/O. Aceasta permite izolarea unor subsiteme individuale care pot fi testate independent. Magistrala I/O este conectată la chip prin magistrala de activare și cea de diagnosticare. Capacitatea magistralei de diagnosticare este mare dar rata de date este doar de câteva milioane de cuvinte pentru o aplicație tipică.

6 Aplicații ale neurochip-ului

Domeniul de aplicații al neurochip-ului este foarte mare, datorită diferitelor posibilități de implementare a acestuia și a algoritmilor folosiți în programarea sa. Cu toate că nu respectă specificațiile consacrate de proiectare a unui chip el poate realiza acealeși funcții ca și un procesor normal, în unele cazuri chiar cu o viteză mai mare. Dar pe lângă aceasta el poate fi folosit în alicații specifice în care un procesor normal nu ar putea face față. Neurochip-ul este proiectat ca urmare a paradigmei neuronale, el nerespectând paradigma Von Neumann, cu toate acestea Turring a demonstrat că ambele paradigme pot calcula orice funcție însă cu unele compromisuri (de viteză, putere de calcul, etc)

6.1 Legarea neurochip-ului la creierul animalelor

Neurobiologii examinează activitățile celulelor nervoase legate la impulsuri senzoriale, procese integrate și ieșiri motoare pentru a înțelege comportarea și inteligența animalelor. Pentru a expora în detaliu aceste circuite bologice, neurobiologii folosesc 2 clase de electrozi pentru a înregistra și a simula semnale electrice în țesuturi:

Micropipete intracelulare, pentru a străpunge sau a pansa celulele, pentru interogarea funcționării interoare a celulei

Cabluri extracelulare sau micromațini-sonde pentru observarea semnalării dintre celulele nuronale sau a activității electrice din mușchi.

Soluționarea acestei probleme stă în proiectarea unui echipament atât de mic care

să poată fi implantat în sau pe animal folosind materiale și tehnici de implementare care să nu dăuneze nici animalului dar nici procesorului.Sunt folosite elemnte ca:

Sonde miniaturizate de silicon MEMS care să înregistreze din interiorul celulelor nervoase

Capsule biocompatibile care să protejeze aceste sonde de scurgerile de proteine

Un microcalculator independent care să înregistreze și să stimuleze neuronii, căile senzoriale, căile motorii dintr-un animal viu

Pregătire și tehnici neuropsihologice pentru implementarea microchip-ului și a sondelor MEMS în sau pe animal asfel încât să nu rănească țesutul dar nici aparatura

Circuite care să execute experimente biologiice în timp real cu computer implantat, folosind modele analitice ale biologiei corespunzătoare

Software care să studieze și să interpreteze rezultatul experimentelor

Neurochip-ul folosește amplificatoare pentru a mări voltajul mic al semnalelor

bologice, convertoare analogic-digitale , microprocesoare pentru a evalua semnalele, memorie internă pentru stocarea semnalului, convertoare digital-analogice pentru stimularea nervilor și programe soft pentru controlul experimentului.

Diagrama bloc a neurochip-ului. Marcajul cu linii întrerupte reperezintă componente opționale.

Prototipuri de neurochip

(a,b)- neurochip din prima generație atașat pe molia Manduca. Scheletul animalului permite conectarea într-un singur punct fără probleme de biocompabilitate.

(c)- o înregistrare a zborului din perspectiva musculaturii toracice

(d)- neurochip de a doua generație care înregistrează din 2 țesuturi musculare sau nervoase și înregistrează pe o memorie nevolatilă.

Părțile esențiale ale neurochip-ului sunt disponibile: amplificatoare instrumentale, ADCs/DACs, microprocesoare reconfigurabile, memorii de mare densitate. Neurochip-urile din prima generație integrează unul sau mai multe ICs, elemnte pasive, baterii și pad-uri mci de intrare/ieșire.

Pe lângă celelate probleme încă nerezolvate în întregime: realizarea sondelor, a învelișului biocompatibil, sursa de curent, una din cele mai importante este problema stocării datelor. Odată implantat, neurochip-ul trebuie să citească procedura de funcționare din propria memorie, să execute experimentul, să primească datele pe care trebuie să le stocheze în memorie. Din fericire semanlele generate de țesutul nervos au forme stereotipizate, ceea ce duce la comprimarea semnalelor care apoi vor fi stocate în memorie. Cu aceasta sunt rezolvate 2 probleme:mărirea capacității de stocare, micșorează puterea consumată deoarece scade frecvența de scrieri în memorie.

Cu toate că mai există multe probleme în realizarea acestor neurochip-uri, există mari speranțe că implemntarea lor și funcționarea corectă a lor va fi de mare ajutor în multe domenii de aplicații.

Biologie integrativă folosind neurochip-uri.

Neurochip-urile pot străpunge căile neuromusculare penmtru a dezvălui

circuitele biologice

6.2 Sistemul Neurochip-biosenzor (NBS)

Acest sistem presupune inegrarea tehnologiei avansate (neurochip-ul) pentru a monitoriza mediile contaminate și detectarea amenințărilor bio-chimice. Acest sistem dezvoltat de QBM Cell Science și Neurochip Consortium și este folosit non-stop pentru detecția amenințărilor agrochimice, industriale și bioterorismului. Proprietățile esențiale ale acestui sistem sunt:

Asigură detecția cu o mare acuratețe a unei mari varietăți a efectelor toxice

Asigură conservarea criogenetică a celulelor neuronale primare în decursul timpului

Folosind neuronii se facilitează detecția de substanțe toxice nespecifice și efecte subtile ale toxinelor

Funțiile neuronale sunt calculate în timp real pentru a putea fi integrate și analizate

Poate fi configurat pentru luarea de date din funția throw away sterilă sau analiza statică în laboratoare a funcției flow-through

Detecția rapidă a materialelor toxice poate fi urmată de identificarea

compoziției toxice sau chimice utilizând tehnologia de analiză

biochimică și suprapunerea imaginilor obținute

Rețele neuronale sunt promițătoare în evaluarea disfuncționării rețelelor în vitro. Răspunsul rețelelor la agenți farmaceutici au fost investigate în culturile de șoareci pentru șira spinării și neuronii corticali.

6.3 Folsirea neurochip-ului în stimularea și evaluarea culturilor de neuroni

Neurochip-ul este un dispozitiv realizat pe silicon și pe suprafața căruia există culturi de neuroni care pot fi monitorizați și stimulați individual. Neurochip-ul este bazat pe o matrice 4×4 electrozi, fiecare dintre acestea fiind prevăzute cu o cușcă proiectată astfel încât să poată conține corpul unei celule mature dar să permită creșterea normală a proceselor neuronale. Neurochip-ul prezintă 16 sonde neuronale distanțate la 100μm.

S-a demonstart că această celulă este capabilă să mențină celula în viață și că electrozii pot stimula și înregistra activitățile elctrice la nivel de individ.

Dinamica interacțiunilor sinaptice în decursul timpului este considerată cheia în înțelegerea funcționării creierului. Acum este posibil studiul in vitro a plasticității sinaptice datorită culturilor de celule, care oferă anumitor tipuri de neuroni să fie extrași din animalr și să fie crescute în medii biochimice similare cu cele din care au fost preluate pentru diferite perioade de timp (până la câteva luni).

Membrana de silicon ce susține structura neurochip-ului este de dimensiuni: 9mm-lungime; 3mm-lățime; 20μm-grosime. Adâncimea sondelor și grosimea membranei sunt alese astfel încât să simuleze zona ganglinoră cervicală a unui șobolan (15μm în diametru).

Vor fi prezentate fără a intra în amănunte compoziția neurochip-ului folsit în aceasă aplicație dar și unele rezultate obținute în urma experimentelor.

Experimente

Primul pas este implantarea unui neuron în cușca sondei, după care acesta crește în dimensiune, umple cușca și se relizează o legătură strânsă cu parte inferioară de aur a electrodului, iar apoi își mărește procesul în afara sondei. Funcția grilajului este de a păstra neuronul închis în sondă. Rata de supraviețuire a neuronilor este de 75%, iar aceast demonstrează biocompatibilitatea neurochip-ului și mărește speranța de a experimenta pe culturile de neuroni în acest context. În continuare sunt prezentate rezultate al monitorizării culturilor de neuroni în neurochip-ul prezentat.

Înregistrări din acțiunile spontane din sondele neurochip-ului. Sunt prezentate 5 linii dintr-o singură sondă după 15 zile.

Trei înregistrări din sonde de culturi diferite de neuroni. O celulă din cadrul unei sonde a fost stimulată cu un impuls de 1M kCI de lungime variabilă. Celelate 2 semnale provin de la celule stimulate cu un implus de 7ms.

6.4 Neurochip mutiparametric

Substanțele biochimice sunt foarte ușor de detectat și procesat de către celulele vii, fie pentru a oferi energie fie pentru a declanșa un diferit răspuns al celulei. Aria de activitate a neurochip-ului prezentat în acest paragraf este aprozimativ o combinație a paragrafelor 6.3 și 6.2, motiv pentru care nu va mai fi prezentată pe larg. Vor fi prezentate doar elementele noi sau cele care diferă de cele prezentate anterior.

Cultura de celule se realizează pe un canal al neurochip-ului, format dintr-o componentă policarbonică CNC, folosită pentru încapsulare. Aceasta a fost lipită pe chip senzorial în canalul IC de ceramică cu un start subțire de silicon biocompatibil. Suprafața de cultură este mai mică de 15 mm2 și are un volum de 10μl. Ca translatoare pentru neurochip au fost folosiți electrozi de paladiniu împreună cu tranzistoare cu efect de pămânatre.

Neurochip montat pe o suprafață de ceramică cu 40 pini

Au fost testate diferite sisteme de măsurare pentru analiza activității electrice a culturilor de celule active electric, folosind tehnici standardizate. Au fost recoltate țesuturi corticale și spinale din embrioni de șoareci de 14-17 zile. Acestea au fost plantate pe neurochip. Culturile au fost păstrate la 370C într-o atmosferă de 90% aer și 10% CO2. Rețeaua s-a dezvoltat spontat în decursul unei săptămâni și s-a stabilizat după 3 săptămâni. Parametrii neurochip-ului au fost optimizați în urama testelor efectuate în diverse medii.

Cultura de neuroni după 30 zile pe suprafața neurochip-ului

Cele 2 grafice prezină înregistrări extracelulare dintr-o sondă și reprezintă aprozimativ 100 de semnale suprapuse.

Experimentul a fost reușit din punctul de vedere al inegrării senzorului de măsurare al parametrilor metabolici și bioelectrici, al electronicii FET, preamlificatoarelor și multiplexoarelor pe chip, dar și datorită ratei mari de supraviețuire a celulelor 85% și a monitorizării destul de precise a activității acestora.

6.5 Neurochip cu operanzi de lungime variabilă

Aceasta face să crească eficiența odată cu micșorarea lungimii operanzilor, astfel se permite obținerea unei relații optime precizie/eficiență. Principiile marite in dezvoltarea neurochip-ului:

Trebuie sa fie programabil si sa contina blocuri implementate in mod special pentru calcule neuronale;

Trebuie sa ofere posibilitatea de a efectua calcul pentru valori ale iesirii atat de mari cat ofera reteaua neuronala intr-un singur ciclu de clock;

Trebuie sa suporte intrari si ponderi de lungime variabila (intre 1 si 64 biti);

Trebuie sa ofere o complexa calculare paralela pentru orice nod din system;

Trebuie sa aiba un set de instructiuni versatile capabile sa suporte functii ce apartin unor limbaje de programare de nivel inalt. Orice instructiune (cu exceptia load/unload) trebuie sa fie executate intr-un ciclu de clock.

Neurochip-ul conține:

Procesor de vectori, care permite ca rețelele neuronale să accepte baze de date care conțin date reprezentate ca vectori cu elemente de lungimi variabile. Principalul bloc este Unitatea Operațională (OU);

Procesor de scalare, folosit pentru calcularea adresei instrucțiunilor, controlul secțiunii sale, calcularea adresei operanzilor și a coeficienților ponderilor când lucrează cu memoria, dar și să suporte operații de scalare pe date;

Două interfețe programabile identice cu magsitrale locale și globale (64 biți) care pot fi utilizate de 2 memorii externe (SRAM sau DRAM);

Două porturi de comunicare cu coprocesoare DMA care suprotă accese la memorie când folosesc legăturile duplex dintre biți (Link0 și Link1) prin intermediul porturilor de comunicare (Port0 și Port1), care lucrează în fundal;

Unitățile de control realizează controlul general, arbitrează folosirea memorie externe și suportă 8 întreruperi (una externă și 7 interne).

Nurochip-ul folosește mătoarele magistrale:

Magistrala de instrucțiuni – lățime de 32 biți pentru aducerea instrucțiunilor din memorie

Magistrala de adresă a instrucțiunilor – 32 biți

Magistrala de date 1 și 2 – 64 biți fiecare pentru lucrurl cu operanzii și încărcarea coficienților ponderilor în procesorul de vectori

Magistrala de adrese de date 1 și 2 – 32 biți fiecare

Magistrala DMA – 64 biți

Magistrala de adrese DMA – 32 biți

Pricipalele registre folosite în neurochip (pe 32 biți):

8 registre de adrese AR0-AR7 – folosite pentru accesul la memorie

8 registre generale GR0-GR7 – pentru reținerea datelor citite din memorie și a rezultatelor intermediare

Registrul PC (contor de program) – folosit pentru determinarea adresei următoarei instrucțiuni care trebuie executată

Registrul PSWR (registrul de stare al programului) – deține informații cu privire la starea curentă a procesorului și măștile de întrerupere

2 registre pe 64 biți pentru pointarea lungimii sinapselor și ponderilor

7 Concluzii

În primul rând trebuie avut în vedere faptul că implementarea unui neurochip este o urmarea a noii paradigme și anume cea neuronală, apărută mult mai recent, și diferită în din majoritatea punctelor de vedere decât paradigma simbolistică (paradigma von Neumann). Dacă paradigma simbolistică presupunea simbolizarea tuturor elemntelor componente ale unui procesor pentru a putea citi sau evalua informația în orice moment al execuției unui proces, în cazul paradigmei neuronale nu putem cunoaște cu exactitate unde de unde putem să scoatem un anumit rezultat parțial sau în ce stadiu de calcul este. Unitățile realizate ca urmare a acestei paradigme sunt asemănătoare unor black-box-uri, unde aplicăm valori la intrare și obținem rezultatele la ieșire.

Arhitectura neurochip-ului este specifică pentru rezolvarea unor clase specifice de alicații cum ar fi: matrice la matrice (foarte eficient rezolvate), vector la matrice (nu folosesc întregul potențial al neurochip-ului), vector la vector (comparabile în eficiență cu alte procesoare).

Neurochip-ul poate fi folosit ca element pentru implementarea neuro-acceleratoarelor pentru PC-uri, sisteme neuro-computer, support hardware pentru operații matriciale de orice mărime și procesare de semnale digitale. Posibilitatea de a procesa variația lungimii operanzilor oferă posibilitatea de a creste eficiența prin micșorarea lungimii operanzilor și astfel să realizeze o relație optimă între precizie și eficiență. Neurochip-ul poate fi folosit ca un sistem de sine stătător datorită setului de instructiuni de care dispune, adreselor aritmetice puternice, porturi de comunicare rapida compatibile cu procesoarele cunoscute și interfeței programabile.

O implementare CMOS a neurochip-ului de tipul unuei rețele feedforward asigură actualizarea ponderilor pe chip în paralel pentru controlul în timp real a anumitor aplicații. Experimentele au demonstrat folosirea cu succes a acestui chip pentru controlul în timp real a unor aplicații. În viitor se prevede folosirea unor regului de ănvățare adaptabile pas cu pas proporțional cu semnalul de eroare și stocarea nevolatilă a ponderilor.

Folosirea de către neurobiologi a neurochip-urilor le oferă acestora o serie de date despre coporatarea și funcționarea celulelor vii. Rolul neurochip-ului este de a oferi hardware-ul și software-ul necesar neurobiologilor pentru a experimenta prin intermediul animalelor: a le stimula pentru a obține anumite rezultate, culegerea rezultatelor pe neurochip și apoi culegerea lor de pe acesta și concluzionarea experimentului. Folosirea neurochip-ului în diverse experimente a demonstrat biocompatibilitatea neurochip-ului și mărește speranța de a experimenta pe culturile de neuroni în acest context.Neurochip-ul de astăzi poate deveni sistemele embedded de mâine, iar prin embedded se înțelege aici implantarea procesoarelor electronice în țesutul nervos. Scopul acestor experimente este înțelegerea comportamentului natural al ființelor.

Implmentarea VLSI poate fi foarte eficientă pentru arhitecturile rețelelor neuronale. Principala tehnică folosită este multiplexarea timpului pentru resurse mult mai rapide pentru a compensa densitatea mică de componente disponibile în VLSI. Se speră egalarea lărgimii de bandă pentru decizii și comunicații ca și sistemele biologice, dar nu fa vi capabil să egalizeze densitatea de conexiuni sinaptice fără o inovare în tehnologie sau în codificarea informațiilor.

Unele dintre proprietățile esențiale ale neurochip-ului sunt caracterul său adaptiv, faptul că poate să-și stabilească parametrii de funcționare printr-un proces de invățare bazat pe informațiile primite. Astfel de sisteme sunt adecvate pentru problemele ce sunt dificil sau chiar imposibil de formalizat pentru ele existând doar exemple de rezolvare. O altă caracteristică esențială este paralelismul înlt de care dispune, el fiind capabil de calcule masive folosind un minim de resurse.

Cu toate că mai există multe probleme în realizarea acestor neurochip-uri, există mari speranțe că implemntarea lor și funcționarea corectă va fi de mare ajutor în multe domenii de aplicații.

Bibliografie :

[1] Marius Crisan – notite curs SIA, 2005

[2] Daniela Zaharie – Curs “Retele Neuronale”, 2003

[3] Ben J. A. Krose, P. Patrick van der Smagt – “An introduction to Neural Networks”,1994

[4] *** www.module.ru/files/art-pribor0796-e.pdf

[5] *** www.stanford.edu/class/ee392c/handouts/apps/ai_long.pdf

[6] *** ailab.das.ucdavis.edu/~yihua/research/NNhardware.pdf

[7] *** mikro.ee.tu-berlin.de/~spinnsoc/pdf/ijcnn00.pdf

[8] *** http://citeseer.ist.psu.edu/cache/papers/cs/1121/http:zSzzSznova.stanford.eduzSz~

burrzSzpszSzwojtek91.pdf/burr91digital.pdf

Bibliografie :

[1] Marius Crisan – notite curs SIA, 2005

[2] Daniela Zaharie – Curs “Retele Neuronale”, 2003

[3] Ben J. A. Krose, P. Patrick van der Smagt – “An introduction to Neural Networks”,1994

[4] *** www.module.ru/files/art-pribor0796-e.pdf

[5] *** www.stanford.edu/class/ee392c/handouts/apps/ai_long.pdf

[6] *** ailab.das.ucdavis.edu/~yihua/research/NNhardware.pdf

[7] *** mikro.ee.tu-berlin.de/~spinnsoc/pdf/ijcnn00.pdf

[8] *** http://citeseer.ist.psu.edu/cache/papers/cs/1121/http:zSzzSznova.stanford.eduzSz~

burrzSzpszSzwojtek91.pdf/burr91digital.pdf

Similar Posts