Inteligența artificială (AI) a câștigat o popularitate semnificativă în ultimii ani.
Dacă sunteți un inginer de software, un informatician sau un pasionat de știința datelor în general, atunci probabil că sunteți intrigat de aplicațiile uimitoare de procesare a imaginilor, recunoaștere a modelelor și detectarea obiectelor oferite de acest domeniu.
Cel mai important subdomeniu al AI despre care probabil ați auzit este Deep Learning. Acest domeniu se concentrează pe algoritmi puternici (instrucțiuni de program pentru computer) modelați după funcționalitatea creierului uman cunoscută sub numele de Rețele neuronale.
În acest articol, vom trece peste conceptul de rețele neuronale și cum să construim, să compilați, să potrivim și să evaluăm aceste modele folosind Piton.
Rețele neuronale
Rețelele neuronale sau NN-urile sunt o serie de algoritmi modelați după activitatea biologică a creierului uman. Rețelele neuronale constau din noduri, numite și neuroni.
O colecție de noduri verticale sunt cunoscute ca straturi. Modelul constă dintr-o intrare, o ieșire și un număr de straturi ascunse. Fiecare strat este format din noduri, numite și neuroni, unde au loc calculele.
În diagrama următoare, cercurile reprezintă nodurile, iar colecția verticală de noduri reprezintă straturile. Există trei straturi în acest model.
Nodurile unui strat sunt conectate la stratul următor prin linii de transmisie, așa cum se vede mai jos.
Setul nostru de date este format din date etichetate. Aceasta înseamnă că fiecărei entitati de date i-a fost atribuită o anumită valoare de nume.
Deci, pentru un set de date de clasificare a animalelor, vom avea imagini cu pisici și câini ca date, cu „pisică” și „câine” ca etichete.
Este important de reținut că etichetele trebuie convertite în valori numerice pentru ca modelul nostru să le dea sens, astfel încât etichetele noastre de animale devin „0” pentru pisică și „1” pentru câine. Atât datele, cât și etichetele sunt trecute prin model.
Learning
Datele sunt transmise modelului o entitate la un moment dat. Aceste date sunt împărțite în bucăți și trecute prin fiecare nod al modelului. Nodurile efectuează operații matematice pe aceste bucăți.
Nu trebuie să cunoașteți funcțiile matematice sau calculele pentru acest tutorial, dar este important să aveți o idee generală despre cum funcționează aceste modele. După o serie de calcule într-un strat, datele sunt transmise în stratul următor și așa mai departe.
Odată finalizat, modelul nostru prezice eticheta de date la nivelul de ieșire (de exemplu, într-o problemă de clasificare a animalelor, obținem o predicție „0” pentru o pisică).
Modelul continuă apoi să compare această valoare prezisă cu cea a valorii efective a etichetei.
Dacă valorile se potrivesc, modelul nostru va prelua următoarea intrare, dar dacă valorile diferă, modelul va calcula diferența dintre ambele valori, numită pierdere, și va ajusta calculele nodurilor pentru a produce etichete potrivite data viitoare.
Cadre de învățare profundă
Pentru a construi rețele neuronale în cod, trebuie să importăm Cadre de învățare profundă cunoscute ca biblioteci folosind mediul nostru de dezvoltare integrat (IDE).
Aceste cadre sunt o colecție de funcții pre-scrise care ne vor ajuta în acest tutorial. Vom folosi cadrul Keras pentru a ne construi modelul.
Keras este o bibliotecă Python care folosește un backend de învățare profundă și inteligență artificială numit flux tensor pentru a crea cu ușurință NN-uri sub formă de modele secvențiale simple.
Keras vine, de asemenea, cu propriile modele preexistente care ar putea fi folosite și. Pentru acest tutorial, ne vom crea propriul model folosind Keras.
Puteți afla mai multe despre acest cadru de învățare profundă din Site-ul Keras.
Construirea unei rețele neuronale (tutorial)
Să trecem la construirea unei rețele neuronale folosind Python.
Declarație problemă
Rețelele neuronale sunt un tip de soluție pentru problemele bazate pe AI. Pentru acest tutorial vom analiza datele despre diabetul indienilor Pima, care sunt disponibile aici.
UCI Machine Learning a compilat acest set de date și conține o fișă medicală a pacienților indieni. Modelul nostru trebuie să prezică dacă pacientul are un debut al diabetului în 5 ani sau nu.
Se încarcă setul de date
Setul nostru de date este un singur fișier CSV numit „diabetes.csv”, care poate fi manipulat cu ușurință folosind Microsoft Excel.
Înainte de a crea modelul nostru, trebuie să ne importăm setul de date. Folosind următorul cod puteți face acest lucru:
import panda ca pd
date = pd.read_csv('diabetes.csv')
x = data.drop(„Rezultat”)
y = date[„Rezultat”]
Aici folosim ursi panda pentru a putea manipula datele fișierului nostru CSV, read_csv() este o funcție încorporată a lui Pandas care ne permite să stocăm valorile din fișierul nostru într-o variabilă numită „date”.
Variabila x conține setul nostru de date fără datele de rezultat (etichete). Obținem acest lucru cu funcția data.drop() care elimină etichetele pentru x, în timp ce y conține doar datele rezultatului (eticheta).
Construirea modelului secvenţial
Pasul 1: Importul bibliotecilor
În primul rând, trebuie să importăm TensorFlow și Keras, împreună cu anumiți parametri necesari pentru modelul nostru. Următorul cod ne permite să facem acest lucru:
import tensorflow ca tf
din tensorflow import keras
din tensorflow.keras.models import Sequential
din tensorflow.keras.layers import Activare, Dens
de la tensorflow.keras.optimizers import Adam
din tensorflow.keras.metrics import categorical_crossentropy
Pentru modelul nostru importăm straturi dense. Acestea sunt straturi complet conectate; adică, fiecare nod dintr-un strat este complet conectat cu un alt nod din stratul următor.
Importăm și un activare funcție necesară pentru scalarea datelor trimise către noduri. Optimizatori au fost de asemenea importate pentru a minimiza pierderile.
Adam este un optimizator renumit care face ca calculele nodurilor de actualizare a modelului nostru să fie mai eficiente, împreună cu categoric_crossentropie care este tipul de funcție de pierdere (calculează diferența dintre valorile etichetelor reale și cele prezise) pe care o vom folosi.
Pasul 2: Proiectarea modelului nostru
Modelul pe care îl creez are un strat de intrare (cu 16 unități), unul ascuns (cu 32 de unități) și unul de ieșire (cu 2 unități). Aceste numere nu sunt fixe și vor depinde în întregime de problema dată.
Setarea numărului corect de unități și straturi este un proces care poate fi îmbunătățit prin practică. Activarea corespunde tipului de scalare pe care îl vom efectua asupra datelor noastre înainte de a le trece printr-un nod.
Relu și Softmax sunt funcții de activare renumite pentru această sarcină.
model = secvenţial([
Dens(unități = 16, input_shape = (1,), activation = 'relu'),
Dens(unități = 32, activare = 'relu'),
Dens (unități = 2, activare = „softmax”)
])
Iată cum ar trebui să arate rezumatul modelului:
Instruirea modelului
Modelul nostru va fi antrenat în doi pași, primul fiind compilarea modelului (asamblarea modelului) și următorul fiind potrivirea modelului pe un set de date dat.
Acest lucru se poate face folosind funcția model.compile() urmată de funcția model.fit().
model.compile(optimizer = Adam(learning_rate = 0.0001), loss = 'binary_crossentropy', metrics = ['accuracy'])
model.fit(x, y, epochs = 30, batch_size = 10)
Specificarea valorii „acurateței” ne permite să observăm acuratețea modelului nostru în timpul antrenamentului.
Deoarece etichetele noastre sunt sub formă de 1 și 0, vom folosi o funcție binară de pierdere pentru a calcula diferența dintre etichetele reale și cele prezise.
Setul de date este, de asemenea, împărțit în loturi de 10 (batch_size) și va fi trecut prin model de 30 de ori (epoci). Pentru un anumit set de date, x ar fi datele și y ar fi etichetele corespunzătoare datelor.
Model de testare folosind predicții
Pentru a evalua modelul nostru, facem predicții asupra datelor de testare folosind funcția predict().
predictions = model.predict(x)
Si asta e!
Acum ar trebui să înțelegeți bine Invatare profunda aplicație, rețele neuronale, cum funcționează în general și cum să construiți, să antrenezi și să testați un model în codul Python.
Sper că acest tutorial vă oferă startul pentru a crea și implementa propriile modele de Deep Learning.
Spune-ne în comentarii dacă articolul a fost util.
Lasă un comentariu