Umělá inteligence (AI) si v posledních letech získala značné množství popularity.
Pokud jste softwarový inženýr, počítačový vědec nebo obecně nadšenec pro datovou vědu, pak vás pravděpodobně zaujaly úžasné aplikace zpracování obrazu, rozpoznávání vzorů a detekce objektů, které tento obor poskytuje.
Nejdůležitější podpolí umělé inteligence, o kterém jste pravděpodobně slyšeli, je hluboké učení. Tato oblast se zaměřuje na výkonné algoritmy (instrukce počítačových programů) modelované podle funkcí lidského mozku, tzv Neuronové sítě.
V tomto článku se podíváme na koncept neuronových sítí a na to, jak tyto modely sestavit, zkompilovat, přizpůsobit a vyhodnotit pomocí PYTHON.
Neuronové sítě
Neuronové sítě neboli NN jsou série algoritmů modelovaných podle biologické aktivity lidského mozku. Neuronové sítě se skládají z uzlů, nazývaných také neurony.
Kolekce vertikálních uzlů se nazývá vrstvy. Model se skládá z jednoho vstupu, jednoho výstupu a několika skrytých vrstev. Každá vrstva se skládá z uzlů, nazývaných také neurony, kde probíhají výpočty.
V následujícím diagramu představují kruhy uzly a vertikální kolekce uzlů představuje vrstvy. V tomto modelu jsou tři vrstvy.
Uzly jedné vrstvy jsou spojeny s další vrstvou prostřednictvím přenosových linek, jak je vidět níže.
Naše datová sada se skládá z označených dat. To znamená, že každé datové entitě byla přiřazena určitá hodnota názvu.
Takže pro soubor údajů o klasifikaci zvířat budeme mít obrázky koček a psů jako naše data se štítky „kočka“ a „pes“.
Je důležité poznamenat, že štítky je třeba převést na číselné hodnoty, aby náš model dával smysl, takže naše štítky zvířat se stanou „0“ pro kočku a „1“ pro psa. Data i popisky procházejí modelem.
Studium
Data jsou do modelu přiváděna po jedné entitě. Tato data jsou rozdělena na části a procházejí každým uzlem modelu. Uzly provádějí s těmito bloky matematické operace.
Pro tento tutoriál nepotřebujete znát matematické funkce nebo výpočty, ale je důležité mít obecnou představu o tom, jak tyto modely fungují. Po sérii výpočtů v jedné vrstvě jsou data předána do další vrstvy a tak dále.
Po dokončení náš model předpovídá označení dat na výstupní vrstvě (například v problému klasifikace zvířat dostaneme předpověď „0“ pro kočku).
Model pak pokračuje v porovnání této předpokládané hodnoty se skutečnou hodnotou štítku.
Pokud se hodnoty shodují, náš model převezme další vstup, ale pokud se hodnoty liší, model vypočítá rozdíl mezi oběma hodnotami, nazývaný ztráta, a upraví výpočty uzlů tak, aby příště vytvořil odpovídající štítky.
Rámce hlubokého učení
Abychom vytvořili neuronové sítě v kódu, musíme importovat Rámce hlubokého učení známé jako knihovny využívající naše integrované vývojové prostředí (IDE).
Tyto rámce jsou sbírkou předem napsaných funkcí, které nám pomohou v tomto tutoriálu. K vytvoření našeho modelu budeme používat framework Keras.
Keras je knihovna Pythonu, která využívá backend pro hluboké učení a umělou inteligenci, tzv tenzorový tok snadno vytvářet NN ve formě jednoduchých sekvenčních modelů.
Keras také přichází s vlastními již existujícími modely, které lze také použít. Pro tento tutoriál vytvoříme vlastní model pomocí Keras.
Více o tomto rámci Deep Learning se můžete dozvědět z Web Keras.
Budování neuronové sítě (výukový program)
Pojďme k budování neuronové sítě pomocí Pythonu.
Problémové prohlášení
Neuronové sítě jsou typem řešení problémů založených na AI. V tomto tutoriálu si projdeme data o diabetu Pima Indians, která jsou k dispozici zde.
UCI Strojové učení sestavil tento soubor dat a obsahuje lékařský záznam indických pacientů. Náš model má předpovědět, zda má pacient nástup diabetu do 5 let nebo ne.
Načítání datové sady
Naše datová sada je jeden soubor CSV s názvem 'diabetes.csv', se kterým lze snadno manipulovat pomocí aplikace Microsoft Excel.
Před vytvořením našeho modelu musíme importovat naši datovou sadu. Pomocí následujícího kódu to můžete udělat:
importovat pandy jako pd
data = pd.read_csv('diabetes.csv')
x = data.drop(“Výsledek”)
y = data[“Výsledek”]
Zde používáme Pandy Aby bylo možné manipulovat s daty našich souborů CSV, read_csv() je vestavěná funkce Pandas, která nám umožňuje ukládat hodnoty v našem souboru do proměnné nazvané 'data'.
Proměnná x obsahuje naši datovou sadu bez dat výsledku (štítek). Toho dosáhneme pomocí funkce data.drop(), která odstraňuje popisky pro x, zatímco y obsahuje pouze výstupní (label) data.
Vytvoření sekvenčního modelu
Krok 1: Import knihoven
Nejprve musíme importovat TensorFlow a Keras spolu s určitými parametry požadovanými pro náš model. Následující kód nám to umožňuje:
import tensorflow jako tf
z tensorflow import keras
import z tensorflow.keras.models Sekvenční
z tensorflow.keras.layers import Aktivace, Hustá
z tensorflow.keras.optimizers importujte Adama
z tensorflow.keras.metrics import categorical_crossentropy
Pro náš model importujeme husté vrstvy. Jedná se o plně propojené vrstvy; tj. každý uzel ve vrstvě je plně propojen s dalším uzlem v další vrstvě.
Dovážíme také aktivace funkce potřebná pro škálování dat odesílaných do uzlů. Optimalizátory byly také dovezeny, aby se minimalizovaly ztráty.
Adam je známý optimalizátor, díky kterému jsou výpočty uzlů aktualizace modelu efektivnější categorical_crossentropy, což je typ ztrátové funkce (vypočítává rozdíl mezi skutečnými a předpokládanými hodnotami štítku), kterou budeme používat.
Krok 2: Návrh našeho modelu
Model, který vytvářím, má jednu vstupní (s 16 jednotkami), jednu skrytou (s 32 jednotkami) a jednu výstupní (se 2 jednotkami) vrstvu. Tato čísla nejsou pevná a budou zcela záviset na daném problému.
Nastavení správného počtu jednotek a vrstev je proces, který lze postupem času zlepšovat praxí. Aktivace odpovídá typu škálování, které provedeme na našich datech před jejich předáním přes uzel.
Relu a Softmax jsou známé aktivační funkce pro tento úkol.
model = sekvenční([
Hustá(jednotky = 16, tvar_vstupu = (1,), aktivace = 'relu'),
Hustá (jednotky = 32, aktivace = 'relu'),
Hustá (jednotky = 2, aktivace = 'softmax')
])
Shrnutí modelu by mělo vypadat následovně:
Školení modelky
Náš model bude trénován ve dvou krocích, prvním je sestavení modelu (skládání modelu dohromady) a dalším je přizpůsobení modelu danému datovému souboru.
To lze provést pomocí funkce model.compile() následované funkcí model.fit().
model.compile(optimalizátor = Adam(rychlost_učení = 0.0001), ztráta = 'binární_crossentropie', metriky = ['přesnost'])
model.fit(x, y, epochy = 30, velikost_dávky = 10)
Zadání metriky „přesnosti“ nám umožňuje sledovat přesnost našeho modelu během tréninku.
Protože naše štítky jsou ve tvaru 1 a 0, použijeme k výpočtu rozdílu mezi skutečnými a předpokládanými štítky funkci binární ztráty.
Datový soubor je také rozdělen do dávek po 10 (batch_size) a bude procházet modelem 30krát (epochy). Pro danou datovou množinu by x byly data a y by byly štítky odpovídající datům.
Testování modelu pomocí předpovědí
Abychom vyhodnotili náš model, provádíme předpovědi na testovacích datech pomocí funkce forecast().
předpovědi = model.predict(x)
A to je vše!
Nyní byste měli dobře rozumět Hluboké učení aplikace, Neuronové sítě, jak obecně fungují a jak sestavit, trénovat a testovat model v kódu Python.
Doufám, že vám tento tutoriál poskytne nakopnutí k vytvoření a nasazení vlastních modelů hlubokého učení.
Dejte nám vědět v komentářích, zda byl článek užitečný.
Napsat komentář