stochastic gradient descent
Megjelenés
Főnév
stochastic gradient descent (tsz. stochastic gradient descents)
- (informatika) A stochastic gradient descent (röviden: SGD, magyarul: sztochasztikus gradiens csökkenés) egy optimalizációs algoritmus, amelyet széles körben használnak gépi tanulás és különösen mélytanulás során.
Célja: megtalálni egy modell legjobb paramétereit (pl. súlyokat), úgy hogy minimalizálja a veszteségfüggvényt (loss function), azaz a modell hibáját.
📦 Hol használjuk?
- Lineáris és logisztikus regresszió tanítására
- Neurális hálók tanítására (backpropagation)
- Gépi tanulási modellek általános optimalizálására
📘 Az alapkoncepció
A tanulás során van egy veszteségfüggvény , amit szeretnénk minimalizálni a paraméterek megváltoztatásával.
A gradiens megmutatja, milyen irányba kell lépnünk ahhoz, hogy a veszteség csökkenjen:
- : tanulási ráta (learning rate)
- : a veszteségfüggvény gradiense a paraméterek szerint
🧮 Különbség a Gradient Descent és a Stochastic Gradient Descent között
| Módszer | Frissítés mikor? | Jellemző |
|---|---|---|
| Batch Gradient Descent | Minden minta feldolgozása után (egyszerre) | Lassú, pontos |
| Stochastic Gradient Descent | Minden egyes minta után | Gyors, zajos |
| Mini-batch Gradient Descent | Kis adatcsomagonként (pl. 32-128 minta) | Átmenet a kettő között – ez a legelterjedtebb gyakorlatban |
🔁 Az SGD algoritmus lépései
Inicializáljuk a súlyokat véletlenszerűen
Véletlenszerűen kiválasztunk egy mintát a tanítóhalmazból
Kiszámítjuk a veszteségfüggvény gradiensét az adott mintára
Frissítjük a súlyokat:
Ismételjük sok iteráción (epochon) keresztül
✨ Előnyök
- ⚡ Gyors – gyakran sokkal hamarabb talál elfogadható megoldást
- 🔁 Online tanulásra alkalmas – folyamatosan érkező adatokon is tanul
- 🌱 Jobban kikerüli a lokális minimumokat a véletlen mozgás miatt
⚠️ Hátrányok
| Probléma | Magyarázat |
|---|---|
| Zajos frissítések | Az egyes minták alapján számolt gradiens pontatlan lehet |
| Ingadozó konvergencia | A megoldás „ugrálhat” a cél körül |
| Érzékeny a tanulási rátára | Túl nagy → divergál, túl kicsi → lassú tanulás |
🔧 Megoldások, fejlesztések
📌 Momentum
Hozzáad egy „mozgási tehetetlenséget”:
- : momentum faktor (pl. 0.9)
- Segít kisimítani a tanulást és gyorsabban haladni lejtők mentén
📌 Learning Rate Schedule
A tanulási ráta csökkentése az idő múlásával:
- Step decay, Exponential decay, 1/t decay
📌 Adaptív algoritmusok (SGD utódai):
| Név | Előny |
|---|---|
| AdaGrad | Gyors a ritka jellemzőknél |
| RMSProp | Gyors és stabil |
| Adam | Momentum + adaptív lépésméret kombinációja (nagyon népszerű) |
🧪 Példa: lineáris regresszió SGD-vel (Python)
import numpy as np
# Generált adat
X = np.random.rand(100, 1)
y = 3 * X[:, 0] + np.random.randn(100) * 0.1
w = 0.0 # Kezdeti súly
lr = 0.1 # Tanulási ráta
for epoch in range(100):
for i in range(len(X)):
xi = X[i]
yi = y[i]
y_pred = w * xi
error = y_pred - yi
grad = error * xi
w -= lr * grad
print("Súly:", w)
📊 Gyakorlati tanácsok
- Mindig normalizáld az adatokat tanítás előtt!
- A mini-batch SGD szinte minden mélytanulási modellben bevált
- Kombináld tanulási ráta csökkentéssel és momentum-mal
- Monitorozd a veszteség görbéjét (loss curve) → ha zajos, állíts!
🧾 Összefoglalás
| Tulajdonság | Részletek |
|---|---|
| Definíció | Gradiens alapú optimalizáló algoritmus, amely minden egyes minta után frissít |
| Alkalmazás | ML modellek tanítása (pl. regresszió, neurális hálók) |
| Előny | Gyors, egyszerű, online tanulásra alkalmas |
| Hátrány | Zajos, érzékeny a paraméterekre |
| Fejlesztések | Momentum, adaptív tanulási ráta, Adam |
| Gyakorlatban | Mini-batch SGD a legnépszerűbb megoldás |
- stochastic gradient descent - Szótár.net (en-hu)
- stochastic gradient descent - Sztaki (en-hu)
- stochastic gradient descent - Merriam–Webster
- stochastic gradient descent - Cambridge
- stochastic gradient descent - WordNet
- stochastic gradient descent - Яндекс (en-ru)
- stochastic gradient descent - Google (en-hu)
- stochastic gradient descent - Wikidata
- stochastic gradient descent - Wikipédia (angol)