Slovník výrazov AI/Optimalizácia a trénovanie

Optimalizácia a trénovanie

diferencovateľné programovanie

Anglický výraz differentiable programming

špecializovanéheslo č. 3935 otázok a odpovedí2 odborné zdroje

Presná definícia

Čo znamená diferencovateľné programovanie?

Diferencovateľné programovanie tvorí programy, v ktorých sú relevantné výpočtové operácie usporiadané tak, aby sa derivácie výstupu podľa parametrov dali získať automatickou diferenciáciou. Optimalizovať možno nielen neurónové vrstvy, ale aj simulácie, renderovanie či optimalizačné podprocedúry, ak majú definované derivačné pravidlá. Diskrétne vetvenie, stavové efekty a numerické solvery môžu deriváciu prerušiť alebo skresliť.

Skúsenosť a kontext

Ako sa pojem používa v praxi

Pri hybridnom modeli sa klasický algoritmus zapíše z podporovaných tenzorových operácií a jeho parametre sa učia end-to-end zo stratovej funkcie. Tím vykoná gradient check konečnými diferenciami na malej úlohe, sleduje NaN a overí, či nechcené detach alebo in-place operácie neprerušili graf. Ak je krok diskrétny, použije sa hladká relaxácia alebo estimátor s jasne uvedeným biasom. Diferencovateľnosť neznamená, že cieľ je konvexný alebo ľahko optimalizovateľný.

Overiteľnosť

Odborné zdroje

  1. Baydin et al. · Automatic differentiation surveyjmlr.org
  2. Deep Learning Book · Optimizationdeeplearningbook.org

Praktické odpovede

Často kladené otázky

Je to iba neurónová sieť?

Nie, diferencovateľnou súčasťou môže byť širší program alebo simulátor.

Čo robí automatická diferenciácia?

Skladá lokálne derivačné pravidlá podľa vykonaného výpočtového grafu.

Je if vždy problém?

Derivácia sleduje vykonanú vetvu; diskrétna zmena voľby môže byť nespojitá.

Ako overiť vlastný gradient?

Porovnať ho na malej úlohe s konečnými diferenciami.

Zaručí diferencovateľnosť dobré minimum?

Nie, iba poskytne derivačný signál pre zvolený algoritmus.