Sisukord[Peida][Näita]
Viimastel aastatel on närvivõrgud muutunud populaarsemaks, kuna nad on näidanud, et nad on paljude ülesannete täitmisel väga head.
Need on osutunud suurepäraseks valikuks pildi- ja helituvastuseks, loomuliku keele töötlemiseks ja isegi keeruliste mängude (nt Go ja male) mängimiseks.
Selles postituses tutvustan teile kogu närvivõrgu treenimise protsessi. Mainin ja selgitan kõiki närvivõrgu treenimise samme.
Kuigi ma käsitlen samme, tahaksin lisada lihtsa näite, et veenduda, et on olemas ka praktiline näide.
Niisiis, tulge kaasa ja õppige, kuidas närvivõrke töödelda
Alustame lihtsast ja küsime, mis need on närvivõrgud Esiteks.
Mis närvivõrgud täpselt on?
Närvivõrgud on arvutitarkvara, mis simuleerib inimese aju tööd. Nad saavad õppida tohututest andmemahtudest ja tuvastada mustreid, mida inimestel võib olla raske tuvastada.
Närvivõrgud on viimastel aastatel populaarsemaks muutunud tänu nende mitmekülgsusele sellistes ülesannetes nagu pildi- ja helituvastus, loomuliku keele töötlemine ja ennustav modelleerimine.
Üldiselt on närvivõrgud tugev tööriist paljude rakenduste jaoks ja neil on võimalus muuta viisi, kuidas me läheneme paljudele töökohtadele.
Miks me peaksime neist teadma?
Närvivõrkude mõistmine on kriitilise tähtsusega, kuna need on viinud avastusteni erinevates valdkondades, sealhulgas arvutinägemises, kõnetuvastuses ja loomuliku keele töötlemises.
Näiteks närvivõrgud on isejuhtivate autode, automaattõlketeenuste ja isegi meditsiinidiagnostika viimaste arengute keskmes.
Närvivõrkude toimimise ja nende kujundamise mõistmine aitab meil luua uusi ja leidlikke rakendusi. Ja võib-olla võib see tulevikus kaasa tuua veelgi suuremaid avastusi.
Märkus õpetuse kohta
Nagu eespool ütlesin, tahaksin näite abil selgitada närvivõrgu treenimise etappe. Selleks peaksime rääkima MNIST-i andmekogumist. See on populaarne valik algajatele, kes soovivad alustada närvivõrkudega.
MNIST on akronüüm, mis tähistab Modified National Institute of Standards and Technology. See on käsitsi kirjutatud numbrite andmestik, mida kasutatakse tavaliselt masinõppemudelite, eriti närvivõrkude, koolitamiseks ja testimiseks.
Kogu sisaldab 70,000 0 halltoonides fotot käsitsi kirjutatud numbritest vahemikus 9 kuni XNUMX.
MNIST-i andmestik on populaarne võrdlusalus pildi klassifikatsioon ülesandeid. Seda kasutatakse sageli õpetamiseks ja õppimiseks, kuna see on kompaktne ja hõlpsasti käsitletav, kuid samas on masinõppe algoritmidele keeruline vastata.
MNIST-i andmestikku toetavad mitmed masinõpperaamistikud ja teegid, sealhulgas TensorFlow, Keras ja PyTorch.
Nüüd teame MNIST-i andmestikku ja alustame närvivõrgu treenimise sammudega.
Peamised sammud närvivõrgu treenimiseks
Importige vajalikud raamatukogud
Närvivõrgu esmakordsel treenimisel on oluline omada vajalikke tööriistu mudeli kujundamiseks ja treenimiseks. Esimene samm närvivõrgu loomisel on vajalike teekide (nt TensorFlow, Keras ja NumPy) importimine.
Need raamatukogud toimivad närvivõrgu arengu ehitusplokkidena ja pakuvad olulisi võimalusi. Nende teekide kombinatsioon võimaldab luua keerukaid närvivõrgu kujundusi ja kiiret koolitust.
Alustuseks meie näide; impordime vajalikud teegid, mille hulka kuuluvad TensorFlow, Keras ja NumPy. TensorFlow on avatud lähtekoodiga masinõpperaamistik, Keras on kõrgetasemeline närvivõrgu API ja NumPy on Pythoni arvarvutusteek.
import tensorflow as tf
from tensorflow import keras
import numpy as np
Laadige andmestik
Andmekogum tuleb nüüd laadida. Andmekogum on andmete kogum, mille põhjal närvivõrku koolitatakse. Need võivad olla mis tahes tüüpi andmed, sealhulgas fotod, heli ja tekst.
Oluline on jagada andmestik kaheks osaks: üks närvivõrgu treenimiseks ja teine koolitatud mudeli õigsuse hindamiseks. Andmestiku importimiseks võib kasutada mitut teeki, sealhulgas TensorFlow, Keras ja PyTorch.
Meie näites kasutame MNIST-andmestiku laadimiseks ka Kerast. Andmekogus on 60,000 10,000 treeningfotot ja XNUMX XNUMX testpilti.
mnist = keras.datasets.mnist
(train_images, train_labels), (test_images, test_labels) = mnist.load_data()
Andmete eeltöötlemine
Andmete eeltöötlus on närvivõrgu treenimise oluline etapp. See hõlmab andmete ettevalmistamist ja puhastamist enne nende sisestamist närvivõrku.
Eeltöötlusprotseduuride näited on piksliväärtuste skaleerimine, andmete normaliseerimine ja siltide teisendamine ühekuumkodeeringusse. Need protsessid aitavad närvivõrgul tõhusamalt ja täpsemalt õppida.
Andmete eeltöötlus võib samuti aidata minimeerida ülepaigutamist ja parandada närvivõrgu jõudlust.
Enne närvivõrgu treenimist peate andmed eeltöötlema. See hõlmab siltide muutmist ühe kuumuse kodeeringule ja piksliväärtuste skaleerimist vahemikku 0 kuni 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)
Määratlege mudel
Närvivõrgu mudeli määratlemise protsess hõlmab selle arhitektuuri loomist, nagu kihtide arv, neuronite arv kihis, aktiveerimisfunktsioonid ja võrgu tüüp (edasisuunaline, korduv või konvolutsiooniline).
Teie kasutatava närvivõrgu kujunduse määrab see, millist probleemi proovite lahendada. Täpselt määratletud närvivõrgu disain võib aidata närvivõrgu õppimisel, muutes selle tõhusamaks ja täpsemaks.
Siinkohal on aeg kirjeldada närvivõrgu mudelit. Selle näite jaoks kasutage lihtsat mudelit, millel on kaks peidetud kihti, millest igaühes on 128 neuronit, ja softmax väljundkiht, millel on 10 neuronit.
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')
])
Koostage mudel
Kaofunktsioon, optimeerija ja mõõdikud tuleb täpsustada närvivõrgu mudeli koostamise käigus. Närvivõrgu võimet väljundit õigesti prognoosida mõõdetakse kadufunktsiooniga.
Närvivõrgu täpsuse suurendamiseks treeningu ajal muudab optimeerija selle raskusi. Närvivõrgu efektiivsust treeningu ajal mõõdetakse mõõdikute abil. Mudel tuleb luua enne, kui närvivõrku saab treenida.
Meie näites peame nüüd kohe mudeli konstrueerima.
model.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['accuracy'])
Treenige mudelit
Ettevalmistatud andmestiku edastamist läbi närvivõrgu, muutes samal ajal võrgu kaalusid kadufunktsiooni minimeerimiseks, nimetatakse närvivõrgu treenimiseks.
Valideerimisandmestikku kasutatakse närvivõrgu testimiseks treeningu ajal, et jälgida selle tõhusust ja vältida ülepaigutamist. Treeningprotsess võib võtta veidi aega, seetõttu on oluline tagada, et närvivõrk oleks alasobivuse vältimiseks korralikult koolitatud.
Treeningandmeid kasutades saame nüüd mudelit treenida. Selleks peame määratlema partii suuruse (enne mudeli värskendamist töödeldud proovide arvu) ja epohhide arvu (korduste arv kogu andmekogumis).
model.fit(train_images, train_labels, epochs=10, batch_size=32)
Mudeli hindamine
Närvivõrgu toimivuse testimine testandmestikul on selle hindamise protsess. Selles etapis kasutatakse testimisandmestiku töötlemiseks koolitatud närvivõrku ja hinnatakse täpsust.
See, kui tõhusalt suudab närvivõrk uhiuutest, proovimata andmetest õigeid tulemusi ennustada, on selle täpsuse mõõt. Mudeli analüüsimine võib aidata kindlaks teha, kui hästi närvivõrk töötab, ja soovitada ka võimalusi selle veelgi paremaks muutmiseks.
Saame lõpuks pärast treeningut testiandmete abil mudeli jõudlust hinnata.
test_loss, test_acc = model.evaluate(test_images, test_labels)
print('Test accuracy:', test_acc)
See on kõik! Koolitasime närvivõrku MNIST-i andmestiku numbrite tuvastamiseks.
Alates andmete ettevalmistamisest kuni koolitatud mudeli efektiivsuse hindamiseni hõlmab närvivõrgu treenimine mitmeid protsesse. Need juhised aitavad algajatel tõhusalt luua ja koolitada närvivõrke.
Algajad, kes soovivad erinevate probleemide lahendamiseks kasutada närvivõrke, saavad seda teha, järgides neid juhiseid.
Näite visualiseerimine
Proovime visualiseerida, mida oleme selle näitega teinud, et paremini mõista.
Selles koodilõigus kasutatakse paketti Matplotlib, et joonistada koolitusandmestikust juhuslikult valitud fotosid. Esiteks impordime Matplotlibi "pyplot" mooduli ja nimetame selle kui "plt". Seejärel koostame joonise, mille kogumõõtmed on 10 x 10 tolli, 5 rida ja 5 veergu.
Seejärel kasutame alamdiagrammide itereerimiseks tsüklit for, kuvades igaühel treeninguandmestikust pildi. Pildi kuvamiseks kasutatakse funktsiooni “imshow”, kus suvand “cmap” on seatud olekusse “hall”, et kuvada fotod halltoonides. Iga alamtüki pealkiri määratakse ka kogu seotud pildi sildile.
Lõpuks kasutame joonisel joonistatud piltide kuvamiseks funktsiooni "show". See funktsioon võimaldab meil visuaalselt hinnata andmestiku fotode näidist, mis võib aidata meil andmeid mõista ja tuvastada võimalikke probleeme.
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()
Olulised närvivõrgu mudelid
- Neuraalvõrgud (FFNN): Lihtne närvivõrgu tüüp, milles teave liigub ainult ühel viisil, sisendkihist väljundkihini ühe või mitme peidetud kihi kaudu.
- Konvolutsioonilised närvivõrgud (CNN): Närvivõrk, mida tavaliselt kasutatakse kujutiste tuvastamisel ja töötlemisel. CNN-id on mõeldud piltide funktsioonide automaatseks tuvastamiseks ja nendest eraldamiseks.
- Korduvad närvivõrgud (RNN): Närvivõrk, mida tavaliselt kasutatakse kujutiste tuvastamisel ja töötlemisel. CNN-id on mõeldud piltide funktsioonide automaatseks tuvastamiseks ja nendest eraldamiseks.
- Pika lühiajalise mälu (LSTM) võrgud: RNN-i vorm, mis on loodud standardsete RNN-ide gradientide kadumise probleemi lahendamiseks. Järjestikuste andmete pikaajalisi sõltuvusi saab paremini tabada LSTM-idega.
- Automaatkodeerijad: Järelevalveta õppiv närvivõrk, milles võrku õpetatakse taasesitama oma sisendandmeid väljundkihis. Andmete tihendamine, anomaaliate tuvastamine ja pildi müra vähendamine on kõik saavutatavad automaatkodeerijatega.
- Generatiivsed võistlevad võrgud (GAN): Generatiivne närvivõrk on närvivõrgu vorm, mida õpetatakse tootma uusi andmeid, mis on võrreldavad koolitusandmestikuga. GAN-id koosnevad kahest võrgust: generaatorivõrgust, mis loob värskeid andmeid, ja diskrimineerimisvõrgust, mis hindab loodud andmete kvaliteeti.
Kokkuvõtteks, millised peaksid olema teie järgmised sammud?
Avastage mitmeid võrguressursse ja kursusi, et saada lisateavet närvivõrgu treenimise kohta. Projektide või näidete kallal töötamine on üks meetod närvivõrkude paremaks mõistmiseks.
Alustage lihtsatest näidetest, nagu binaarsed klassifikatsiooniprobleemid või piltide klassifitseerimise ülesanded, ja seejärel jätkake keerulisemate ülesannetega, nagu loomuliku keele töötlemine või tugevdamise õppimine.
Projektidega töötamine aitab teil saada tõelisi kogemusi ja parandada oma närvivõrgu koolitusoskusi.
Samuti võite liituda veebipõhise masinõppe ja närvivõrgu rühmade ja foorumitega, et suhelda teiste õppijate ja spetsialistidega, jagada oma tööd ning saada kommentaare ja abi.
LSRS MONRAD-KROHN
⁶ĵOleksin tahtnud näha pythoni programmi vigade minimeerimiseks. Spetsiaalsed valikusõlmed kaalu muutmiseks järgmisele kihile