Bevezetés a mélytanulásba · Lecke 03

Neurális hálók tanítása

A háló tudása a súlyaiban él, a tanítás pedig nem más, mint ezeknek a súlyoknak a jó beállítása. Ebben a leckében végigmegyünk a folyamaton. Megnézzük, hogyan mérjük a hibát a veszteségfüggvénnyel, hogyan keresünk lefelé a gradiensereszkedéssel, mit jelent a tanulási ráta, és hogyan számol a visszaterjesztés.

Vissza a tananyaghoz


Mit jelent a tanítás

Egy frissen létrehozott hálóban a súlyok véletlenszerű értékek, ezért a jóslatai eleinte használhatatlanok. A tanítás célja, hogy megtaláljuk azokat a súlyokat, amelyekkel a háló a lehető legkevesebbet hibázik a rendelkezésre álló adaton. Ehhez először számszerűsíteni kell, mennyire téved. Ezt a számot a veszteségfüggvény adja meg. A teljes adathalmazra vett átlagos veszteséget empirikus veszteségnek (empirical loss) nevezzük, és a tanítás során ezt akarjuk minimalizálni.


A veszteségfüggvény

A veszteségfüggvény (loss function) megmondja, mekkora a különbség a háló jóslata és a valódi, elvárt érték között. A feladat típusától függ, melyiket használjuk. Osztályozási feladatnál, ahol kategóriákat kell eltalálni, a keresztentrópia (cross entropy) a szokásos választás, mert azt bünteti, ha a modell magabiztosan téved. Folytonos érték becslésénél, például egy ár előrejelzésekor, a négyzetes hiba (mean squared error) a jellemző, amely a jóslat és a valóság eltérésének négyzetét méri. A jó veszteségfüggvény akkor kicsi, ha a jóslatok pontosak, és akkor nagy, ha a háló messze jár.


a súlyok értéke veszteség kezdet minimum lépésről lépésre lefelé haladunk
A veszteséget a súlyok függvényében képzeljük el egy tájként. A gradiensereszkedés minden lépésben a legmeredekebb lefelé vezető irányba mozdul, amíg egy alacsony pontot, egy minimumot el nem ér.

Gradiensereszkedés

A veszteséget úgy érdemes elképzelni, mint egy dombos tájat, ahol minden pont egy lehetséges súlybeállítást jelöl, a magasság pedig a hozzá tartozó veszteség. A cél a legmélyebb pont megtalálása. A gradiensereszkedés (gradient descent) így jár el. Egy adott pontban kiszámítja a gradienst, ami a legmeredekebb emelkedés iránya, majd az ellenkező irányba, tehát lefelé lép egy kicsit. Ezt sokszor megismételve fokozatosan lejjebb kerül, egyre kisebb veszteséggel. Ez az eljárás a mélytanulás egész tanításának a motorja.


  1. ElőreterjesztésA háló a jelenlegi súlyokkal jóslatot ad a bemenetre.
  2. VeszteségA veszteségfüggvény megméri, mennyire tér el a jóslat a valós értéktől.
  3. VisszaterjesztésKiszámítjuk, melyik súly mennyivel járult hozzá a hibához, vagyis a gradienst.
  4. SúlyfrissítésMinden súlyt a gradienssel ellentétes irányba mozdítunk egy kicsit, csökkentve a veszteséget.

A tanulási ráta

Az, hogy egy lépésben mekkorát mozdulunk, a tanulási rátán (learning rate) múlik. Ez a paraméter dönti el a lépés hosszát. Ha túl kicsi, a tanítás nagyon lassú, mert apró léptekkel araszolunk a minimum felé. Ha túl nagy, átugorhatunk a mélyponton, a veszteség ide-oda pattog, és a tanítás akár szét is eshet. A jól megválasztott tanulási ráta elég nagy ahhoz, hogy gyorsan haladjunk, de elég óvatos ahhoz, hogy a minimumban meg tudjunk állapodni. A gyakorlatban gyakran alkalmazkodó, tanítás közben változó tanulási rátát használunk.


Rosszul megválasztott ráta

  • Túl kicsi, a tanítás kínosan lassú
  • Túl nagy, átugrik a minimumon
  • A veszteség ingadozik vagy szétesik
  • Nehéz stabilan megállapodni

Jól megválasztott ráta

  • Elég gyorsan halad lefelé
  • Nem ugorja át a mélypontot
  • A veszteség stabilan csökken
  • A minimum közelében finoman lép

Visszaterjesztés

Marad a kérdés, honnan tudjuk, melyik súlyt merre és mennyivel kell mozdítani. Erre válaszol a visszaterjesztés (backpropagation). A lényege, hogy a kimeneten mért hibát visszafelé, rétegről rétegre vezetjük vissza egészen a súlyokig, és közben a láncszabály segítségével kiszámítjuk, hogy az egyes súlyok mennyivel járultak hozzá a hibához. Ez a hozzájárulás maga a gradiens. A visszaterjesztés teszi egyáltalán lehetővé, hogy egy sok rétegű, sok súlyt tartalmazó hálót hatékonyan lehessen tanítani, mert egyetlen visszafelé futással minden súlyra megkapjuk a szükséges irányt.


bemenet rejtett réteg rejtett réteg kimenet és veszteség előreterjesztés → ← a hiba visszaterjesztése a gradiensekhez
A jóslat előrefelé áramlik, a kimeneten mért hiba pedig visszafelé. A visszaterjesztés a láncszabállyal minden súlyra kiszámítja, mennyivel járult hozzá a hibához.

Mini-batch és sztochasztikus gradiensereszkedés

A teljes adathalmazra egyszerre kiszámítani a gradienst nagy adatnál lassú és költséges. Ezért a gyakorlatban nem az egész adaton, hanem kis, véletlenszerűen kiválasztott adagokon, úgynevezett mini-batch csomagokon számoljuk a gradienst, és minden ilyen csomag után frissítjük a súlyokat. Ezt sztochasztikus gradiensereszkedésnek (stochastic gradient descent) nevezzük. Kicsit zajosabb becslést ad, mint a teljes adathalmaz, cserébe sokkal gyorsabb, és ez a zaj gyakran segít is kimozdulni a rossz helyi minimumokból.


4

Négy lépés ismétlődik. Előreterjesztés, veszteségszámítás, visszaterjesztés, súlyfrissítés. Ez a négy lépés fut le újra és újra, adatcsomagról adatcsomagra, amíg a veszteség kellően le nem csökken. Ennyi a neurális hálók tanításának a lényege.


← Előző lecke Következő lecke →

Workshop

AI Transformation Day

Egésznapos, vezetőknek szóló program. Feltérképezzük, hol tart a szervezet, mi az első reális lépés, és milyen belső feltételek szükségesek a sikerhez. A nap végén konkrét, prioritizált cselekvési lista.

Érdekel a program →