Inteligenta-Artificiala-Retele Neuronale-Aplicatii Python

Descărcați ca pdf sau txt
Descărcați ca pdf sau txt
Sunteți pe pagina 1din 75

Mihaela MIRON

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

EDITURA FUNDAŢIEI UNIVERSITARE


„Dunărea de Jos” – GALAŢI – 2021
UNIVERSITATEA DUNĂREA DE JOS GALAȚI
CALCULATOARE ȘI TEHNOLOGIA INFORMAȚIEI

Editura Fundaţiei Universitare „Dunărea de Jos” din Galaţi


este acreditată de CNCSIS

Referent științific:
Prof. univ. dr. ing. Sergiu CARAMAN

©Editura Fundaţiei Universitare www.editura.ugal.ro


“Dunărea de Jos”, Galaţi, 2021 [email protected]
ISBN 978-973-627-648-4
Director editură.
Prof. univ. emerit dr. Cosma Tudose
INTELIGENȚĂ ARTIFICIALĂ - REȚELE NEURONALE

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

3.4.1 Obiective și Premise teoretice ....................................................................................................... 40


3.4.2 Clasificarea binară a datelor dintr-un set de date.......................................................................... 40
3.4.3 Predicția valorii temperaturii dintr-un set de date ........................................................................ 44
3.5 Rețeaua neuronală FeedForward (FNN) ............................................................................................... 48
3.5.1 Obiective și Premise teoretice ....................................................................................................... 48
3.5.2 Clasificarea imaginilor alb-negru .................................................................................................... 48
3.5.3 Clasificarea imaginilor color ........................................................................................................... 53
3.6 Rețea neuronală convoluțională (CNN) ................................................................................................ 62
3.6.1 Obiective și Premise teoretice ....................................................................................................... 62
3.6.2 Predicția nivelului de satisfacție al clienților folosind CNN ............................................................ 62
3.6.3 Recunoașterea unor animale din imagini folosind CNN ................................................................ 70
4. Bibliografie .................................................................................................................................................. 75

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

Fig. 1.1 Funcționarea sistemelor de inteligență artificială

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).

Raționamentul (engleză, reasoning) este:

• 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.

În inteligența artificială există două mari abordări:

➢ Simbolică - consideră cunoașterea ca fiind un fenomen abstract, independent de modul de funcționare


detaliat pentru fiecare etapă corespunzătoare din procesul biologic. Sistemele inteligente simulează
inteligența umană prin cunoștințele pe care le posedă și prin capacitatea de a realiza raționamente și
de a se adapta la situații noi pornind de la experiențe acumulate anterior. Acestea se folosesc de o bază
de cunoștințe (de obicei foarte mare) reprezentată intern printr-un limbaj simbolic bazat pe logica
matematică și de un raționament de tip formalism logic (inspirat din modul de gândire uman) care

7
INTELIGENȚĂ ARTIFICIALĂ - REȚELE NEURONALE

realizează operații de prelucrare asupra simbolurilor. Direcțiile de dezvoltare a sistemelor inteligente


sunt:
o Reprezentări simbolice;
o Reprezentări grafice.
➢ Conexionistă - folosește modelul creierului uman, capabil să realizeze raționamente și să memoreze
folosind rețelele de neuroni alcătuite din neuroni și sinapse. Modelele implementate de aceste sisteme
sunt create din componente primitive (unități), conectate într-o rețea prin diferite tipuri de conexiuni
și care lucrează în paralel. Sistemele sunt capabile să își creeze, folosind un mecanism de învățare
adaptabil și flexibil, propria structură de cunoștințe asupra căreia aplică un raționament specific.
Direcțiile de dezvoltare a sistemelor inteligente sunt:
o Învățarea mașină;
o Algoritmii genetici;
o Procesare paralelă.

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:

• Roboți conversaționali (engleză, Chatbot) - cu aplicații în domeniul rețelelor sociale, asistenților de


servicii pentru clienți (engleză, customer services) (exemple, vânzări, servicii bancare, asigurări, utilități,
telecomunicații) sau pentru angajați (engleză, employers services), (exemple, în domeniul legislativ,
taxarea muncii). Unele sisteme sunt bazate pe prelucrarea limbajului natural “ascultând” vorbirea
curentă pentru a o transforma în model intern (engleză, speech-to-text), ca apoi să “exprime verbal”
conversația către utilizatorul uman (engleză, text-to-speech).
• Rețele neuronale (engleză, NN - Neural Network) - se bazează pe procese de învățare automată
(engleză, ML - Machine Learning) cu aplicații în predicții (vreme, piața bursieră, defecte), recunoaștere
de forme (imagini, defecte ale unor piese, sisteme medicale), clasificare (aspecte legale, farmacie,
medicină).
• Sisteme expert (engleză, Expert Systems) - încorporează cantități mari de cunoștințe exprimate simbolic
folosite pentru rezolvarea unor probleme sau luarea unor decizii cu aplicații în diagnoză (medicină,
defecte ale unor sisteme), alegerea unei situații favorabile (drumul cel mai bun, situații de joc), căutări
în spații mari de probleme.
• Procesare de date (engleză, Big Data, Data Science) - filtrează, analizează și caută în cantități mari de
informații pentru a obține șabloane sau pentru a clasifica (de exemplu, biologie, evoluția și funcționarea
codurilor moleculare, selecția modelelor în ecologie, detecția plagiatului).
• Sisteme de conducere autonome (engleză, autonomous driving) - capabile să “simtă” mediul și să
“gândească” acțiuni astfel încât sistemul să se “descurce” singur, fără intervenția unui operator uman.
• Procesare limbaj natural (engleză, Natural Language Processing) - analizează, clasifică, organizează și
procesează limbajul natural manifestat în interacțiunea om-computer, cu aplicații în înțelegerea
cuprinsului unui document, analiza lingvistică, detectarea unor nuanțe (pozitive sau negative) în
exprimare.
• Internetul obiectelor (engleză, IoT - Internet of Things) - folosește informațiile și serviciile disponibile
pe Internet pentru a conecta dispozitive și sisteme cu scopul de a realiza o rețea de obiecte (electronice,
de rețea, senzori, software). Implică combinarea unor metode de inteligență artificială, cu sisteme
încorporate, cu tehnologii de timp real, cu sisteme de automatizare.

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.

Tipuri de neuroni, în funcție de poziția lor în rețea:

• De intrare (engleză, input unit) - primesc pentru activare intrările problemei;


• De ieșire (engleză, output unit) - ale căror ieșiri constituie rezultatul problemei;
• Ascunși (engleză, hidden unit) - folosiți pentru a calcula și transmite rezultatele spre ieșire.

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

𝑜𝑢𝑡 = 𝑓(∑ 𝑖𝑛𝑖 ∗ 𝑤𝑖 + 𝑏)


𝑖=1

În funcție de tipul problemei, proiectarea unei rețele neuronale artificiale este determinată de:

− unitățile funcționale (straturile de neuroni) - numărul de neuroni și modalitatea de conectare între


aceștia determină tipul de rețea;
− arhitectura rețelei;
− tipul de funcționare (algoritmii de transformare a semnalului de la intrare către ieșire);
− tipul de învățare (algoritmii de antrenare care descriu modul prin care rețeaua învață din exemple).

2.2 UTILIZAREA REȚELELOR NEURONALE


Principalele tipuri de aplicații ale rețelelor neuronale sunt:
− predicție - calculează o ieșire în funcție de intrări;
− clasificare - organizează seturi de date în clase predefinite;
− clusterizare - identifică o caracteristică într-un set de date și le clasifică fără cunoștințe apriori;
− recunoaștere - recunoaște o ”formă” care să fie apropiată de formele pentru care a fost antrenată.

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.

Pentru a crea, simula și dezvolta rețele neuronale se pot folosi:


• aplicații dedicate instalate local (exemple, Matlab, Neural Designer, Neuroph, Neuro Solutions).
• medii care rulează în browser (exemple, convNetJS, Playground TensorFlow, Google Colaboratory).
• pot fi utilizate biblioteci din limbaje de programare (exemplu, TensorFlow și Keras din Python,
Neuroph, DeepLearning4J din Java).

Î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

2.3 CARACTERISTICILE REȚELELOR NEURONALE

2.3.1 FUNCȚII DE ACTIVARE


Alegerea funcției de activare este corelată cu tipul de rețea și cu alegerea funcției loss. Există mai multe tipuri
de funcții de activare:

• Funcția Liniară

𝑓(𝑖𝑛𝑝𝑢𝑡) = 𝑖𝑛𝑝𝑢𝑡

• Funcția Sigmoid

Funcția sigmoid oferă o flexibilitate mai mare a calculului probabilității.

1
𝑓(𝑖𝑛𝑝𝑢𝑡) = 𝑠𝑖𝑔𝑚(𝑖𝑛𝑝𝑢𝑡) =
1 + exp(−𝑖𝑛𝑝𝑢𝑡)

• Funcția Tanh (Tangenta hiperbolică)

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(𝑖𝑛𝑝𝑢𝑡𝑗 )

• Funcția ReLU (Rectified Linear Unit)

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.

𝑖𝑛𝑝𝑢𝑡𝑖 𝑑𝑎𝑐𝑎 𝑖𝑛𝑝𝑢𝑡𝑖 > 0


𝑓(𝑖𝑛𝑝𝑢𝑡) = max(0, 𝑖𝑛) = {
0 𝑑𝑎𝑐𝑎 𝑖𝑛𝑝𝑢𝑡𝑖 < 0

11
INTELIGENȚĂ ARTIFICIALĂ - REȚELE NEURONALE

2.3.2 FUNCȚIA LOSS


Rețelele neuronale sunt învățate folosind un proces de optimizare care folosește o funcție loss pentru a
minimiza eroarea modelului. La învățarea modelului nu pot fi calculate exact ponderile pentru fiecare conexiune
dintre neuroni și astfel învățarea devine o problemă de căutare/optimizare care folosește un algoritm pentru a
naviga în spațiul posibilelor seturi de ponderi pe care le poate folosi modelul pentru a face predicții suficiente
de bune. Funcția loss măsoară diferența dintre răspunsul estimat și cel așteptat și cu cât pierderea este mai
mică, cu atât modelul funcționează mai bine. În algoritmul de optimizare funcția utilizată pentru a evalua o
soluție candidată (adică un set de ponderi) este denumită funcție obiectiv. La modelare se încearcă maximizarea
sau minimalizarea funcției obiectiv, ceea ce înseamnă că se caută soluția candidată care are cel mai mare sau
cel mai mic scor posibil. De obicei, la modelarea rețelelor neuronale, se încearcă să se reducă la minim eroarea.
Astfel, funcția obiectiv mai este numită funcție cost sau funcție pierdere (engleză, loss), iar valoarea calculată
este numită „pierdere”. La calcularea erorii modelului în timpul procesului de optimizare, trebuie aleasă o
funcție pierdere care este dependentă de funcția de activare a stratului de ieșire.

La modelarea rețelelor neuronale se folosesc două tipuri de funcții:

• 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).

2.3.3 ALGORITMUL DE OPTIMIZARE


Algoritmii de optimizare folosiți pentru minimizarea funcției loss ajustează atributele (ponderile și rata de
învățare) rețelei neuronale cu scopul de a reduce pierderile. Tipurile de algoritmi de optimizare mai des folosiți
sunt:

• 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

2.3.4 FUNCȚIA DE COST


Funcția cost îmbunătățește calitatea învățării rețelei neuronale și măsoară eroarea dintre rezultatul estimat
de rețea la nivelul setului de antrenare și rezultatul așteptat. De asemenea, poate depinde de variabile precum
ponderi și praguri. O funcție de cost are o singură valoare, deoarece evaluează cât de bine a învățat rețeaua
neuronală în ansamblu. Diferența față de funcția loss este că se aplică întregului set de antrenare, pe când funcția
cost se aplică doar pentru un exemplu din setul de antrenare.

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.

𝑛𝑢𝑚𝑎𝑟 𝑝𝑟𝑒𝑑𝑖𝑐𝑡𝑖𝑖 𝑐𝑜𝑟𝑒𝑐𝑡𝑒


𝐴𝑐𝑐𝑢𝑟𝑎𝑐𝑦 =
𝑛𝑢𝑚𝑎𝑟 𝑡𝑜𝑡𝑎𝑙 𝑑𝑒 𝑝𝑟𝑒𝑑𝑖𝑐𝑡𝑖𝑖

2.3.6 RATA DE ÎNVĂȚARE


Rata de învățare este un parametru care arată cât de mult se poate schimba modelul ca răspuns la eroarea
estimată de fiecare dată când ponderile modelului sunt actualizate. Alegerea ratei de învățare este o provocare,
deoarece o valoare prea mică poate duce la un proces lung de antrenare care ar putea rămâne blocat, în timp
ce o valoare prea mare poate la o învățare mai rapidă a ponderilor, dar la un rezultat global nesatisfăcător în
etapa de învățare. Rata de învățare controlează cât de repede se adaptează modelul prin învățare. Ratele de
învățare mai mici necesită mai multe epoci de antrenament, deoarece la fiecare actualizare ponderile se
modifică mai puțin, în timp ce ratele de învățare mai mari duc la schimbări rapide și necesită mai puține epoci
de antrenament.

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.

2.3.7 NUMĂRUL DE EPOCI


O epocă (engleză, epoch) se referă la un ciclu de antrenare care folosește întregul set de date de
antrenament. De obicei, antrenarea unei rețele neuronale durează mai multe epoci. Cu alte cuvinte, la fiecare
trecere prin setul de antrenare rețeaua învață un model, iar trecerea prin mai multe epoci duce la obținerea de
modele diferite, sperând la final, când s-a trecut prin numărul total de epoci stabilit pentru învățare să se obțină
un model care generalizează mai bine. Din punct de vedere euristic, o explicație ar fi că trecerea prin mai multe
epoci oferă rețelei șansa de a folosi datele anterioare pentru a regla parametrii modelului, astfel încât modelul
să nu fie influențat doar de câteva exemple din setul de antrenare.

13
INTELIGENȚĂ ARTIFICIALĂ - REȚELE NEURONALE

2.4 TIPURI DE REȚELE NEURONALE

2.4.1 PERCEPTRONUL CU UN SINGUR STRAT (UNISTRAT)


Este folosit pentru a rezolva probleme simple de clasificare a formelor și este format din:

• intrări (strat de intrare: 𝑖𝑛1 , 𝑖𝑛2 , … , 𝑖𝑛𝑛 );


• ponderi sinaptice (weights: 𝑤1 , 𝑤2 , … , 𝑤𝑛 ) și pragul (bias: b);
• suma ponderilor;
• funcția de activare;
• ieșirea (out).

Figura 2.2 Perceptronul cu un singur strat (unistrat)

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 𝑤 𝑇 = [ ]

𝑤𝑛

Aceiași funcție, dar la care se introduce pragul b:

𝑛𝑒𝑡 = ∑ 𝑤𝑖 𝑖𝑛𝑖 + 𝑏 = 𝑤 𝑇 𝑖𝑛 + 𝑏
𝑖=1
Rețelele de tip perceptron sunt utilizate pentru clasificare binară cu învățare supervizată.

14
INTELIGENȚĂ ARTIFICIALĂ - REȚELE NEURONALE

2.4.2 PERCEPTRONUL MULTISTRAT


Perceptronul multistrat conține: stratul de intrare (intrări sub formă de date sau imagini neprelucrate/brute),
stratul ascuns (unul sau mai multe straturi ascunse poziționate în interiorul rețelei neuronale având rolul de a
prelucra datele primite de la ieșirea stratului precedent), stratul de ieșire (preia datele prelucrate din stratul
ascuns).

Figura 2.3 Perceptronul multistrat

Cu ajutorul rețelelor neuronale multistrat (MLP) se pot rezolva probleme de asociere ce implică:
aproximare/modelare, clasificare și predicție.

2.4.3 REȚELE NEURONALE FEEDFORWARD


Rețelele neuronale FeedForward reprezintă o tipologie de rețea multistrat în care informația se propagă
unidirecțional (de la intrare spre ieșire) și unde unitățile funcționale sunt grupate pe mai multe nivele fără să
conțină cicluri sau conexiuni cu neuronii din același strat.

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

𝑒𝑟𝑟𝑘 = 𝑦̂
𝑛𝑛 𝑘 − 𝑦𝑘

𝑒𝑟𝑟𝑘 – eroarea de adaptare la pasul 𝑘;


𝑛𝑛 𝑘 – ieșirea estimată (de către rețea neuronală) la pasul 𝑘;
𝑦̂
𝑦𝑘 – ieșirea așteptată (din set) la pasul 𝑘.
Antrenarea rețelei neuronale poate fi:

- 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.

Figura 2.4 Exemplu de rețea neuronala FeedForward

Î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

Tabelul 2.1 Rețele clasice și rețele complexe

Rețele neuronale clasice Rețele neuronale complexe –


abordarea cu librarii Python
Structura 1-2 straturi mai mult de 3 straturi
Funcții de activare sigmoide ReLU

Funcții de cost Ex: Mean squared Error (MSE) Ex: BinaryCrossentropy,


(precizie) CategoricalCrossentropy,
SparseCategoricalCrossentropy etc.
Algoritmi de Ex: Backpropagation, Resilient Ex: Stohastic Gradient Descendent
optimizare BackPropagation (RProp), Levenberg- (SGD), Root Mean Square Propagation
Marquardt etc. (RMSProp), Adam etc.
Altele Diverse metode de preprocesare a
datelor (înainte de antrenare),
regularizare și inițializare de ponderi

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.

2.4.4 REȚELE NEURONALE CONVOLUȚIONALE (CNN)


Rețelele neuronale convoluționale (engleză, Convolutional Neural Networks - CNN) sunt utilizate în special
pentru rezolvarea problemelor de recunoaștere sau clasificare ce implică lucrul cu cantități mari de date sau
imagini de dimensiuni mari.

Î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

1) Stratul de intrare (engleză, Input Layer)

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.

2) Stratul convoluțional (engleză, Convolutional Layer)

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:

Dimensiunea matricei de la ieșire se obține cu următoarea formulă:

𝑜𝑢𝑡𝑙𝑢𝑛𝑔𝑖𝑚𝑒 = 𝑁𝑙𝑢𝑛𝑔𝑖𝑚𝑒 − 𝐾𝑙𝑢𝑛𝑔𝑖𝑚𝑒 + 1 = 4 − 2 + 1 = 3

𝑜𝑢𝑡𝑙ăț𝑖𝑚𝑒 = 𝑁𝑙ăț𝑖𝑚𝑒 − 𝐾𝑙ăț𝑖𝑚𝑒 + 1 = 4 − 2 + 1 = 3

unde

𝑁𝑙𝑢𝑛𝑔𝑖𝑚𝑒 – lungimea matricei ieșirii;


𝐾𝑙𝑢𝑛𝑔𝑖𝑚𝑒 – lungimea filtrului Kernel;
𝑁𝑙ăț𝑖𝑚𝑒 – lățimea matricei ieșirii;
𝐾𝑙ăț𝑖𝑚𝑒 – lățimea filtrului Kernel.

3) Stratul ReLU (engleză, Rectified Linear Unit Layer)

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(0, 𝑖𝑛𝑝𝑢𝑡)

4) Stratul de pooling (engleză, Pooling Layer)

Reduce dimensiunea spațială a caracteristicilor/trăsăturilor convoluționale și prin urmare contribuie la


scăderea puterii de calcul necesară pentru procesarea datelor. În această etapă se determină trăsăturile
relevante care sunt invariant rotaționale și poziționale, astfel încât să se antreneze în mod eficient modelul
neuronal. Există două tipuri de pooling:

− 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):

5) Stratul complet conectat (engleză, Fully Connected Layer)

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

2.5 PREPROCESAREA DATELOR


Etapa de preprocesare se ocupă de colectarea, structurarea și explorarea datelor și reprezintă o etapă
importantă în domeniul învățării automate (Machine Learning) având rolul de a obține seturi de date simple,
complete și clare. În funcție de calitatea exemplelor primite în etapa de antrenare, rețeaua neuronală este
capabilă să estimeze corect rezultatul.

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.

2.5.1. BAZE DE DATE PUBLICE ÎN DOMENIUL MACHINE LEARNING (ML)


În domeniul învățării automate (ML), există numeroase website-uri ce pun la dispoziție baze de date
(dataset-uri). Cele mai populare sunt:

- Machine Learning Repository: https://archive.ics.uci.edu/ml/index.php


- Kaggle Datasets: https://www.kaggle.com/uciml/datasets
- U.S. Government open data: https://www.data.gov/
- EU Open Data Portal: https://data.europa.eu/euodp/en/home

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ă.

Documentație: https://www.w3schools.com/python/default.asp, https://docs.python.org/3/tutorial/

Fișierele sursă au extensia .py și pot fi create într-un editor de texte sau într-un IDE (exemplu, Pycharm,
NetBeans, Eclipse).

Caracteristici ale limbajului:

• Instrucțiunile se termină cu new line.


• Blocurile sunt delimitate prin indentare (cel puțin un spațiu).
• Pentru a putea lucra, trebuie instalat interpretorul de Python. Comanda prin care se verifică dacă
Python este instalat: C:\ >python --version

• Rularea în linie comandă: C:\ >python sau C:\ >py

• Pentru a rula în linie comandă un fișier sursă: C:\director>python nume_fisier.py


• Închiderea Python în linie comandă: exit()
• Comentariile pe o linie se introduc cu #
• Variabilele nu se declară, sunt create când primesc valoare.
• Tipuri de date:
o Șir de caractere: str
o Numerice: int, float, complex
o Boolean: bool
o Binar: bytes, bytearray, memoryview
o Liste: listă/vector (x = [1,2,3], y = [ "sir1", "sir2", "sir3"]), tuple (x = ( "sir1", "sir2", "sir3") ), range
o Mapare: dict
o Seturi de date: set, frozenset.
• Transformarea explicită la un tip de date se face prin cast: x = 3, str(x).

Exemplu de utilizare a variabilelor întregi și reale și a instrucțiunii condiționale.

21
INTELIGENȚĂ ARTIFICIALĂ - REȚELE NEURONALE

22
INTELIGENȚĂ ARTIFICIALĂ - REȚELE NEURONALE

3. EXEMPLE
3.1 PRELUCRAREA DATELOR ÎN LIMBAJUL PYTHON

3.1.1 OBIECTIVE ȘI PREMISE TEORETICE


− Explorarea mediului de lucru Google Colab.
− Funcții Python pentru manipularea datelor organizate în vectori: vizualizare conținut și grafică,
prelucrarea coloanelor, căutare, eliminarea valorilor lipsă.

3.1.2 FUNCȚII PYTHON DE MANIPULARE A DATELOR


Mediul de lucru Google Colab permite scrierea și execuția de cod Python în Cloud fără a mai fi necesară
instalarea și configurarea de tool-uri suplimentare cum ar fi PyCharm.

Platforma Google Colab se poate accesa aici: https://colab.research.google.com

✓ Î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.

✓ Salvare set de date

✓ Explorarea setului de date

23
INTELIGENȚĂ ARTIFICIALĂ - REȚELE NEURONALE

24
INTELIGENȚĂ ARTIFICIALĂ - REȚELE NEURONALE

✓ Prelucrarea rândurilor setului de date

✓ Prelucrarea coloanelor setului de date

25
INTELIGENȚĂ ARTIFICIALĂ - REȚELE NEURONALE

✓ Generare de grafice

26
INTELIGENȚĂ ARTIFICIALĂ - REȚELE NEURONALE

✓ Eliminare de valori sau date lipsă

27
INTELIGENȚĂ ARTIFICIALĂ - REȚELE NEURONALE

3.2 REȚEA NEURONALĂ PERCEPTRON

3.2.1 OBIECTIVE ȘI PREMISE TEORETICE


− Definirea unei funcții, afișarea valorilor returnate de aceasta și reprezentarea grafică.
− Crearea unor liste.
− Definirea, antrenarea și folosirea pentru predicție a unei rețele neuronale de tip perceptron.

3.2.2 LIBRĂRIILE KERAS, TENSORFLOW, PYTORCH


• Keras - documentația: https://keras.io/
o antrenarea se poate executa atât pe CPU, cât și pe GPU;
o suportă aproape toate tipurile de rețele neuronale;
o codul este ușor de depanat și explorat.
• TensorFlow - documentația: https://www.tensorflow.org/
o librărie open-source pentru învățare automată;
o antrenarea se poate executa atât pe CPU, cât și pe GPU;
o suportă conceptul de antrenare paralelă;
o în Google Colab nu este necesară instalarea librăriei Tensorflow pentru Machine Learning (ML)
deoarece este deja integrată.
• PyTorch - documentația: https://pytorch.org/
o librărie open-source pentru învățare automată;
o comparativ cu alte librarii este ușor de învățat și folosit în diverse aplicații;
o folosește o metodă denumită „diferențiere automată” utilă în proiectarea rețelelor neuronale.

3.2.3 APROXIMAREA FUNCȚIEI XOR


Tabelul de adevăr al funcției XOR („SAU” exclusiv) este:

Figura 3.1 Tabelul de adevăr XOR

✓ Pasul 1: Generarea seturilor de date

28
INTELIGENȚĂ ARTIFICIALĂ - REȚELE NEURONALE

✓ Pasul 2: Proiectarea modelului neuronal

29
INTELIGENȚĂ ARTIFICIALĂ - REȚELE NEURONALE

✓ Pasul 3: Antrenarea modelului neuronal

...

✓ Pasul 4: Predicția modelului neuronal

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:

Figura 3.2 Rezultatul predicției funcției XOR

3.2.4 APROXIMAREA UNEI FUNCȚII LINIARE


În acest exemplu se vor folosi bibliotecile pentru lucrul cu matrici (numpy), pentru vizualizare grafice (pyplot),
pentru crearea și lucrul cu o rețea neuronala simplă de tip secvențial (keras).

Pentru crearea datelor de antrenare se va defini o funcție liniară.

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.

Conținutul celor două liste poate fi vizualizat mai jos:


x_input= [-5.0, -4.0, -3.0, -2.0, -1.0, 0.0, 1.0, 2.0, 3.0, 4.0, 5.0,
6.0, 7.0, 8.0, 9.0, 10.0]
x_output= [-38.0, -31.0, -24.0, -17.0, -10.0, -3.0, 4.0, 11.0, 18.0,
25.0, 32.0, 39.0, 46.0, 53.0, 60.0, 67.0]

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.

Pentru rețea sunt setate:

• denumirea rețelei și a stratului ascuns,


• funcția de activare pentru stratul ascuns (activation),

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.

Pentru rețea va fi afișat un sumar al modelului folosind funcția summary.

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:

Tabela 3.1 Testări pentru aproximarea unei funcții liniare

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

2. 'relu' 'sgd' mean_squared_error 100 nu f(100.0)=697.0 654.5 0.0000e+00

3. 'relu' 'sgd' mean_squared_error 100 nu f(100.0)=697.0 660.8 0.0000e+00

33
INTELIGENȚĂ ARTIFICIALĂ - REȚELE NEURONALE

3.3 PREPROCESAREA DATELOR DIN FIȘIERE

3.3.1 OBIECTIVE ȘI PREMISE TEORETICE


− Explorarea mediul de lucru Google Colab pentru preprocesarea datelor.
− Operații de preprocesare a seturilor de date în limbajul Python - colectarea, eliminarea valorilor lipsă,
transformarea valorilor de tip categorie în valori numerice și formarea seturilor de antrenare și testare.
− Folosirea Iris Dataset: http://archive.ics.uci.edu/ml/datasets/Iris

3.3.2 PREPROCESAREA DATELOR NUMERICE


Fișierul Iris.csv conține:

- 3 clase (specii de iris: Setosa, Versicolor, Virginica);


- fiecare clasă are 50 de instanțe cu câte 4 caracteristici ale speciei de plante iris: lungimea sepalei [mm],
lățimea sepalei [mm], lungimea petalei [mm], lățimea petalei [mm];
- 6 coloane: Id, SepalLengthCm, SepalWidthCm, PetalLengthCm, PetalWidthCm, Speciesș
- dimensiunea totală este de [150 rânduri x 6 coloane].

✓ Pasul 1: Importarea librăriilor Python

✓ Pasul 2: Încărcarea setului de date

34
INTELIGENȚĂ ARTIFICIALĂ - REȚELE NEURONALE

✓ Pasul 3: Explorarea setului de date

✓ Pasul 4: Prelucrarea datelor din set

✓ Pasul 5: Împărțirea datelor în seturi

35
INTELIGENȚĂ ARTIFICIALĂ - REȚELE NEURONALE

✓ Pasul 6: Explorarea datelor

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.

3.3.3 PREPROCESAREA IMAGINILOR

Se folosește setul de date Fashion MNIST: https://keras.io/api/datasets/fashion_mnist/

Setul de date conține:

- 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.

✓ Pasul 1: Importarea librăriilor Python

✓ Pasul 2: Încărcarea setului de date din Keras

36
INTELIGENȚĂ ARTIFICIALĂ - REȚELE NEURONALE

✓ Pasul 3: Explorarea setului de date

37
INTELIGENȚĂ ARTIFICIALĂ - REȚELE NEURONALE

✓ Pasul 4: Preprocesarea imaginilor

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

3.4 REȚEAUA NEURONALĂ PERCEPTRON MULTISTRAT (MLP)

3.4.1 OBIECTIVE ȘI PREMISE TEORETICE


− Folosirea funcțiilor de lucru cu seturi de date
− Rezolvarea de probleme de clasificare cu rețele neuronale multistrat în limbajul Python

3.4.2 CLASIFICAREA BINARĂ A DATELOR DINTR -UN SET DE DATE


Pentru această aplicație se va folosi un set de date cunoscut stocat într-un fișier format CSV (Vremea.csv).
Pe coloane sunt caracteristicile: temperatură [°𝐶], precipitații [%], vânt [𝑘𝑚/ℎ] distribuite în două clase:
„vreme-bună” și „vreme-rea”.

✓ Pasul 1: Importarea librăriilor Python

✓ Pasul 2: Încărcarea setului de date

40
INTELIGENȚĂ ARTIFICIALĂ - REȚELE NEURONALE

✓ Pasul 3: Preprocesarea datelor

✓ Pasul 4: Împărțirea setului de date

41
INTELIGENȚĂ ARTIFICIALĂ - REȚELE NEURONALE

✓ Pasul 5: Proiectarea modelului neuronal

✓ Pasul 6: Antrenarea modelului neuronal

42
INTELIGENȚĂ ARTIFICIALĂ - REȚELE NEURONALE

...

✓ Pasul 7: Salvarea modelului și ponderilor

✓ Pasul 8: Încărcarea modelului și ponderilor

43
INTELIGENȚĂ ARTIFICIALĂ - REȚELE NEURONALE

✓ Pasul 9: Evaluarea și predicția modelului

3.4.3 PREDICȚIA VALORII TEMPERATURII DINTR -UN SET DE DATE


Setul de date dataexport_Galati_ian-april-2019.csv conține parametrii: temperatura maximă
[°𝐶], totalul de precipitații [𝑚𝑚], viteza maximă a vântului [𝑘𝑚/ℎ]. Datele meteorologice descriu starea vremii
pe zile (conform https://www.meteoblue.com/) din luna ianuarie până în aprilie, anul 2019, orașul Galați.

Se va realiza o estimare a valorii temperaturii folosind o rețea neuronală multistrat.

✓ Pasul 1: Importarea librăriilor Python

44
INTELIGENȚĂ ARTIFICIALĂ - REȚELE NEURONALE

✓ Pasul 2: Încărcarea setului de date

45
INTELIGENȚĂ ARTIFICIALĂ - REȚELE NEURONALE

✓ Pasul 3: Împărțirea setului de date

✓ Pasul 4: Proiectarea modelului neuronal

46
INTELIGENȚĂ ARTIFICIALĂ - REȚELE NEURONALE

✓ Pasul 5: Antrenarea modelului neuronal

47
INTELIGENȚĂ ARTIFICIALĂ - REȚELE NEURONALE

3.5 REȚEAUA NEURONALĂ FEEDFORWARD (FNN)

3.5.1 OBIECTIVE ȘI PREMISE TEORETICE


− Definirea, antrenarea și folosirea pentru clasificare a unei rețele neuronale de tip feedforward în
limbajul Python.

3.5.2 CLASIFICAREA IMAGINILOR ALB-NEGRU


Setul de date Fashion MNIST conține imagini în tonuri de gri care reprezintă 10 categorii (clase) de articole
de îmbrăcăminte: 0: „T-shirt/top”, 1: „Trouser”, 2: „Pullover”, 3: „Dress”, 4: „Coat”, 5: „Sandal”, 6: „Shirt”, 7:
„Sneaker”, 8: „Bag”, 9: „Ankle boot”.
Setul de date este public și se poate descărca de aici: https://keras.io/api/datasets/fashion_mnist/

✓ Pasul 1: Importarea librăriilor Python

✓ Pasul 2: Încărcarea setului de date din Keras

48
INTELIGENȚĂ ARTIFICIALĂ - REȚELE NEURONALE

✓ Pasul 3: Preprocesarea datelor

49
INTELIGENȚĂ ARTIFICIALĂ - REȚELE NEURONALE

✓ Pasul 4: Proiectarea modelului neuronal

50
INTELIGENȚĂ ARTIFICIALĂ - REȚELE NEURONALE

✓ Pasul 5: Antrenarea modelului neuronal

51
INTELIGENȚĂ ARTIFICIALĂ - REȚELE NEURONALE

✓ Pas 6: Salvarea modelului și ponderilor CNN

✓ Pas 7: Încărcarea modelului și a ponderilor

✓ Pas 8: Predicția și evaluarea performanței modelului

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ă).

3.5.3 CLASIFICAREA IMAGINILOR COLOR


Pentru exemplificare s-a folosit setul de date cats_and_dogs_minidataset.zip care este o versiune
redusă a setului de date public dogs-vs-cats: https://www.kaggle.com/c/dogs-vs-cats/data

✓ Pasul 1: Importarea librăriilor Python

✓ Pasul 2: Încărcarea setului de date din Google Drive

53
INTELIGENȚĂ ARTIFICIALĂ - REȚELE NEURONALE

✓ Pasul 3: Preprocesare imaginilor

54
INTELIGENȚĂ ARTIFICIALĂ - REȚELE NEURONALE

55
INTELIGENȚĂ ARTIFICIALĂ - REȚELE NEURONALE

56
INTELIGENȚĂ ARTIFICIALĂ - REȚELE NEURONALE

✓ Pas 4: Împărțirea datelor în seturi

57
INTELIGENȚĂ ARTIFICIALĂ - REȚELE NEURONALE

✓ Pas 5: Proiectarea modelului neuronal

58
INTELIGENȚĂ ARTIFICIALĂ - REȚELE NEURONALE

✓ Pas 6: Antrenarea modelului neuronal

59
INTELIGENȚĂ ARTIFICIALĂ - REȚELE NEURONALE

✓ Pas 7: Salvarea modelului și ponderilor

✓ Pas 8: Încărcarea modelului și ponderilor

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

3.6 REȚEA NEURONALĂ CONVOLUȚIONALĂ (CNN)

3.6.1 OBIECTIVE ȘI PREMISE TEORETICE


− Rezolvarea de probleme de clasificare cu rețele neuronale convoluționale în limbajul Python.
− Evaluarea performanțelor rețelei.
− Matricea de confuzie.

3.6.2 PREDICȚIA NIVELULUI DE SATISFACȚIE AL CLIENȚILOR FOLOSIND CNN


Setul de date santander-customer-satisfaction.zip conține informații cu privire la nivelul de
satisfacție al clienților din banca Santander (reprezentat prin două clase: 0 – „client mulțumit” și 1 – „client
nemulțumit”). Arhiva are datele stocate în fișiere format CSV și se poate descărca de la adresa URL:
https://www.kaggle.com/c/santander-customer-satisfaction/data

✓ Pasul 1: Importarea librăriilor Python

✓ Pasul 2: Încărcarea datelor din Google Drive

62
INTELIGENȚĂ ARTIFICIALĂ - REȚELE NEURONALE

✓ Pasul 3: Împărțirea datelor în seturi

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

✓ Pasul 5: Proiectarea modelului CNN

65
INTELIGENȚĂ ARTIFICIALĂ - REȚELE NEURONALE

✓ Pasul 6: Antrenarea modelului CNN

66
INTELIGENȚĂ ARTIFICIALĂ - REȚELE NEURONALE

✓ Pas 7: Salvarea modelului și ponderilor CNN

✓ Pas 8: Încărcarea modelului și a ponderilor CNN

67
INTELIGENȚĂ ARTIFICIALĂ - REȚELE NEURONALE

✓ Pas 9: Predicția și evaluarea performanței modelului CNN

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

3.6.3 RECUNOAȘTEREA UNOR ANIMALE DIN IMAGINI FOLOSIND CNN


Pentru exemplificare s-a folosit setul de date care conține imagini cu câini și pisici
cats_and_dogs_minidataset.zip și care este o versiune redusă a setului de date public dogs-vs-cats:
https://www.kaggle.com/c/dogs-vs-cats/data

Imaginile din setul de date sunt grupate pe 3 categorii:


- set de imagini pentru antrenare ( folder-ul „train/”);
- set de imagini pentru testare (folder-ul „test”);
- set de imagini pentru validare (folder-ul „validare”).

✓ Pasul 1: Importarea librăriilor Python

✓ Pasul 2: Încărcarea datelor din Google Drive

✓ Pasul 3: Proiectarea modelului CNN

70
INTELIGENȚĂ ARTIFICIALĂ - REȚELE NEURONALE

71
INTELIGENȚĂ ARTIFICIALĂ - REȚELE NEURONALE

✓ Pasul 4: Generarea setului de antrenare și setului de testare

✓ Pasul 5: Antrenarea modelului CNN

...

72
INTELIGENȚĂ ARTIFICIALĂ - REȚELE NEURONALE

✓ Pasul 6: Salvarea modelului și ponderilor CNN

✓ Pasul 7: Încărcarea modelului și a ponderilor CNN

✓ Pas 8: Predicția și evaluarea performanței modelului CNN

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

S-ar putea să vă placă și