2.1.1 Neurális hálózatok felépítése

2025.10.06.
AI Biztonság Blog

Hogyan ismer fel egy gép egy kézzel írt számot? Vagy hogyan különböztet meg egy macskát egy kutyától egy képen? A hagyományos, szabályalapú programozás itt csődöt mondana. Ahelyett, hogy megpróbálnánk leírni egy macska minden lehetséges vizuális tulajdonságát – ami gyakorlatilag lehetetlen –, egy teljesen más megközelítésre van szükség. Ez a megközelítés a biológiai agy működéséből merít ihletet, és a neurális hálózatok alapját képezi.

Kapcsolati űrlap

AI Biztonság kérdésed van? Itt elérsz minket:

A biológiai ihlettől a mesterséges neuronig

Az agyunk idegsejtek, vagyis neuronok milliárdjaiból álló, elképesztően komplex hálózat. Minden neuron jeleket fogad más neuronoktól, feldolgozza azokat, és ha egy bizonyos ingerküszöböt elér, maga is jelet küld tovább. A mesterséges neurális hálózatok (Artificial Neural Networks, ANN) ezt a koncepciót ültetik át a matematika és az informatika nyelvére.

A Perceptron: A digitális idegsejt

A hálózat legalapvetőbb építőköve a perceptron, vagy általánosabban a mesterséges neuron. Ez egy egyszerű számítási egység, amelynek négy fő komponense van:

  • Bemenetek (Inputs): Ezek a neuronnak átadott adatok, például egy kép pixelértékei vagy egy táblázat oszlopai. Minden bemenet egy numerikus érték.
  • Súlyok (Weights): Minden bemenethez tartozik egy súly. Ez a súly határozza meg, hogy az adott bemenet mennyire fontos. A tanulási folyamat során a hálózat ezeket a súlyokat állítja be.
  • Elfogultság (Bias): Ez egy extra, hangolható paraméter, ami segít a modellnek jobban illeszkedni az adatokhoz. Úgy képzelheted el, mint egy csúszkát, ami eltolja a neuron aktivációs küszöbét.
  • Aktivációs függvény (Activation Function): Miután a neuron összesítette a súlyozott bemeneteket és hozzáadta az elfogultságot, az eredményt átengedi egy aktivációs függvényen. Ez a függvény dönti el, hogy a neuron „tüzel-e”, és ha igen, milyen erősséggel. Ez vezeti be a nem-linearitást, ami elengedhetetlen a komplex mintázatok felismeréséhez.

Rétegekbe szervezett intelligencia

Egyetlen neuron önmagában nem túl okos. Az igazi erő abban rejlik, amikor ezeket a neuronokat rétegekbe (layers) szervezzük, majd ezeket a rétegeket egymáshoz kapcsoljuk, létrehozva a neurális hálózatot.

Bemeneti réteg Rejtett réteg Kimeneti réteg

Egy tipikus neurális hálózat legalább háromféle rétegből áll:

  1. Bemeneti réteg (Input Layer): Ez a hálózat „kapuja”. Nem végez számítást, csupán továbbítja a bemeneti adatokat (pl. egy kép pixeleit) az első rejtett rétegnek. A rétegben annyi neuron van, ahány bemeneti jellemzőnk (feature).
  2. Rejtett rétegek (Hidden Layers): A bemeneti és kimeneti réteg között helyezkednek el. Itt történik a „mágia”. Ezek a rétegek felelősek az adatokban rejlő mintázatok és hierarchikus jellemzők felismeréséért. Egy egyszerű hálózatnak lehet egyetlen rejtett rétege, míg egy mély neurális hálózatnak (Deep Neural Network, DNN) akár több száz is. Az első rejtett rétegek egyszerűbb mintázatokat (élek, sarkok) ismerhetnek fel, míg a mélyebbek ezekre építve komplexebb koncepciókat (szemek, arcok, teljes objektumok) azonosíthatnak.
  3. Kimeneti réteg (Output Layer): Ez az utolsó réteg, amely a hálózat végső eredményét adja. A neuronok száma és az itt használt aktivációs függvény a konkrét feladattól függ. Például egy 10 számjegy felismerésére tanított modell kimeneti rétegében 10 neuron lesz, mindegyik egy-egy számjegy valószínűségét képviseli.

A hálózat „lelke”: Súlyok és Aktivációs Függvények

A hálózat architektúrája csupán a váz. A valódi működést két kulcsfontosságú elem határozza meg: a súlyok és az aktivációs függvények.

Súlyok és elfogultságok: A tanult tudás

A súlyok és elfogultságok a hálózat hangolható paraméterei. Kezdetben ezeket véletlenszerű értékekkel inicializáljuk. A tanítási folyamat során a hálózat rengeteg címkézett példát (pl. képeket macskákról és kutyákról) vizsgál, és minden egyes példa után finomhangolja ezeket a paramétereket, hogy a kimenete egyre közelebb kerüljön a helyes válaszhoz. A betanított modell súlyai és elfogultságai lényegében a hálózat által megszerzett tudást, a felismerni tanult mintázatokat reprezentálják. Ezek a modell „agya és memóriája”.

Aktivációs függvények: A nem-linearitás kapuőrei

Ha nem lennének aktivációs függvények (vagy csak egy egyszerű lineáris függvényt használnánk), az egész, több rétegű neurális hálózat matematikailag egyetlen lineáris műveletté egyszerűsödne. Ez azt jelentené, hogy képtelen lenne komplex, nem-lineáris összefüggéseket megtanulni, amilyenek a valós világ problémái (pl. képfelismerés, nyelvi fordítás). Az aktivációs függvények bevezetik a szükséges nem-linearitást, lehetővé téve a hálózat számára, hogy sokkal összetettebb mintázatokat modellezzen.

Néhány gyakori aktivációs függvény és szerepük
Név Cél Jellemző
Sigmoid A kimenetet 0 és 1 közé skálázza. Gyakori volt a korai hálózatokban, de a mély hálózatokban a „vanishing gradient” probléma miatt háttérbe szorult. Bináris osztályozás kimeneti rétegében még használatos.
ReLU (Rectified Linear Unit) A pozitív értékeket változatlanul hagyja, a negatívakat nullázza (max(0, x)). A legelterjedtebb aktivációs függvény a rejtett rétegekben. Számításilag hatékony és segít elkerülni a „vanishing gradient” problémát.
Softmax Több kimenetet valószínűségi eloszlássá alakít (az értékek összege 1). Tipikusan a többosztályos osztályozási feladatok kimeneti rétegében használják, hogy megkapjuk az egyes osztályokhoz tartozás valószínűségét.

Az információ útja: A Forward Pass

Amikor a hálózat egy új bemenetet kap (ezt nevezzük inferenciának), az adat végigáramlik a rétegeken a bemenettől a kimenetig. Ezt a folyamatot forward propagation-nek vagy forward pass-nek hívjuk.

Minden rétegben a következő történik:

  1. Minden neuron megkapja az előző réteg neuronjainak kimenetét (vagy a bemeneti adatokat).
  2. Kiszámítja a bemenetek súlyozott összegét, majd hozzáadja az elfogultságot.
  3. Az eredményt átengedi a saját aktivációs függvényén.
  4. A kapott kimenetet továbbítja a következő réteg összes neuronjának.

Ez a folyamat ismétlődik rétegről rétegre, amíg el nem érjük a kimeneti réteget, ami megadja a modell jóslatát.

# Pszeudokód egyetlen neuron kimenetének kiszámítására

# bemenetek: egy lista vagy vektor, pl. [0.5, -0.1, 1.2]
# sulyok: minden bemenethez egy súly, pl. [0.8, 0.2, -0.5]
# elfogultsag: egyetlen szám, pl. 0.1

def neuron_kimenet(bemenetek, sulyok, elfogultsag):
 # 1. Súlyozott összeg kiszámítása
 # (0.5 * 0.8) + (-0.1 * 0.2) + (1.2 * -0.5)
 sulyozott_osszeg = 0
 for i in range(len(bemenetek)):
 sulyozott_osszeg += bemenetek[i] * sulyok[i]
 
 # 2. Elfogultság hozzáadása
 eredmeny = sulyozott_osszeg + elfogultsag
 
 # 3. Aktivációs függvény alkalmazása (pl. ReLU)
 kimenet = max(0, eredmeny)
 
 return kimenet

Red Teaming szempontok

Egy AI Red Teaming szakértő számára a neurális hálózatok felépítésének megértése alapvető. A sebezhetőségek és támadási felületek ugyanis szorosan kötődnek ehhez az architektúrához:

  • Bemeneti adatok: A hálózat bemenete a legnyilvánvalóbb támadási felület. Az „adversarial example”-ek (rosszindulatú példák) apró, ember által észrevehetetlen módosítások a bemeneten, amelyek drasztikusan megváltoztathatják a modell kimenetét.
  • Súlyok és elfogultságok: A betanított modell paraméterei jelentik a modell „titkát”. Ha egy támadó hozzáfér ezekhez (modell lopás) vagy képes manipulálni őket (mérgezéses támadások), az kompromittálhatja az egész rendszert.
  • Aktivációs függvények: Bár ritkábban célzottak, az aktivációs függvények tulajdonságai (pl. a ReLU „halott neuron” problémája) kihasználhatók lehetnek speciális támadások során a modell viselkedésének befolyásolására.
  • Architektúra: Maga a hálózat szerkezete (rétegek száma, neuronok száma) is információt hordoz. Ennek ismerete segíthet egy támadónak hatékonyabb támadásokat kidolgozni.

Az architektúra ismerete nélkül a támadások csupán találgatások. Az alapok megértésével azonban célzottan kereshetjük a gyenge pontokat és tesztelhetjük a rendszer ellenálló képességét.