Inteligjenca Artificiale (AI) ka fituar një popullaritet të konsiderueshëm vitet e fundit.
Nëse jeni një inxhinier softuerësh, shkencëtar kompjuteri ose entuziast i shkencës së të dhënave në përgjithësi, atëherë ndoshta jeni të intriguar nga aplikacionet e mahnitshme të përpunimit të imazhit, njohjes së modeleve dhe zbulimit të objekteve të ofruara nga kjo fushë.
Nënfusha më e rëndësishme e AI për të cilën ndoshta keni dëgjuar është mësimi i thellë. Kjo fushë fokusohet në algoritme të fuqishme (udhëzimet e programeve kompjuterike) të modeluara sipas funksioneve të trurit të njeriut të njohur si Rrjetet nervore.
Në këtë artikull, ne do të shqyrtojmë konceptin e Rrjeteve Neurale dhe si të ndërtojmë, përpilojmë, përshtatim dhe vlerësojmë këto modele duke përdorur Piton.
Rrjetet nervore
Rrjetet nervore, ose NN, janë një seri algoritmesh të modeluara sipas aktivitetit biologjik të trurit të njeriut. Rrjetet nervore përbëhen nga nyje, të quajtura gjithashtu neurone.
Një koleksion nyjesh vertikale njihen si shtresa. Modeli përbëhet nga një hyrje, një dalje dhe një numër shtresash të fshehura. Çdo shtresë përbëhet nga nyje, të quajtura gjithashtu neurone, ku bëhen llogaritjet.
Në diagramin e mëposhtëm, rrathët përfaqësojnë nyjet dhe koleksioni vertikal i nyjeve përfaqëson shtresat. Ka tre shtresa në këtë model.
Nyjet e një shtrese janë të lidhura me shtresën tjetër përmes linjave të transmetimit siç shihet më poshtë.
Të dhënat tona të të dhënave përbëhet nga të dhëna të etiketuara. Kjo do të thotë se çdo entiteti të dhënash i është caktuar një vlerë e caktuar emri.
Pra, për një grup të dhënash të klasifikimit të kafshëve ne do të kemi imazhe të maceve dhe qenve si të dhëna tona, me 'mace' dhe 'qen' si etiketa.
Është e rëndësishme të theksohet se etiketat duhet të konvertohen në vlera numerike që modeli ynë të kuptojë ato, kështu që etiketat tona të kafshëve bëhen '0' për macen dhe '1' për qenin. Të dhënat dhe etiketat kalohen përmes modelit.
Mësim
Të dhënat i jepen modelit një entitet në të njëjtën kohë. Këto të dhëna ndahen në copa dhe kalohen nëpër secilën nyje të modelit. Nyjet kryejnë operacione matematikore në këto pjesë.
Ju nuk keni nevojë të dini funksionet apo llogaritjet matematikore për këtë tutorial, por është e rëndësishme të keni një ide të përgjithshme se si funksionojnë këto modele. Pas një sërë llogaritjesh në një shtresë, të dhënat kalohen në shtresën tjetër dhe kështu me radhë.
Pasi të përfundojë, modeli ynë parashikon etiketën e të dhënave në shtresën dalëse (për shembull, në një problem të klasifikimit të kafshëve marrim një parashikim '0' për një mace).
Modeli më pas vazhdon të krahasojë këtë vlerë të parashikuar me atë të vlerës aktuale të etiketës.
Nëse vlerat përputhen, modeli ynë do të marrë hyrjen tjetër, por nëse vlerat ndryshojnë, modeli do të llogarisë diferencën midis të dy vlerave, të quajtur humbje, dhe do të rregullojë llogaritjet e nyjeve për të prodhuar etiketa që përputhen herën tjetër.
Kuadri i të mësuarit të thellë
Për të ndërtuar Rrjetet Neurale në kod, duhet të importojmë Kornizat e të mësuarit të thellë të njohura si biblioteka që përdorin Mjedisin tonë të Integruar të Zhvillimit (IDE).
Këto korniza janë një koleksion funksionesh të parashkruara që do të na ndihmojnë në këtë tutorial. Ne do të përdorim kornizën Keras për të ndërtuar modelin tonë.
Keras është një bibliotekë Python që përdor një bazë mësimi të thellë dhe inteligjencë artificiale të quajtur Rrjedhja e tensionit për të krijuar me lehtësi NN në formën e modeleve të thjeshta sekuenciale.
Keras gjithashtu vjen me modelet e veta paraekzistuese që mund të përdoren gjithashtu. Për këtë tutorial, ne do të krijojmë modelin tonë duke përdorur Keras.
Mund të mësoni më shumë rreth kësaj kuadri të të mësuarit të thellë nga Faqja e internetit Keras.
Ndërtimi i një rrjeti nervor (tutorial)
Le të kalojmë në ndërtimin e një rrjeti nervor duke përdorur Python.
Deklarata e Problemit
Rrjetet nervore janë një lloj zgjidhjeje për problemet e bazuara në AI. Për këtë tutorial ne do të shqyrtojmë të dhënat e diabetit të Pima Indians, të cilat janë të disponueshme këtu.
UCI Machine Learning ka përpiluar këtë grup të dhënash dhe përmban një dosje mjekësore të pacientëve indianë. Modeli ynë duhet të parashikojë nëse pacienti ka një fillim të diabetit brenda 5 viteve apo jo.
Po ngarkohet grupi i të dhënave
Të dhënat tona janë një skedar i vetëm CSV i quajtur 'diabetes.csv' që mund të manipulohet lehtësisht duke përdorur Microsoft Excel.
Përpara se të krijojmë modelin tonë, ne duhet të importojmë të dhënat tona. Duke përdorur kodin e mëposhtëm, mund ta bëni këtë:
import pandas si pd
data = pd.read_csv('diabetes.csv')
x = data.drop ("Rezultati")
y = të dhëna["Rezultati"]
Këtu po përdorim Pandas biblioteka për të qenë në gjendje të manipulojë të dhënat e skedarit tonë CSV, read_csv() është një funksion i integruar i Pandas që na lejon të ruajmë vlerat në skedarin tonë në një ndryshore të quajtur 'të dhëna'.
Ndryshorja x përmban të dhënat tona të të dhënave pa të dhënat e rezultatit (etiketat). Këtë e arrijmë me funksionin data.drop() që heq etiketat për x, ndërsa y përmban vetëm të dhënat e rezultatit (etiketës).
Ndërtimi i modelit sekuencial
Hapi 1: Importimi i Bibliotekave
Së pari, ne duhet të importojmë TensorFlow dhe Keras, së bashku me disa parametra të kërkuar për modelin tonë. Kodi i mëposhtëm na lejon ta bëjmë këtë:
importoj tensorflow si tf
nga kerat e importit tensorflow
nga tensorflow.keras.modelet importojnë Sekuencial
nga tensorflow.keras.layers import Aktivizimi, Dendur
nga tensorflow.keras.optimizerët importojnë Adamin
nga tensorflow.keras.metrics import categorical_crossentropy
Për modelin tonë ne po importojmë shtresa të dendura. Këto janë shtresa plotësisht të lidhura; dmth, çdo nyje në një shtresë është plotësisht e lidhur me një nyje tjetër në shtresën tjetër.
Ne gjithashtu importojmë një aktivizimi funksioni i nevojshëm për shkallëzimin e të dhënave të dërguara në nyje. Optimizuesit janë importuar gjithashtu për të minimizuar humbjet.
Adam është një optimizues i njohur që i bën llogaritjet tona të nyjeve të përditësimit të modelit në mënyrë më efikase, së bashku me kategorik_crossentropy që është lloji i funksionit të humbjes (llogarit ndryshimin midis vlerave aktuale dhe të parashikuara të etiketës) që do të përdorim.
Hapi 2: Dizajnimi i modelit tonë
Modeli që unë po krijoj ka një shtresë hyrëse (me 16 njësi), një të fshehur (me 32 njësi) dhe një dalje (me 2 njësi). Këto shifra nuk janë fikse dhe do të varen tërësisht nga problemi i dhënë.
Vendosja e numrit të duhur të njësive dhe shtresave është një proces që mund të përmirësohet jashtë orarit përmes praktikës. Aktivizimi korrespondon me llojin e shkallëzimit që do të kryejmë në të dhënat tona përpara se t'i kalojmë ato përmes një nyje.
Relu dhe Softmax janë funksione të njohura aktivizimi për këtë detyrë.
model = sekuencial ([
Dendur (njësi = 16, formë_hyrje = (1,), aktivizim = 'relu'),
Dendur (njësi = 32, aktivizim = 'relu'),
Dendur (njësi = 2, aktivizim = 'softmax')
])
Ja si duhet të duket përmbledhja e modelit:
Trajnimi i Modelit
Modeli ynë do të trajnohet në dy hapa, i pari është përpilimi i modelit (bashkimi i modelit) dhe tjetri përshtatja e modelit në një grup të dhënash të caktuar.
Kjo mund të bëhet duke përdorur funksionin model.compile() i ndjekur nga funksioni model.fit().
model.compile(optimizer = Adam (norma e_mësimit = 0.0001), humbja = 'binar_crossentropy', metrikë = ['saktësia'])
model.përshtatje(x, y, epoka = 30, madhësia e grupit = 10)
Specifikimi i metrikës së 'saktësisë' na lejon të vëzhgojmë saktësinë e modelit tonë gjatë trajnimit.
Meqenëse etiketat tona janë në formën e 1 dhe 0, ne do të përdorim një funksion humbje binar për të llogaritur ndryshimin midis etiketave aktuale dhe atyre të parashikuara.
Të dhënat janë gjithashtu duke u ndarë në grupe prej 10 (batch_size) dhe do të kalohen përmes modelit 30 herë (epoka). Për një grup të dhënash të dhënash, x do të ishin të dhënat dhe y do të ishin etiketat që korrespondojnë me të dhënat.
Modeli i testimit duke përdorur parashikimet
Për të vlerësuar modelin tonë, ne bëjmë parashikime mbi të dhënat e testit duke përdorur funksionin predict().
parashikime = model.parashikoj(x)
Dhe kjo eshte!
Tani duhet të keni një kuptim të mirë të Mësim i thellë aplikacioni, Rrjetet Neurale, si funksionojnë në përgjithësi dhe si të ndërtohet, trajnohet dhe testohet një model në kodin Python.
Shpresoj që ky tutorial t'ju japë fillimin për të krijuar dhe vendosur modelet tuaja të mësimit të thellë.
Na tregoni në komente nëse artikulli ishte i dobishëm.
Lini një Përgjigju