Umjetna inteligencija (AI) posljednjih je godina stekla značajnu količinu popularnosti.
Ako ste softverski inženjer, informatičar ili općenito entuzijast znanosti o podacima, onda ste vjerojatno zaintrigirani nevjerojatnim primjenama obrade slika, prepoznavanja uzoraka i otkrivanja objekata koje nudi ovo područje.
Najvažnije potpolje umjetne inteligencije za koje ste vjerojatno čuli je duboko učenje. Ovo se polje fokusira na moćne algoritme (upute računalnog programa) modelirane prema funkcionalnosti ljudskog mozga poznate kao Neuronske mreže.
U ovom ćemo članku proći kroz koncept neuronskih mreža i kako izgraditi, kompilirati, prilagoditi i procijeniti te modele koristeći Piton.
Neuronske mreže
Neuronske mreže ili NN su niz algoritama modeliranih prema biološkoj aktivnosti ljudskog mozga. Neuronske mreže sastoje se od čvorova, koji se nazivaju i neuroni.
Zbirka okomitih čvorova poznata je kao slojevi. Model se sastoji od jednog ulaza, jednog izlaza i nekoliko skrivenih slojeva. Svaki sloj sastoji se od čvorova, koji se nazivaju i neuroni, gdje se odvijaju izračuni.
U sljedećem dijagramu, krugovi predstavljaju čvorove, a okomita zbirka čvorova predstavlja slojeve. U ovom modelu postoje tri sloja.
Čvorovi jednog sloja povezani su sa sljedećim slojem preko prijenosnih linija kao što se vidi dolje.
Naš skup podataka sastoji se od označenih podataka. To znači da je svakom podatkovnom entitetu dodijeljena određena vrijednost naziva.
Dakle, za skup podataka o klasifikaciji životinja imat ćemo slike mačaka i pasa kao podatke, s 'mačkom' i 'psom' kao našim oznakama.
Važno je napomenuti da se oznake moraju pretvoriti u numeričke vrijednosti kako bi naš model imao smisla, tako da naše oznake životinja postaju '0' za mačku i '1' za psa. I podaci i oznake prolaze kroz model.
Učenje
Podaci se unose u model jedan po jedan entitet. Ovi se podaci raščlanjuju na dijelove i prolaze kroz svaki čvor modela. Čvorovi izvode matematičke operacije na tim dijelovima.
Za ovaj vodič ne morate znati matematičke funkcije ili izračune, ali važno je imati opću predodžbu o tome kako ti modeli funkcioniraju. Nakon niza izračuna u jednom sloju, podaci se prosljeđuju na sljedeći sloj i tako dalje.
Nakon dovršetka, naš model predviđa oznaku podataka na izlaznom sloju (na primjer, u problemu klasifikacije životinja dobivamo predviđanje '0' za mačku).
Model zatim nastavlja uspoređivati ovu predviđenu vrijednost s onom stvarne vrijednosti oznake.
Ako se vrijednosti podudaraju, naš će model uzeti sljedeći ulaz, ali ako se vrijednosti razlikuju, model će izračunati razliku između obje vrijednosti, što se naziva gubitkom, i prilagoditi izračune čvorova kako bi sljedeći put proizveo podudarne oznake.
Okviri za duboko učenje
Da bismo izgradili neuronske mreže u kodu, moramo uvesti Okviri dubokog učenja poznate kao knjižnice koje koriste naše integrirano razvojno okruženje (IDE).
Ovi okviri su zbirka unaprijed napisanih funkcija koje će nam pomoći u ovom vodiču. Za izgradnju našeg modela koristit ćemo okvir Keras.
Keras je Python biblioteka koja koristi pozadinu dubokog učenja i umjetne inteligencije tzv. Tenzor protok s lakoćom stvarati mreže u obliku jednostavnih sekvencijalnih modela.
Keras također dolazi sa svojim već postojećim modelima koji se također mogu koristiti. Za ovaj vodič, mi ćemo kreirati vlastiti model koristeći Keras.
Više o ovom okviru dubokog učenja možete saznati na Keras web stranica.
Izgradnja neuronske mreže (vodič)
Prijeđimo na izgradnju neuronske mreže pomoću Pythona.
Izjava o problemu
Neuronske mreže su vrsta rješenja za probleme temeljene na umjetnoj inteligenciji. Za ovaj vodič proći ćemo dostupne podatke o dijabetesu Pima Indijanaca ovdje.
UCI Strojno učenje je sastavilo ovaj skup podataka i sadrži medicinski karton indijskih pacijenata. Naš model mora predvidjeti hoće li pacijent imati početak dijabetesa unutar 5 godina ili ne.
Učitavanje skupa podataka
Naš skup podataka jedna je CSV datoteka pod nazivom 'diabetes.csv' kojom se lako može manipulirati pomoću programa Microsoft Excel.
Prije stvaranja našeg modela, moramo uvesti naš skup podataka. Pomoću sljedećeg koda možete to učiniti:
uvoziti pande kao pd
podaci = pd.read_csv('dijabetes.csv')
x = data.drop(“Ishod”)
y = podaci ["Ishod"]
Ovdje koristimo pande knjižnici kako bismo mogli manipulirati podacima naše CSV datoteke, read_csv() je ugrađena funkcija Pandas koja nam omogućuje pohranjivanje vrijednosti u našoj datoteci u varijablu pod nazivom 'podaci'.
Varijabla x sadrži naš skup podataka bez podataka o ishodu (oznake). To postižemo funkcijom data.drop() koja uklanja oznake za x, dok y sadrži samo podatke o ishodu (oznaku).
Izgradnja sekvencijalnog modela
Korak 1: Uvoz biblioteka
Prvo, moramo uvesti TensorFlow i Keras, zajedno s određenim parametrima potrebnim za naš model. Sljedeći kod omogućuje nam da to učinimo:
import tensorflow kao tf
from tensorflow import keras
iz tensorflow.keras.models import Sequential
iz tensorflow.keras.layers import Activation, Dense
iz tensorflow.keras.optimizers import Adama
iz tensorflow.keras.metrics import categorical_crossentropy
Za naš model uvozimo guste slojeve. To su potpuno povezani slojevi; tj. svaki čvor u sloju potpuno je povezan s drugim čvorom u sljedećem sloju.
Uvozimo i an aktiviranje funkcija potrebna za skaliranje podataka poslanih čvorovima. Optimizatori također su uvezeni kako bi se smanjio gubitak.
Adam je poznati optimizator koji čini izračune čvorova ažuriranja našeg modela učinkovitijim, zajedno s kategorička_krosentropija koja je tip funkcije gubitka (izračunava razliku između stvarnih i predviđenih vrijednosti oznake) koju ćemo koristiti.
Korak 2: Dizajn našeg modela
Model koji stvaram ima jedan ulazni (sa 16 jedinica), jedan skriveni (s 32 jedinice) i jedan izlazni (s 2 jedinice) sloj. Ovi brojevi nisu fiksni i u potpunosti će ovisiti o danom problemu.
Postavljanje pravog broja jedinica i slojeva proces je koji se tijekom vremena može poboljšati kroz praksu. Aktivacija odgovara vrsti skaliranja koje ćemo izvršiti na našim podacima prije prolaska kroz čvor.
Relu i Softmax poznate su aktivacijske funkcije za ovaj zadatak.
model = Sekvencijalni([
Gusto (jedinice = 16, input_shape = (1,), activation = 'relu'),
Gusto (jedinice = 32, aktivacija = 'relu'),
Gusto (jedinice = 2, aktivacija = 'softmax')
])
Evo kako bi trebao izgledati sažetak modela:
Obuka modela
Naš model će se trenirati u dva koraka, prvi je kompajliranje modela (sastavljanje modela), a sljedeći je prilagođavanje modela zadanom skupu podataka.
To se može učiniti pomoću funkcije model.compile() nakon koje slijedi funkcija model.fit().
model.compile(optimizer = Adam(learning_rate = 0.0001), loss = 'binary_crossentropy', metrics = ['accuracy'])
model.fit(x, y, epohe = 30, batch_size = 10)
Određivanje metrike 'točnosti' omogućuje nam promatranje točnosti našeg modela tijekom obuke.
Budući da su naše oznake u obliku 1 i 0, koristit ćemo binarnu funkciju gubitka za izračunavanje razlike između stvarnih i predviđenih oznaka.
Skup podataka također se dijeli na serije od 10 (batch_size) i proći će kroz model 30 puta (epohe). Za dati skup podataka, x bi bili podaci, a y bi bile oznake koje odgovaraju podacima.
Testiranje modela korištenjem predviđanja
Kako bismo procijenili naš model, vršimo predviđanja na temelju testnih podataka pomoću funkcije predict().
predviđanja = model.predict(x)
I to je to!
Sada biste trebali dobro razumjeti Duboko učenje aplikacija, neuronske mreže, kako rade općenito i kako izgraditi, trenirati i testirati model u Python kodu.
Nadam se da će vam ovaj vodič dati poticaj za stvaranje i implementaciju vlastitih modela dubokog učenja.
Javite nam u komentarima je li članak bio od pomoći.
Ostavi odgovor