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:

  1. Fogadja a bemeneti értékeket (x₁, x₂, ... xₙ).
  2. Minden bemenetet megszoroz a hozzá tartozó súllyal (w₁, w₂, ... wₙ).
  3. Összegzi a súlyozott bemeneteket, majd hozzáad egy torzítási értéket (bias).
  4. 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ő.