Cuprins[Ascunde][Spectacol]
În ultimii ani, rețelele neuronale au crescut în popularitate, deoarece s-au dovedit a fi extrem de bune la o gamă largă de sarcini.
S-a dovedit a fi o alegere excelentă pentru recunoașterea imaginilor și audio, procesarea limbajului natural și chiar pentru a juca jocuri complicate precum Go și șah.
În această postare, vă voi ghida prin întregul proces de formare a unei rețele neuronale. Voi menționa și explica toți pașii pentru a antrena o rețea neuronală.
În timp ce voi trece peste pași, aș dori să adaug un exemplu simplu pentru a mă asigura că există și un exemplu practic.
Așadar, haideți și să învățăm cum să procesăm rețelele neuronale
Să începem simplu și să întrebăm care sunt rețele neuronale in primul loc.
Ce sunt exact rețelele neuronale?
Rețelele neuronale sunt software de calculator care simulează funcționarea creierului uman. Ei pot învăța din volume mari de date și pot identifica modele pe care oamenii le pot găsi greu de detectat.
Rețelele neuronale au crescut în popularitate în ultimii ani datorită versatilității lor în sarcini precum recunoașterea imaginilor și audio, procesarea limbajului natural și modelarea predictivă.
În general, rețelele neuronale sunt un instrument puternic pentru o gamă largă de aplicații și au șansa de a transforma modul în care abordăm o gamă largă de locuri de muncă.
De ce ar trebui să știm despre ei?
Înțelegerea rețelelor neuronale este esențială, deoarece acestea au condus la descoperiri într-o varietate de domenii, inclusiv viziunea computerizată, recunoașterea vorbirii și procesarea limbajului natural.
Rețelele neuronale, de exemplu, se află în centrul evoluțiilor recente în domeniul mașinilor cu conducere autonomă, al serviciilor de traducere automată și chiar al diagnosticului medical.
Înțelegerea modului în care funcționează rețelele neuronale și a modului de proiectare a acestora ne ajută să construim aplicații noi și inventive. Și, poate, poate duce la descoperiri și mai mari în viitor.
O notă despre tutorial
După cum am spus mai sus, aș dori să explic pașii antrenării unei rețele neuronale dând un exemplu. Pentru a face acest lucru, ar trebui să vorbim despre setul de date MNIST. Este o alegere populară pentru începătorii care doresc să înceapă cu rețelele neuronale.
MNIST este un acronim care înseamnă Institutul Național de Standarde și Tehnologie Modificat. Este un set de date cu cifre scrise de mână care este utilizat în mod obișnuit pentru antrenarea și testarea modelelor de învățare automată, în special a rețelelor neuronale.
Colecția conține 70,000 de fotografii în tonuri de gri cu cifre scrise de mână, de la 0 la 9.
Setul de date MNIST este un reper popular pentru clasificarea imaginii sarcini. Este folosit frecvent pentru predare și învățare, deoarece este compact și ușor de tratat, în timp ce reprezintă o provocare dificilă pentru algoritmii de învățare automată.
Setul de date MNIST este susținut de mai multe cadre și biblioteci de învățare automată, inclusiv TensorFlow, Keras și PyTorch.
Acum știm despre setul de date MNIST, să începem cu pașii noștri de pregătire a unei rețele neuronale.
Pași de bază pentru antrenarea unei rețele neuronale
Importați bibliotecile necesare
Când începeți pentru prima dată să antrenați o rețea neuronală, este esențial să aveți instrumentele necesare pentru a proiecta și antrena modelul. Pasul inițial în crearea unei rețele neuronale este să importați bibliotecile necesare, cum ar fi TensorFlow, Keras și NumPy.
Aceste biblioteci servesc ca blocuri de construcție pentru dezvoltarea rețelei neuronale și oferă capabilități cruciale. Combinația acestor biblioteci permite crearea de rețele neuronale sofisticate și antrenament rapid.
Pentru a începe exemplul nostru; vom importa bibliotecile necesare, care includ TensorFlow, Keras și NumPy. TensorFlow este un cadru de învățare automată open-source, Keras este un API de rețea neuronală de nivel înalt, iar NumPy este o bibliotecă Python de calcul numeric.
import tensorflow as tf
from tensorflow import keras
import numpy as np
Încărcați setul de date
Acum setul de date trebuie încărcat. Setul de date este setul de date pe care va fi antrenată rețeaua neuronală. Acesta poate fi orice tip de date, inclusiv fotografii, audio și text.
Este esențial să împărțiți setul de date în două părți: una pentru antrenarea rețelei neuronale și alta pentru evaluarea corectitudinii modelului antrenat. Mai multe biblioteci, inclusiv TensorFlow, Keras și PyTorch, pot fi folosite pentru a importa setul de date.
Pentru exemplul nostru, folosim și Keras pentru a încărca setul de date MNIST. Există 60,000 de fotografii de antrenament și 10,000 de imagini de testare în setul de date.
mnist = keras.datasets.mnist
(train_images, train_labels), (test_images, test_labels) = mnist.load_data()
Preprocesează Datele
Preprocesarea datelor este o etapă importantă în formarea unei rețele neuronale. Aceasta presupune pregătirea și curățarea datelor înainte ca acestea să fie introduse în rețeaua neuronală.
Scalarea valorilor pixelilor, normalizarea datelor și conversia etichetelor în codificare one-hot sunt exemple de proceduri de preprocesare. Aceste procese ajută rețeaua neuronală să învețe mai eficient și mai precis.
Preprocesarea datelor poate ajuta, de asemenea, la minimizarea supraajustării și la îmbunătățirea performanței rețelei neuronale.
Trebuie să preprocesați datele înainte de a antrena rețeaua neuronală. Aceasta include schimbarea etichetelor la codificare one-hot și scalarea valorilor pixelilor pentru a fi între 0 și 1.
train_images = train_images / 255.0
test_images = test_images / 255.0
train_labels = keras.utils.to_categorical(train_labels, 10)
test_labels = keras.utils.to_categorical(test_labels, 10)
Definiți modelul
Procesul de definire a modelului rețelei neuronale implică stabilirea arhitecturii acestuia, cum ar fi numărul de straturi, numărul de neuroni pe strat, funcțiile de activare și tipul de rețea (feedforward, recurent sau convoluțional).
Designul rețelei neuronale pe care îl utilizați este determinat de tipul de problemă pe care încercați să o rezolvați. Un design bine definit de rețea neuronală poate ajuta la învățarea rețelei neuronale, făcând-o mai eficientă și mai precisă.
Este timpul să descriem modelul rețelei neuronale în acest moment. Utilizați un model simplu cu două straturi ascunse, fiecare cu 128 de neuroni și un strat de ieșire softmax, care are 10 neuroni, pentru acest exemplu.
model = keras.Sequential([
keras.layers.Flatten(input_shape=(28, 28)),
keras.layers.Dense(128, activation='relu'),
keras.layers.Dense(128, activation='relu'),
keras.layers.Dense(10, activation='softmax')
])
Compilați modelul
Funcția de pierdere, optimizatorul și valorile trebuie specificate în timpul compilării modelului rețelei neuronale. Capacitatea rețelei neuronale de a prognoza corect rezultatul este măsurată de funcția de pierdere.
Pentru a crește acuratețea rețelei neuronale în timpul antrenamentului, optimizatorul își modifică greutățile. Eficacitatea rețelei neuronale în timpul antrenamentului este măsurată folosind metrici. Modelul trebuie creat înainte ca rețeaua neuronală să poată fi antrenată.
În exemplul nostru, acum trebuie să construim modelul.
model.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['accuracy'])
Antrenează modelul
Trecerea setului de date pregătit prin rețeaua neuronală în timp ce se modifică greutățile rețelei pentru a minimiza funcția de pierdere este cunoscută sub numele de antrenament al rețelei neuronale.
Setul de date de validare este utilizat pentru a testa rețeaua neuronală în timpul antrenamentului, pentru a urmări eficacitatea acesteia și pentru a preveni supraadaptarea. Procesul de antrenament poate dura ceva timp, de aceea este important să vă asigurați că rețeaua neuronală este antrenată corespunzător pentru a preveni adaptarea insuficientă.
Folosind datele de antrenament, acum putem antrena modelul. Pentru a face acest lucru, trebuie să definim dimensiunea lotului (numărul de eșantioane procesate înainte ca modelul să fie actualizat) și numărul de epoci (numărul de repetări în întregul set de date).
model.fit(train_images, train_labels, epochs=10, batch_size=32)
Evaluarea modelului
Testarea performanței rețelei neuronale pe setul de date de testare este procesul de evaluare a acesteia. În această etapă, rețeaua neuronală antrenată este utilizată pentru a procesa setul de date de testare, iar acuratețea este evaluată.
Cât de eficient poate o rețea neuronală să prezică rezultatul corect din date noi, neîncercate este o măsură a acurateței sale. Analiza modelului poate ajuta la determinarea cât de bine funcționează rețeaua neuronală și, de asemenea, poate sugera modalități de a o îmbunătăți și mai bine.
Putem evalua în sfârșit performanța modelului folosind datele de testare după antrenament.
test_loss, test_acc = model.evaluate(test_images, test_labels)
print('Test accuracy:', test_acc)
Asta e tot! Am antrenat o rețea neuronală pentru a detecta cifrele din setul de date MNIST.
De la pregătirea datelor până la evaluarea eficacității modelului antrenat, antrenarea unei rețele neuronale implică mai multe procese. Aceste instrucțiuni îi ajută pe începători să construiască și să antreneze eficient rețele neuronale.
Începătorii care doresc să folosească rețelele neuronale pentru a aborda diverse probleme pot face acest lucru urmând aceste instrucțiuni.
Vizualizarea Exemplului
Să încercăm să vizualizăm ce am făcut cu acest exemplu pentru a înțelege mai bine.
Pachetul Matplotlib este folosit în acest fragment de cod pentru a reprezenta o selecție aleatorie de fotografii din setul de date de antrenament. În primul rând, importăm modulul „pyplot” al lui Matplotlib și îl punem sub alias ca „plt”. Apoi, cu o dimensiune totală de 10 pe 10 inci, facem o figură cu 5 rânduri și 5 coloane de subploturi.
Apoi, folosim o buclă for pentru a itera peste subploturi, afișând pe fiecare o imagine din setul de date de antrenament. Pentru a afișa imaginea, este utilizată funcția „imshow”, cu opțiunea „cmap” setată la „gri” pentru a afișa fotografiile în tonuri de gri. Titlul fiecărui subplot este, de asemenea, setat la eticheta imaginii asociate din colecție.
În cele din urmă, folosim funcția „afișare” pentru a afișa imaginile reprezentate în figură. Această funcție ne permite să evaluăm vizual un eșantion de fotografii din setul de date, ceea ce ne poate ajuta la înțelegerea datelor și la identificarea oricăror posibile preocupări.
import matplotlib.pyplot as plt
# Plot a random sample of images
fig, axes = plt.subplots(nrows=5, ncols=5, figsize=(10,10))
for i, ax in enumerate(axes.flat):
ax.imshow(train_images[i], cmap='gray')
ax.set_title(f"Label: {train_labels[i].argmax()}")
ax.axis('off')
plt.show()
Modele importante de rețele neuronale
- Rețele neuronale feedforward (FFNN): Un tip simplu de rețea neuronală în care informațiile călătoresc doar într-un singur sens, de la stratul de intrare la nivelul de ieșire prin unul sau mai multe straturi ascunse.
- Rețele neuronale convoluționale (CNN): O rețea neuronală care este utilizată în mod obișnuit în detectarea și procesarea imaginilor. CNN-urile sunt destinate să recunoască și să extragă automat caracteristici din imagini.
- Rețele neuronale recurente (RNN): O rețea neuronală care este utilizată în mod obișnuit în detectarea și procesarea imaginilor. CNN-urile sunt destinate să recunoască și să extragă automat caracteristici din imagini.
- Rețele de memorie pe termen lung (LSTM): O formă de RNN creată pentru a depăși problema dispariției gradienților în RNN-urile standard. Dependențe pe termen lung în datele secvențiale pot fi capturate mai bine cu LSTM-uri.
- Codificatoare automate: Rețea neuronală de învățare nesupravegheată în care rețeaua este învățată să-și reproducă datele de intrare la nivelul său de ieșire. Comprimarea datelor, detectarea anomaliilor și eliminarea zgomotului de imagine pot fi realizate toate cu codificatoare automate.
- Rețele adversare generative (GAN): O rețea neuronală generativă este o formă de rețea neuronală care este învățată să producă date noi care sunt comparabile cu un set de date de antrenament. GAN-urile sunt alcătuite din două rețele: o rețea generatoare care creează date noi și o rețea discriminatoare care evaluează calitatea datelor create.
Încheiere, care ar trebui să fie următorii pași?
Explorați mai multe resurse și cursuri online pentru a afla mai multe despre formarea unei rețele neuronale. Lucrul la proiecte sau exemple este o metodă de a obține o mai bună înțelegere a rețelelor neuronale.
Începeți cu exemple simple, cum ar fi probleme de clasificare binară sau sarcini de clasificare a imaginilor, apoi treceți la sarcini mai dificile, cum ar fi procesarea limbajului natural sau Consolidarea învățării.
Lucrul la proiecte vă ajută să obțineți experiență reală și să vă îmbunătățiți abilitățile de formare a rețelelor neuronale.
De asemenea, vă puteți alătura grupurilor și forumurilor de învățare automată și de rețele neuronale online pentru a interacționa cu alți cursanți și profesioniști, pentru a vă împărtăși munca și pentru a primi comentarii și ajutor.
LSRS MONRAD-KROHN
⁶ĵMi-ar fi plăcut să văd programul python pentru minimizarea erorilor. Noduri speciale de selecție pentru modificarea greutății la stratul următor