Edukien aurkibidea[Ezkutatu][Erakutsi]
Azken urteotan, sare neuronalak ospea hazi egin da, zeregin ugaritan oso onak direla erakutsi baitute.
Irudiak eta audioak ezagutzeko, hizkuntza naturalaren prozesamendurako eta Go eta xakea bezalako joko konplikatuak jokatzeko aukera bikaina direla frogatu da.
Post honetan, neurona-sare bat entrenatzeko prozesu osoan zehar emango dizut. Neurona-sare bat entrenatzeko urrats guztiak aipatu eta azalduko ditut.
Urratsak aztertuko ditudan bitartean adibide sinple bat gehitu nahiko nuke adibide praktiko bat ere badela ziurtatzeko.
Beraz, etorri, eta ikas ditzagun neurona-sareak nola prozesatzen diren
Has gaitezen sinple eta galdetu zer diren neural sareak lehenik eta behin.
Zer dira zehazki sare neuronalak?
Sare neuronalak giza garunaren funtzionamendua simulatzen duten ordenagailu-softwareak dira. Jendeak detektatzeko zailak izan daitezkeen datu-bolumen handietatik eta eredu antzemanetatik ikas dezakete.
Sare neuronalak ospea hazi egin da azken urteotan, irudien eta audioaren aitorpena, hizkuntza naturalaren prozesamendua eta eredu prediktiboa bezalako zereginetan duten aldakortasunagatik.
Orokorrean, sare neuronalak tresna sendoak dira aplikazio sorta zabaletarako eta aukera dute lan-eskaintza zabala jorratzeko modua eraldatzeko.
Zergatik jakin beharko genuke haiei buruz?
Neurona-sareak ulertzea funtsezkoa da, hainbat alorretako aurkikuntzak ekarri baitituzte, besteak beste, ordenagailu bidezko ikusmenean, hizketa-ezagutzan eta lengoaia naturalaren prozesamenduan.
Sare neuronalak, adibidez, auto gidatzen duten autoen, itzulpen automatikoko zerbitzuen eta baita diagnostiko medikoen azken garapenen oinarrian daude.
Neurona-sareek nola funtzionatzen duten eta nola diseinatzen diren ulertzeak aplikazio berriak eta asmatzaileak sortzen laguntzen digu. Eta, agian, aurkikuntza are handiagoak ekar ditzake etorkizunean.
Tutorialari buruzko ohar bat
Goian esan bezala, neurona-sare bat entrenatzeko urratsak adibide bat jarriz azaldu nahiko nituzke. Horretarako, MNIST datu multzoari buruz hitz egin beharko genuke. Aukera ezaguna da sare neuronalekin hasi nahi duten hasiberrientzat.
MNIST Estandar eta Teknologia Institutu Nazional Aldatutako akronimoa da. Eskuz idatzitako datu-multzo bat da, ikaskuntza automatikoko ereduak entrenatzeko eta probatzeko erabili ohi dena, batez ere sare neuronalak.
Bildumak 70,000tik 0ra bitarteko eskuz idatzitako zenbakien gris-eskalako 9 argazki ditu.
MNIST datu-multzoa erreferentzia ezaguna da irudien sailkapena zereginak. Irakasteko eta ikasteko maiz erabiltzen da, trinkoa eta tratatzeko erraza den arren, ikaskuntza automatikoko algoritmoek erantzuteko erronka zaila da.
MNIST datu-multzoa ikaskuntza automatikoko hainbat esparru eta liburutegik onartzen dute, besteak beste, TensorFlow, Keras eta PyTorch.
Orain MNIST datu-multzoa ezagutzen dugu, has gaitezen sare neuronal bat entrenatzeko gure urratsekin.
Sare neuronal bat prestatzeko oinarrizko urratsak
Inportatu Beharrezko Liburutegiak
Sare neuronal bat entrenatzen hastean, funtsezkoa da eredua diseinatzeko eta entrenatzeko beharrezko tresnak izatea. Sare neuronal bat sortzeko hasierako urratsa beharrezkoak diren liburutegiak inportatzea da, hala nola TensorFlow, Keras eta NumPy.
Liburutegi hauek sare neuronalaren garapenerako bloke gisa balio dute eta gaitasun erabakigarriak eskaintzen dituzte. Liburutegi hauen konbinazioak neurona sareen diseinu sofistikatuak eta prestakuntza azkarrak sortzea ahalbidetzen du.
Gure adibidea hasteko; beharrezko liburutegiak inportatuko ditugu, TensorFlow, Keras eta NumPy barne. TensorFlow kode irekiko makina ikasteko esparru bat da, Keras goi-mailako sare neuronalaren API bat da eta NumPy Python informatikoko zenbakizko liburutegia da.
import tensorflow as tf
from tensorflow import keras
import numpy as np
Kargatu Datu-multzoa
Datu multzoa kargatu behar da orain. Datu-multzoa sare neuronala entrenatuko den datu-multzoa da. Hau edozein motatako datuak izan daitezke, argazkiak, audioa eta testua barne.
Funtsezkoa da datu-multzoa bi zatitan banatzea: bata neurona-sarea entrenatzeko eta bestea entrenatutako ereduaren zuzentasuna ebaluatzeko. Datu multzoa inportatzeko hainbat liburutegi erabil daitezke, TensorFlow, Keras eta PyTorch barne.
Gure adibiderako, Keras ere erabiltzen dugu MNIST datu-multzoa kargatzeko. Datu multzoan 60,000 entrenamendu-argazki eta 10,000 proba-irudi daude.
mnist = keras.datasets.mnist
(train_images, train_labels), (test_images, test_labels) = mnist.load_data()
Aurreprozesatu datuak
Datuen aurreprozesatzea fase garrantzitsua da neurona sare bat entrenatzeko. Datuak prestatzea eta garbitzea dakar sare neuronalean sartu aurretik.
Pixel balioak eskalatzea, datuak normalizatzea eta etiketak kode bakarrean bihurtzea aurreprozesatzeko prozeduren adibideak dira. Prozesu hauek neurona-sareari modu eraginkorragoan eta zehatzagoan ikasten laguntzen dute.
Datuak aldez aurretik prozesatzeak gehiegizko egokitzea gutxitzen eta neurona-sarearen errendimendua hobetzen lagun dezake.
Datuak aldez aurretik prozesatu behar dituzu neurona-sarea entrenatu aurretik. Honek etiketak kode bakarrera aldatzea eta pixelen balioak 0 eta 1 arteko eskalatzea dakar.
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)
Definitu Eredua
Neurona-sare-eredua definitzeko prozesuak bere arkitektura ezartzea dakar, hala nola, geruza kopurua, geruza bakoitzeko neurona kopurua, aktibazio-funtzioak eta sare mota (feedforward, errepikakorra edo konboluzionala).
Erabiltzen duzun neurona-sarearen diseinua konpontzen saiatzen ari zaren arazo motaren arabera zehazten da. Ondo definitutako neurona-sarearen diseinuak sare neuronalen ikaskuntzan lagun dezake, eraginkorragoa eta zehatzagoa eginez.
Une honetan sare neuronalaren eredua deskribatzeko garaia da. Erabili eredu sinple bat ezkutuko bi geruza dituena, bakoitza 128 neurona dituena, eta softmax irteerako geruza bat, 10 neurona dituena, adibide honetarako.
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')
])
Eredua osatu
Galera-funtzioa, optimizatzailea eta neurketak zehaztu behar dira sare neuronalaren ereduaren konpilazioan. Sare neuronalak irteera zuzen aurreikusteko duen gaitasuna galera-funtzioaren arabera neurtzen da.
Entrenamenduan zehar neurona-sarearen zehaztasuna areagotzeko, optimizatzaileak bere pisuak aldatzen ditu. Entrenamenduan zehar neurona-sarearen eraginkortasuna neurriak erabiliz neurtzen da. Eredua sortu behar da sare neuronalak entrenatu aurretik.
Gure adibidean, oraintxe bertan eraiki behar dugu eredua.
model.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['accuracy'])
Prestatu Eredua
Prestatutako datu-multzoa sare neuronaletik pasatzea sarearen pisuak aldatzen diren bitartean, galera funtzioa minimizatzeko, sare neuronalaren prestakuntza deritzo.
Balidazio-datu-multzoa trebakuntzan zehar neurona-sarea probatzeko erabiltzen da, haren eraginkortasuna kontrolatzeko eta gehiegizko egokitzea saihesteko. Prestakuntza-prozesuak denbora pixka bat iraun dezake, beraz, garrantzitsua da sare neuronalak behar bezala prestatuta dagoela ziurtatzea gutxiegitasuna saihesteko.
Prestakuntza-datuak erabiliz, orain eredua entrenatu dezakegu. Horretarako, lotearen tamaina (eredua eguneratu aurretik prozesatutako lagin-kopurua) eta aro-kopurua (datu multzo osoko errepikapen kopurua) definitu behar ditugu.
model.fit(train_images, train_labels, epochs=10, batch_size=32)
Ereduaren ebaluazioa
Neurona-sarearen errendimendua probako datu-multzoan probatzea da hura ebaluatzeko prozesua. Etapa honetan, trebatutako neurona-sarea erabiltzen da probaren datu-multzoa prozesatzeko, eta zehaztasuna ebaluatzen da.
Neurona-sare batek probatu gabeko datu berrien emaitza egokia aurreikus dezakeen zehaztasunaren neurria da. Eredua aztertzeak sare neuronalak nola funtzionatzen duen zehazten lagun dezake eta are hobea izateko moduak iradoki ditzake.
Azkenean, ereduaren errendimendua ebaluatu dezakegu entrenamenduaren ondoren probako datuak erabiliz.
test_loss, test_acc = model.evaluate(test_images, test_labels)
print('Test accuracy:', test_acc)
Hori da dena! Neurona-sare bat entrenatu genuen MNIST datu-multzoko digituak detektatzeko.
Datuak prestatzetik trebatutako ereduaren eraginkortasuna ebaluatzera arte, sare neuronal bat entrenatzeak hainbat prozesu dakartza. Argibide hauek hasiberriei sare neuronalak modu eraginkorrean eraikitzen eta entrenatzen laguntzen diete.
Hainbat arazori aurre egiteko sare neuronalak erabili nahi dituzten hasiberriek argibide hauek jarraituz egin dezakete.
Adibidea bistaratzea
Saia gaitezen adibide honekin zer egin dugun ikusten hobeto ulertzeko.
Kode zati honetan Matplotlib paketea erabiltzen da entrenamenduko datu multzoko argazkien aukeraketa ausazko bat marrazteko. Lehenik eta behin, Matplotlib-en "pyplot" modulua inportatzen dugu eta "plt" gisa izendatzen dugu. Ondoren, guztira 10 x 10 hazbeteko dimentsioarekin, 5 errenkada eta 5 zutabe azpi-lurrekin irudi bat egiten dugu.
Ondoren, for begizta bat erabiltzen dugu azpi-lurren gainean errepikatzeko, bakoitzean prestakuntza-datu multzoko irudi bat bistaratuz. Argazkia bistaratzeko, "imshow" funtzioa erabiltzen da, "cmap" aukera 'grisa' gisa ezarrita argazkiak gris-eskala bistaratzeko. Azpipartida bakoitzaren izenburua bildumako erlazionatutako irudiaren etiketari ere ezartzen zaio.
Azkenik, "erakutsi" funtzioa erabiltzen dugu irudian marraztutako irudiak bistaratzeko. Funtzio honek datu-multzoko argazkien lagin bat bisualki ebaluatzeko aukera ematen digu, eta horrek datuak ulertzen eta kezka posibleak identifikatzen lagun dezake.
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()
Sare Neuronal Eredu Garrantzitsuak
- Feedforward Sare Neuronalak (FFNN): Sare neuronal mota sinplea, non informazioa modu bakarrean bidaiatzen duena, sarrerako geruzatik irteerako geruzara ezkutuko geruza baten edo gehiagoren bidez.
- Sare neuronal konboluzionalak (CNN): Irudiak detektatzeko eta prozesatzeko erabili ohi den neurona-sare bat. CNN-ek argazkietatik ezaugarriak automatikoki antzemateko eta ateratzeko asmoa dute.
- Sare neuronal errekurrenteak (RNN): Irudiak detektatzeko eta prozesatzeko erabili ohi den neurona-sare bat. CNN-ek argazkietatik ezaugarriak automatikoki antzemateko eta ateratzeko asmoa dute.
- Epe Laburreko Memoria (LSTM) Sareak: RNN estandarretan desagertzen diren gradienteen arazoa gainditzeko sortutako RNN forma bat. Datu sekuentzialetan epe luzeko mendekotasunak hobeto atzeman daitezke LSTMekin.
- Autokodetzaileak: Gainbegiratu gabeko ikaskuntza-sare neuronalak, sareari sarrerako datuak bere irteerako geruzan erreproduzitzen irakasten zaion. Datuen konpresioa, anomaliak hautematea eta irudien desnoising automatikoko kodetzaileekin lor daitezke.
- Sortzaileen aurkako sareak (GAN): Sare neuronal sortzailea prestakuntzako datu-multzo baten parekoak diren datu berriak sortzen irakasten den neurona-sare forma bat da. GANak bi sarez osatuta daude: datu freskoak sortzen dituen sorgailu sare bat eta sortutako datuen kalitatea ebaluatzen duen diskriminatzaile sare bat.
Bukatzeko, zeintzuk izan beharko lirateke zure hurrengo urratsak?
Arakatu sareko hainbat baliabide eta ikastaro sare neuronal bat trebatzeari buruz gehiago jakiteko. Proiektuak edo adibideak lantzea sare neuronalak hobeto ezagutzeko metodo bat da.
Hasi adibide errazekin, esaterako, sailkapen bitar-arazoak edo irudiak sailkatzeko atazak, eta gero joan ataza zailagoetara, adibidez, hizkuntza naturalaren prozesamendua edo sendotzeko ikaskuntza.
Proiektuetan lan egiteak benetako esperientzia lortzen eta zure neurona-sareen prestakuntza-gaitasunak hobetzen laguntzen dizu.
Lineako ikaskuntza automatikoa eta sare neuronaleko talde eta foroetan ere sar zaitezke beste ikasle eta profesional batzuekin elkarreragiteko, zure lana partekatzeko eta iruzkinak eta laguntza jasotzeko.
LSRS MONRAD-KROHN
⁶ĵGustatuko litzaidake erroreak minimizatzeko python programa ikustea. Aukeraketa nodo bereziak hurrengo geruzarako pisua aldatzeko