Obsah[Skrýt][Ukázat]
V posledních letech rostla popularita neuronových sítí, protože se ukázalo, že jsou extrémně dobré v široké škále úkolů.
Ukázalo se, že jsou skvělou volbou pro rozpoznávání obrazu a zvuku, zpracování přirozeného jazyka a dokonce i hraní komplikovaných her, jako jsou Go a šachy.
V tomto příspěvku vás provedu celým procesem trénování neuronové sítě. Zmíním a vysvětlím všechny kroky k trénování neuronové sítě.
Zatímco budu procházet kroky, rád bych přidal jednoduchý příklad, abych se ujistil, že existuje také praktický příklad.
Tak pojďte a naučíme se zpracovávat neuronové sítě
Začněme jednoduše a zeptejme se, co jsou neuronové sítě na prvním místě.
Co přesně jsou neuronové sítě?
Neuronové sítě jsou počítačový software, který simuluje činnost lidského mozku. Dokážou se poučit z obrovského množství dat a odhalit vzorce, které mohou lidé těžko odhalit.
Neuronové sítě v posledních letech nabyly na popularitě kvůli jejich všestrannosti v úkolech, jako je rozpoznávání obrazu a zvuku, zpracování přirozeného jazyka a prediktivní modelování.
Celkově jsou neuronové sítě silným nástrojem pro širokou škálu aplikací a mají šanci změnit způsob, jakým přistupujeme k široké škále pracovních míst.
Proč bychom o nich měli vědět?
Pochopení neuronových sítí je zásadní, protože vedly k objevům v různých oblastech, včetně počítačového vidění, rozpoznávání řeči a zpracování přirozeného jazyka.
Neuronové sítě jsou například jádrem nedávného vývoje v oblasti samořídících automobilů, automatických překladatelských služeb a dokonce i lékařské diagnostiky.
Pochopení toho, jak fungují neuronové sítě a jak je navrhovat, nám pomáhá vytvářet nové a inovativní aplikace. A možná to může v budoucnu vést k ještě větším objevům.
Poznámka k tutoriálu
Jak jsem řekl výše, rád bych vysvětlil kroky trénování neuronové sítě na příkladu. K tomu bychom měli mluvit o datové sadě MNIST. Je to oblíbená volba pro začátečníky, kteří chtějí začít s neuronovými sítěmi.
MNIST je zkratka, která znamená Modified National Institute of Standards and Technology. Jedná se o ručně psaný číselný soubor dat, který se běžně používá pro školení a testování modelů strojového učení, zejména neuronových sítí.
Sbírka obsahuje 70,000 0 fotografií ručně psaných číslic od 9 do XNUMX ve stupních šedi.
Datový soubor MNIST je oblíbeným měřítkem klasifikace obrázků úkoly. Často se používá pro výuku a učení, protože je kompaktní a snadno se s ním pracuje, a přitom představuje obtížnou výzvu pro algoritmy strojového učení.
Datovou sadu MNIST podporuje několik rámců a knihoven strojového učení, včetně TensorFlow, Keras a PyTorch.
Nyní víme o datové sadě MNIST, začněme s našimi kroky trénování neuronové sítě.
Základní kroky k trénování neuronové sítě
Import nezbytných knihoven
Když začínáte trénovat neuronovou síť, je důležité mít potřebné nástroje pro návrh a trénování modelu. Prvním krokem při vytváření neuronové sítě je import požadovaných knihoven, jako jsou TensorFlow, Keras a NumPy.
Tyto knihovny slouží jako stavební kameny pro rozvoj neuronové sítě a poskytují klíčové schopnosti. Kombinace těchto knihoven umožňuje vytvářet sofistikované návrhy neuronových sítí a rychlé školení.
Pro začátek náš příklad; importujeme požadované knihovny, které zahrnují TensorFlow, Keras a NumPy. TensorFlow je open-source framework pro strojové učení, Keras je API neuronové sítě na vysoké úrovni a NumPy je knihovna Pythonu pro numerické výpočty.
import tensorflow as tf
from tensorflow import keras
import numpy as np
Načtěte datovou sadu
Nyní je třeba načíst datovou sadu. Dataset je soubor dat, na kterých bude neuronová síť trénována. Může se jednat o jakýkoli typ dat, včetně fotografií, zvuku a textu.
Je důležité rozdělit datovou sadu na dvě části: jednu pro trénování neuronové sítě a druhou pro posouzení správnosti trénovaného modelu. K importu datové sady lze použít několik knihoven, včetně TensorFlow, Keras a PyTorch.
V našem příkladu používáme také Keras k načtení datové sady MNIST. V datovém souboru je 60,000 10,000 tréninkových fotografií a XNUMX XNUMX testovacích obrázků.
mnist = keras.datasets.mnist
(train_images, train_labels), (test_images, test_labels) = mnist.load_data()
Předzpracování dat
Předzpracování dat je důležitou fází při trénování neuronové sítě. Znamená to připravit a vyčistit data před tím, než jsou přivedena do neuronové sítě.
Škálování hodnot pixelů, normalizace dat a převod štítků na jednorázové kódování jsou příklady procedur předběžného zpracování. Tyto procesy pomáhají neuronové síti efektivněji a přesněji se učit.
Předzpracování dat může také pomoci minimalizovat přetížení a zlepšit výkon neuronové sítě.
Před trénováním neuronové sítě musíte data předzpracovat. To zahrnuje změnu štítků na jedno rychlé kódování a změnu měřítka hodnot pixelů tak, aby byly mezi 0 a 1.
train_images = train_images / 255.0
test_images = test_images / 255.0
train_labels = keras.utils.to_categorical(train_labels, 10)
test_labels = keras.utils.to_categorical(test_labels, 10)
Definujte Model
Proces definování modelu neuronové sítě zahrnuje stanovení její architektury, jako je počet vrstev, počet neuronů na vrstvu, aktivační funkce a typ sítě (dopředná, rekurentní nebo konvoluční).
Návrh neuronové sítě, který používáte, je určen typem problému, který se pokoušíte vyřešit. Dobře definovaný návrh neuronové sítě může pomoci při učení neuronové sítě tím, že je efektivnější a přesnější.
V tuto chvíli je čas popsat model neuronové sítě. Pro tento příklad použijte jednoduchý model se dvěma skrytými vrstvami, každou se 128 neurony, a výstupní vrstvou softmax, která má 10 neuronů.
model = keras.Sequential([
keras.layers.Flatten(input_shape=(28, 28)),
keras.layers.Dense(128, activation='relu'),
keras.layers.Dense(128, activation='relu'),
keras.layers.Dense(10, activation='softmax')
])
Zkompilujte model
Funkce ztráty, optimalizátor a metriky musí být specifikovány během kompilace modelu neuronové sítě. Schopnost neuronové sítě správně předpovídat výstup je měřena ztrátovou funkcí.
Aby se zvýšila přesnost neuronové sítě během tréninku, optimalizátor upravuje její váhy. Účinnost neuronové sítě během tréninku se měří pomocí metrik. Před trénováním neuronové sítě je nutné vytvořit model.
V našem příkladu musíme nyní sestavit model.
model.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['accuracy'])
Trénujte modelku
Předávání připraveného datového souboru přes neuronovou síť za současné úpravy vah sítě tak, aby se minimalizovala ztrátová funkce, se nazývá trénování neuronové sítě.
Ověřovací datový soubor se používá k testování neuronové sítě během tréninku, aby se sledovala její účinnost a zabránilo se přetížení. Tréninkový proces může nějakou dobu trvat, a proto je důležité zajistit, aby byla neuronová síť náležitě natrénována, aby se zabránilo nedostatečnému vybavení.
Pomocí trénovacích dat nyní můžeme trénovat model. K tomu musíme definovat velikost dávky (počet vzorků zpracovaných před aktualizací modelu) a počet epoch (počet opakování v celé sadě dat).
model.fit(train_images, train_labels, epochs=10, batch_size=32)
Hodnocení modelu
Testování výkonu neuronové sítě na testovacím souboru dat je procesem jeho vyhodnocení. V této fázi se trénovaná neuronová síť používá ke zpracování testovacího souboru dat a vyhodnocuje se přesnost.
Měřítkem její přesnosti je, jak efektivně dokáže neuronová síť předpovídat správný výsledek ze zcela nových, nevyzkoušených dat. Analýza modelu může pomoci určit, jak dobře neuronová síť funguje, a také navrhnout způsoby, jak ji ještě vylepšit.
Po tréninku můžeme konečně posoudit výkon modelu pomocí testovacích dat.
test_loss, test_acc = model.evaluate(test_images, test_labels)
print('Test accuracy:', test_acc)
To je vše! Vycvičili jsme neuronovou síť k detekci číslic v datové sadě MNIST.
Od přípravy dat až po vyhodnocení efektivity trénovaného modelu zahrnuje trénování neuronové sítě několik procesů. Tyto instrukce pomáhají nováčkům efektivně budovat a trénovat neuronové sítě.
Začátečníci, kteří chtějí používat neuronové sítě k řešení různých problémů, tak mohou učinit podle těchto pokynů.
Vizualizace příkladu
Zkusme si představit, co jsme s tímto příkladem udělali, abychom lépe porozuměli.
Balíček Matplotlib se v tomto úryvku kódu používá k vykreslení náhodného výběru fotografií z trénovací datové sady. Nejprve importujeme modul „pyplot“ Matplotlibu a pojmenujeme jej „plt“. Poté o celkovém rozměru 10 x 10 palců vytvoříme postavu s 5 řádky a 5 sloupci dílčích grafů.
Poté použijeme smyčku for k iteraci dílčích grafů a na každém z nich zobrazíme obrázek z trénovací datové sady. K zobrazení obrázku se používá funkce „imshow“ s možností „cmap“ nastavenou na „šedá“ pro zobrazení fotografií ve stupních šedi. Název každého dílčího grafu je také nastaven na štítek přidruženého obrázku v kolekci.
Nakonec použijeme funkci „zobrazit“ k zobrazení vykreslených obrázků na obrázku. Tato funkce nám umožňuje vizuálně vyhodnotit vzorek fotografií z datové sady, což nám může pomoci porozumět datům a identifikovat případné obavy.
import matplotlib.pyplot as plt
# Plot a random sample of images
fig, axes = plt.subplots(nrows=5, ncols=5, figsize=(10,10))
for i, ax in enumerate(axes.flat):
ax.imshow(train_images[i], cmap='gray')
ax.set_title(f"Label: {train_labels[i].argmax()}")
ax.axis('off')
plt.show()
Důležité modely neuronových sítí
- Feedforward Neural Networks (FFNN): Jednoduchý typ neuronové sítě, ve které informace putují pouze jedním způsobem, ze vstupní vrstvy do výstupní vrstvy přes jednu nebo více skrytých vrstev.
- Konvoluční neuronové sítě (CNN): Neuronová síť, která se běžně používá při detekci a zpracování obrazu. CNN jsou určeny k tomu, aby automaticky rozpoznávaly a extrahovaly prvky z obrázků.
- Rekurentní neuronové sítě (RNN): Neuronová síť, která se běžně používá při detekci a zpracování obrazu. CNN jsou určeny k tomu, aby automaticky rozpoznávaly a extrahovaly prvky z obrázků.
- Sítě s dlouhou krátkodobou pamětí (LSTM): Forma RNN vytvořená k překonání problému mizejících gradientů ve standardních RNN. Dlouhodobé závislosti v sekvenčních datech lze lépe zachytit pomocí LSTM.
- Automatické kodéry: Učící se neuronová síť bez dozoru, ve které se síť učí reprodukovat svá vstupní data na své výstupní vrstvě. Komprese dat, detekce anomálií a odšumování obrazu – to vše lze provést pomocí autokodérů.
- Generative Adversarial Networks (GAN): Generativní neuronová síť je forma neuronové sítě, která se učí produkovat nová data, která jsou srovnatelná s trénovací datovou sadou. GAN se skládají ze dvou sítí: generátorové sítě, která vytváří čerstvá data, a diskriminační sítě, která posuzuje kvalitu vytvářených dat.
Shrnutí, jaké by měly být vaše další kroky?
Prozkoumejte několik online zdrojů a kurzů, kde se dozvíte více o trénování neuronové sítě. Práce na projektech nebo příkladech je jednou z metod, jak získat lepší pochopení neuronových sítí.
Začněte jednoduchými příklady, jako jsou úlohy binární klasifikace nebo úlohy klasifikace obrázků, a poté přejděte k obtížnějším úlohám, jako je zpracování přirozeného jazyka nebo posilování učení.
Práce na projektech vám pomůže získat skutečné zkušenosti a zlepšit vaše tréninkové dovednosti neuronové sítě.
Můžete se také připojit k online skupinám a fórům strojového učení a neuronové sítě, abyste mohli komunikovat s ostatními studenty a profesionály, sdílet svou práci a dostávat komentáře a pomoc.
LSRS MONRAD-KROHN
⁶ĵRád bych viděl program python pro minimalizaci chyb. Speciální výběrové uzly pro změny hmotnosti na další vrstvu