Sadržaj[Sakrij][Prikaži]
Posljednjih godina, neuronske mreže su postale popularnije jer su se pokazale izuzetno dobrim u širokom spektru zadataka.
Pokazalo se da su odličan izbor za prepoznavanje slike i zvuka, obradu prirodnog jezika, pa čak i igranje komplikovanih igara kao što su Go i šah.
U ovom postu ću vas provesti kroz cijeli proces treniranja neuronske mreže. Spomenut ću i objasniti sve korake za treniranje neuronske mreže.
Dok ću preći preko koraka, želio bih dodati jednostavan primjer kako bih bio siguran da postoji i praktičan primjer.
Dakle, hajde da naučimo kako da obrađujemo neuronske mreže
Počnimo jednostavno i pitajmo šta su neuronske mreže na prvom mjestu.
Šta su zapravo neuronske mreže?
Neuronske mreže su kompjuterski softver koji simulira rad ljudskog mozga. Oni mogu učiti iz ogromnih količina podataka i uočiti obrasce koje je ljudima teško otkriti.
Neuronske mreže su postale popularnije posljednjih godina zbog njihove 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 spektar aplikacija i imaju priliku da transformišu način na koji pristupamo širokom spektru poslova.
Zašto bismo trebali znati za njih?
Razumijevanje neuronskih mreža je kritično jer su dovele do otkrića u različitim poljima, uključujući kompjuterski vid, prepoznavanje govora i obradu prirodnog jezika.
Neuronske mreže, na primjer, u središtu su nedavnih razvoja automobila koji se sami voze, usluga automatskog prevođenja, pa čak i medicinske dijagnostike.
Razumijevanje kako funkcioniraju neuronske mreže i kako ih dizajnirati pomaže nam da izgradimo nove i inventivne aplikacije. I, možda, može dovesti do još većih otkrića u budućnosti.
Napomena o vodiču
Kao što sam već rekao, želeo bih da objasnim korake obuke neuronske mreže dajući primer. Da bismo to učinili, trebali bismo razgovarati o skupu podataka MNIST. To je popularan izbor za početnike koji žele početi s neuronskim mrežama.
MNIST je akronim koji označava modificirani nacionalni institut za standarde i tehnologiju. To je ručno pisani skup podataka cifara koji se obično koristi za obuku i testiranje modela mašinskog učenja, posebno neuronskih mreža.
Kolekcija sadrži 70,000 fotografija u sivim tonovima rukopisnih brojeva u rasponu od 0 do 9.
MNIST skup podataka je popularno mjerilo za klasifikacija slika zadataka. Često se koristi za podučavanje i učenje jer je kompaktan i lak za rukovanje, a istovremeno predstavlja težak izazov za algoritme za mašinsko učenje.
MNIST skup podataka podržava nekoliko okvira i biblioteka za mašinsko učenje, uključujući TensorFlow, Keras i PyTorch.
Sada znamo za MNIST skup podataka, hajde da počnemo sa našim koracima obuke neuronske mreže.
Osnovni koraci za treniranje neuronske mreže
Uvezite potrebne biblioteke
Kada prvi put počnete trenirati neuronsku mrežu, ključno je imati potrebne alate za dizajn i obuku modela. Početni korak u kreiranju neuronske mreže je uvoz potrebnih biblioteka kao što su TensorFlow, Keras i NumPy.
Ove biblioteke služe kao gradivni blokovi za razvoj neuronske mreže i pružaju ključne mogućnosti. Kombinacija ovih biblioteka omogućava kreiranje 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 okvir za mašinsko učenje otvorenog koda, Keras je API neuronske mreže visokog nivoa, a NumPy je numerička računarska 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 neuronska mreža biti obučena. To može biti bilo koja vrsta podataka, uključujući fotografije, audio i tekst.
Ključno je podijeliti skup podataka na dva dijela: jedan za obuku neuronske mreže i drugi za procjenu ispravnosti obučenog modela. Nekoliko biblioteka, uključujući TensorFlow, Keras i PyTorch, može se koristiti za uvoz skupa podataka.
Za naš primjer koristimo i Keras za učitavanje MNIST skupa podataka. U setu podataka nalazi se 60,000 fotografija treninga i 10,000 testnih slika.
mnist = keras.datasets.mnist
(train_images, train_labels), (test_images, test_labels) = mnist.load_data()
Predobradite podatke
Prethodna obrada podataka je važna faza u obučavanju neuronske mreže. To podrazumijeva pripremu i čišćenje podataka prije nego što se unesu u neuronsku mrežu.
Skaliranje vrijednosti piksela, normalizacija podataka i pretvaranje naljepnica u one-hot kodiranje su primjeri postupaka predprocesiranja. Ovi procesi pomažu neuronskoj mreži da uči efikasnije i preciznije.
Prethodna obrada podataka takođe može pomoći da se minimizira preopterećenje i poboljša performanse neuronske mreže.
Morate unaprijed obraditi podatke prije treninga neuronske mreže. Ovo uključuje promjenu oznaka na jednokratno kodiranje i skaliranje vrijednosti piksela 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 njegove arhitekture, kao što je broj slojeva, broj neurona po sloju, aktivacijske funkcije i tip mreže (feedforward, rekurentna ili konvoluciona).
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 ga efikasnijim i preciznijim.
Vrijeme je da opišemo model neuronske mreže u ovom trenutku. Za ovaj primjer koristite jednostavan model sa dva skrivena sloja, svaki sa 128 neurona, i softmax izlaznim slojem 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 biti specificirani tokom kompilacije modela neuronske mreže. Sposobnost neuronske mreže da ispravno predvidi izlaz mjeri se funkcijom gubitka.
Da bi povećao tačnost neuronske mreže tokom treninga, optimizator modifikuje njene težine. Efikasnost neuronske mreže tokom treninga se meri pomoću metrike. Model se mora kreirati prije nego što se neuronska mreža može obučiti.
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 težine mreže kako bi se smanjila funkcija gubitka poznato je kao obučavanje neuronske mreže.
Skup podataka za validaciju se koristi za testiranje neuronske mreže tokom treninga kako bi se pratila njena efikasnost i sprečilo prekomerno prilagođavanje. Proces obuke može potrajati, stoga je važno osigurati da je neuronska mreža na odgovarajući način obučena kako bi se spriječilo nedovoljno prilagođavanje.
Koristeći podatke o obuci, sada možemo trenirati model. Da bismo to učinili, moramo definirati veličinu serije (broj uzoraka obrađenih prije nego što se model ažurira) i broj epoha (broj ponavljanja u cijelom skupu podataka).
model.fit(train_images, train_labels, epochs=10, batch_size=32)
Evaluacija modela
Testiranje performansi neuronske mreže na skupu podataka testa je proces njegove evaluacije. U ovoj fazi, obučena neuronska mreža se koristi za obradu skupa testnih podataka i procjenjuje se tačnost.
Koliko efikasno neuronska mreža može predvidjeti pravi rezultat iz potpuno novih, neisprobanih podataka je mjera njene tač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činimo još boljom.
Konačno možemo procijeniti performanse modela koristeći podatke testa nakon obuke.
test_loss, test_acc = model.evaluate(test_images, test_labels)
print('Test accuracy:', test_acc)
To je sve! Obučili smo neuronsku mrežu da detektuje brojke u MNIST skupu podataka.
Od pripreme podataka do procjene efikasnosti obučenog modela, obuka neuronske mreže uključuje nekoliko procesa. Ova uputstva pomažu početnicima u efikasnoj 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.
Vizualiziranje primjera
Pokušajmo vizualizirati šta smo uradili s ovim primjerom da bismo bolje razumjeli.
Matplotlib paket se koristi u ovom isječku koda za iscrtavanje slučajnog odabira fotografija iz skupa podataka za obuku. Prvo, uvozimo Matplotlib-ov “pyplot” modul i pseudonim kao “plt”. Zatim, sa ukupnom dimenzijom od 10 x 10 inča, pravimo figuru sa 5 redova i 5 kolona podcrta.
Zatim koristimo petlju for za ponavljanje podcrta, prikazujući sliku iz skupa podataka za obuku na svakom od njih. Za prikaz slike koristi se funkcija “imshow”, s opcijom “cmap” postavljenom na 'grey' za prikaz fotografija u sivim tonovima. Naslov svake podgrafije je također postavljen na oznaku pridružene slike u kolekciji.
Konačno, koristimo funkciju “show” da prikažemo ucrtane slike na slici. Ova funkcija nam omogućava da vizualno procijenimo uzorak fotografija iz skupa podataka, što može pomoći u našem razumijevanju podataka i identifikaciji svih 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
- Neuralne mreže u smjeru naprijed (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.
- Konvolucionarne neuronske mreže (CNN): Neuronska mreža koja se obično koristi u detekciji i obradi slike. CNN-ovi su namijenjeni da automatski prepoznaju i izdvajaju karakteristike iz slika.
- Rekurentne neuronske mreže (RNN): Neuronska mreža koja se obično koristi u detekciji i obradi slike. CNN-ovi su namijenjeni da automatski prepoznaju i izdvajaju karakteristike iz slika.
- Mreže dugotrajne memorije (LSTM): Forma RNN-a stvorena da prevaziđe problem nestajanja gradijenata u standardnim RNN-ovima. Dugoročne zavisnosti u sekvencijalnim podacima mogu se bolje uhvatiti pomoću LSTM-a.
- automatski koderi: Neuronska mreža za učenje bez nadzora u kojoj se mreža uči da reproducira svoje ulazne podatke na svom izlaznom sloju. Kompresija podataka, detekcija anomalija i smanjenje šuma slike mogu se postići pomoću autokodera.
- Generativne adversarijske mreže (GAN): Generativna neuronska mreža je oblik neuronske mreže koja se uči da proizvodi nove podatke koji su uporedivi 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 kvalitet kreiranih podataka.
Zaključak, koji bi trebali biti Vaši sljedeći koraci?
Istražite nekoliko online resursa i kurseva kako biste saznali više o obuci neuronske mreže. Rad na projektima ili primjerima jedan je od metoda za bolje razumijevanje neuronskih mreža.
Počnite s jednostavnim primjerima kao što su problemi binarne klasifikacije ili zadaci klasifikacije slika, a zatim prijeđite na teže zadatke kao što su obrada prirodnog jezika ili učenje ojačavanja.
Rad na projektima pomaže vam da steknete pravo iskustvo i poboljšate svoje vještine obuke neuronskih mreža.
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 profesionalcima, dijelili svoj rad i primali komentare i pomoć.
LSRS MONRAD-KROHN
⁶ĵVolio bih vidjeti Python program za minimiziranje grešaka. Posebni selekcioni čvorovi za promjene težine na sljedeći sloj