AI-For-Beginners/translations/hu/lessons/3-NeuralNetworks/04-OwnFramework
localizeflow[bot] 3c760d21ff chore(i18n): sync translations with latest source changes (chunk 1/1, 201 changes) 2026-01-30 02:29:36 +00:00
..
lab chore(i18n): sync translations with latest source changes (chunk 1/1, 201 changes) 2026-01-30 02:29:36 +00:00
OwnFramework.ipynb Fallback snapshot commit due to git add failure 2026-01-15 12:40:29 +00:00
README.md chore(i18n): sync translations with latest source changes (chunk 1/1, 201 changes) 2026-01-30 02:29:36 +00:00

README.md

Bevezetés a Neurális Hálózatokba. Többrétegű Perceptron

Az előző részben megismerkedtél a legegyszerűbb neurális hálózati modellel - az egyrétegű perceptronnal, amely egy lineáris kétosztályos osztályozási modell.

Ebben a részben kiterjesztjük ezt a modellt egy rugalmasabb keretrendszerre, amely lehetővé teszi számunkra:

  • többosztályos osztályozás végrehajtását a kétosztályos osztályozás mellett
  • regressziós problémák megoldását az osztályozás mellett
  • nem lineárisan szeparálható osztályok elkülönítését

Ezenkívül saját moduláris keretrendszert fejlesztünk Pythonban, amely lehetővé teszi különböző neurális hálózati architektúrák létrehozását.

Előadás előtti kvíz

Gépi Tanulás Formalizálása

Kezdjük a gépi tanulási probléma formalizálásával. Tegyük fel, hogy van egy X tanító adathalmazunk címkékkel Y, és egy olyan modellt kell építenünk (f), amely a lehető legpontosabb előrejelzéseket adja. Az előrejelzések minőségét a veszteségfüggvény () méri. Gyakran használt veszteségfüggvények:

  • Regressziós problémák esetén, amikor egy számot kell előre jeleznünk, használhatjuk az abszolút hibáti|f(x(i))-y(i)|, vagy a négyzetes hibáti(f(x(i))-y(i))2.
  • Osztályozás esetén használjuk a 0-1 veszteséget (ami lényegében a modell pontossága), vagy a logisztikus veszteséget.

Az egyszintű perceptron esetében az f függvényt lineáris függvényként definiáltuk: f(x)=wx+b (ahol w a súlymátrix, x a bemeneti jellemzők vektora, és b az eltolási vektor). Különböző neurális hálózati architektúrák esetén ez a függvény bonyolultabb formát ölthet.

Osztályozás esetén gyakran kívánatos, hogy a hálózat kimenete az adott osztályok valószínűségeit adja meg. Az értékek valószínűségekké történő átalakításához (pl. a kimenet normalizálásához) gyakran használjuk a softmax függvényt (σ), így az f függvény f(x)=σ(wx+b) formát ölt.

Az f definíciójában w és b az úgynevezett paraméterek (θ=⟨w,b⟩). Az ⟨X,Y⟩ adathalmaz alapján kiszámíthatjuk az egész adathalmazra vonatkozó összesített hibát a paraméterek (θ) függvényében.

A neurális hálózat tanításának célja a hiba minimalizálása a paraméterek (θ) változtatásával.

Gradiens Descent Optimalizálás

Van egy jól ismert függvényoptimalizálási módszer, az úgynevezett gradiens descent. Az ötlet az, hogy kiszámíthatjuk a veszteségfüggvény deriváltját (többdimenziós esetben gradiensnek nevezzük) a paraméterekre vonatkozóan, és úgy változtathatjuk a paramétereket, hogy a hiba csökkenjen. Ez a következőképpen formalizálható:

  • Inicializáljuk a paramétereket véletlenszerű értékekkel: w(0), b(0).
  • Ismételjük meg az alábbi lépést sokszor:
    • w(i+1) = w(i)-η∂ℒ/∂w
    • b(i+1) = b(i)-η∂ℒ/∂b

A tanítás során az optimalizálási lépéseket az egész adathalmaz figyelembevételével kellene kiszámítani (emlékezzünk, hogy a veszteséget az összes tanító minta összegzésével számítjuk). Azonban a valóságban az adathalmaz kis részeit, úgynevezett minibatch-eket használunk, és a gradienseket az adatok egy részhalmazán alapulva számítjuk ki. Mivel a részhalmazt minden alkalommal véletlenszerűen választjuk ki, ezt a módszert stochasztikus gradiens descentnek (SGD) nevezzük.

Többrétegű Perceptronok és Backpropagation

Az egyrétegű hálózat, ahogy fentebb láttuk, képes lineárisan szeparálható osztályok osztályozására. Gazdagabb modellt építhetünk, ha több réteget kombinálunk a hálózatban. Matematikailag ez azt jelenti, hogy az f függvény bonyolultabb formát ölt, és több lépésben számítjuk ki:

  • z1=w1x+b1
  • z2=w2α(z1)+b2
  • f = σ(z2)

Itt α egy nemlineáris aktivációs függvény, σ egy softmax függvény, és a paraméterek θ=<w1,b1,w2,b2>.

A gradiens descent algoritmus ugyanaz marad, de a gradiensek kiszámítása bonyolultabbá válik. A láncszabály alapján a deriváltakat a következőképpen számíthatjuk ki:

  • ∂ℒ/∂w2 = (∂ℒ/∂σ)(∂σ/∂z2)(∂z2/∂w2)
  • ∂ℒ/∂w1 = (∂ℒ/∂σ)(∂σ/∂z2)(∂z2/∂α)(∂α/∂z1)(∂z1/∂w1)

A láncszabályt használjuk a veszteségfüggvény paraméterekre vonatkozó deriváltjainak kiszámításához.

Figyeljük meg, hogy ezeknek a kifejezéseknek a bal szélső része ugyanaz, így hatékonyan kiszámíthatjuk a deriváltakat a veszteségfüggvénytől kiindulva, "visszafelé" haladva a számítási gráfon. Ezért a többrétegű perceptron tanításának módszerét backpropagationnek, vagy röviden 'backprop'-nak nevezzük.

számítási gráf

TODO: kép forrásmegjelölés

A backpropagation-t sokkal részletesebben fogjuk tárgyalni a notebook példánkban.

Összegzés

Ebben a leckében saját neurális hálózati könyvtárat építettünk, és egy egyszerű kétdimenziós osztályozási feladatra használtuk.

🚀 Kihívás

A mellékelt notebookban saját keretrendszert fogsz megvalósítani többrétegű perceptronok építésére és tanítására. Részletesen megismerheted, hogyan működnek a modern neurális hálózatok.

Lépj tovább az OwnFramework notebookra, és dolgozd ki.

Előadás utáni kvíz

Áttekintés és Önálló Tanulás

A backpropagation egy gyakori algoritmus az AI és ML területén, érdemes részletesebben tanulmányozni.

Feladat

Ebben a laborban arra kérünk, hogy használd az ebben a leckében megépített keretrendszert az MNIST kézzel írott számjegyek osztályozásának megoldására.