automatic differentiation
Megjelenés
Főnév
automatic differentiation (tsz. automatic differentiations)
- (informatika) Automatic Differentiation (AD) – magyarul: automatikus differenciálás – egy olyan technika, amely segítségével egy matematikai függvény deriváltja gépileg, nagy pontossággal kiszámítható, anélkül, hogy kézzel deriválnánk, numerikusan közelítenénk (mint véges differenciákkal), vagy szimbolikusan manipulálnánk (mint pl. a számítógépes algebra rendszerek).
🧠 1. Alapötlet
Az AD nem numerikus és nem szimbolikus, hanem egy program szintű műveletkövetés, amely a számítási gráf mentén lépésről lépésre alkalmazza a láncszabályt (chain rule), hogy pontos deriváltakat számítson.
Példa: Ha van egy függvényed:
akkor AD nem egyszerűen kiszámolja , hanem közben automatikusan megtanulja, hogyan számítsa ki is.
🔁 2. Hogyan működik?
Két fő módja van:
➤ Forward mode AD
- A bemeneti változókat „differenciálható számmá” (dual number) alakítja
- Minden művelet során egyszerre számolja a funkcióértéket és deriváltját
- Hatékonyabb, ha a bemenetek száma kicsi
➤ Reverse mode AD
- Először végrehajtja a számítást, és elmenti a számítási gráfot
- Majd „visszafelé” kiszámolja a deriváltakat a láncszabály mentén
- Hatékony, ha csak egy függvénykimenet van, de sok bemenet
📌 Például a neuronhálók tanításánál a visszaterjesztés (backpropagation) a reverse mode AD egy konkrét esete!
📐 3. Miért hasznos?
- ✅ Pontosan számol: nincs numerikus hiba (mint a véges differenciáknál)
- ✅ Gyors: nem nő exponenciálisan a számítási igény
- ✅ Automatizált: nem kell kézzel származtatni
- ✅ Minden differenciálható függvényen működik, amíg programként kifejezhető
🧪 4. Hol használják?
- 🤖 Gépi tanulás: mély tanulási keretrendszerek (TensorFlow, PyTorch, JAX)
- 🧬 Tudományos számítások: optimalizáció, fizikai szimuláció
- 🧮 Bayesi inferencia: valószínűségi programozás (pl. Stan, PyMC)
- 📈 Funkcionális optimalizáció: pl. kontrollálható dinamikus rendszerek
🛠️ 5. Példa (Python, JAX)
import jax.numpy as jnp
from jax import grad
def f(x):
return jnp.sin(x**2)
dfdx = grad(f)
print(dfdx(2.0)) # kiírja f'(2.0) pontos értékét
⚖️ 6. Összehasonlítás más módszerekkel
| Módszer | Pontosság | Sebesség | Automatizálhatóság | Hátrány |
|---|---|---|---|---|
| Kézi deriválás | ✅ | ✅ | ❌ | Nehéz, hibalehetőség |
| Szimbolikus (pl. SymPy) | ✅ | ❌ | ✅ | Lassú, bonyolultabb |
| Numerikus (pl. véges különbség) | ❌ | ✅ | ✅ | Pontatlanság, zajérzékeny |
| AD (automatikus) | ✅ | ✅ | ✅ | Komplex implementáció |
📚 7. Népszerű könyvtárak és rendszerek
- JAX (Google) – nagy teljesítmény, GPU/TPU támogatás
- PyTorch Autograd – dinamikus számítási gráf
- TensorFlow (tf.GradientTape) – statikus és dinamikus mód
- Autograd (scipy) – egyszerű, NumPy-kompatibilis
- Stan, PyMC3 – statisztikai modellekhez
🧾 8. Összefoglalás
A Automatic Differentiation (AD):
- Egy nagy pontosságú, hatékony és automatizált deriválási módszer
- Képes komplex, programban megírt függvények deriváltját kiszámolni
- Alapja a modern gépi tanulás és optimalizálás módszertanainak
- Két fő formája: forward mode és reverse mode
- automatic differentiation - Szótár.net (en-hu)
- automatic differentiation - Sztaki (en-hu)
- automatic differentiation - Merriam–Webster
- automatic differentiation - Cambridge
- automatic differentiation - WordNet
- automatic differentiation - Яндекс (en-ru)
- automatic differentiation - Google (en-hu)
- automatic differentiation - Wikidata
- automatic differentiation - Wikipédia (angol)