Artefarita Inteligenteco (AI) akiris gravan popularecon en la lastaj jaroj.
Se vi estas programaro-inĝeniero, komputikisto, aŭ datuma scienca entuziasmulo ĝenerale, tiam vi verŝajne estas intrigita de la mirindaj aplikoj de bildprilaborado, ŝablono-rekono kaj objektodetekto provizitaj de ĉi tiu kampo.
La plej grava subfako de AI, pri kiu vi verŝajne aŭdis, estas Profunda Lernado. Tiu kampo temigas potencajn algoritmojn (komputilprograminstrukcioj) modeligitaj laŭ homa cerba funkcieco konata kiel Neŭralaj Retoj.
En ĉi tiu artikolo, ni trarigardos la koncepton de Neŭralaj Retoj kaj kiel konstrui, kompili, adapti kaj taksi ĉi tiujn modelojn uzante python.
Neŭralaj Retoj
Neŭralaj retoj, aŭ NNoj, estas serio de algoritmoj modeligitaj laŭ la biologia agado de la homa cerbo. Neŭralaj retoj konsistas el nodoj, ankaŭ nomitaj neŭronoj.
Kolekto de vertikalaj nodoj estas konata kiel tavoloj. La modelo konsistas el unu enigo, unu eligo, kaj kelkaj kaŝitaj tavoloj. Ĉiu tavolo konsistas el nodoj, ankaŭ nomataj neŭronoj, kie okazas la kalkuloj.
En la sekva diagramo, la cirkloj reprezentas la nodojn kaj la vertikala kolekto de nodoj reprezentas la tavolojn. Estas tri tavoloj en ĉi tiu modelo.
La nodoj de unu tavolo estas ligitaj al la venonta tavolo tra transmisilinioj kiel vidite malsupre.
Nia datumaro konsistas el etikeditaj datumoj. Ĉi tio signifas, ke al ĉiu datumunuo oni asignis certan nomvaloron.
Do por besta klasifika datumaro ni havos bildojn de katoj kaj hundoj kiel niaj datumoj, kun "kato" kaj "hundo" kiel niaj etikedoj.
Gravas noti, ke etikedoj devas esti konvertitaj al nombraj valoroj por ke nia modelo komprenu ilin, do niaj bestaj etikedoj fariĝas '0' por kato kaj '1' por hundo. Kaj la datumoj kaj la etikedoj estas pasigitaj tra la modelo.
Lernado
Datenoj estas provizitaj al la modelo unu ento samtempe. Ĉi tiuj datumoj estas dividitaj en pecojn kaj trapasitaj tra ĉiu nodo de la modelo. Nodoj faras matematikajn operaciojn sur ĉi tiuj pecoj.
Vi ne bezonas scii la matematikajn funkciojn aŭ kalkulojn por ĉi tiu lernilo, sed gravas havi ĝeneralan ideon pri kiel funkcias ĉi tiuj modeloj. Post serio de kalkuloj en unu tavolo, datumoj estas transdonitaj al la sekva tavolo kaj tiel plu.
Post kiam finite, nia modelo antaŭdiras la datenetikedon ĉe la produktaĵtavolo (ekzemple, en besta klasifikproblemo ni ricevas antaŭdiron '0' por kato).
La modelo tiam daŭrigas kompari tiun antaŭviditan valoron kun tiu de la fakta etikedvaloro.
Se la valoroj kongruas, nia modelo prenos la sekvan enigaĵon sed se la valoroj malsamas la modelo kalkulos la diferencon inter ambaŭ valoroj, nomata perdo, kaj alĝustigos nodkalkulojn por produkti kongruajn etikedojn venontfoje.
Profundaj Lernaj Kadroj
Por konstrui Neŭralajn Retojn en kodo, ni devas importi Kadroj de Profunda Lernado konata kiel bibliotekoj uzante nian Integritan Disvolvan Medion (IDE).
Ĉi tiuj kadroj estas kolekto de antaŭskribitaj funkcioj, kiuj helpos nin en ĉi tiu lernilo. Ni uzos la kadron Keras por konstrui nian modelon.
Keras estas Python-biblioteko kiu uzas profundan lernadon kaj artefaritan inteligentecan backend nomitan Tensorfluo krei NN-ojn en formo de simplaj sinsekvaj modeloj facile.
Keras ankaŭ venas kun siaj propraj antaŭekzistantaj modeloj kiuj povus esti uzataj ankaŭ. Por ĉi tiu lernilo, ni kreos nian propran modelon uzante Keras.
Vi povas lerni pli pri ĉi tiu Profunda Lernado-kadro de la Keras-retejo.
Konstruante Neŭralan Reton (Lernejo)
Ni pluiru al konstruado de Neŭrala Reto uzante Python.
Problema Deklaro
Neŭralaj Retoj estas speco de solvo al problemoj bazitaj en AI. Por ĉi tiu lernilo ni trarigardos la Pima Indians Diabetes Datumoj, kiu estas havebla tie.
UCI Maŝinlernado kompilis ĉi tiun datumaron kaj enhavas medicinan registron de hindaj pacientoj. Nia modelo devas antaŭdiri ĉu la paciento havas komencon de diabeto ene de 5 jaroj aŭ ne.
Ŝarĝante datumaron
Nia datumaro estas ununura CSV-dosiero nomata 'diabetes.csv', kiu povas facile manipuli per Microsoft Excel.
Antaŭ krei nian modelon, ni devas importi nian datumaron. Uzante la sekvan kodon vi povas fari tion:
importi pandojn kiel pd
datumoj = pd.read_csv('diabeto.csv')
x = datumoj.drop(“Rezulto”)
y = datumoj["Rezulto"]
Ĉi tie ni uzas la Pandoj biblioteko por povi manipuli niajn CSV-dosierajn datumojn, read_csv() estas enkonstruita funkcio de Pandas, kiu ebligas al ni konservi la valorojn en nia dosiero al variablo nomata 'datumoj'.
La variablo x enhavas nian datumaron sen la rezulto (etikedoj) datumoj. Ni atingas ĉi tion per la funkcio data.drop() kiu forigas la etikedojn por x, dum y enhavas nur la rezulton (etikedo) datumoj.
Konstruanta Sekvenca Modelo
Paŝo 1: Importi Bibliotekojn
Unue, ni devas importi TensorFlow kaj Keras, kune kun iuj parametroj necesaj por nia modelo. La sekva kodo permesas al ni fari tion:
importi tensorfluon kiel tf
el tensorflow import keras
el tensorflow.keras.models importo Sequential
el tensorflow.keras.layers import Aktivigo, Densa
el tensorflow.keras.optimizers importu Adam
el tensorflow.keras.metrics importi categorical_crossentropy
Por nia modelo ni importas densajn tavolojn. Ĉi tiuj estas plene ligitaj tavoloj; te, ĉiu nodo en tavolo estas plene ligita kun alia nodo en la sekva tavolo.
Ni ankaŭ importas an aktivigo funkcio necesa por grimpi datumoj senditaj al nodoj. Optimigiloj ankaŭ estis importitaj por minimumigi perdon.
Adam estas fama optimumiganto, kiu faras niajn modelajn ĝisdatigajn nodkalkulojn pli efike, kune kun kategoria_krucoentropio kiu estas la speco de perdfunkcio (kalkulas diferencon inter realaj kaj antaŭviditaj etikedvaloroj) kiun ni uzos.
Paŝo 2: Desegni Nian Modelon
La modelo, kiun mi kreas, havas unu enigaĵon (kun 16 unuoj), unu kaŝitan (kun 32 ekzemplerojn) kaj unu eligaĵon (kun 2 unuoj) tavolo. Ĉi tiuj nombroj ne estas fiksitaj kaj dependos tute de la donita problemo.
Fiksi la ĝustan nombron da unuoj kaj tavoloj estas procezo, kiu povas esti plibonigita kromlaboro per praktiko. Aktivigo respondas al la speco de skalo, kiun ni faros pri niaj datumoj antaŭ ol trapasi ĝin tra nodo.
Relu kaj Softmax estas famaj aktivigaj funkcioj por ĉi tiu tasko.
modelo = Sinsekva([
Densa (unuoj = 16, enigo_formo = (1,), aktivigo = 'relu'),
Densa (unuoj = 32, aktivigo = 'relu'),
Densa (unuoj = 2, aktivigo = 'softmax')
])
Jen kiel devus aspekti la resumo de la modelo:
Trejnante la Modelon
Nia modelo estos trejnita en du paŝoj, la unua estante kompili la modelon (kunmetante la modelon) kaj la sekva estante ĝustigi la modelon sur donita datumaro.
Ĉi tio povas esti farita per la funkcio model.compile() sekvata de la funkcio model.fit().
model.compile (optimumiganto = Adam (lernado_procento = 0.0001), perdo = 'binara_kruc-entropio', metriko = ['precizeco'])
modelo.fit (x, y, epokoj = 30, batch_size = 10)
Specifante la 'precizecan' metrikon permesas al ni observi la precizecon de nia modelo dum trejnado.
Ĉar niaj etikedoj estas en la formo de 1 kaj 0, ni uzos binaran perdan funkcion por kalkuli la diferencon inter realaj kaj antaŭviditaj etikedoj.
La datumaro ankaŭ estas dividita en arojn de 10 (batch_size) kaj estos trapasita tra la modelo 30 fojojn (epokoj). Por antaŭfiksita datumaro, x estus la datenoj kaj y estus la etikedoj egalrilatantaj al la datenoj.
Testado de Modelo Uzante Antaŭdirojn
Por taksi nian modelon, ni faras antaŭdirojn pri la testaj datumoj uzante la funkcion predict().
prognozoj = model.predict(x)
Kaj jen!
Vi nun devus havi bonan komprenon pri la Profunda Lernado aplikaĵo, Neŭralaj Retoj, kiel ili funkcias ĝenerale kaj kiel konstrui, trejni kaj testi modelon en Python-kodo.
Mi esperas, ke ĉi tiu lernilo donas al vi la komencon por krei kaj disfaldi viajn proprajn modelojn pri Profunda Lernado.
Sciigu nin en la komentoj ĉu la artikolo estis helpema.
Lasi Respondon