Tehisintellekt (AI) on viimastel aastatel saavutanud märkimisväärse populaarsuse.
Kui olete tarkvarainsener, arvutiteadlane või üldiselt andmeteaduse entusiast, siis tõenäoliselt paeluvad teid selle valdkonna pakutavad hämmastavad pilditöötluse, mustrituvastuse ja objektide tuvastamise rakendused.
Kõige olulisem AI alamvaldkond, millest olete ilmselt kuulnud, on süvaõpe. See väli keskendub võimsatele algoritmidele (arvutiprogrammi juhised), mis on modelleeritud inimaju funktsioonide järgi Närvivõrgud.
Selles artiklis käsitleme närvivõrkude kontseptsiooni ja seda, kuidas neid mudeleid kasutades luua, kompileerida, sobitada ja hinnata. Python.
Närvivõrgud
Neuraalvõrgud ehk NN-d on algoritmide seeria, mis on modelleeritud inimaju bioloogilise aktiivsuse järgi. Närvivõrgud koosnevad sõlmedest, mida nimetatakse ka neuroniteks.
Vertikaalsete sõlmede kogumit tuntakse kihtidena. Mudel koosneb ühest sisendist, ühest väljundist ja paljudest peidetud kihtidest. Iga kiht koosneb sõlmedest, mida nimetatakse ka neuroniteks, kus arvutused toimuvad.
Järgmisel diagrammil tähistavad ringid sõlme ja vertikaalne sõlmede kogum kihte. Selles mudelis on kolm kihti.
Ühe kihi sõlmed on ühendatud järgmise kihiga ülekandeliinide kaudu, nagu allpool näha.
Meie andmestik koosneb märgistatud andmetest. See tähendab, et igale andmeolemile on määratud teatud nimeväärtus.
Loomade klassifitseerimise andmestiku jaoks on meie andmetena kasside ja koerte kujutised ning siltidena „kass” ja „koer”.
Oluline on märkida, et meie mudeli jaoks tuleb sildid arvulisteks väärtusteks teisendada, nii et meie loomamärgistused muutuvad kassi jaoks 0-ks ja koeraks 1-ks. Nii andmed kui ka sildid juhitakse läbi mudeli.
Õppimine
Andmed edastatakse mudelile üks olem korraga. Need andmed jagatakse tükkideks ja juhitakse läbi mudeli iga sõlme. Sõlmed teostavad nende tükkidega matemaatilisi toiminguid.
Selle õpetuse jaoks ei pea te teadma matemaatilisi funktsioone ega arvutusi, kuid oluline on omada üldist ettekujutust nende mudelite toimimisest. Pärast arvutusteseeriat ühes kihis edastatakse andmed järgmisele kihile ja nii edasi.
Pärast valmimist ennustab meie mudel väljundkihi andmesildi (näiteks loomade klassifikatsiooniprobleemi korral saame kassi jaoks ennustuse '0').
Seejärel võrdleb mudel seda prognoositud väärtust tegeliku märgise väärtusega.
Kui väärtused ühtivad, kasutab meie mudel järgmise sisendi, kuid kui väärtused erinevad, arvutab mudel mõlema väärtuse erinevuse, mida nimetatakse kadudeks, ja kohandab sõlmede arvutusi, et järgmisel korral luua vastavad sildid.
Süvaõppe raamistikud
Neuraalvõrkude koodis ülesehitamiseks peame importima Süvaõppe raamistikud tuntud kui raamatukogud, mis kasutavad meie integreeritud arenduskeskkonda (IDE).
Need raamistikud on eelnevalt kirjutatud funktsioonide kogum, mis on meile selles õpetuses abiks. Kasutame oma mudeli koostamiseks Kerase raamistikku.
Keras on Pythoni teek, mis kasutab süvaõppe ja tehisintellekti taustaprogrammi Tensorivoog NN-ide loomiseks lihtsate järjestikuste mudelite kujul.
Kerasel on ka oma olemasolevad mudelid, mida saab samuti kasutada. Selle õpetuse jaoks loome Kerase abil oma mudeli.
Lisateavet selle süvaõppe raamistiku kohta leiate veebisaidilt Kerase veebisait.
Neuraalvõrgu loomine (õpetus)
Liigume edasi Pythoni abil närvivõrgu loomise juurde.
Probleemipüstituses
Närvivõrgud on teatud tüüpi lahendus AI-põhistele probleemidele. Selle õpetuse jaoks käsitleme Pima indiaanlaste diabeediandmeid, mis on saadaval siin.
UCI Masinõpe on selle andmestiku koostanud ja sisaldab India patsientide haiguslugu. Meie mudel peab ennustama, kas patsiendil on diabeet 5 aasta jooksul või mitte.
Andmestiku laadimine
Meie andmestik on üks CSV-fail nimega "diabetes.csv", mida saab hõlpsasti Microsoft Exceli abil töödelda.
Enne mudeli loomist peame importima oma andmestiku. Seda saate teha järgmise koodi abil:
impordi pandad kui pd
andmed = pd.read_csv('diabeet.csv')
x = data.drop ("Tulemus")
y = andmed ["Tulemus"]
Siin kasutame Pandad CSV-faili andmetega manipuleerimiseks on read_csv() Pandase sisseehitatud funktsioon, mis võimaldab meil failis olevad väärtused salvestada muutujasse nimega 'data'.
Muutuja x sisaldab meie andmestikku ilma tulemuste (siltide) andmeteta. Selle saavutame funktsiooni data.drop() abil, mis eemaldab x sildid, samas kui y sisaldab ainult tulemuse (sildi) andmeid.
Järjestikuse mudeli ehitamine
1. samm: teekide importimine
Esiteks peame importima TensorFlow ja Keras koos teatud meie mudeli jaoks vajalike parameetritega. Järgmine kood võimaldab meil seda teha:
import tensorflow kui tf
tensorflow import kerast
saidilt tensorflow.keras.models import Järjestikune
saidilt tensorflow.keras.layers import Aktiveerimine, tihe
saidilt tensorflow.keras.optimizers impordi Adam
saidilt tensorflow.keras.metrics impordi categorical_crossentropy
Meie mudeli jaoks impordime tihedaid kihte. Need on täielikult ühendatud kihid; st iga kihi sõlm on täielikult ühendatud järgmise kihi teise sõlmega.
Samuti impordime an aktiveerimine funktsioon, mis on vajalik sõlmedesse saadetud andmete skaleerimiseks. Optimeerijad on imporditud ka kadude minimeerimiseks.
Adam on tuntud optimeerija, mis muudab meie mudelivärskendussõlmede arvutused tõhusamaks kategooriline_ristsoopia, mis on kaofunktsiooni tüüp (arvutab erinevuse tegelike ja prognoositud sildi väärtuste vahel), mida me kasutame.
2. samm: meie mudeli kujundamine
Minu loodaval mudelil on üks sisend (16 ühikuga), üks peidetud (32 ühikuga) ja üks väljund (2 ühikuga) kiht. Need numbrid ei ole fikseeritud ja sõltuvad täielikult antud probleemist.
Õige ühikute ja kihtide arvu seadistamine on protsess, mida saab harjutades ületunnitööd parandada. Aktiveerimine vastab skaleerimise tüübile, mida me oma andmetel enne sõlme läbimist teostame.
Relu ja Softmax on selle ülesande jaoks tuntud aktiveerimisfunktsioonid.
model = Sequential([
Tihe (ühikuid = 16, sisendi_kuju = (1,), aktiveerimine = 'relu'),
Tihe (ühikut = 32, aktiveerimine = 'relu'),
Tihe (ühikud = 2, aktiveerimine = 'softmax')
])
Mudeli kokkuvõte peaks välja nägema järgmine:
Modelli koolitamine
Meie mudelit koolitatakse kahes etapis, millest esimene on mudeli koostamine (mudeli kokkupanemine) ja järgmine mudeli sobitamine antud andmekogumisse.
Seda saab teha funktsiooni model.compile() abil, millele järgneb funktsioon model.fit().
model.comile(optimizer = Adam(õppe_määr = 0.0001), kadu = 'binaarne_ristsoopia', mõõdikud = ['täpsus'])
model.fit(x, y, epohhid = 30, partii_suurus = 10)
Täpsusmõõdiku määramine võimaldab meil jälgida oma mudeli täpsust treeningu ajal.
Kuna meie sildid on 1-de ja 0-de kujul, kasutame tegelike ja prognoositud siltide erinevuse arvutamiseks binaarkaofunktsiooni.
Andmekogum jagatakse ka 10 partiideks (partii_suurus) ja see läbitakse mudelist 30 korda (perioodid). Antud andmekogumi puhul oleks x andmed ja y andmetele vastavad sildid.
Mudeli testimine ennustuste abil
Oma mudeli hindamiseks teeme ennustused testiandmetele, kasutades funktsiooni ennusta () .
ennustused = model.predict(x)
Ja see ongi kõik!
Nüüd peaksite sellest hästi aru saama Sügav õppimine rakendus, närvivõrgud, kuidas need üldiselt töötavad ning kuidas Pythoni koodis mudelit ehitada, treenida ja testida.
Loodan, et see õpetus annab teile tõuke oma süvaõppe mudelite loomiseks ja juurutamiseks.
Andke meile kommentaarides teada, kas artikkel oli kasulik.
Jäta vastus