A biológiai inspiráció
A mesterséges neurális hálózatok lazán az emberi agy neuronjainak működéséből merítenek ihletet. Az agyban a neuronok egymáshoz kapcsolódnak, jeleket fogadnak és továbbítanak. A mesterséges megfelelőjük, a perceptron, számokat kap bemenetként, súlyozza azokat, összegzi, majd egy aktivációs függvényen átküldi az eredményt.
Már az 1940-es évektől kísérleteztek ilyen modellekkel, de a mély tanulás igazi áttörése az 2010-es évek elejére datálható — részben a GPU-k megjelenésének, részben a nagy adathalmazok elérhetőségének köszönhetően.
A neuron modellje
Egy mesterséges neuron a következő lépéseket hajtja végre:
- Fogadja a bemeneti értékeket (x₁, x₂, ... xₙ).
- Minden bemenetet megszoroz a hozzá tartozó súllyal (w₁, w₂, ... wₙ).
- Összegzi a súlyozott bemeneteket, majd hozzáad egy torzítási értéket (bias).
- Az összeget átküldi egy aktivációs függvényen, amely meghatározza a neuron kimenetét.
Matematikai leírás: y = f(w₁x₁ + w₂x₂ + ... + wₙxₙ + b), ahol f az aktivációs függvény, w a súlyok és b a bias.
Rétegek
A neurális hálózat neuronokat rétegekbe szervez:
- Bemeneti réteg (input layer): a nyers adatot fogadja. Ennél a rétegnél nincs számítás, csupán az adatot közvetíti tovább.
- Rejtett rétegek (hidden layers): ezekben zajlik a tényleges feldolgozás. A „mély" tanulás (deep learning) elnevezés onnan ered, hogy több rejtett réteget alkalmaz — ezért „mély" a hálózat.
- Kimeneti réteg (output layer): a végeredményt adja ki, legyen az kategória, valószínűség vagy szám.
Egy egyszerű, teljesen összekötött (fully connected / dense) hálózatban minden neuron az előző réteg összes neuronjával kapcsolatban áll. Összetettebb architektúrák — pl. konvolúciós hálózatok (CNN) képfeldolgozáshoz, rekurrens hálózatok (RNN) sorozatadatokhoz — csak részleges kapcsolatokat alkalmaznak.
Aktivációs függvények
Az aktivációs függvény nemlinearitást visz a hálózatba — nélküle a sok réteg összevethető lenne egyetlen lineáris transzformációval, ami drasztikusan korlátná a hálózat kifejezőképességét.
- ReLU (Rectified Linear Unit): f(x) = max(0, x). Napjaink egyik legelterjedtebb választása a rejtett rétegekben, mert gyors és csökkenti az elhalványuló gradiens problémát.
- Sigmoid: f(x) = 1/(1+e⁻ˣ). 0 és 1 közötti értéket ad vissza — bináris osztályozásnál az utolsó rétegben használatos.
- Softmax: valószínűségi eloszlást számol több osztályra — többosztályos osztályozás kimeneti rétegében alkalmazzák.
- Tanh: -1 és 1 közötti értéket ad vissza, bizonyos esetekben jobb konvergenciát mutat a sigmoid-nál.
Tanítás: veszteségfüggvény és backpropagation
A tanítás célja a hálózat súlyainak beállítása úgy, hogy a kimenete minél közelebb kerüljön a helyes válaszhoz. Ehhez először szükség van egy veszteségfüggvényre (loss function), amely számszerűsíti a hiba nagyságát.
Osztályozásnál a kereszt-entrópia (cross-entropy loss), regressziónál az átlagos négyzetes hiba (MSE) a legelterjedtebb.
A backpropagation (visszaterjesztés) az a módszer, amellyel a hálózat kiszámítja, hogy minden egyes súly mennyire járult hozzá a végső hibához. A lánc-szabályt alkalmazva, rétegről rétegre visszafelé haladva állítja be a gradienst, majd a gradiens-ereszkedés módszerével frissíti a súlyokat.
# Egyszerű neurális háló Keras/TensorFlow segítségével
import tensorflow as tf
model = tf.keras.Sequential([
tf.keras.layers.Dense(64, activation='relu', input_shape=(10,)),
tf.keras.layers.Dense(32, activation='relu'),
tf.keras.layers.Dense(1, activation='sigmoid')
])
model.compile(
optimizer='adam',
loss='binary_crossentropy',
metrics=['accuracy']
)
history = model.fit(X_train, y_train, epochs=20, validation_split=0.2)
Batch-méret és epochok
A tanítás során az adatokat általában kisebb adagokban (batch) dolgozzák fel. Az összes adat egyetlen átfutása egy epoch. A kisebb batch-méret zajosabb, de gyorsabb frissítést ad; a nagyobb batch stabilabb gradienst, de lassabb konvergenciát eredményez.
Az optimális epochszám adatonként változó — a korai leállítás (early stopping) technikával figyelhető, mikor kezd el a modell a validációs adatokon romló teljesítményt mutatni.
Regularizáció mély hálózatokban
A mély hálózatok hajlamosak túlillesztésre. Az erre való ellenszerek:
- Dropout: minden tanítási lépésben véletlenszerűen kikapcsol néhány neuront, kényszerítve a hálózatot, hogy ne támaszkodjon egy-egy neuronjára.
- L2 regularizáció (weight decay): a súlyok négyzetét bünteti a veszteségfüggvényben, megakadályozva a szélsőségesen nagy értékeket.
- Batch normalization: rétegek közötti aktivációkat normalizálja, stabilabb és gyorsabb tanítást eredményezve.
Alkalmazási területek Magyarországon
A mély tanulás leginkább képfelismerési, természetesnyelv-feldolgozási (NLP) és hangfelismerési feladatokban jelenik meg. Hazai kontextusban érdemes megemlíteni, hogy a SZTAKI (Számítástechnikai és Automatizálási Kutatóintézet) évtizedek óta foglalkozik mesterséges intelligencia és gépi tanulás kutatásával Budapesten. Az ELTE, BME és más felsőoktatási intézmények egyre több képzést kínálnak a területen.
A mély tanulás korlátai
A mély hálózatok erős eredményeket adnak, de nem csodaszer. Nagy mennyiségű tanítóadatot igényelnek, számítási kapacitásigényük magas, és az eredmény értelmezhetősége jóval alacsonyabb, mint a hagyományos statisztikai modelleknek. Ezért nem minden feladathoz van szükség mély hálózatra — sok esetben egy jól hangolt döntési fa-együttes elegendő.