Lépésenkénti Súlycsökkentés
A lépésenkénti súlycsökkentés, más néven tanulási ráta csökkentés vagy súlycsökkentés, egy olyan technika, amelyet a gépi tanulási modellek és neurális hálózat optimalizációs algoritmusok regularizációjára használnak. Itt egy egyszerűsített magyarázat a céljáról és arról, hogyan van implementálva a Compass optimalizálóban:
Cél:
- Segít elkerülni a túltanulást azáltal, hogy büntetést szab ki a modell nagy súlyaira.
- Javítja az általánosítást azzal, hogy a modellt egyszerűbb minták tanulására ösztönzi.
Compass Optimalizáló Implementáció: Íme, hogyan alkalmazzák a lépésenkénti súlycsökkentést a kódban:
if weight_decay != 0: # Lépésenkénti súlycsökkentés alkalmazása p.data.mul_(1 - step_size * weight_decay)
Működés:
- A
weight_decay
egy hiperparaméter, amely meghatározza a csökkentés intenzitását. - A
step_size
az ehhez a frissítési lépéshez alkalmazandó tanulási ráta. - A súlyokat (
p.data
) megszorozzák egy 1-nél kicsit kisebb tényezővel. - Ez a tényező az
(1 - step_size * weight_decay)
.
- A
Hatás:
- Minden frissítés kismértékben csökkenti az összes súly méretét.
- A nagyobb súlyok abszolút értékben jobban csökkennek.
- Ez arra készteti a súlyokat, hogy kicsik maradjanak, hacsak nem járulnak hozzá jelentősen a veszteség csökkentéséhez.
Összehasonlítás az L2 Regularizációval:
- Bár hasonló hatása van, mint az L2 regularizációnak, a lépésenkénti súlycsökkentést közvetlenül a paraméter frissítési lépésben alkalmazzák, ami kissé eltérő viselkedést eredményezhet, különösen az adaptív tanulási ráta módszereknél.
Adaptív Jellemző:
- Mivel a
step_size
-t használja, a csökkentés alkalmazkodik az aktuális effektív tanulási rátához, így stabilabb a különböző tanulási fázisokban.
- Mivel a
A “lépésenkénti súly” kifejezés ebben a kontextusban azt hangsúlyozza, hogy a csökkentést minden optimalizációs lépésben alkalmazzák, beépítve a súlyfrissítési folyamatba, ahelyett, hogy egy külön regularizációs tag lenne a veszteségfüggvényben.