Pregled sadržaja[Sakriti][Pokazati]
Posljednjih godina popularnost neuronskih mreža porasla je jer su se pokazale iznimno dobrima u širokom rasponu zadataka.
Pokazalo se da su izvrstan izbor za prepoznavanje slike i zvuka, obradu prirodnog jezika, pa čak i igranje kompliciranih igara poput goa i šaha.
U ovom postu ću vas provesti kroz cijeli proces treniranja neuronske mreže. Spomenut ću i objasniti sve korake za treniranje neuronske mreže.
Iako ću pregledati korake, želio bih dodati jednostavan primjer kako bih bio siguran da postoji i praktičan primjer.
Dakle, dođite i naučimo kako obraditi neuronske mreže
Počnimo jednostavno i pitajmo se što su neuronske mreže na prvom mjestu.
Što su zapravo neuronske mreže?
Neuronske mreže su računalni softver koji simulira rad ljudskog mozga. Oni mogu učiti iz golemih količina podataka i uočiti obrasce koje bi ljudima bilo teško otkriti.
Neuronske mreže su posljednjih godina postale sve popularnije zbog svoje svestranosti u zadacima kao što su prepoznavanje slike i zvuka, obrada prirodnog jezika i prediktivno modeliranje.
Sve u svemu, neuronske mreže su snažan alat za širok raspon primjena i imaju priliku promijeniti način na koji pristupamo širokom rasponu poslova.
Zašto bismo trebali znati za njih?
Razumijevanje neuronskih mreža je ključno jer su dovele do otkrića u raznim poljima, uključujući računalni vid, prepoznavanje govora i obradu prirodnog jezika.
Neuronske mreže, na primjer, u središtu su nedavnih razvoja samovozećih automobila, usluga automatskog prevođenja, pa čak i medicinske dijagnostike.
Razumijevanje načina na koji funkcioniraju neuronske mreže i kako ih dizajnirati pomaže nam u izgradnji novih i inventivnih aplikacija. I, možda, to može dovesti do još većih otkrića u budućnosti.
Napomena o vodiču
Kao što sam rekao gore, želio bih objasniti korake treniranja neuronske mreže dajući primjer. Da bismo to učinili, trebali bismo govoriti o MNIST skupu podataka. To je popularan izbor za početnike koji žele započeti s neuronskim mrežama.
MNIST je akronim koji označava Modificirani nacionalni institut za standarde i tehnologiju. To je rukom pisani skup podataka koji se obično koristi za obuku i testiranje modela strojnog učenja, osobito neuronskih mreža.
Zbirka sadrži 70,000 0 fotografija u sivim tonovima rukom ispisanih brojeva u rasponu od 9 do XNUMX.
Skup podataka MNIST popularno je mjerilo za klasifikacija slika zadaci. Često se koristi za poučavanje i učenje jer je kompaktan i jednostavan za rukovanje, a istovremeno predstavlja težak izazov za algoritme strojnog učenja.
MNIST skup podataka podržava nekoliko okvira i biblioteka strojnog učenja, uključujući TensorFlow, Keras i PyTorch.
Sada kada znamo za skup podataka MNIST, počnimo s našim koracima obuke neuronske mreže.
Osnovni koraci za treniranje neuronske mreže
Uvezite potrebne biblioteke
Kada prvi put započnete obuku neuronske mreže, ključno je imati potrebne alate za dizajn i obuku modela. Početni korak u stvaranju neuronske mreže je uvoz potrebnih biblioteka kao što su TensorFlow, Keras i NumPy.
Ove biblioteke služe kao građevni blokovi za razvoj neuronske mreže i pružaju ključne mogućnosti. Kombinacija ovih biblioteka omogućuje stvaranje sofisticiranih dizajna neuronskih mreža i brzu obuku.
Za početak našeg primjera; mi ćemo uvesti potrebne biblioteke, koje uključuju TensorFlow, Keras i NumPy. TensorFlow je open-source okvir strojnog učenja, Keras je API neuronske mreže visoke razine, a NumPy je numerička računalna Python biblioteka.
import tensorflow as tf
from tensorflow import keras
import numpy as np
Učitajte skup podataka
Skup podataka sada mora biti učitan. Skup podataka je skup podataka na kojima će se neuronska mreža trenirati. To može biti bilo koja vrsta podataka, uključujući fotografije, zvuk i tekst.
Ključno je podijeliti skup podataka u dva dijela: jedan za obuku neuronske mreže i drugi za procjenu ispravnosti obučenog modela. Za uvoz skupa podataka može se koristiti nekoliko biblioteka, uključujući TensorFlow, Keras i PyTorch.
Za naš primjer koristimo i Keras za učitavanje skupa podataka MNIST. U skupu podataka nalazi se 60,000 10,000 fotografija s treninga i XNUMX XNUMX testnih slika.
mnist = keras.datasets.mnist
(train_images, train_labels), (test_images, test_labels) = mnist.load_data()
Predobradite podatke
Predobrada podataka važna je faza u obučavanju neuronske mreže. To uključuje pripremu i čišćenje podataka prije nego što se unesu u neuronsku mrežu.
Skaliranje vrijednosti piksela, normaliziranje podataka i pretvaranje oznaka u jednokratno kodiranje primjeri su postupaka pretprocesiranja. Ovi procesi pomažu neuronskoj mreži u učinkovitijem i preciznijem učenju.
Predobrada podataka također može pomoći u smanjenju prekomjernog opremanja i poboljšanju performansi neuronske mreže.
Prije treniranja neuronske mreže morate prethodno obraditi podatke. To uključuje promjenu oznaka na jednokratno kodiranje i skaliranje vrijednosti piksela tako da budu između 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)
Definirajte model
Proces definiranja modela neuronske mreže uključuje uspostavljanje njezine arhitekture, kao što je broj slojeva, broj neurona po sloju, aktivacijske funkcije i vrsta mreže (unaprijed, rekurentna ili konvolucijska).
Dizajn neuronske mreže koji koristite određen je vrstom problema koji pokušavate riješiti. Dobro definiran dizajn neuronske mreže može pomoći u učenju neuronske mreže čineći je učinkovitijom i točnijom.
Vrijeme je da u ovom trenutku opišemo model neuronske mreže. Za ovaj primjer upotrijebite jednostavan model s dva skrivena sloja, svaki sa 128 neurona, i softmax izlazni sloj, koji ima 10 neurona.
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')
])
Sastavite model
Funkcija gubitka, optimizator i metrika moraju se specificirati tijekom kompilacije modela neuronske mreže. Sposobnost neuronske mreže da ispravno predvidi izlaz mjeri se funkcijom gubitka.
Kako bi se povećala točnost neuronske mreže tijekom obuke, optimizator modificira svoje težine. Učinkovitost neuronske mreže tijekom treninga mjeri se pomoću metrike. Model se mora izraditi prije nego što se neuronska mreža može trenirati.
U našem primjeru, sada moramo konstruirati model.
model.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['accuracy'])
Obučite model
Prolazak pripremljenog skupa podataka kroz neuronsku mrežu uz modificiranje mrežnih težina kako bi se minimizirala funkcija gubitka poznato je kao treniranje neuronske mreže.
Skup podataka za provjeru valjanosti koristi se za testiranje neuronske mreže tijekom obuke kako bi se pratila njezina učinkovitost i spriječilo prekomjerno opremanje. Proces uvježbavanja može potrajati neko vrijeme, stoga je važno osigurati da je neuronska mreža prikladno uvježbana kako bi se spriječilo nedovoljno prilagođavanje.
Koristeći podatke za obuku, sada možemo trenirati model. Da bismo to učinili, moramo definirati veličinu serije (broj uzoraka obrađenih prije ažuriranja modela) i broj epoha (broj ponavljanja u cijelom skupu podataka).
model.fit(train_images, train_labels, epochs=10, batch_size=32)
Ocjenjivanje modela
Testiranje izvedbe neuronske mreže na testnom skupu podataka proces je njegove evaluacije. U ovoj se fazi obučena neuronska mreža koristi za obradu skupa testnih podataka i procjenjuje se točnost.
Koliko učinkovito neuronska mreža može predvidjeti pravi rezultat iz potpuno novih, neisprobanih podataka mjerilo je njezine točnosti. Analiza modela može pomoći u određivanju koliko dobro neuronska mreža radi i također predložiti načine da je učinite još boljom.
Napokon možemo procijeniti izvedbu modela pomoću testnih podataka nakon obuke.
test_loss, test_acc = model.evaluate(test_images, test_labels)
print('Test accuracy:', test_acc)
To je sve! Istrenirali smo neuronsku mrežu za otkrivanje znamenki u MNIST skupu podataka.
Od pripreme podataka do procjene učinkovitosti obučenog modela, obuka neuronske mreže uključuje nekoliko procesa. Ove upute pomažu početnicima u učinkovitoj izgradnji i obuci neuronskih mreža.
Početnici koji žele koristiti neuronske mreže za rješavanje raznih problema mogu to učiniti slijedeći ove upute.
Vizualizacija primjera
Pokušajmo vizualizirati što smo učinili s ovim primjerom kako bismo bolje razumjeli.
Paket Matplotlib koristi se u ovom isječku koda za iscrtavanje slučajnog odabira fotografija iz skupa podataka za obuku. Prvo uvozimo Matplotlibov “pyplot” modul i imenujemo ga kao “plt”. Zatim, s ukupnom dimenzijom od 10 x 10 inča, napravimo figuru s 5 redaka i 5 stupaca podcrta.
Zatim koristimo for petlju za ponavljanje preko podploča, prikazujući sliku iz skupa podataka za obuku na svakoj od njih. Za prikaz slike koristi se funkcija “imshow”, s opcijom “cmap” postavljenom na 'gray' za prikaz fotografija u sivim tonovima. Naslov svakog podzapleta također je postavljen na oznaku pridružene slike u kolekciji.
Na kraju, koristimo funkciju "show" za prikaz iscrtanih slika na slici. Ova nam funkcija omogućuje vizualnu procjenu uzorka fotografija iz skupa podataka, što nam može pomoći u razumijevanju podataka i identifikaciji mogućih problema.
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()
Važni modeli neuronskih mreža
- Feedforward neuronske mreže (FFNN): Jednostavna vrsta neuronske mreže u kojoj informacije putuju samo na jedan način, od ulaznog sloja do izlaznog sloja preko jednog ili više skrivenih slojeva.
- Konvolucijske neuronske mreže (CNN): Neuronska mreža koja se obično koristi u otkrivanju i obradi slike. CNN-ovi su namijenjeni za automatsko prepoznavanje i izdvajanje značajki iz slika.
- Ponavljajuće neuronske mreže (RNN): Neuronska mreža koja se obično koristi u otkrivanju i obradi slike. CNN-ovi su namijenjeni za automatsko prepoznavanje i izdvajanje značajki iz slika.
- Mreže dugog kratkoročnog pamćenja (LSTM): Oblik RNN-a stvoren da bi se prevladao problem nestajanja gradijenata u standardnim RNN-ovima. Dugoročne ovisnosti u sekvencijalnim podacima mogu se bolje obuhvatiti LSTM-ovima.
- Autokoderi: Neuralna mreža za učenje bez nadzora u kojoj se mreža uči reproducirati svoje ulazne podatke na svom izlaznom sloju. Kompresija podataka, otkrivanje anomalija i uklanjanje šuma na slici mogu se postići pomoću autokodera.
- Generativne kontradiktorne mreže (GAN): Generativna neuronska mreža je oblik neuronske mreže koja se uči da proizvodi nove podatke koji su usporedivi sa skupom podataka za obuku. GAN-ovi se sastoje od dvije mreže: generatorske mreže koja stvara svježe podatke i diskriminatorske mreže koja procjenjuje kvalitetu stvorenih podataka.
Zaključak, koji bi trebali biti vaši sljedeći koraci?
Istražite nekoliko mrežnih izvora i tečajeva kako biste saznali više o obuci neuronske mreže. Rad na projektima ili primjerima jedna je od metoda boljeg razumijevanja neuronskih mreža.
Započnite s jednostavnim primjerima kao što su problemi binarne klasifikacije ili zadaci klasifikacije slika, a zatim prijeđite na teže zadatke poput obrade prirodnog jezika ili učenje učvršćivanja.
Rad na projektima pomaže vam da steknete stvarno iskustvo i poboljšate svoje vještine treniranja neuronske mreže.
Također se možete pridružiti online grupama i forumima za strojno učenje i neuronske mreže kako biste komunicirali s drugim učenicima i stručnjacima, dijelili svoj rad i primali komentare i pomoć.
LSRS MONRAD-KROHN
⁶ĵVolio bih vidjeti python program za smanjenje pogrešaka. Posebni odabir čvorova za promjene težine na sljedeći sloj