Tekoäly (AI) on saavuttanut huomattavan suosion viime vuosina.
Jos olet ohjelmistosuunnittelija, tietojenkäsittelytieteilijä tai tietotieteen harrastaja yleensä, olet todennäköisesti kiinnostunut tämän alan tarjoamista uskomattomista kuvankäsittelyn, hahmontunnistuksen ja objektien havaitsemisen sovelluksista.
Tekoälyn tärkein alakenttä, josta olet luultavasti kuullut, on syväoppiminen. Tämä kenttä keskittyy tehokkaisiin algoritmeihin (tietokoneohjelmakäskyihin), jotka on mallinnettu ihmisen aivojen toiminnallisuuden mukaan Neuraaliverkot.
Tässä artikkelissa käymme läpi hermoverkkojen käsitteen ja kuinka rakentaa, kääntää, sovittaa ja arvioida näitä malleja käyttämällä Python.
Neuraaliverkot
Neuraaliverkot tai NN:t ovat joukko algoritmeja, jotka on mallinnettu ihmisen aivojen biologisen toiminnan mukaan. Neuraaliverkot koostuvat solmuista, joita kutsutaan myös neuroneiksi.
Joukko pystysolmuja tunnetaan tasoina. Malli koostuu yhdestä tulosta, yhdestä lähdöstä ja joukosta piilotettuja kerroksia. Jokainen kerros koostuu solmuista, joita kutsutaan myös neuroneiksi, joissa laskelmat tapahtuvat.
Seuraavassa kaaviossa ympyrät edustavat solmuja ja pystysuora solmukokoelma kerroksia. Tässä mallissa on kolme kerrosta.
Yhden kerroksen solmut on yhdistetty seuraavaan kerrokseen siirtolinjojen kautta, kuten alla näkyy.
Tietojoukkomme koostuu merkityistä tiedoista. Tämä tarkoittaa, että jokaiselle tietokokonaisuudelle on määritetty tietty nimiarvo.
Eläinten luokittelutietojoukon tietojoukossa on siis kuvia kissoista ja koirista, ja merkinnöinä "kissa" ja "koira".
On tärkeää huomata, että tarrat on muunnettava numeerisiksi arvoiksi, jotta mallimme ymmärtävät ne, joten eläinmerkinnöistämme tulee "0" kissalle ja "1" koiralle. Sekä tiedot että tarrat kulkevat mallin läpi.
Kuinka Oppia
Data syötetään malliin yksi kerrallaan. Nämä tiedot jaetaan paloiksi ja kuljetetaan mallin jokaisen solmun läpi. Solmut suorittavat matemaattisia operaatioita näille paloille.
Sinun ei tarvitse tietää matemaattisia toimintoja tai laskelmia tätä opetusohjelmaa varten, mutta on tärkeää, että sinulla on yleinen käsitys näiden mallien toiminnasta. Yhden kerroksen laskelmien sarjan jälkeen tiedot siirretään seuraavalle tasolle ja niin edelleen.
Kun mallimme on valmis, se ennustaa datatunnisteen lähtökerroksessa (esimerkiksi eläinten luokitteluongelmassa saamme kissan ennusteen '0').
Malli jatkaa sitten tämän ennustetun arvon vertaamista todelliseen etikettiarvoon.
Jos arvot täsmäävät, mallimme ottaa seuraavan syötteen, mutta jos arvot eroavat, malli laskee molempien arvojen välisen eron, jota kutsutaan häviöksi, ja säätää solmulaskutoimituksia tuottaakseen vastaavat tunnisteet seuraavan kerran.
Deep Learning Frameworks
Jotta voimme rakentaa hermoverkkoja koodissa, meidän on tuotava Deep Learning -kehykset tunnetaan nimellä kirjastot, jotka käyttävät integroitua kehitysympäristöämme (IDE).
Nämä puitteet ovat kokoelma valmiiksi kirjoitettuja toimintoja, jotka auttavat meitä tässä opetusohjelmassa. Käytämme Keras-kehystä mallin rakentamiseen.
Keras on Python-kirjasto, joka käyttää syväoppimisen ja tekoälyn taustaohjelmaa nimeltä Tensorflow luoda NN:itä yksinkertaisten peräkkäisten mallien muodossa helposti.
Keraksen mukana tulee myös omia valmiita malleja, joita voisi myös käyttää. Tätä opetusohjelmaa varten luomme oman mallimme Kerasin avulla.
Voit oppia lisää tästä Deep Learning -kehyksestä osoitteessa Keran verkkosivuilla.
Neuraaliverkon rakentaminen (opetusohjelma)
Jatketaan hermoverkon rakentamista Pythonilla.
Ongelmalausunto
Neuroverkot ovat eräänlainen ratkaisu tekoälypohjaisiin ongelmiin. Tässä opetusohjelmassa käymme läpi Pima Indians Diabetes Data, joka on saatavilla tätä.
UCI Machine Learning on koonnut tämän tietojoukon ja sisältää intialaisten potilaiden lääketieteelliset tiedot. Mallimme tulee ennustaa, alkaako potilaalla diabetes 5 vuoden sisällä vai ei.
Ladataan tietojoukkoa
Tietojoukkomme on yksi CSV-tiedosto nimeltä "diabetes.csv", jota voidaan helposti käsitellä Microsoft Excelillä.
Ennen mallin luomista meidän on tuotava tietojoukkomme. Voit tehdä tämän käyttämällä seuraavaa koodia:
tuoda pandat pd-muodossa
data = pd.read_csv('diabetes.csv')
x = data.drop("Lopputulos")
y = data["Lopputulos"]
Tässä käytetään Panda kirjasto, jotta voimme käsitellä CSV-tiedostomme tietoja, read_csv() on Pandasin sisäänrakennettu toiminto, jonka avulla voimme tallentaa tiedostomme arvot muuttujaan nimeltä "data".
Muuttuja x sisältää tietojoukkomme ilman tulostietoja (tunnisteita). Saavutamme tämän data.drop()-funktiolla, joka poistaa x:n tunnisteet, kun taas y sisältää vain tulostiedot (tunniste).
Rakenna peräkkäinen malli
Vaihe 1: Kirjastojen tuonti
Ensinnäkin meidän on tuotava TensorFlow ja Keras sekä tietyt mallillemme vaadittavat parametrit. Seuraava koodi mahdollistaa tämän:
tuo tensorflow tf: nä
tensorflow import kerasista
osoitteesta tensorflow.keras.models tuonti Sequential
osoitteesta tensorflow.keras.layers Import Activation, Dense
osoitteesta tensorflow.keras.optimizers tuo Adam
osoitteesta tensorflow.keras.metrics tuo categorical_crossentropy
Mallillemme tuomme tiheitä kerroksia. Nämä ovat täysin yhdistettyjä kerroksia; eli jokainen kerroksen solmu on täysin yhdistetty toisen kerroksen toiseen solmuun.
Tuomme myös maahan aktivointi toiminto, jota tarvitaan solmuihin lähetettyjen tietojen skaalaus. optimizers on myös tuotu maahan häviön minimoimiseksi.
Adam on tunnettu optimoija, joka tekee mallinpäivityssolmulaskelmistamme tehokkaampia sekä categorical_crossentropy, joka on häviöfunktion tyyppi (laskee eron todellisten ja ennakoitujen etikettiarvojen välillä), jota käytämme.
Vaihe 2: Mallin suunnittelu
Luomassani mallissa on yksi tulokerros (16 yksikköä), yksi piilotettu (32 yksikköä) ja yksi tulos (2 yksikköä). Nämä luvut eivät ole kiinteitä, ja ne riippuvat täysin tietystä ongelmasta.
Oikean yksiköiden ja kerrosten määrän asettaminen on prosessi, jota voidaan parantaa ylityöllä harjoittelemalla. Aktivointi vastaa skaalaustyyppiä, jonka suoritamme tiedoillemme ennen niiden välittämistä solmun kautta.
Relu ja Softmax ovat tunnettuja aktivointitoimintoja tähän tehtävään.
malli = Sequential([
Tiheä(yksikköä = 16, input_shape = (1,), aktivointi = 'relu'),
Tiheä (yksikköä = 32, aktivointi = 'relu'),
Tiheä(yksikkö = 2, aktivointi = 'softmax')
])
Mallin yhteenvedon pitäisi näyttää tältä:
Mallin kouluttaminen
Mallimme opetetaan kahdessa vaiheessa, joista ensimmäinen on mallin kokoaminen (mallin kokoaminen) ja seuraava mallin sovittaminen tiettyyn tietojoukkoon.
Tämä voidaan tehdä käyttämällä model.compile()-funktiota ja sen jälkeen model.fit()-funktiota.
model.compile(optimizer = Adam(oppimisnopeus = 0.0001), menetys = 'binary_crossentropy', metrics = ['tarkkuus'])
malli.sovitus(x, y, aikakaudet = 30, erän_koko = 10)
"Tarkkuus"-mittarin määrittäminen antaa meille mahdollisuuden tarkkailla mallimme tarkkuutta koulutuksen aikana.
Koska nimiömme ovat ykkösten ja nollien muodossa, käytämme binäärihäviöfunktiota laskeaksemme eron todellisten ja ennakoitujen nimikkeiden välillä.
Tietojoukko jaetaan myös 10:n eriin (batch_size) ja se ajetaan mallin läpi 30 kertaa (epookit). Tietylle tietojoukolle x olisi data ja y olisi dataa vastaavat tunnisteet.
Mallin testaus ennusteiden avulla
Mallin arvioimiseksi teemme ennusteita testidatalle ennusta()-funktiolla.
ennusteet = model.predict(x)
Ja siinä kaikki!
Sinulla pitäisi nyt olla hyvä käsitys asiasta Deep Learning sovellus, hermoverkot, miten ne toimivat yleensä ja kuinka rakennetaan, koulutetaan ja testataan malli Python-koodissa.
Toivon, että tämä opetusohjelma antaa sinulle vauhtia omien Deep Learning -mallien luomiseen ja käyttöönottoon.
Kerro meille kommenteissa, jos artikkelista oli apua.
Jätä vastaus