Saturs[Paslēpt][Rādīt]
Pēdējos gados neironu tīkli ir kļuvuši populāri, jo tie ir izrādījušies ļoti labi dažādu uzdevumu veikšanā.
Ir pierādīts, ka tie ir lieliska izvēle attēlu un audio atpazīšanai, dabiskas valodas apstrādei un pat sarežģītu spēļu, piemēram, Go un šaha, spēlēšanai.
Šajā ziņā es jums pastāstīšu visu neironu tīkla apmācības procesu. Es minēšu un paskaidrošu visus soļus, lai apmācītu neironu tīklu.
Kamēr es apskatīšu darbības, es vēlētos pievienot vienkāršu piemēru, lai pārliecinātos, ka ir arī praktisks piemērs.
Tātad, nāciet un iemācīsimies apstrādāt neironu tīklus
Sāksim ar vienkāršu un jautāsim, kas ir neironu tīkli pirmajā vietā.
Kas īsti ir neironu tīkli?
Neironu tīkli ir datoru programmatūra, kas simulē cilvēka smadzeņu darbību. Viņi var mācīties no milzīga datu apjoma un pamanīt modeļus, kurus cilvēkiem var būt grūti noteikt.
Neironu tīkli pēdējos gados ir kļuvuši populāri, pateicoties to daudzpusībai tādos uzdevumos kā attēla un audio atpazīšana, dabiskās valodas apstrāde un paredzamā modelēšana.
Kopumā neironu tīkli ir spēcīgs instruments plašam lietojumu klāstam, un tiem ir iespēja pārveidot veidu, kā mēs pieejam plašam darbu lokam.
Kāpēc mums par viņiem būtu jāzina?
Neironu tīklu izpratne ir ļoti svarīga, jo tie ir radījuši atklājumus dažādās jomās, tostarp datorredzē, runas atpazīšanā un dabiskās valodas apstrādē.
Piemēram, neironu tīkli ir jaunāko pašbraucošo automašīnu, automātiskās tulkošanas pakalpojumu un pat medicīniskās diagnostikas attīstības pamatā.
Izpratne par neironu tīklu funkcionēšanu un to izstrādi palīdz mums izveidot jaunas un radošas lietojumprogrammas. Un, iespējams, nākotnē tas var novest pie vēl lielākiem atklājumiem.
Piezīme par apmācību
Kā jau teicu iepriekš, es vēlētos izskaidrot neironu tīkla apmācības soļus, sniedzot piemēru. Lai to izdarītu, mums vajadzētu runāt par MNIST datu kopu. Tā ir populāra izvēle iesācējiem, kuri vēlas sākt darbu ar neironu tīkliem.
MNIST ir akronīms, kas apzīmē Modificēto Nacionālo standartu un tehnoloģiju institūtu. Tā ir ar roku rakstīta ciparu datu kopa, ko parasti izmanto mašīnmācīšanās modeļu, jo īpaši neironu tīklu, apmācībai un testēšanai.
Kolekcijā ir 70,000 0 pelēktoņu fotoattēlu ar roku rakstītiem cipariem no 9 līdz XNUMX.
MNIST datu kopa ir populārs etalons attēlu klasifikācija uzdevumus. To bieži izmanto mācīšanai un mācībām, jo tas ir kompakts un viegli lietojams, vienlaikus radot sarežģītu izaicinājumu mašīnmācīšanās algoritmiem.
MNIST datu kopu atbalsta vairākas mašīnmācīšanās sistēmas un bibliotēkas, tostarp TensorFlow, Keras un PyTorch.
Tagad mēs zinām par MNIST datu kopu. Sāksim ar neironu tīkla apmācību.
Pamatdarbības, lai apmācītu neironu tīklu
Importējiet nepieciešamās bibliotēkas
Pirmo reizi sākot apmācīt neironu tīklu, ir svarīgi, lai būtu nepieciešamie rīki, lai izstrādātu un apmācītu modeli. Sākotnējais neironu tīkla izveides solis ir importēt nepieciešamās bibliotēkas, piemēram, TensorFlow, Keras un NumPy.
Šīs bibliotēkas kalpo kā neironu tīkla attīstības pamatelementi un nodrošina būtiskas iespējas. Šo bibliotēku kombinācija ļauj izveidot sarežģītus neironu tīklu dizainus un ātri apmācīt.
Lai sāktu mūsu piemēru; mēs importēsim vajadzīgās bibliotēkas, kas ietver TensorFlow, Keras un NumPy. TensorFlow ir atvērtā koda mašīnmācīšanās ietvars, Keras ir augsta līmeņa neironu tīkla API, un NumPy ir Python skaitļošanas bibliotēka.
import tensorflow as tf
from tensorflow import keras
import numpy as np
Ielādējiet datu kopu
Tagad ir jāielādē datu kopa. Datu kopa ir datu kopa, uz kuras pamata tiks apmācīts neironu tīkls. Tie var būt jebkura veida dati, tostarp fotoattēli, audio un teksts.
Ir ļoti svarīgi sadalīt datu kopu divās daļās: vienu neironu tīkla apmācībai un otru, lai novērtētu apmācītā modeļa pareizību. Datu kopas importēšanai var izmantot vairākas bibliotēkas, tostarp TensorFlow, Keras un PyTorch.
Mūsu piemērā mēs izmantojam arī Keras, lai ielādētu MNIST datu kopu. Datu kopā ir 60,000 10,000 apmācības fotoattēlu un XNUMX XNUMX testa attēlu.
mnist = keras.datasets.mnist
(train_images, train_labels), (test_images, test_labels) = mnist.load_data()
Iepriekš apstrādājiet datus
Datu priekšapstrāde ir svarīgs posms neironu tīkla apmācībā. Tas ietver datu sagatavošanu un tīrīšanu, pirms tie tiek ievadīti neironu tīklā.
Iepriekšējas apstrādes procedūru piemēri ir pikseļu vērtību mērogošana, datu normalizēšana un etiķešu konvertēšana viena karstuma kodēšanā. Šie procesi palīdz neironu tīklam mācīties efektīvāk un precīzāk.
Datu iepriekšēja apstrāde var arī palīdzēt samazināt pārmērīgu pielāgošanu un uzlabot neironu tīkla veiktspēju.
Pirms neironu tīkla apmācības jums ir iepriekš jāapstrādā dati. Tas ietver etiķešu maiņu uz vienreizēju kodējumu un pikseļu vērtību mērogošanu no 0 līdz 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)
Definējiet modeli
Neironu tīkla modeļa noteikšanas process ietver tā arhitektūras izveidi, piemēram, slāņu skaitu, neironu skaitu vienā slānī, aktivizācijas funkcijas un tīkla veidu (pārplūdes, atkārtota vai konvolucionāla).
Jūsu izmantoto neironu tīkla dizainu nosaka problēmas veids, kuru mēģināt atrisināt. Precīzi definēts neironu tīkla dizains var palīdzēt neironu tīkla mācīšanā, padarot to efektīvāku un precīzāku.
Šajā brīdī ir pienācis laiks aprakstīt neironu tīkla modeli. Šajā piemērā izmantojiet vienkāršu modeli ar diviem slēptiem slāņiem, katrs ar 128 neironiem, un softmax izvades slāni, kurā ir 10 neironi.
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')
])
Sastādīt modeli
Neironu tīkla modeļa apkopošanas laikā ir jānorāda zudumu funkcija, optimizētājs un metrika. Neironu tīkla spēju pareizi prognozēt izvadi nosaka zuduma funkcija.
Lai palielinātu neironu tīkla precizitāti treniņa laikā, optimizētājs maina tā svarus. Neironu tīkla efektivitāte apmācības laikā tiek novērtēta, izmantojot metriku. Modelis ir jāizveido, pirms var apmācīt neironu tīklu.
Mūsu piemērā mums tagad ir jākonstruē modelis.
model.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['accuracy'])
Apmāciet modeli
Sagatavotās datu kopas nodošana neironu tīklam, vienlaikus modificējot tīkla svarus, lai samazinātu zudumu funkciju, ir pazīstama kā neironu tīkla apmācība.
Validācijas datu kopa tiek izmantota, lai pārbaudītu neironu tīklu apmācības laikā, lai izsekotu tā efektivitātei un novērstu pārmērīgu pielāgošanu. Apmācības process var aizņemt kādu laiku, tāpēc ir svarīgi pārliecināties, vai neironu tīkls ir atbilstoši apmācīts, lai novērstu nepietiekamu piemērotību.
Izmantojot apmācības datus, mēs tagad varam apmācīt modeli. Lai to izdarītu, mums ir jādefinē partijas lielums (paraugu skaits, kas apstrādāts pirms modeļa atjaunināšanas) un epohu skaits (atkārtojumu skaits visā datu kopā).
model.fit(train_images, train_labels, epochs=10, batch_size=32)
Modeļa novērtēšana
Neironu tīkla veiktspējas pārbaude testa datu kopā ir tās novērtēšanas process. Šajā posmā testa datu kopas apstrādei tiek izmantots apmācīts neironu tīkls, un tiek novērtēta precizitāte.
Cik efektīvi neironu tīkls var prognozēt pareizo rezultātu no pilnīgi jauniem, neizmēģinātiem datiem, ir tā precizitātes mērs. Modeļa analīze var palīdzēt noteikt, cik labi darbojas neironu tīkls, kā arī ieteikt veidus, kā to padarīt vēl labāku.
Beidzot varam novērtēt modeļa veiktspēju, izmantojot testa datus pēc apmācības.
test_loss, test_acc = model.evaluate(test_images, test_labels)
print('Test accuracy:', test_acc)
Tas ir viss! Mēs apmācījām neironu tīklu, lai noteiktu ciparus MNIST datu kopā.
No datu sagatavošanas līdz apmācītā modeļa efektivitātes novērtēšanai neironu tīkla apmācība ietver vairākus procesus. Šīs instrukcijas palīdz iesācējiem efektīvi veidot un apmācīt neironu tīklus.
Iesācēji, kuri vēlas izmantot neironu tīklus dažādu problēmu risināšanai, to var izdarīt, izpildot šos norādījumus.
Piemēra vizualizācija
Mēģināsim vizualizēt, ko esam paveikuši ar šo piemēru, lai labāk saprastu.
Matplotlib pakotne tiek izmantota šajā koda fragmentā, lai attēlotu nejaušu fotoattēlu atlasi no apmācības datu kopas. Pirmkārt, mēs importējam Matplotlib moduli “pyplot” un aizstājam to kā “plt”. Pēc tam ar kopējo izmēru 10 x 10 collas mēs izveidojam figūru ar 5 rindām un 5 apakšgrafiku kolonnām.
Pēc tam mēs izmantojam for cilpu, lai atkārtotu apakšgrafikus, katrā no tiem parādot attēlu no apmācības datu kopas. Lai parādītu attēlu, tiek izmantota funkcija “imshow”, un opcija “cmap” ir iestatīta uz “grey”, lai fotoattēli tiktu parādīti pelēktoņos. Katra apakšsižeta nosaukums tiek iestatīts arī uz saistītā attēla etiķeti kolekcijā.
Visbeidzot, mēs izmantojam funkciju “show”, lai parādītu attēlā attēlotos attēlus. Šī funkcija ļauj mums vizuāli novērtēt fotoattēlu paraugus no datu kopas, kas var palīdzēt mums izprast datus un identificēt visas iespējamās problēmas.
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()
Svarīgi neironu tīklu modeļi
- Feedforward neironu tīkli (FFNN): Vienkāršs neironu tīkla veids, kurā informācija pārvietojas tikai vienā veidā, no ievades slāņa uz izvades slāni caur vienu vai vairākiem slēptiem slāņiem.
- Konvolucionālie neironu tīkli (CNN): Neironu tīkls, ko parasti izmanto attēlu noteikšanā un apstrādē. CNN ir paredzēts, lai automātiski atpazītu un izņemtu attēlus.
- Atkārtoti neironu tīkli (RNN): Neironu tīkls, ko parasti izmanto attēlu noteikšanā un apstrādē. CNN ir paredzēts, lai automātiski atpazītu un izņemtu attēlus.
- Ilgtermiņa īstermiņa atmiņas (LSTM) tīkli: RNN forma, kas izveidota, lai novērstu standarta RNN gradientu izzušanas problēmu. Secīgo datu ilgtermiņa atkarības var labāk uztvert, izmantojot LSTM.
- Automātiskie kodētāji: Nepārraudzīts mācīšanās neironu tīkls, kurā tīklam tiek mācīts reproducēt ievades datus izvades slānī. Datu saspiešanu, anomāliju noteikšanu un attēla trokšņa samazināšanu var veikt, izmantojot automātiskos kodētājus.
- Ģeneratīvie pretrunīgie tīkli (GAN): Ģeneratīvs neironu tīkls ir neironu tīkla veids, kas tiek mācīts radīt jaunus datus, kas ir salīdzināmi ar apmācības datu kopu. GAN veido divi tīkli: ģeneratoru tīkls, kas rada jaunus datus, un diskriminācijas tīkls, kas novērtē izveidoto datu kvalitāti.
Nobeigums, kādiem vajadzētu būt jūsu nākamajiem soļiem?
Izpētiet vairākus tiešsaistes resursus un kursus, lai uzzinātu vairāk par neironu tīkla apmācību. Darbs pie projektiem vai piemēriem ir viena no metodēm, kā iegūt labāku izpratni par neironu tīkliem.
Sāciet ar vienkāršiem piemēriem, piemēram, binārās klasifikācijas problēmām vai attēlu klasifikācijas uzdevumiem, un pēc tam pārejiet uz sarežģītākiem uzdevumiem, piemēram, dabiskās valodas apstrādi vai pastiprināt mācīšanās.
Darbs pie projektiem palīdz iegūt reālu pieredzi un uzlabot savas neironu tīklu apmācības prasmes.
Varat arī pievienoties tiešsaistes mašīnmācības un neironu tīklu grupām un forumiem, lai sazinātos ar citiem apmācāmajiem un profesionāļiem, dalītos ar savu darbu un saņemtu komentārus un palīdzību.
LSRS MONRAD-KROHN
⁶ĵBūtu gribējis redzēt python programmu kļūdu samazināšanai. Īpaši atlases mezgli svara maiņai uz nākamo slāni