Inteligenta-Artificiala-Retele Neuronale-Aplicatii Python
Inteligenta-Artificiala-Retele Neuronale-Aplicatii Python
Inteligenta-Artificiala-Retele Neuronale-Aplicatii Python
Adina COCU
INTELIGENȚĂ ARTIFICIALĂ
REȚELE NEURONALE
APLICAȚII PYTHON
ISBN 978-973-627-648-4
EDITURA FUNDAŢIEI UNIVERSITARE
„Dunărea de Jos” – GALAŢI – 2021
Mihaela MIRON
Adina COCU
INTELIGENȚĂ ARTIFICIAL Ă
REȚELE NEURONALE
APLICAȚII PYTHON
Referent științific:
Prof. univ. dr. ing. Sergiu CARAMAN
CUPRINS
1. Introducere ................................................................................................................................................... 7
1.1 Inteligență Artificială ............................................................................................................................... 7
2. Aspecte teoretice .......................................................................................................................................... 9
2.1 Rețele neuronale ..................................................................................................................................... 9
2.2 Utilizarea rețelelor neuronale ............................................................................................................... 10
2.3 Caracteristicile rețelelor neuronale ...................................................................................................... 11
2.3.1 Funcții de activare .......................................................................................................................... 11
2.3.2 Funcția loss..................................................................................................................................... 12
2.3.3 Algoritmul de optimizare ............................................................................................................... 12
2.3.4 Funcția de cost ............................................................................................................................... 13
2.3.5 Acuratețea...................................................................................................................................... 13
2.3.6 Rata de învățare ............................................................................................................................. 13
2.3.7 Numărul de epoci ........................................................................................................................... 13
2.4 Tipuri de rețele neuronale .................................................................................................................... 14
2.4.1 Perceptronul cu un singur strat (unistrat) ...................................................................................... 14
2.4.2 Perceptronul multistrat.................................................................................................................. 15
2.4.3 Rețele neuronale feedforward ....................................................................................................... 15
2.4.4 Rețele neuronale convoluționale (CNN) ........................................................................................ 17
2.5 Preprocesarea datelor........................................................................................................................... 20
2.5.1. Baze de date publice în domeniul Machine Learning (ML) ........................................................... 20
2.6 Python ................................................................................................................................................... 21
3. Exemple....................................................................................................................................................... 23
3.1 Prelucrarea datelor în limbajul Python ................................................................................................. 23
3.1.1 Obiective și Premise teoretice ....................................................................................................... 23
3.1.2 Funcții Python de manipulare a datelor ......................................................................................... 23
3.2 Rețea neuronală perceptron ................................................................................................................. 28
3.2.1 Obiective și Premise teoretice ....................................................................................................... 28
3.2.2 Librăriile Keras, TensorFlow, PyTorch ............................................................................................ 28
3.2.3 Aproximarea funcției XOR .............................................................................................................. 28
3.2.4 Aproximarea unei funcții liniare..................................................................................................... 31
3.3 Preprocesarea datelor din fișiere .......................................................................................................... 34
3.3.1 Obiective și Premise teoretice ....................................................................................................... 34
3.3.2 Preprocesarea datelor numerice ................................................................................................... 34
3.3.3 Preprocesarea imaginilor ............................................................................................................... 36
3.4 Rețeaua neuronală perceptron multistrat (MLP).................................................................................. 40
5
INTELIGENȚĂ ARTIFICIALĂ - REȚELE NEURONALE
6
INTELIGENȚĂ ARTIFICIALĂ - REȚELE NEURONALE
1. INTRODUCERE
1.1 INTELIGENȚĂ ARTIFICIALĂ
Inteligența artificială (engleză, Artificial Intelligence) este un domeniul din știința calculatoarelor care are ca
obiectiv crearea de aplicații și dispozitive cu un comportament pe care oamenii îl consideră inteligent. Inteligența
se referă la capacitatea de a rezolva probleme din lumea reală prin înțelegerea și folosirea experiențelor
anterioare, prin învățarea, adaptarea sau prelucrarea unor situații noi, utilizând cunoștințe pentru a manipula
mediul și raționament pentru a lua decizii, folosind criterii obiective. La momentul actual nu există o definiție
absolută a inteligenței, care să nu facă trimitere la inteligența ființelor umane. În plus, la nivelul biologiei umane
nu sunt încă explicate pe deplin toate mecanismele prin care ființele umane își manifestă inteligența.
Sistemele de inteligență artificială folosesc teorii și metode din mai multe domenii, cum ar fi matematică,
știința calculatoarelor, biologie, psihologie. În general aceste sisteme implică folosirea calculatorului pentru
înțelegerea și simularea inteligenței umane, dar nu se limitează doar la aspectele biologice observabile. Pentru
dezvoltarea acestor sisteme, s-a pornit de la ideea că atât creierul uman, cât și sistemele informatice folosesc o
formă de reprezentare internă pentru a abstractiza cunoștințele din lumea reală, asupra căreia realizează
operații de prelucrare sub forma unor raționamente, cum ar fi memorare, inducții, deducții, sinteză, clasificare,
căutare.
Informații/senzori
Cunoștințe
Sisteme de
Lumea inteligență
reală artificială
Raționament
Acțiuni/decizii
Pentru a putea fi reprezentate intern, cunoștințele (engleză, knowledge) sunt preluate din lumea reală:
• Direct sau indirect de la ființele umane - sunt de obicei subiective, fiind obținute prin învățare și din
experiențe;
• De la senzori - sunt, de cele mai multe ori, incerte, incomplete, imperfecte, combinate (este nevoie de
clasificare, descompunere, discretizare).
• O înlănțuire ordonată de judecăți prin care se obțin cunoștințe noi sau o concluzie;
• O serie logică de considerații care sunt folosite la înțelegerea și explicarea unui fapt pornind de la o listă
de argumente;
• O succesiune de operații de prelucrare prin care se obțin cunoștințe noi pornind de la cunoștințe date.
7
INTELIGENȚĂ ARTIFICIALĂ - REȚELE NEURONALE
Fiecare dintre aceste două mari abordări este caracteristică unui anumit tip de probleme și excelează în
cazuri în care cealaltă abordare eșuează.
Enumerăm în continuare o parte din subdomeniile inteligenței artificiale bazate pe una din cele două
abordări:
8
INTELIGENȚĂ ARTIFICIALĂ - REȚELE NEURONALE
2. ASPECTE TEORETICE
2.1 REȚELE NEURONALE
Fac parte din subdomeniul de învățare mașină din inteligența artificială și sunt inspirate din modul de
alcătuire și funcționare al creierului. Sunt alcătuite din unități primitive numite neuroni, organizați pe mai multe
straturi, între care există legături (conexiuni). Principiul de bază al raționamentului este activarea neuronilor
între ei folosind modele de activare peste legături, similar cu mecanismul de stimulare prin sinapse al neuronilor
creierului uman. Arhitecturile actuale de rețele neuronale nu imită îndeaproape modelul biologic, mai mult
realizează o procesare paralelă distribuită.
Rețelele neuronale învață/găsesc un model plecând de la seturi mari de date cu scopul de a face o predicție.
O rețea este alcătuită din neuroni, organizați pe straturi, conectați între ei prin legături/conexiuni orientate
și ponderate. Fiecare rețea are cel puțin un strat de intrare, cel puțin un strat de ieșire și zero sau mai multe
straturi ascunse. Asemănător cu funcționarea neuronilor biologici, în rețelele neuronale fiecare neuron primește
o intrare, calculată din ieșirile neuronilor anteriori ponderate cu valorile fiecărei conexiuni, apoi fiecare neuron
folosește condiția de activare pentru a calcula ieșirea, care este transmisă următorului strat.
in1 w1
s b f out
∑
prag funcție de
inn wn activare
intrări ponderi ieșire
Fig. 2.1 Structura unui neuron
Ieșirea unui neuron (notată cu out) se calculează din funcția de activare (notată cu f) care primește ca
argument suma ieșirilor (notate cu in) neuronilor precedenți înmulțiti cu ponderile legăturilor (notate cu w)
dintre neuronii precedenți și neuronul curent, din care se adună pragul (notat cu b). Pragul (engleză, bias,
threshold) determină locul de pe graficul funcției de activare unde aceasta are cea mai rapidă ascensiune.
Funcția de activare poate avea mai multe forme (liniară, sigmoid, tangentă hiperbolică, ReLu). Pentru fiecare tip
de rețea se folosește anumite tipuri de funcții de activare. Conexiunile dintre neuroni au atribuite ponderi
(notate cu w), care exprimă influența asupra următorului neuron. Dacă ponderea este negativă, atunci
conexiunea este de inhibare deoarece va scade activitatea următorului neuron. Dacă este pozitivă, atunci
conexiunea este de excitare, deoarece crește activitatea neuronului următor. Suma ponderată a intrărilor unui
neuron se numește suma netă.
9
INTELIGENȚĂ ARTIFICIALĂ - REȚELE NEURONALE
În funcție de tipul problemei, proiectarea unei rețele neuronale artificiale este determinată de:
Exemple de domenii în care sunt utilizate rețelele neuronale: aproximarea funcțiilor, clasificarea obiectelor,
recunoașterea de forme cu aplicații în securitate, medicale, transporturi (recunoașterea obiectelor din imagini,
recunoașterea vorbirii, recunoașterea facială), prelucrarea limbajului natural (clasificarea și analiza semantică a
unui text, text-to-speech, traducere automată, generare automată de text, verificarea greșelilor în text),
prelucrarea imaginilor, procesarea seturilor mari de date (comprimare, filtrare, clusterizare), controlul numeric
al roboților, luarea deciziilor, computer vision, detectarea erorilor, evaluarea riscurilor bancare și de asigurări,
predicții dinamice (vreme, financiar, medical), evaluarea riscurilor (financiar-bancar, securitate, transporturi),
etc.
În ultimul timp, din ce în ce mai mulți programatori preferă utilizarea limbajul Python pentru a implementa
o rețea neuronală de la zero. Avantajele folosirii unui limbaj de programare sunt legate de posibilitatea de a
testa codul pe parcursul implementării, disponibilitatea librăriilor cu funcții și algoritmi dedicați dezvoltării de
rețele neuronale, portabilitatea programelor dezvoltate, accesul la o comunitate de programatori destul de
mare.
10
INTELIGENȚĂ ARTIFICIALĂ - REȚELE NEURONALE
• Funcția Liniară
𝑓(𝑖𝑛𝑝𝑢𝑡) = 𝑖𝑛𝑝𝑢𝑡
• Funcția Sigmoid
1
𝑓(𝑖𝑛𝑝𝑢𝑡) = 𝑠𝑖𝑔𝑚(𝑖𝑛𝑝𝑢𝑡) =
1 + exp(−𝑖𝑛𝑝𝑢𝑡)
Funcția tanh poate lua valori între -1 și 1 având un prag de decizie cu valoarea 0.
exp(𝑖𝑛𝑝𝑢𝑡) − exp(−𝑖𝑛𝑝𝑢𝑡)
𝑓(𝑖𝑛𝑝𝑢𝑡) = tanh(𝑖𝑛𝑝𝑢𝑡) =
exp(𝑖𝑛𝑝𝑢𝑡) + exp(−𝑖𝑛𝑝𝑢𝑡)
• Funcția Softmax
Este folosită în probleme de predicție ce implică multe-clase. Această funcție determină probabilitatea
de apartenență a intrării la fiecare clasă, clasa țintă având cea mai mare probabilitate.
exp(𝑖𝑛𝑝𝑢𝑡𝑖 )
𝑓(𝑖𝑛𝑝𝑢𝑡) =
∑𝑘𝑗 exp(𝑖𝑛𝑝𝑢𝑡𝑗 )
Este cea mai utilizată funcție de activare în aplicațiile cu rețele neuronale. În comparație cu funcția
softmax, aceasta obține rezultate bune în ceea ce privește performanța și gradul de generalizare al
rețelei.
11
INTELIGENȚĂ ARTIFICIALĂ - REȚELE NEURONALE
• Cross-entropy (logarithmic loss) - utilizată în probleme de clasificare binară (un nod cu funcția de
activare sigmoid), clasificare cu mai mult de două clase (un nod pentru fiecare clasă cu funcția de
activare softmax);
• MSE - Mean squared error - utilizată în probleme de regresie (un nod la ieșire cu funcția de activare
liniară). Se calculează ca media pătratelor diferențelor dintre valoarea estimată și cea așteptată.
Fiecare probabilitate estimată este comparată cu valoarea reală de ieșire a clasei (0 sau 1) și se
calculează un scor care penalizează probabilitatea pe baza distanței față de valoarea așteptată.
Funcția este logaritmică, oferind un scor mic pentru diferențe mici (0,1 sau 0,2) și scor mare pentru o
diferențe mari (0,9 sau 1,0).
• Stochastic Gradient Descent (SGD) - recalculează iterativ ponderile pentru a optimiza funcția loss pe
baza datelor de antrenare. Este lent, dar poate obține rezultate bune la curba de convergență într-un
timp mai îndelungat.
• Adam - Adam (engleză, Adaptive Moment Estimation) se folosește ca alternativă la SGD pentru a
recalcula iterativ ponderile pe baza datelor de antrenare. Avantajele acestui algoritm sunt viteza și
descreșterea rapidă a curbei de convergență. Dezavantajele sunt date de faptul că are nevoie de
resurse computaționale mari și în probleme de generalizare obține rezultate mai slabe decât SGD.
Pentru fiecare dintre acești algoritmi de optimizare se pot seta mai mulți parametri, dar, de obicei, parametrii
impliciți duc la obținerea unor rezultate bune.
12
INTELIGENȚĂ ARTIFICIALĂ - REȚELE NEURONALE
Tipuri de funcții cost folosite în probleme de predicție: mean error (ME), mean squared error (MSE), mean
absolute error (MAE), root mean squared error (RMSE), BinaryCrossentropy, CategoricalCrossentropy,
SparseCategoricalCrossentropy.
2.3.5 ACURATEȚEA
Este o funcție care măsoară procentul de estimări corecte obținute în etapa de antrenare sau validare a
modelului neuronal.
O rată de învățare prea mare poate face ca modelul să conveargă prea repede la o soluție suboptimală, în
timp ce o rată de învățare prea mică poate cauza blocarea procesului.
13
INTELIGENȚĂ ARTIFICIALĂ - REȚELE NEURONALE
Perceptronul din figura 2.2, are n intrări: 𝑖𝑛1 , 𝑖𝑛2 , … , 𝑖𝑛𝑛 (intrări sub forma de vectori) și n ponderi: :
𝑤1 , 𝑤2 , … , 𝑤𝑛 .
𝑛
𝑛𝑒𝑡 = ∑ 𝑤𝑖 𝑖𝑛𝑖 = 𝑤 𝑇 𝑖𝑛
𝑖=1
𝑤1
𝑤 2
unde 𝑤 𝑇 = [ ]
⋮
𝑤𝑛
𝑛𝑒𝑡 = ∑ 𝑤𝑖 𝑖𝑛𝑖 + 𝑏 = 𝑤 𝑇 𝑖𝑛 + 𝑏
𝑖=1
Rețelele de tip perceptron sunt utilizate pentru clasificare binară cu învățare supervizată.
14
INTELIGENȚĂ ARTIFICIALĂ - REȚELE NEURONALE
Cu ajutorul rețelelor neuronale multistrat (MLP) se pot rezolva probleme de asociere ce implică:
aproximare/modelare, clasificare și predicție.
Ca arhitectură, aceste tipuri de rețele neuronale au un strat de intrare (engleză, input layer) prin care
neuronii primesc semnale din exterior, unul sau mai multe straturi ascunse (engleză, hidden layers) și un strat
de ieșire (engleză, output layer). Numărul neuronilor din stratul de intrare și de ieșire sunt stabiliți de specificul
problemei, pe când cei din stratul ascuns se determină experimental prin intermediul simulărilor.
O caracteristică importantă a rețelelor neuronale o reprezintă capacitatea de a învăța din exemple și de a-și
îmbunătăți performantele în timp. Procesul de antrenare este ghidat de eroarea de adaptare (diferența dintre
ieșirea estimata de rețea (𝑦̂𝑛𝑛 ) și ieșirea dorită (𝑦)) care se propagă înapoi în rețea (de la ieșirea rețelei către
intrare) și pe baza căreia se ajustează valorile ponderilor rețelei (engleză, weights: 𝑤 ). Astfel, eroarea de
adaptare ajută la creșterea performanței de estimare a rețelei neuronale și se mai numește și pasul forward al
procesului de antrenare. Se calculează cu formula de mai jos:
15
INTELIGENȚĂ ARTIFICIALĂ - REȚELE NEURONALE
𝑒𝑟𝑟𝑘 = 𝑦̂
𝑛𝑛 𝑘 − 𝑦𝑘
- Supervizată (engleză, Supervised Learning): atunci când pentru datele problemei se cunosc clasele
(engleză, labels). De obicei este folosită în aplicații de clasificare și regresie (predicția unei valori
continue pe baza unei intrări oarecare). De exemplu pentru rețelele FeedForward [2]: algoritmul LMS
(Least Mean Square), clasa de algoritmi backpropagation (cu propagarea inversă a erorii), cuantizarea
vectorială cu învățare (LVQ) etc.
- Semi-supervizată (engleză, Half Supervised Learning): atunci când doar pentru o parte din datele
problemei se cunosc etichetele.
- Nesupervizată (engleză, Unsupervised Learning): datele problemei nu au asignate clase. Acest tip de
antrenare se folosește în aplicații de grupare a datelor după caracteristici comune sau tipare (probleme
de clustering). De exemplu pentru rețele FeedForward: counter-propagation.
În tabelul de mai jos, se poate observa o paralelă între tipurile de rețele neuronale în funcție de nivelul de
complexitate:
16
INTELIGENȚĂ ARTIFICIALĂ - REȚELE NEURONALE
OBSERVAȚIE! în cazul în care se lucrează cu baze de date dimensiuni mari (imagini) o practică obișnuită o
reprezintă stocarea de informații, cum ar fi calea către imagini și etichetele, în fișiere (de exemplu, fișiere CSV -
comma separated values). Astfel că atunci când este necesar un subset (engleză, batch) de imagini, se selectează
doar anumite imagini reprezentative scopului aplicației care sunt încărcate în memorie.
În general, această tipologie de rețea (Figura 2.5) conține două părți principale:
− prima, formată din unul sau mai multe straturi convoluționale (engleză, Convolutional Layers)
urmate sau nu de straturi de pooling (engleză, Pooling Layers);
− a doua, formată din unul sau mai multe straturi complet conectate (engleză, Fully Connected
Layers).
Figura 2.5 Structura unei rețele neuronale convoluționale (CNN) (adaptată din [7])
În continuare, se vor prezenta pe scurt câteva noțiuni privind fiecare strat din acest tip de rețea neuronală:
17
INTELIGENȚĂ ARTIFICIALĂ - REȚELE NEURONALE
Conține imaginile sub formă brută (cu următoarele valori: lungime, lățime și adâncime), ce urmează să fie
analizate în stratul convoluțional.
Execută operații de filtrare liniară pe fiecare matrice primită la intrare și păstrează relația dintre pixeli prin
învățarea caracteristicilor imaginii.
De exemplu, mai jos este prezentat rezultatul produsului dintre o matrice (imagine) și filtrul Kernel:
unde
Este funcția de activare neliniară cel mai des folosită pentru procesarea imaginilor deoarece se obțin
rezultate bune în ceea ce privește performanța și gradul de generalizare al rețelei.
− Max Pooling: returnează valoarea maximă pentru o anumită zonă/porțiune dintr-o imagine pe care
s-a aplicat filtrul Kernel. Prin această metodă se reduce dimensiunea hărții de trăsături și se
păstrează doar statisticile dominante.
− Average Pooling: returnează valoarea medie pentru o anumită zonă/porțiune dintr-o imagine pe
care s-a aplicat filtrul Kernel. Prin aceasta metodă se reduce dimensiunea hărții de trăsături și se
păstrează doar trăsăturile comune.
Dintre cele două metode de pooling, Max Pooling este cea mai des folosită.
18
INTELIGENȚĂ ARTIFICIALĂ - REȚELE NEURONALE
De exemplu, mai jos este afișat rezultatul obținut după aplicarea metodei de max pooling și average pooling
pe o matrice (imagine):
Stratul complet conectat primește ieșirea din stratul de pooling și este format din mai multe nivele dens
conectate ca și în cazul perceptronului multistrat (MLP). Pentru a putea folosi matricele cu trăsături extrase în
pasul anterior, acestea trebuie mai întâi aplatizate/vectorizate (engleză, flatten).
19
INTELIGENȚĂ ARTIFICIALĂ - REȚELE NEURONALE
Așadar, înainte de proiectarea, antrenarea și validarea rețelei neuronale este necesară colectarea și
înregistrarea datelor brute într-un set de date (dataset). Acestea sunt, mai departe, preprocesate prin
următoarele procedee:
- eliminarea valorilor nule, incorecte (exemplu, NULL sau NaN) sau nereprezentative pentru scopul
antrenării;
- standardizarea datelor din set (exemplu, utilizarea unui singur tip de date: integer versus float sau
format: UTF8 vs ASCII etc.)
- conversia variabilelor de tip etichetă/categorie (exprimate prin șiruri de caractere string) în variabile cu
valori numerice.
- normalizarea datelor într-un anumit interval pentru a evita construirea de modele neronale incorecte
în timpul procesului de învățare. Totodată acest procedeu ajută la creșterea performanței rețelei și la
reducerea semnificativă a timpului de antrenare;
- folosirea filtrelor pentru eliminarea zgomotului.
După această etapă de pregătire a datelor, urmează împărțirea acestora în două seturi de date distincte,
unul cu exemple pentru antrenare (set de antrenare) și unul cu exemple diferite de cele de antrenare, pentru
testare (set de testare). De obicei, 80% din exemplele dataset-ului sunt folosite în etapa de antrenare și restul
de 20% în etapa de testare. Extragerea exemplelor din întregul dataset și popularea celor doua seturi de date se
realizează, de obicei, printr-o metodă de selecție aleatorie.
De asemenea, există posibilitatea de a se genera seturi de date colectând date prin intermediul API-urilor
Python și apoi stocarea lor în format CSV, HTML sau XLSX. Această metodă este utilă atunci când datele din
anumite surse (de exemplu website-uri) se actualizează periodic și este nevoie să se extragă doar o parte dintr-
un set de date mai mare.
Pentru operațiile de prelucrare în limbajul Python există librarii ca: NumPy, SciPy, Pandas, Matplotlib,
Seaborn și Scikit-learn.
20
INTELIGENȚĂ ARTIFICIALĂ - REȚELE NEURONALE
2.6 PYTHON
Python este un limbaj de programare interpretat, crossplatform, care permite scrierea de programe folosind
una din paradigmele de programare: procedurală, orientată obiect sau funcțională.
Fișierele sursă au extensia .py și pot fi create într-un editor de texte sau într-un IDE (exemplu, Pycharm,
NetBeans, Eclipse).
21
INTELIGENȚĂ ARTIFICIALĂ - REȚELE NEURONALE
22
INTELIGENȚĂ ARTIFICIALĂ - REȚELE NEURONALE
3. EXEMPLE
3.1 PRELUCRAREA DATELOR ÎN LIMBAJUL PYTHON
✓ Încărcarea unui set de date consacrat, numit Iris. Datele sunt organizate într-un fișier CSV (engleză,
comma separated values) care conține o clasificare a speciilor de plante Iris în funcție de caracteristicile
petalelor și ale sepalelor.
23
INTELIGENȚĂ ARTIFICIALĂ - REȚELE NEURONALE
24
INTELIGENȚĂ ARTIFICIALĂ - REȚELE NEURONALE
25
INTELIGENȚĂ ARTIFICIALĂ - REȚELE NEURONALE
✓ Generare de grafice
26
INTELIGENȚĂ ARTIFICIALĂ - REȚELE NEURONALE
27
INTELIGENȚĂ ARTIFICIALĂ - REȚELE NEURONALE
28
INTELIGENȚĂ ARTIFICIALĂ - REȚELE NEURONALE
29
INTELIGENȚĂ ARTIFICIALĂ - REȚELE NEURONALE
...
30
INTELIGENȚĂ ARTIFICIALĂ - REȚELE NEURONALE
Rezultatul predicției funcției XOR cu setul de test (x_test) corespunde cu cel din coloana 𝑜𝑢𝑡 de mai jos:
Valorile argumentului funcției și a rezultatului acesteia vor fi memorate în două liste cu 16 elemente. Aceste
liste vor constitui perechile de intrări-ieșiri care vor fi folosite pentru antrenarea rețelei neuronale.
31
INTELIGENȚĂ ARTIFICIALĂ - REȚELE NEURONALE
Pentru afișarea celor două liste se specifică indexul de început și cel de sfârșit.
Modelul grafic al funcției liniare va fi vizualizat folosind metode din biblioteca pyplot.
În exemplu este creată o rețea neuronală simplă (modelul Sequential), care are doar un neuron pe stratul de
intrare, un neuron pe stratul ascuns și un neuron pe stratul de ieșire. Scopul rețelei neuronale este de a estima
valoarea funcției pentru un argument dat (care se poate afla sau nu în listele de antrenare), fără a foloși definiția
funcției.
32
INTELIGENȚĂ ARTIFICIALĂ - REȚELE NEURONALE
• funcția (loss) care măsoară diferența dintre răspunsul estimat și cel așteptat,
• funcția (optimizer) care încearcă sa minimizeze funcția loss de un număr de ori specificat prin variabila
epochs,
• măsura (accuracy) pentru a evalua capacitatea de predicție a rețelei.
Rețeaua este antrenată folosind metoda fit și apoi se afișează valoarea asteptată a funcției obținută prin
apelarea funcției liniare și cea estimată de rețeaua neuronală.
Pentru a înțelege rezultatul predicției se pot face mai multe teste modificând o serie de parametri. În
continuare sunt prezentate testele efectuate și rezultatele obținute:
VALOAREA
TESTATĂ
ESTE ÎN
SETUL DE ACCURACY
ACTIVATION OPTIMIZER LOSS EPOCHS ANTRENARE CALCULAT PREZIS
1. 'relu' 'sgd' mean_squared_error 30 da f(10.0)=67.0 66,0 0.0000e+00
33
INTELIGENȚĂ ARTIFICIALĂ - REȚELE NEURONALE
34
INTELIGENȚĂ ARTIFICIALĂ - REȚELE NEURONALE
35
INTELIGENȚĂ ARTIFICIALĂ - REȚELE NEURONALE
OBSERVAȚIE! Datele din setul de instruire sunt selectate aleatoriu și sunt distincte față de cele din setul de
testare. Din numărul totalul de exemple preprocesate, 80% sunt distribuite în setul de instruire, iar restul de
20% în setul de testare.
- 9 clase (0: T-shirt/top, 1: Trouser, 2: Pullover, 3: Dress, 4: Coat, 5: Sandal, 6: Shirt, 7: Sneaker, 8: Bag, 9:
Ankle boot);
- 60000 imagini alb-negru de dimensiune (28, 28, 1) în setul de antrenare;
- 10000 imagini alb-negru de dimensiune (28, 28, 1) în setul de testare.
36
INTELIGENȚĂ ARTIFICIALĂ - REȚELE NEURONALE
37
INTELIGENȚĂ ARTIFICIALĂ - REȚELE NEURONALE
38
INTELIGENȚĂ ARTIFICIALĂ - REȚELE NEURONALE
OBSERVAȚIE! Unele tipuri de rețele neuronale acceptă doar intrări (imagini) sub formă de vectori. Pentru
acestea este necesar să se vectorizeze (engleză, flatten) setul de intrare din etapa de antrenare și de testare.
39
INTELIGENȚĂ ARTIFICIALĂ - REȚELE NEURONALE
40
INTELIGENȚĂ ARTIFICIALĂ - REȚELE NEURONALE
41
INTELIGENȚĂ ARTIFICIALĂ - REȚELE NEURONALE
42
INTELIGENȚĂ ARTIFICIALĂ - REȚELE NEURONALE
...
43
INTELIGENȚĂ ARTIFICIALĂ - REȚELE NEURONALE
44
INTELIGENȚĂ ARTIFICIALĂ - REȚELE NEURONALE
45
INTELIGENȚĂ ARTIFICIALĂ - REȚELE NEURONALE
46
INTELIGENȚĂ ARTIFICIALĂ - REȚELE NEURONALE
47
INTELIGENȚĂ ARTIFICIALĂ - REȚELE NEURONALE
48
INTELIGENȚĂ ARTIFICIALĂ - REȚELE NEURONALE
49
INTELIGENȚĂ ARTIFICIALĂ - REȚELE NEURONALE
50
INTELIGENȚĂ ARTIFICIALĂ - REȚELE NEURONALE
51
INTELIGENȚĂ ARTIFICIALĂ - REȚELE NEURONALE
52
INTELIGENȚĂ ARTIFICIALĂ - REȚELE NEURONALE
OBSERVAȚIE! Acuratețea rețelei neuronale este de 86% - la etapa de antrenare și 86% - la etapa de validare.
Rezultatul de la validare se poate îmbunătăți prin ajustarea parametrilor setați la pasul 4, în etapa de proiectare
a modelului neuronal, dar și prin modificarea setului de date folosit la antrenare (imagini reprezentative pentru
fiecare clasă).
53
INTELIGENȚĂ ARTIFICIALĂ - REȚELE NEURONALE
54
INTELIGENȚĂ ARTIFICIALĂ - REȚELE NEURONALE
55
INTELIGENȚĂ ARTIFICIALĂ - REȚELE NEURONALE
56
INTELIGENȚĂ ARTIFICIALĂ - REȚELE NEURONALE
57
INTELIGENȚĂ ARTIFICIALĂ - REȚELE NEURONALE
58
INTELIGENȚĂ ARTIFICIALĂ - REȚELE NEURONALE
59
INTELIGENȚĂ ARTIFICIALĂ - REȚELE NEURONALE
60
INTELIGENȚĂ ARTIFICIALĂ - REȚELE NEURONALE
OBSERVAȚIE! Acuratețea modelului neuronal este de 91% - la etapa de antrenare și 60% - la etapa de
validare. Rezultatul de la validare se poate îmbunătăți prin ajustarea parametrilor setați la pasul 5, în etapa de
proiectare a modelului neuronal.
61
INTELIGENȚĂ ARTIFICIALĂ - REȚELE NEURONALE
62
INTELIGENȚĂ ARTIFICIALĂ - REȚELE NEURONALE
Selecția aleatorie a exemplelor din dataset și apoi distribuirea lor în următoarele seturi:
- setul x (x_train și x_test) => intrări CNN
- setul y (y_train și y_test) => țintele CNN
✓ Pasul 4: Eliminarea coloanelor constante, cvasi-constante sau duplicate din setul de date
63
INTELIGENȚĂ ARTIFICIALĂ - REȚELE NEURONALE
64
INTELIGENȚĂ ARTIFICIALĂ - REȚELE NEURONALE
65
INTELIGENȚĂ ARTIFICIALĂ - REȚELE NEURONALE
66
INTELIGENȚĂ ARTIFICIALĂ - REȚELE NEURONALE
67
INTELIGENȚĂ ARTIFICIALĂ - REȚELE NEURONALE
68
INTELIGENȚĂ ARTIFICIALĂ - REȚELE NEURONALE
OBSERVAȚIE! Acuratețea modelului este de 96% în etapa de antrenare, și de 95% în etapa de testare.
69
INTELIGENȚĂ ARTIFICIALĂ - REȚELE NEURONALE
70
INTELIGENȚĂ ARTIFICIALĂ - REȚELE NEURONALE
71
INTELIGENȚĂ ARTIFICIALĂ - REȚELE NEURONALE
...
72
INTELIGENȚĂ ARTIFICIALĂ - REȚELE NEURONALE
73
INTELIGENȚĂ ARTIFICIALĂ - REȚELE NEURONALE
OBSERVAȚIE! Acuratețea modelului este de 94% în etapa de antrenare, și de 70% în etapa de testare. Pentru
a îmbunătăți rezultatul acurateței, se pot introduce mai multe exemple (sugestive) în etapa de antrenare, astfel
încât rețeaua să învețe mai multe caracteristici (cazuri posibile) ceea ce duce la creșterea capacității de a clasifica
(>70%) pe un set nou de imagini, în etapa de testare.
74
INTELIGENȚĂ ARTIFICIALĂ - REȚELE NEURONALE
4. BIBLIOGRAFIE
1. Ciocoiu, I.B., Rețele neurale artificiale, Editura Cantes, Iasi, 2001, ISBN 973-8173-16-7
2. Mihaela Miron, Contribuții privind diagnoza proceselor de tratare a apelor uzate folosind rețele
neuronale: Teză de doctorat, Editura Fundației Universitare, Galați, România, 2019, ISBN 978-73-627-
616-3.
3. Oludare Isaac Abiodun, Aman Jantan, Abiodun Esther Omolara, Kemi Victoria Dada, Nachaat AbdElatif
Mohamed, Humaira Arshad, State-of-the-art in artificial neural network applications: A survey,
Heliyon, Volume 4, Issue 11, 2018, ISSN 2405-8440.
4. Micheal Lanham, Practical AI on the Google Cloud Platform: Utilizing Google's State-of-the-Art AI Cloud
Services 1st Edition, Publisher O'Reilly Media, Inc, 2020, ISBN 978-1-492-07581-3.
5. Micheal Lanham, Practical AI on the Google Cloud Platform: Learn How to Use the Latest AI Cloud
Services on the Google Cloud Platform, Publisher O'Reilly Media, Inc, 2020, 978-1-492-07574-5
6. M. Jahnavi, Introduction to Neural Networks, Advantages and Applications, towards Data Science, (Jul
9, 2017) poate fi accesată aici: https://towardsdatascience.com/introduction-to-neural-networks-
advantages-and-applications-96851bd1a207
7. https://towardsdatascience.com/a-comprehensive-guide-to-convolutional-neural-networks-the-eli5-
way-3bd2b1164a53
8. https://blog.tensorflow.org/2018/04/fashion-mnist-with-tfkeras.html
9. https://colab.research.google.com/notebooks/basic_features_overview.ipynb
10. https://www.tutorialspoint.com/google_colab/google_colab_quick_guide.htm
11. https://keras.io/
12. https://www.tensorflow.org/
13. https://numpy.org/
14. https://pandas.pydata.org/
15. https://matplotlib.org/
16. https://www.kaggle.com/datasets
17. http://archive.ics.uci.edu/ml/datasets.php
75