Sisällysluettelo[Piilottaa][Näytä]
Viime vuosina hermoverkkojen suosio on kasvanut, koska ne ovat osoittautuneet erittäin hyviksi monenlaisissa tehtävissä.
Niiden on osoitettu olevan loistava valinta kuvan ja äänen tunnistamiseen, luonnollisen kielen käsittelyyn ja jopa monimutkaisten pelien, kuten Go ja shakki, pelaamiseen.
Tässä viestissä opastan sinut koko neuroverkon koulutusprosessin läpi. Mainitsen ja selitän kaikki vaiheet neuroverkon kouluttamiseksi.
Vaikka käyn läpi vaiheet, haluaisin lisätä yksinkertaisen esimerkin varmistaakseni, että on myös käytännön esimerkki.
Joten tule mukaan ja opetellaan käsittelemään hermoverkkoja
Aloitetaan yksinkertaisesta ja kysytään, mitä ovat hermoverkkoihin Ensinnäkin.
Mitä hermoverkot oikein ovat?
Neuroverkot ovat tietokoneohjelmistoja, jotka simuloivat ihmisen aivojen toimintaa. He voivat oppia suurista tietomääristä ja havaita kuvioita, joita ihmisten voi olla vaikea havaita.
Neuroverkkojen suosio on kasvanut viime vuosina, koska ne ovat monipuolisia tehtävissä, kuten kuvan ja äänen tunnistus, luonnollisen kielen käsittely ja ennakoiva mallinnus.
Kaiken kaikkiaan neuroverkot ovat vahva työkalu monenlaisiin sovelluksiin, ja niillä on mahdollisuus muuttaa tapaamme lähestyä monenlaisia töitä.
Miksi meidän pitäisi tietää heistä?
Hermoverkkojen ymmärtäminen on kriittistä, koska ne ovat johtaneet löytöihin monilla aloilla, mukaan lukien tietokonenäkö, puheentunnistus ja luonnollisen kielen käsittely.
Esimerkiksi hermoverkot ovat itseohjautuvien autojen, automaattisten käännöspalvelujen ja jopa lääketieteellisen diagnostiikan viimeaikaisen kehityksen ytimessä.
Hermoverkkojen toiminnan ja niiden suunnittelun ymmärtäminen auttaa meitä rakentamaan uusia ja kekseliäitä sovelluksia. Ja ehkä se voi johtaa vielä suurempiin löytöihin tulevaisuudessa.
Huomautus opetusohjelmasta
Kuten edellä sanoin, haluaisin selittää hermoverkon koulutuksen vaiheet antamalla esimerkin. Tätä varten meidän pitäisi puhua MNIST-tietojoukosta. Se on suosittu valinta aloittelijoille, jotka haluavat aloittaa hermoverkkojen käytön.
MNIST on lyhenne sanoista Modified National Institute of Standards and Technology. Se on käsin kirjoitettu numerotietojoukko, jota käytetään yleisesti koneoppimismallien, erityisesti hermoverkkojen, koulutukseen ja testaamiseen.
Kokoelma sisältää 70,000 0 harmaasävykuvaa käsinkirjoitetuista numeroista 9-XNUMX.
MNIST-tietojoukko on suosittu vertailukohta kuvan luokittelu tehtäviä. Sitä käytetään usein opetukseen ja oppimiseen, koska se on kompakti ja helppo käsitellä, mutta se on kuitenkin vaikea haaste koneoppimisalgoritmeille vastata.
MNIST-tietojoukkoa tukevat useat koneoppimiskehykset ja -kirjastot, mukaan lukien TensorFlow, Keras ja PyTorch.
Nyt kun tiedämme MNIST-tietojoukosta, aloitetaan neuroverkon harjoittamisen vaiheet.
Perusvaiheet hermoverkon kouluttamiseen
Tuo tarvittavat kirjastot
Kun aloitat neuroverkon harjoittamisen, on tärkeää, että sinulla on tarvittavat työkalut mallin suunnitteluun ja kouluttamiseen. Ensimmäinen vaihe hermoverkon luomisessa on tuoda tarvittavat kirjastot, kuten TensorFlow, Keras ja NumPy.
Nämä kirjastot toimivat rakennuspalikoina hermoverkon kehitykselle ja tarjoavat tärkeitä ominaisuuksia. Näiden kirjastojen yhdistelmä mahdollistaa kehittyneiden hermoverkkojen luomisen ja nopean koulutuksen.
Aloita esimerkkimme; tuomme tarvittavat kirjastot, joihin kuuluvat TensorFlow, Keras ja NumPy. TensorFlow on avoimen lähdekoodin koneoppimiskehys, Keras on korkean tason hermoverkkosovellusliittymä ja NumPy on numeerisen laskennan Python-kirjasto.
import tensorflow as tf
from tensorflow import keras
import numpy as np
Lataa tietojoukko
Tietojoukko on nyt ladattava. Tietojoukko on tietojoukko, jonka perusteella neuroverkkoa koulutetaan. Tämä voi olla mitä tahansa dataa, mukaan lukien valokuvat, ääni ja teksti.
On tärkeää jakaa tietojoukko kahteen osaan: yksi neuroverkon harjoittelua varten ja toinen opetetun mallin oikeellisuuden arvioimiseksi. Tietojoukon tuomiseen voidaan käyttää useita kirjastoja, kuten TensorFlow, Keras ja PyTorch.
Esimerkissämme käytämme myös Kerasta MNIST-tietojoukon lataamiseen. Aineistossa on 60,000 10,000 harjoituskuvaa ja XNUMX XNUMX testikuvaa.
mnist = keras.datasets.mnist
(train_images, train_labels), (test_images, test_labels) = mnist.load_data()
Esikäsittele tiedot
Tiedon esikäsittely on tärkeä vaihe neuroverkon koulutuksessa. Se sisältää tietojen valmistelun ja puhdistamisen ennen kuin se syötetään neuroverkkoon.
Pikseliarvojen skaalaus, tietojen normalisointi ja tarrojen muuntaminen one-hot-koodaukseksi ovat esimerkkejä esikäsittelymenetelmistä. Nämä prosessit auttavat hermoverkkoa oppimaan tehokkaammin ja tarkemmin.
Tietojen esikäsittely voi myös auttaa minimoimaan ylisovituksen ja parantamaan hermoverkon suorituskykyä.
Sinun on esikäsiteltävä tiedot ennen neuroverkon harjoittelua. Tämä sisältää nimikkeiden vaihtamisen one-hot-koodaukseen ja pikseliarvojen skaalaamisen välillä 0-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äärittele malli
Neuraaliverkkomallin määrittelyprosessi sisältää sen arkkitehtuurin, kuten kerrosten lukumäärän, hermosolujen lukumäärän kerrosta kohti, aktivointifunktiot ja verkkotyypin (feedforward, toistuva tai konvoluutio) määrittämisen.
Käyttämäsi hermoverkkosuunnittelu määräytyy sen ongelman tyypin mukaan, jota yrität ratkaista. Hyvin määritelty hermoverkkosuunnittelu voi auttaa neuroverkon oppimisessa tekemällä siitä tehokkaamman ja tarkemman.
On aika kuvata hermoverkkomalli tässä vaiheessa. Käytä tässä esimerkissä yksinkertaista mallia, jossa on kaksi piilotettua kerrosta, joissa kummassakin on 128 neuronia, ja softmax-lähtökerrosta, jossa on 10 neuronia.
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')
])
Kokoa malli
Häviöfunktio, optimointi ja metriikka on määritettävä hermoverkkomallin käännöksen aikana. Häviöfunktiolla mitataan hermoverkon kykyä ennustaa tulos oikein.
Neuroverkon tarkkuuden lisäämiseksi harjoittelun aikana optimoija muuttaa sen painoja. Neuroverkon tehokkuutta harjoittelun aikana mitataan mittareilla. Malli on luotava ennen kuin neuroverkkoa voidaan harjoittaa.
Esimerkissämme meidän on nyt rakennettava malli.
model.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['accuracy'])
Harjoittele mallia
Valmistetun tietojoukon kuljettaminen hermoverkon läpi samalla kun verkon painoja muutetaan häviöfunktion minimoimiseksi, tunnetaan hermoverkon harjoitteluna.
Validointitietojoukkoa käytetään hermoverkon testaamiseen harjoituksen aikana sen tehokkuuden seuraamiseksi ja ylisovituksen estämiseksi. Harjoitteluprosessi voi viedä jonkin aikaa, joten on tärkeää varmistaa, että hermoverkko on asianmukaisesti koulutettu, jotta vältetään alisovitus.
Harjoitustietojen avulla voimme nyt harjoitella mallia. Tätä varten meidän on määritettävä eräkoko (ennen mallin päivitystä käsiteltyjen näytteiden määrä) ja aikakausien lukumäärä (toistojen määrä koko tietojoukossa).
model.fit(train_images, train_labels, epochs=10, batch_size=32)
Mallin arviointi
Neuroverkon suorituskyvyn testaaminen testidatajoukolla on sen arviointiprosessi. Tässä vaiheessa testiaineiston käsittelyyn käytetään koulutettua hermoverkkoa ja tarkkuutta arvioidaan.
Se, kuinka tehokkaasti hermoverkko voi ennustaa oikean tuloksen upouudesta, kokeilemattomasta tiedosta, on sen tarkkuuden mitta. Mallin analysointi voi auttaa määrittämään, kuinka hyvin hermoverkko toimii, ja myös ehdottaa tapoja parantaa sitä entisestään.
Voimme lopulta arvioida mallin suorituskykyä testitietojen avulla harjoituksen jälkeen.
test_loss, test_acc = model.evaluate(test_images, test_labels)
print('Test accuracy:', test_acc)
Siinä kaikki! Koulutimme hermoverkkoa tunnistamaan numerot MNIST-tietojoukossa.
Tietojen valmistelusta opetetun mallin tehokkuuden arviointiin neuroverkon koulutus sisältää useita prosesseja. Nämä ohjeet auttavat aloittelijoita rakentamaan ja kouluttamaan hermoverkkoja tehokkaasti.
Aloittelijat, jotka haluavat käyttää hermoverkkoja erilaisten ongelmien ratkaisemiseen, voivat tehdä sen noudattamalla näitä ohjeita.
Esimerkin visualisointi
Yritetään visualisoida, mitä olemme tehneet tällä esimerkillä ymmärtääksemme paremmin.
Matplotlib-pakettia käytetään tässä koodinpätkässä piirtämään satunnainen valikoima valokuvia harjoitustietojoukosta. Ensin tuomme Matplotlibin “pyplot”-moduulin ja aliasimme sen nimellä “plt”. Sitten, jonka kokonaismitta on 10 x 10 tuumaa, teemme kuvion, jossa on 5 riviä ja 5 saraketta alikaavioita.
Sitten käytämme for-silmukkaa iteroimaan alikaavioita ja näyttäen jokaisessa harjoitustietojoukosta kuvan. Kuvan näyttämiseen käytetään “imshow”-toimintoa, jolloin “cmap”-vaihtoehdon arvoksi on asetettu “harmaa”, jolloin valokuvat näytetään harmaasävyinä. Kunkin osajuonen otsikko asetetaan myös kokoelmassa olevan kuvan tunnisteeksi.
Lopuksi käytämme "näytä"-toimintoa näyttääksemme piirretyt kuvat kuvassa. Tämän toiminnon avulla voimme visuaalisesti arvioida näytteitä tietojoukon valokuvista, mikä voi auttaa ymmärtämään tietoja ja tunnistamaan mahdolliset huolenaiheet.
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()
Tärkeitä hermoverkkomalleja
- Feedforward neuroverkot (FFNN): Yksinkertainen hermoverkko, jossa tieto kulkee vain yhdellä tavalla, syöttökerroksesta lähtökerrokseen yhden tai useamman piilokerroksen kautta.
- Konvoluutiohermoverkot (CNN): Neuraaliverkko, jota käytetään yleisesti kuvan havaitsemisessa ja käsittelyssä. CNN:t on tarkoitettu tunnistamaan ja poimimaan ominaisuuksia kuvista automaattisesti.
- Toistuvat hermoverkot (RNN): Neuraaliverkko, jota käytetään yleisesti kuvan havaitsemisessa ja käsittelyssä. CNN:t on tarkoitettu tunnistamaan ja poimimaan ominaisuuksia kuvista automaattisesti.
- Pitkän lyhytaikaisen muistin (LSTM) verkot: RNN-muoto, joka on luotu ratkaisemaan standardi-RNN:iden katoavien gradienttien ongelma. Peräkkäisten tietojen pitkäaikaiset riippuvuudet voidaan kaapata paremmin LSTM:illä.
- Automaattiset kooderit: Valvomaton oppimishermoverkko, jossa verkko opetetaan toistamaan syöttötietonsa lähtökerroksessa. Tietojen pakkaus, poikkeamien havaitseminen ja kuvan kohinan poistaminen voidaan kaikki suorittaa automaattisilla koodereilla.
- Generatiiviset kilpailevat verkot (GAN): Generatiivinen hermoverkko on hermoverkon muoto, joka opetetaan tuottamaan uutta dataa, joka on verrattavissa opetustietojoukkoon. GAN-verkot koostuvat kahdesta verkosta: tuoretta dataa luovasta generaattoriverkosta ja luodun tiedon laatua arvioivasta erottajaverkosta.
Yhteenveto, minkä pitäisi olla seuraavat askeleesi?
Tutustu useisiin verkkoresursseihin ja kursseihin saadaksesi lisätietoja hermoverkon kouluttamisesta. Projektien tai esimerkkien parissa työskenteleminen on yksi tapa saada parempi käsitys neuroverkoista.
Aloita helpoista esimerkeistä, kuten binääriluokitusongelmista tai kuvien luokittelutehtävistä, ja siirry sitten vaikeampiin tehtäviin, kuten luonnollisen kielen käsittelyyn tai vahvistaminen oppiminen.
Projektien parissa työskenteleminen auttaa sinua saamaan todellista kokemusta ja parantamaan neuroverkkokoulutustaitojasi.
Voit myös liittyä online-koneoppimis- ja hermoverkkoryhmiin ja -foorumeihin ollaksesi vuorovaikutuksessa muiden oppilaiden ja ammattilaisten kanssa, jakaaksesi työsi ja vastaanottaaksesi kommentteja ja apua.
LSRS MONRAD-KROHN
⁶ĵ Olisin halunnut nähdä python-ohjelman virheiden minimoimiseksi. Erityiset valintasolmut painomuutoksille seuraavaan kerrokseen