Obsah[Skryť][Šou]
V posledných rokoch vzrástla popularita neurónových sietí, pretože sa ukázali ako mimoriadne dobré v širokej škále úloh.
Ukázalo sa, že sú skvelou voľbou na rozpoznávanie obrazu a zvuku, spracovanie prirodzeného jazyka a dokonca aj na hranie zložitých hier, ako sú Go a šach.
V tomto príspevku vás prevediem celým procesom tréningu neurónovej siete. Spomeniem a vysvetlím všetky kroky na trénovanie neurónovej siete.
Zatiaľ čo prejdem kroky, rád by som pridal jednoduchý príklad, aby som sa uistil, že existuje aj praktický príklad.
Tak poď a naučme sa spracovať neurónové siete
Začnime jednoducho a spýtajme sa, čo sú neurálne siete na prvom mieste.
Čo sú to vlastne neurónové siete?
Neurónové siete sú počítačový softvér, ktorý simuluje činnosť ľudského mozgu. Môžu sa učiť z obrovského množstva údajov a nachádzať vzory, ktoré môžu ľudia ťažko odhaliť.
Neurónové siete v posledných rokoch vzrástli na popularite kvôli ich všestrannosti v úlohách, ako je rozpoznávanie obrazu a zvuku, spracovanie prirodzeného jazyka a prediktívne modelovanie.
Celkovo sú neurónové siete silným nástrojom pre široké spektrum aplikácií a majú šancu zmeniť spôsob, akým pristupujeme k širokému spektru úloh.
Prečo by sme o nich mali vedieť?
Pochopenie neurónových sietí je rozhodujúce, pretože viedli k objavom v rôznych oblastiach vrátane počítačového videnia, rozpoznávania reči a spracovania prirodzeného jazyka.
Neurónové siete sú napríklad jadrom nedávneho vývoja v oblasti samoriadiacich áut, automatických prekladateľských služieb a dokonca aj lekárskej diagnostiky.
Pochopenie toho, ako fungujú neurónové siete a ako ich navrhovať, nám pomáha vytvárať nové a vynaliezavé aplikácie. A možno to môže v budúcnosti viesť k ešte väčším objavom.
Poznámka o návode
Ako som povedal vyššie, rád by som vysvetlil kroky trénovania neurónovej siete na príklade. Aby sme to dosiahli, mali by sme hovoriť o súbore údajov MNIST. Je to obľúbená voľba pre začiatočníkov, ktorí chcú začať s neurónovými sieťami.
MNIST je skratka, ktorá znamená Modified National Institute of Standards and Technology. Ide o ručne písaný súbor údajov, ktorý sa bežne používa na školenie a testovanie modelov strojového učenia, najmä neurónových sietí.
Zbierka obsahuje 70,000 0 fotografií ručne písaných číslic v rozsahu od 9 do XNUMX v odtieňoch šedej.
Súbor údajov MNIST je populárnym benchmarkom klasifikácia obrázkov úlohy. Často sa používa na výučbu a učenie, pretože je kompaktný a ľahko sa s ním zaobchádza, pričom predstavuje náročnú výzvu pre algoritmy strojového učenia.
Súbor údajov MNIST je podporovaný niekoľkými rámcami a knižnicami strojového učenia vrátane TensorFlow, Keras a PyTorch.
Teraz vieme o súbore údajov MNIST, začnime s našimi krokmi trénovania neurónovej siete.
Základné kroky na trénovanie neurónovej siete
Importujte potrebné knižnice
Pri prvom začatí trénovania neurónovej siete je dôležité mať potrebné nástroje na návrh a trénovanie modelu. Prvým krokom pri vytváraní neurónovej siete je import požadovaných knižníc, ako sú TensorFlow, Keras a NumPy.
Tieto knižnice slúžia ako stavebné kamene pre rozvoj neurónovej siete a poskytujú kľúčové schopnosti. Kombinácia týchto knižníc umožňuje vytváranie sofistikovaných návrhov neurónových sietí a rýchle školenie.
Na začiatok náš príklad; importujeme požadované knižnice, ktoré zahŕňajú TensorFlow, Keras a NumPy. TensorFlow je open source framework strojového učenia, Keras je vysokoúrovňové API pre neurónovú sieť a NumPy je numerická počítačová knižnica Python.
import tensorflow as tf
from tensorflow import keras
import numpy as np
Načítajte množinu údajov
Teraz je potrebné načítať súbor údajov. Dátový súbor je súbor údajov, na ktorých sa bude trénovať neurónová sieť. Môže ísť o akýkoľvek typ údajov vrátane fotografií, zvuku a textu.
Je dôležité rozdeliť súbor údajov na dve časti: jednu na trénovanie neurónovej siete a druhú na posúdenie správnosti trénovaného modelu. Na import množiny údajov možno použiť niekoľko knižníc vrátane TensorFlow, Keras a PyTorch.
V našom príklade používame aj Keras na načítanie súboru údajov MNIST. V súbore údajov je 60,000 10,000 tréningových fotografií a XNUMX XNUMX testovacích obrázkov.
mnist = keras.datasets.mnist
(train_images, train_labels), (test_images, test_labels) = mnist.load_data()
Predspracovanie údajov
Predspracovanie údajov je dôležitou etapou pri trénovaní neurónovej siete. Zahŕňa to prípravu a čistenie údajov predtým, ako sa pridajú do neurónovej siete.
Škálovanie hodnôt pixelov, normalizácia údajov a konverzia štítkov na jednorazové kódovanie sú príklady postupov predbežného spracovania. Tieto procesy pomáhajú neurónovej sieti efektívnejšie a presnejšie sa učiť.
Predspracovanie údajov môže tiež pomôcť minimalizovať preťaženie a zlepšiť výkon neurónovej siete.
Pred trénovaním neurónovej siete musíte údaje predspracovať. To zahŕňa zmenu štítkov na jednorazové kódovanie a zmenu mierky hodnôt pixelov na hodnotu od 0 do 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 definovania modelu neurónovej siete zahŕňa stanovenie jej architektúry, ako je počet vrstiev, počet neurónov na vrstvu, aktivačné funkcie a typ siete (dopredná, rekurentná alebo konvolučná).
Návrh neurónovej siete, ktorý používate, je určený typom problému, ktorý sa pokúšate vyriešiť. Dobre definovaný dizajn neurónovej siete môže pomôcť pri učení sa neurónovej siete tým, že je efektívnejšia a presnejšia.
V tomto bode je čas opísať model neurónovej siete. Pre tento príklad použite jednoduchý model s dvoma skrytými vrstvami, každá so 128 neurónmi, a výstupnou vrstvou softmax, ktorá má 10 neurónov.
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')
])
Zostavte model
Stratová funkcia, optimalizátor a metrika musia byť špecifikované počas kompilácie modelu neurónovej siete. Schopnosť neurónovej siete správne predpovedať výstup je meraná stratovou funkciou.
Aby sa zvýšila presnosť neurónovej siete počas tréningu, optimalizátor upravuje jej váhy. Účinnosť neurónovej siete počas tréningu sa meria pomocou metrík. Pred trénovaním neurónovej siete musí byť vytvorený model.
V našom príklade musíme práve teraz zostaviť model.
model.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['accuracy'])
Trénujte modelku
Prechod pripraveného súboru údajov cez neurónovú sieť pri úprave váh siete, aby sa minimalizovala funkcia straty, sa nazýva trénovanie neurónovej siete.
Validačný súbor údajov sa používa na testovanie neurónovej siete počas tréningu, aby sa sledovala jej účinnosť a zabránilo sa nadmernému vybaveniu. Tréningový proces môže nejaký čas trvať, preto je dôležité uistiť sa, že neurónová sieť je vhodne natrénovaná, aby sa predišlo nedostatočnému vybaveniu.
Pomocou trénovacích údajov teraz môžeme trénovať model. Aby sme to dosiahli, musíme definovať veľkosť dávky (počet vzoriek spracovaných pred aktualizáciou modelu) a počet epoch (počet opakovaní v rámci celého súboru údajov).
model.fit(train_images, train_labels, epochs=10, batch_size=32)
Hodnotenie modelu
Testovanie výkonu neurónovej siete na testovacom súbore údajov je proces jej vyhodnocovania. V tejto fáze sa trénovaná neurónová sieť používa na spracovanie testovacieho súboru údajov a vyhodnocuje sa presnosť.
Ako efektívne dokáže neurónová sieť predpovedať správny výsledok z úplne nových, nevyskúšaných údajov, je mierou jej presnosti. Analýza modelu môže pomôcť určiť, ako dobre funguje neurónová sieť, a tiež navrhnúť spôsoby, ako ju ešte vylepšiť.
Nakoniec môžeme posúdiť výkon modelu pomocou testovacích údajov po tréningu.
test_loss, test_acc = model.evaluate(test_images, test_labels)
print('Test accuracy:', test_acc)
To je všetko! Trénovali sme neurónovú sieť na detekciu číslic v súbore údajov MNIST.
Tréning neurónovej siete zahŕňa niekoľko procesov, od prípravy údajov až po hodnotenie efektívnosti trénovaného modelu. Tieto pokyny pomáhajú nováčikom efektívne budovať a trénovať neurónové siete.
Začiatočníci, ktorí chcú použiť neurónové siete na riešenie rôznych problémov, to môžu urobiť podľa týchto pokynov.
Vizualizácia príkladu
Skúsme si predstaviť, čo sme s týmto príkladom urobili, aby sme to lepšie pochopili.
Balík Matplotlib sa v tomto úryvku kódu používa na vykreslenie náhodného výberu fotografií z tréningového súboru údajov. Najprv importujeme modul „pyplot“ Matplotlibu a označíme ho ako „plt“. Potom s celkovým rozmerom 10 x 10 palcov vytvoríme postavu s 5 riadkami a 5 stĺpcami podzákresov.
Potom použijeme cyklus for na iteráciu čiastkových grafov, pričom na každom z nich zobrazíme obrázok z tréningového súboru údajov. Na zobrazenie obrázka sa používa funkcia „imshow“ s možnosťou „cmap“ nastavenou na „sivá“, aby sa fotografie zobrazili v odtieňoch sivej. Názov každého čiastkového grafu je tiež nastavený na označenie priradeného obrázka v kolekcii.
Nakoniec použijeme funkciu „zobraziť“ na zobrazenie vykreslených obrázkov na obrázku. Táto funkcia nám umožňuje vizuálne vyhodnotiť vzorku fotografií zo súboru údajov, čo nám môže pomôcť pochopiť údaje a identifikovať akékoľvek možné 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 neurónových sietí
- Dopredné neurónové siete (FFNN): Jednoduchý typ neurónovej siete, v ktorej informácie putujú iba jedným spôsobom, zo vstupnej vrstvy do výstupnej vrstvy cez jednu alebo viacero skrytých vrstiev.
- Konvolučné neurónové siete (CNN): Neurónová sieť, ktorá sa bežne používa pri detekcii a spracovaní obrazu. CNN sú určené na automatické rozpoznávanie a extrahovanie funkcií z obrázkov.
- Rekurentné neurónové siete (RNN): Neurónová sieť, ktorá sa bežne používa pri detekcii a spracovaní obrazu. CNN sú určené na automatické rozpoznávanie a extrahovanie funkcií z obrázkov.
- Siete s dlhou krátkodobou pamäťou (LSTM): Forma RNN vytvorená na prekonanie problému miznutia gradientov v štandardných RNN. Dlhodobé závislosti v sekvenčných údajoch možno lepšie zachytiť pomocou LSTM.
- Automatické kódovače: Učiaca sa neurónová sieť bez dozoru, v ktorej sa sieť učí reprodukovať svoje vstupné dáta na svojej výstupnej vrstve. Kompresia dát, detekcia anomálií a potlačenie šumu v obraze, to všetko je možné vykonať pomocou automatických kódovačov.
- Generatívne adverzné siete (GAN): Generatívna neurónová sieť je forma neurónovej siete, ktorá sa učí produkovať nové údaje, ktoré sú porovnateľné s tréningovým súborom údajov. GAN sa skladajú z dvoch sietí: generátorovej siete, ktorá vytvára čerstvé dáta a diskriminačnej siete, ktorá hodnotí kvalitu vytvorených dát.
Zhrnutie, aké by mali byť vaše ďalšie kroky?
Preskúmajte niekoľko online zdrojov a kurzov, aby ste sa dozvedeli viac o trénovaní neurónovej siete. Práca na projektoch alebo príkladoch je jednou z metód, ako lepšie pochopiť neurónové siete.
Začnite s jednoduchými príkladmi, ako sú problémy binárnej klasifikácie alebo úlohy klasifikácie obrázkov, a potom prejdite na zložitejšie úlohy, ako je spracovanie prirodzeného jazyka alebo posilňovanie učenia.
Práca na projektoch vám pomôže získať skutočné skúsenosti a zlepšiť vaše zručnosti v oblasti tréningu neurónových sietí.
Môžete sa tiež pripojiť k online skupinám a fóram strojového učenia a neurónových sietí, aby ste mohli komunikovať s ostatnými študentmi a odborníkmi, zdieľať svoju prácu a dostávať komentáre a pomoc.
ĽSRS MONRAD-KROHN
⁶ĵRád by som videl program python na minimalizáciu chýb. Špeciálne výberové uzly pre zmeny hmotnosti na ďalšiu vrstvu