Umelá inteligencia (AI) si v posledných rokoch získala značné množstvo popularity.
Ak ste softvérový inžinier, počítačový vedec alebo nadšenec pre dátovú vedu všeobecne, potom vás pravdepodobne zaujali úžasné aplikácie spracovania obrazu, rozpoznávania vzorov a detekcie objektov, ktoré poskytuje táto oblasť.
Najdôležitejšou podpolou AI, o ktorej ste pravdepodobne počuli, je Deep Learning. Táto oblasť sa zameriava na výkonné algoritmy (inštrukcie počítačových programov) modelované podľa funkčnosti ľudského mozgu známej ako Neurálne siete.
V tomto článku si prejdeme koncept neurónových sietí a ako tieto modely zostaviť, zostaviť, prispôsobiť a vyhodnotiť pomocou Pytón.
Neurálne siete
Neurónové siete alebo NN sú sériou algoritmov modelovaných podľa biologickej aktivity ľudského mozgu. Neurónové siete pozostávajú z uzlov, ktoré sa tiež nazývajú neuróny.
Kolekcia vertikálnych uzlov je známa ako vrstvy. Model pozostáva z jedného vstupu, jedného výstupu a niekoľkých skrytých vrstiev. Každá vrstva pozostáva z uzlov, nazývaných aj neuróny, kde prebiehajú výpočty.
V nasledujúcom diagrame kruhy predstavujú uzly a vertikálna kolekcia uzlov predstavuje vrstvy. Tento model má tri vrstvy.
Uzly jednej vrstvy sú pripojené k ďalšej vrstve cez prenosové linky, ako je vidieť nižšie.
Náš súbor údajov pozostáva z označených údajov. To znamená, že každej dátovej entite bola priradená určitá hodnota názvu.
Takže pre súbor údajov o klasifikácii zvierat budeme mať obrázky mačiek a psov ako naše údaje s označením „mačka“ a „pes“.
Je dôležité poznamenať, že štítky je potrebné previesť na číselné hodnoty, aby náš model dával zmysel, takže naše štítky zvierat sa stanú „0“ pre mačku a „1“ pre psa. Údaje aj štítky prechádzajú cez model.
Štúdium
Údaje sa privádzajú do modelu po jednej entite. Tieto údaje sú rozdelené na kúsky a prechádzajú cez každý uzol modelu. Uzly vykonávajú matematické operácie na týchto kúskoch.
Pre tento tutoriál nemusíte poznať matematické funkcie alebo výpočty, ale je dôležité mať všeobecnú predstavu o tom, ako tieto modely fungujú. Po sérii výpočtov v jednej vrstve sa údaje prenesú do ďalšej vrstvy a tak ďalej.
Po dokončení náš model predpovedá označenie údajov na výstupnej vrstve (napríklad pri probléme s klasifikáciou zvierat dostaneme predpoveď „0“ pre mačku).
Model potom pokračuje v porovnaní tejto predpokladanej hodnoty so skutočnou hodnotou označenia.
Ak sa hodnoty zhodujú, náš model prevezme ďalší vstup, ale ak sa hodnoty líšia, model vypočíta rozdiel medzi oboma hodnotami, nazývaný strata, a upraví výpočty uzlov tak, aby nabudúce vytvorili zodpovedajúce označenia.
Rámce hlbokého učenia
Aby sme vytvorili neurónové siete v kóde, musíme importovať Rámce hlbokého učenia známe ako knižnice využívajúce naše integrované vývojové prostredie (IDE).
Tieto rámce sú zbierkou vopred napísaných funkcií, ktoré nám pomôžu v tomto návode. Na zostavenie nášho modelu budeme používať rámec Keras.
Keras je knižnica Python, ktorá využíva backend hlbokého učenia a umelej inteligencie tzv tenzorový tok ľahko vytvárať NN vo forme jednoduchých sekvenčných modelov.
Keras tiež prichádza s vlastnými už existujúcimi modelmi, ktoré by sa tiež dali použiť. Pre tento tutoriál vytvoríme vlastný model pomocou Keras.
Viac o tomto rámci Deep Learning sa môžete dozvedieť na stránke Web Keras.
Budovanie neurónovej siete (návod)
Prejdime k budovaniu neurónovej siete pomocou Pythonu.
Vyhlásenie o probléme
Neurónové siete sú typom riešenia problémov založených na AI. V tomto návode budeme prechádzať údajmi o diabete indiánov Pima, ktoré sú k dispozícii tu.
ICU Strojové učenie zostavilo tento súbor údajov a obsahuje lekársky záznam indických pacientov. Náš model má predpovedať, či pacient začne mať cukrovku do 5 rokov alebo nie.
Načítava sa množina údajov
Náš súbor údajov je jeden súbor CSV s názvom „diabetes.csv“, s ktorým možno jednoducho manipulovať pomocou programu Microsoft Excel.
Pred vytvorením nášho modelu musíme importovať našu množinu údajov. Môžete to urobiť pomocou nasledujúceho kódu:
importovať pandy ako pd
data = pd.read_csv('diabetes.csv')
x = data.drop(“Výsledok”)
y = údaje[“Výsledok”]
Tu používame pandy Aby sme mohli manipulovať s dátami nášho súboru CSV, read_csv() je vstavaná funkcia Pandas, ktorá nám umožňuje ukladať hodnoty v našom súbore do premennej s názvom 'data'.
Premenná x obsahuje našu množinu údajov bez údajov o výsledku (štítky). Dosiahneme to funkciou data.drop(), ktorá odstraňuje označenia pre x, zatiaľ čo y obsahuje iba výsledné (label) dáta.
Vytváranie sekvenčného modelu
Krok 1: Importovanie knižníc
Najprv musíme importovať TensorFlow a Keras spolu s určitými parametrami požadovanými pre náš model. Nasledujúci kód nám to umožňuje:
importovať tensorflow ako tf
z tensorflow import keras
import z tensorflow.keras.models Sekvenčný
z tensorflow.keras.layers importovať Aktivácia, Hustá
z tensorflow.keras.optimizers importujte Adama
z tensorflow.keras.metrics import categorical_crossentropy
Pre náš model importujeme husté vrstvy. Toto sú úplne spojené vrstvy; tj každý uzol vo vrstve je plne spojený s iným uzlom v nasledujúcej vrstve.
Dovážame tiež aktivácia funkcia potrebná na škálovanie údajov odosielaných do uzlov. Optimalizátory boli tiež dovezené, aby sa minimalizovali straty.
Adam je známy optimalizátor, vďaka ktorému sú naše výpočty aktualizačných uzlov efektívnejšie categorical_crossentropy, ktorá je typ stratovej funkcie (vypočítava rozdiel medzi skutočnými a predpokladanými hodnotami označenia), ktorý budeme používať.
Krok 2: Navrhnutie nášho modelu
Model, ktorý vytváram, má jednu vstupnú (s 16 jednotkami), jednu skrytú (s 32 jednotkami) a jednu výstupnú (s 2 jednotkami) vrstvu. Tieto čísla nie sú pevné a budú úplne závisieť od daného problému.
Nastavenie správneho počtu jednotiek a vrstiev je proces, ktorý sa dá časom zlepšiť praxou. Aktivácia zodpovedá typu škálovania, ktoré vykonáme na našich údajoch pred ich prechodom cez uzol.
Relu a Softmax sú známe aktivačné funkcie pre túto úlohu.
model = Sekvenčný([
Hustá(jednotky = 16, tvar_vstupu = (1,), aktivácia = 'relu'),
Husté (jednotky = 32, aktivácia = 'relu'),
Husté (jednotky = 2, aktivácia = 'softmax')
])
Zhrnutie modelu by malo vyzerať takto:
Školenie modelu
Náš model bude trénovaný v dvoch krokoch, prvým je zostavenie modelu (skladanie modelu) a ďalším prispôsobenie modelu na daný súbor údajov.
Dá sa to urobiť pomocou funkcie model.compile() nasledovanej funkciou model.fit().
model.compile(optimalizátor = Adam(rýchlosť_učenia = 0.0001), strata = 'binárna_crossentropia', metriky = ['presnosť'])
model.fit(x, y, epochy = 30, veľkosť_dávky = 10)
Zadanie metriky „presnosti“ nám umožňuje sledovať presnosť nášho modelu počas tréningu.
Keďže naše štítky sú vo forme 1 a 0, na výpočet rozdielu medzi skutočnými a predpokladanými štítkami použijeme funkciu binárnej straty.
Súbor údajov sa tiež rozdeľuje na dávky po 10 (veľkosť_dávky) a modelom prejde 30-krát (epochy). Pre daný súbor údajov by x boli údaje a y by boli označenia zodpovedajúce údajom.
Testovanie modelu pomocou predpovedí
Na vyhodnotenie nášho modelu robíme predpovede na testovacích údajoch pomocou funkcie Predikcia ().
predpovede = model.predpovedať(x)
A to je všetko!
Teraz by ste mali dobre rozumieť Deep Learning aplikácie, neurónové siete, ako vo všeobecnosti fungujú a ako zostaviť, trénovať a testovať model v kóde Python.
Dúfam, že tento tutoriál vám poskytne štart na vytváranie a nasadzovanie vlastných modelov hlbokého učenia.
Dajte nám vedieť v komentároch, či bol článok užitočný.
Nechaj odpoveď