Kazalo[Skrij][Pokaži]
V zadnjih letih so nevronske mreže postale vse bolj priljubljene, saj so se izkazale za izjemno dobre pri širokem spektru nalog.
Izkazalo se je, da so odlična izbira za prepoznavanje slik in zvoka, obdelavo naravnega jezika in celo igranje zapletenih iger, kot sta Go in šah.
V tej objavi vas bom vodil skozi celoten proces usposabljanja nevronske mreže. Omenil in razložil bom vse korake za usposabljanje nevronske mreže.
Čeprav bom pregledal korake, bi rad dodal preprost primer, da zagotovim, da obstaja tudi praktičen primer.
Torej, pridite in se naučimo obdelovati nevronske mreže
Začnimo preprosto in se vprašajmo, kaj so nevronske mreže na prvem mestu.
Kaj točno so nevronske mreže?
Nevronske mreže so računalniška programska oprema, ki simulira delovanje človeških možganov. Učijo se lahko iz ogromnih količin podatkov in opazijo vzorce, ki jih ljudje morda težko zaznajo.
Nevronske mreže so v zadnjih letih postale vse bolj priljubljene zaradi svoje vsestranskosti pri nalogah, kot so prepoznavanje slik in zvoka, obdelava naravnega jezika in napovedno modeliranje.
Na splošno so nevronske mreže močno orodje za širok spekter aplikacij in imajo priložnost spremeniti naš pristop k širokemu naboru delovnih mest.
Zakaj bi morali vedeti zanje?
Razumevanje nevronskih mrež je ključnega pomena, ker so vodile do odkritij na različnih področjih, vključno z računalniškim vidom, prepoznavanjem govora in obdelavo naravnega jezika.
Nevronske mreže so na primer v središču nedavnega razvoja samovozečih avtomobilov, storitev samodejnega prevajanja in celo medicinske diagnostike.
Razumevanje delovanja nevronskih mrež in njihovega oblikovanja nam pomaga pri gradnji novih in domiselnih aplikacij. In morda bo to v prihodnosti vodilo do še večjih odkritij.
Opomba o vadnici
Kot sem rekel zgoraj, bi rad razložil korake usposabljanja nevronske mreže s primerom. Da bi to naredili, bi morali govoriti o naboru podatkov MNIST. Je priljubljena izbira za začetnike, ki želijo začeti z nevronskimi mrežami.
MNIST je akronim, ki pomeni spremenjen nacionalni inštitut za standarde in tehnologijo. To je ročno napisan niz podatkov, ki se običajno uporablja za usposabljanje in testiranje modelov strojnega učenja, zlasti nevronskih mrež.
Zbirka vsebuje 70,000 sivinskih fotografij ročno napisanih številk od 0 do 9.
Nabor podatkov MNIST je priljubljeno merilo uspešnosti za klasifikacija slik naloge. Pogosto se uporablja za poučevanje in učenje, saj je kompakten in enostaven za uporabo, hkrati pa predstavlja težak izziv za algoritme strojnega učenja.
Nabor podatkov MNIST podpira več ogrodij in knjižnic strojnega učenja, vključno s TensorFlow, Keras in PyTorch.
Zdaj, ko vemo o naboru podatkov MNIST, začnimo z našimi koraki usposabljanja nevronske mreže.
Osnovni koraki za usposabljanje nevronske mreže
Uvoz potrebnih knjižnic
Ko prvič začnete usposabljati nevronsko mrežo, je ključnega pomena, da imate potrebna orodja za načrtovanje in usposabljanje modela. Začetni korak pri ustvarjanju nevronske mreže je uvoz potrebnih knjižnic, kot so TensorFlow, Keras in NumPy.
Te knjižnice služijo kot gradniki za razvoj nevronske mreže in zagotavljajo ključne zmogljivosti. Kombinacija teh knjižnic omogoča ustvarjanje prefinjenih zasnov nevronskih mrež in hitro usposabljanje.
Za začetek našega primera; uvozili bomo zahtevane knjižnice, ki vključujejo TensorFlow, Keras in NumPy. TensorFlow je odprtokodno ogrodje za strojno učenje, Keras je visokonivojski API za nevronske mreže, NumPy pa numerična računalniška knjižnica Python.
import tensorflow as tf
from tensorflow import keras
import numpy as np
Naložite nabor podatkov
Nabor podatkov je zdaj treba naložiti. Nabor podatkov je niz podatkov, na podlagi katerih se bo nevronska mreža učila. To je lahko katera koli vrsta podatkov, vključno s fotografijami, zvokom in besedilom.
Ključnega pomena je, da nabor podatkov razdelimo na dva dela: enega za usposabljanje nevronske mreže in drugega za oceno pravilnosti treniranega modela. Za uvoz nabora podatkov je mogoče uporabiti več knjižnic, vključno s TensorFlow, Keras in PyTorch.
V našem primeru uporabljamo tudi Keras za nalaganje nabora podatkov MNIST. V naboru podatkov je 60,000 fotografij treningov in 10,000 testnih slik.
mnist = keras.datasets.mnist
(train_images, train_labels), (test_images, test_labels) = mnist.load_data()
Predhodna obdelava podatkov
Predhodna obdelava podatkov je pomembna faza pri usposabljanju nevronske mreže. Vključuje pripravo in čiščenje podatkov, preden se vnesejo v nevronsko mrežo.
Skaliranje vrednosti slikovnih pik, normalizacija podatkov in pretvorba nalepk v kodiranje z enim pritiskom so primeri postopkov predprocesiranja. Ti procesi pomagajo nevronski mreži pri učinkovitejšem in natančnem učenju.
Predhodna obdelava podatkov lahko pomaga tudi zmanjšati prekomerno opremljanje in izboljša učinkovitost nevronske mreže.
Pred treningom nevronske mreže morate podatke predhodno obdelati. To vključuje spreminjanje oznak na kodiranje z enim sproščanjem in spreminjanje vrednosti slikovnih pik med 0 in 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
Postopek definiranja modela nevronske mreže vključuje vzpostavitev njene arhitekture, kot je število plasti, število nevronov na plast, aktivacijske funkcije in vrsta omrežja (naprej, ponavljajoče se ali konvolucijsko).
Zasnova nevronske mreže, ki jo uporabljate, je odvisna od vrste problema, ki ga poskušate rešiti. Dobro definirana zasnova nevronske mreže lahko pomaga pri učenju nevronske mreže, saj jo naredi učinkovitejšo in natančnejšo.
Čas je, da na tej točki opišemo model nevronske mreže. Za ta primer uporabite preprost model z dvema skritima slojema, vsaka s 128 nevroni, in izhodno plastjo softmax, ki ima 10 nevronov.
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')
])
Sestavite model
Funkcijo izgube, optimizator in meritve je treba določiti med kompilacijo modela nevronske mreže. Sposobnost nevronske mreže, da pravilno napove rezultat, se meri s funkcijo izgube.
Za povečanje natančnosti nevronske mreže med usposabljanjem optimizator spremeni njene uteži. Učinkovitost nevronske mreže med treningom se meri z metrikami. Model je treba ustvariti, preden se lahko uri nevronska mreža.
V našem primeru moramo sedaj sestaviti model.
model.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['accuracy'])
Usposobite modela
Posredovanje pripravljenega nabora podatkov skozi nevronsko mrežo ob spreminjanju uteži omrežja za zmanjšanje funkcije izgube je znano kot usposabljanje nevronske mreže.
Nabor validacijskih podatkov se uporablja za preizkušanje nevronske mreže med usposabljanjem, da se spremlja njena učinkovitost in prepreči prekomerno opremljanje. Proces usposabljanja lahko traja nekaj časa, zato je pomembno, da se prepričate, da je nevronska mreža ustrezno usposobljena, da preprečite nezadostno prilagajanje.
Z uporabo podatkov o usposabljanju lahko zdaj usposobimo model. Da bi to naredili, moramo definirati velikost serije (število vzorcev, obdelanih pred posodobitvijo modela) in število epoh (število ponovitev v celotnem nizu podatkov).
model.fit(train_images, train_labels, epochs=10, batch_size=32)
Ocenjevanje modela
Testiranje delovanja nevronske mreže na testnem naboru podatkov je proces njegovega ocenjevanja. Na tej stopnji se izurjena nevronska mreža uporablja za obdelavo nabora testnih podatkov in ovrednoti se točnost.
Kako učinkovito lahko nevronska mreža napove pravi rezultat iz popolnoma novih, nepreizkušenih podatkov, je merilo njene natančnosti. Analiza modela lahko pomaga ugotoviti, kako dobro deluje nevronska mreža, in tudi predlaga načine, kako jo še izboljšati.
Končno lahko ocenimo delovanje modela z uporabo testnih podatkov po treningu.
test_loss, test_acc = model.evaluate(test_images, test_labels)
print('Test accuracy:', test_acc)
To je vse! Nevronsko mrežo smo usposobili za zaznavanje števk v naboru podatkov MNIST.
Od priprave podatkov do ocene učinkovitosti usposobljenega modela usposabljanje nevronske mreže vključuje več procesov. Ta navodila pomagajo novincem pri učinkoviti gradnji in usposabljanju nevronskih mrež.
Začetniki, ki želijo uporabiti nevronske mreže za reševanje različnih težav, lahko to storijo tako, da sledijo tem navodilom.
Vizualizacija primera
Poskusimo si predstavljati, kaj smo naredili s tem primerom, da bomo bolje razumeli.
Paket Matplotlib se v tem izrezku kode uporablja za risanje naključnega izbora fotografij iz nabora podatkov za usposabljanje. Najprej uvozimo Matplotlibov modul “pyplot” in ga poimenujemo kot “plt”. Nato s skupno dimenzijo 10 x 10 palcev izdelamo figuro s 5 vrsticami in 5 stolpci podploskov.
Nato uporabimo zanko for za ponavljanje podriskov in na vsakem prikažemo sliko iz nabora podatkov za usposabljanje. Za prikaz slike se uporablja funkcija “imshow”, pri čemer je možnost “cmap” nastavljena na 'gray' za prikaz fotografij v sivinah. Naslov vsake podploskve je prav tako nastavljen na oznako povezane slike v zbirki.
Nazadnje uporabimo funkcijo “show” za prikaz narisanih slik na sliki. Ta funkcija nam omogoča vizualno ovrednotenje vzorca fotografij iz nabora podatkov, kar nam lahko pomaga pri razumevanju podatkov in prepoznavanju morebitnih pomislekov.
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()
Pomembni modeli nevronske mreže
- Napovedne nevronske mreže (FFNN): Enostavna vrsta nevronske mreže, v kateri informacije potujejo samo na en način, od vhodne plasti do izhodne plasti prek ene ali več skritih plasti.
- Konvolucijske nevronske mreže (CNN): Nevronska mreža, ki se običajno uporablja pri zaznavanju in obdelavi slik. CNN so namenjeni samodejnemu prepoznavanju in izločanju funkcij iz slik.
- Ponavljajoče se nevronske mreže (RNN): Nevronska mreža, ki se običajno uporablja pri zaznavanju in obdelavi slik. CNN so namenjeni samodejnemu prepoznavanju in izločanju funkcij iz slik.
- Omrežja dolgotrajnega kratkoročnega pomnilnika (LSTM): Oblika RNN, ustvarjena za reševanje težave z izginjajočimi prelivi v standardnih RNN. Dolgoročne odvisnosti v zaporednih podatkih je mogoče bolje zajeti z LSTM.
- Avtokodirniki: Nenadzorovano učno nevronsko omrežje, v katerem je omrežje naučeno reproducirati svoje vhodne podatke na svoji izhodni plasti. Stiskanje podatkov, odkrivanje anomalij in odpravljanje šumov slike je mogoče doseči s samodejnimi kodirniki.
- Generativna kontradiktorna omrežja (GAN): Generativna nevronska mreža je oblika nevronske mreže, ki je naučena proizvajati nove podatke, ki so primerljivi z naborom podatkov za usposabljanje. GAN so sestavljeni iz dveh omrežij: generatorskega omrežja, ki ustvarja sveže podatke, in diskriminatorskega omrežja, ki ocenjuje kakovost ustvarjenih podatkov.
Zaključek, kakšni bi morali biti vaši naslednji koraki?
Raziščite več spletnih virov in tečajev, če želite izvedeti več o usposabljanju nevronske mreže. Delo na projektih ali primerih je ena od metod za boljše razumevanje nevronskih mrež.
Začnite z enostavnimi primeri, kot so problemi binarne klasifikacije ali naloge klasifikacije slik, nato pa pojdite na težje naloge, kot je obdelava naravnega jezika ali okrepljeno učenje.
Delo na projektih vam pomaga pridobiti resnične izkušnje in izboljšati svoje sposobnosti usposabljanja nevronske mreže.
Prav tako se lahko pridružite spletnim skupinam in forumom za strojno učenje in nevronske mreže, da komunicirate z drugimi učenci in strokovnjaki, delite svoje delo ter prejemate komentarje in pomoč.
LSRS MONRAD-KROHN
⁶ĵRad bi videl program python za zmanjšanje napak. Posebna izbirna vozlišča za spremembe teže v naslednjo plast