Tartalomjegyzék[Elrejt][Előadás]
Az elmúlt években a neurális hálózatok népszerűsége nőtt, mivel rendkívül jónak bizonyultak a feladatok széles körében.
Kitűnő választásnak bizonyultak kép- és hangfelismeréshez, természetes nyelvi feldolgozáshoz, és még olyan bonyolult játékokhoz is, mint a Go és a sakk.
Ebben a bejegyzésben végigvezetem a neurális hálózat képzésének teljes folyamatán. Megemlítem és elmagyarázom a neurális hálózat betanításának minden lépését.
Miközben végigmegyek a lépéseken, szeretnék egy egyszerű példát hozzáadni, hogy biztosan legyen gyakorlati példa is.
Szóval, gyere el, és tanuljuk meg, hogyan kell feldolgozni a neurális hálózatokat
Kezdjük egyszerűen, és kérdezzük meg, mik azok neurális hálózatok elsősorban.
Mik is pontosan a neurális hálózatok?
A neurális hálózatok olyan számítógépes szoftverek, amelyek az emberi agy működését szimulálják. Tanulhatnak hatalmas mennyiségű adatból és olyan mintákból, amelyeket az emberek nehezen észlelhetnek.
A neurális hálózatok népszerűsége az elmúlt években nőtt, mert sokoldalúak olyan feladatokban, mint a kép- és hangfelismerés, a természetes nyelvi feldolgozás és a prediktív modellezés.
Összességében elmondható, hogy a neurális hálózatok erős eszközt jelentenek az alkalmazások széles körében, és lehetőséget kínálnak arra, hogy átalakítsák a munkák széles skáláját.
Miért érdemes tudnunk róluk?
A neurális hálózatok megértése kritikus fontosságú, mert számos területen vezettek felfedezésekhez, beleértve a számítógépes látást, a beszédfelismerést és a természetes nyelvi feldolgozást.
A neurális hálózatok például az önvezető autók, az automatikus fordítási szolgáltatások, sőt az orvosi diagnosztika legújabb fejlesztéseinek középpontjában állnak.
A neurális hálózatok működésének és tervezésének megértése segít új és ötletes alkalmazások létrehozásában. És talán még nagyobb felfedezésekhez vezethet a jövőben.
Megjegyzés az oktatóanyagról
Ahogy fentebb is mondtam, egy példa segítségével szeretném elmagyarázni a neurális hálózat képzésének lépéseit. Ehhez beszélnünk kell az MNIST adathalmazról. Ez egy népszerű választás a kezdők számára, akik szeretnének elkezdeni a neurális hálózatokkal.
Az MNIST egy mozaikszó, amely a Modified National Institute of Standards and Technology rövidítése. Ez egy kézzel írt számjegyadatkészlet, amelyet általában gépi tanulási modellek, különösen neurális hálózatok betanítására és tesztelésére használnak.
A gyűjtemény 70,000 0 szürkeárnyalatos fotót tartalmaz kézzel írt számokról, 9 és XNUMX között.
Az MNIST adatkészlet népszerű benchmark a képbesorolás feladatokat. Gyakran használják tanításra és tanulásra, mivel kompakt és könnyen kezelhető, ugyanakkor nehéz kihívást jelent a gépi tanulási algoritmusok számára.
Az MNIST adatkészletet számos gépi tanulási keretrendszer és könyvtár támogatja, köztük a TensorFlow, a Keras és a PyTorch.
Most, hogy ismerjük az MNIST adatkészletet, kezdjük a neurális hálózat betanításának lépéseivel.
A neurális hálózat betanításának alapvető lépései
Szükséges könyvtárak importálása
Egy neurális hálózat betanításának első megkezdésekor kritikus fontosságú, hogy rendelkezzenek a szükséges eszközökkel a modell megtervezéséhez és betanításához. A neurális hálózat létrehozásának első lépése a szükséges könyvtárak, például a TensorFlow, Keras és NumPy importálása.
Ezek a könyvtárak a neurális hálózat fejlesztésének építőköveiként szolgálnak, és kulcsfontosságú képességeket biztosítanak. Ezeknek a könyvtáraknak a kombinációja lehetővé teszi kifinomult neurális hálózatok létrehozását és gyors képzést.
Kezdjük a példánkkal; importálni fogjuk a szükséges könyvtárakat, amelyek közé tartozik a TensorFlow, a Keras és a NumPy. TensorFlow egy nyílt forráskódú gépi tanulási keretrendszer, a Keras egy magas szintű neurális hálózati API, a NumPy pedig egy numerikus számítástechnikai Python-könyvtár.
import tensorflow as tf
from tensorflow import keras
import numpy as np
Töltse be az adatkészletet
Az adatkészletet most be kell tölteni. Az adatkészlet azoknak az adatoknak a halmaza, amelyeken a neurális hálózat betanításra kerül. Ez bármilyen típusú adat lehet, beleértve a fényképeket, a hangot és a szöveget.
Kritikus az adatkészlet két részre osztása: az egyik a neurális hálózat betanítására, a másik pedig a betanított modell helyességének értékelésére. Számos könyvtár, köztük a TensorFlow, a Keras és a PyTorch használható az adatkészlet importálására.
Példánkban a Kerast is használjuk az MNIST adatkészlet betöltésére. 60,000 10,000 edzésfotó és XNUMX XNUMX tesztkép található az adatkészletben.
mnist = keras.datasets.mnist
(train_images, train_labels), (test_images, test_labels) = mnist.load_data()
Az adatok előfeldolgozása
Az adatok előfeldolgozása a neurális hálózat képzésének fontos szakasza. Ez magában foglalja az adatok előkészítését és megtisztítását, mielőtt azok bekerülnének a neurális hálózatba.
A pixelértékek skálázása, az adatok normalizálása és a címkék átalakítása one-hot kódolásra példák az előfeldolgozási eljárásokra. Ezek a folyamatok segítik a neurális hálózatot a hatékonyabb és pontosabb tanulásban.
Az adatok előfeldolgozása segíthet a túlillesztés minimalizálásában és a neurális hálózat teljesítményének javításában.
A neurális hálózat betanítása előtt fel kell dolgozni az adatokat. Ez magában foglalja a címkék egyszeri kódolásra való módosítását, valamint a pixelértékek 0 és 1 közötti skálázását.
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)
Határozza meg a modellt
A neurális hálózati modell meghatározásának folyamata magában foglalja annak architektúráját, például a rétegek számát, a rétegenkénti neuronok számát, az aktiválási funkciókat és a hálózat típusát (előrecsatolt, visszatérő vagy konvolúciós).
Az Ön által használt neurális hálózat kialakítását a megoldani kívánt probléma típusa határozza meg. Egy jól definiált neurális hálózat kialakítása hatékonyabbá és pontosabbá teheti a neurális hálózat tanulását.
Itt az ideje, hogy leírjuk a neurális hálózati modellt. Ebben a példában használjon egyszerű modellt két rejtett réteggel, amelyek mindegyike 128 neuronból áll, és egy softmax kimeneti réteget, amelyben 10 neuron található.
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')
])
Állítsa össze a modellt
A veszteségfüggvényt, az optimalizálót és a mérőszámokat a neurális hálózati modell összeállítása során kell megadni. A neurális hálózatnak a kimenet helyes előrejelzésére való képességét a veszteségfüggvény méri.
A neurális hálózat edzés közbeni pontosságának növelése érdekében az optimalizáló módosítja a súlyait. A neurális hálózat edzés közbeni hatékonyságát metrikák segítségével mérik. A modellt a neurális hálózat betanítása előtt létre kell hozni.
Példánkban most azonnal meg kell alkotnunk a modellt.
model.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['accuracy'])
Tanítsd meg a modellt
Az előkészített adatkészletnek a neurális hálózaton való áthaladását, miközben a veszteségfüggvény minimalizálása érdekében módosítjuk a hálózat súlyait, a neurális hálózat betanításának nevezzük.
Az érvényesítési adatkészlet a neurális hálózat tesztelésére szolgál a képzés során, hogy nyomon kövesse annak hatékonyságát és megakadályozza a túlillesztést. A betanítási folyamat eltarthat egy ideig, ezért fontos megbizonyosodni arról, hogy a neurális hálózat megfelelően képzett, hogy megakadályozza az alulillesztést.
A betanítási adatok felhasználásával immár betaníthatjuk a modellt. Ehhez meg kell határoznunk a köteg méretét (a modell frissítése előtt feldolgozott minták számát) és az epochák számát (az ismétlések számát a teljes adatkészletben).
model.fit(train_images, train_labels, epochs=10, batch_size=32)
A modell értékelése
A neurális hálózat teljesítményének tesztelése a tesztadatkészleten az értékelési folyamat. Ebben a szakaszban a betanított neurális hálózatot használják a tesztadatkészlet feldolgozására, és értékelik a pontosságot.
Az, hogy egy neurális hálózat mennyire hatékonyan tudja előre jelezni a megfelelő eredményt vadonatúj, ki nem próbált adatokból, a pontosság mércéje. A modell elemzése segíthet annak meghatározásában, hogy a neurális hálózat mennyire működik jól, és javaslatokat is tehet annak még jobbá tételére.
Végre a betanítás után felmérhetjük a modell teljesítményét a tesztadatok felhasználásával.
test_loss, test_acc = model.evaluate(test_images, test_labels)
print('Test accuracy:', test_acc)
Ez minden! Neurális hálózatot képeztünk ki az MNIST adatkészlet számjegyeinek észlelésére.
Az adatok előkészítésétől a betanított modell hatékonyságának felméréséig a neurális hálózat betanítása több folyamatot is magában foglal. Ezek az utasítások segítenek a kezdőknek a neurális hálózatok hatékony felépítésében és betanításában.
Azok a kezdők, akik neurális hálózatokat szeretnének használni különféle problémák megoldására, ezt az alábbi utasítások követésével tehetik meg.
A példa vizualizálása
Próbáljuk meg elképzelni, mit tettünk ezzel a példával, hogy jobban megértsük.
Ebben a kódrészletben a Matplotlib csomagot használják a fotók véletlenszerű kiválasztására a képzési adatkészletből. Először importáljuk a Matplotlib „pyplot” modulját, és aliasként „plt”-ként. Ezután 10 x 10 hüvelyk összmérettel készítünk egy ábrát 5 sorból és 5 oszlopból álló részdiagramokból.
Ezután egy for ciklust használunk a részdiagramok iterálására, és mindegyiken megjelenítünk egy képet a betanítási adatkészletből. A kép megjelenítéséhez az „imshow” funkciót használjuk, a „cmap” opció „szürke” beállításával a fényképek szürkeárnyalatos megjelenítéséhez. Az egyes alrészletek címe a gyűjteményben lévő társított kép címkéjére is be van állítva.
Végül a „show” funkcióval jelenítjük meg a kirajzolt képeket az ábrán. Ez a funkció lehetővé teszi számunkra, hogy vizuálisan kiértékeljük az adatkészletből vett fényképek mintáját, ami segíthet az adatok megértésében és az esetleges problémák azonosításában.
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()
Fontos neurális hálózati modellek
- Feedforward neurális hálózatok (FFNN): Egy egyszerű típusú neurális hálózat, amelyben az információ csak egy úton halad, a bemeneti rétegtől a kimeneti rétegig egy vagy több rejtett rétegen keresztül.
- Konvolúciós neurális hálózatok (CNN): Neurális hálózat, amelyet általánosan használnak képészlelésben és képfeldolgozásban. A CNN-ek célja, hogy automatikusan felismerjék és kinyerjék a képeket.
- Ismétlődő neurális hálózatok (RNN): Neurális hálózat, amelyet általánosan használnak képészlelésben és képfeldolgozásban. A CNN-ek célja, hogy automatikusan felismerjék és kinyerjék a képeket.
- Hosszú távú rövid távú memória (LSTM) hálózatok: Az RNN egy formája, amelyet a szabványos RNN-ekben lévő gradiensek eltűnésének problémájának megoldására hoztak létre. A szekvenciális adatok hosszú távú függőségei jobban rögzíthetők az LSTM-ekkel.
- Automatikus kódolók: Felügyelet nélküli tanuló neurális hálózat, amelyben a hálózatot megtanítják a bemeneti adatok reprodukálására a kimeneti rétegében. Az adattömörítés, az anomáliák észlelése és a kép zajtalanítása mind megvalósítható automatikus kódolókkal.
- Generatív ellenséges hálózatok (GAN): A generatív neurális hálózat a neurális hálózat olyan formája, amelyet arra tanítanak, hogy olyan új adatokat állítson elő, amelyek összehasonlíthatók egy betanító adatkészlettel. A GAN-ok két hálózatból állnak: egy generátor hálózatból, amely friss adatokat hoz létre, és egy megkülönböztető hálózatból, amely értékeli a létrehozott adatok minőségét.
Összefoglalva, mi legyen a következő lépése?
Fedezzen fel számos online forrást és tanfolyamot, hogy többet tudjon meg a neurális hálózat képzéséről. A projekteken vagy példákon való munka az egyik módszer a neurális hálózatok jobb megértésére.
Kezdje egyszerű példákkal, például bináris osztályozási problémákkal vagy képosztályozási feladatokkal, majd folytassa a bonyolultabb feladatokat, mint a természetes nyelvi feldolgozás vagy megerősítő tanulás.
A projekteken való munka segít valódi tapasztalatszerzésben és a neurális hálózatok képzési készségeinek fejlesztésében.
Csatlakozhat online gépi tanulási és neurális hálózati csoportokhoz és fórumokhoz is, hogy kommunikáljon más tanulókkal és szakemberekkel, megossza munkáját, valamint megjegyzéseket és segítséget kapjon.
LSRS MONRAD-KROHN
⁶ĵSzerettem volna látni a python programot a hibaminimalizáláshoz. Speciális kiválasztási csomópontok a következő réteg súlyának módosításához