Diferencovatelné programování - Differentiable programming
Diferencovatelné programování je paradigma programování ve kterém může být numerický počítačový program diferencované skrz via automatické rozlišení.[1][2][3][4] To umožňuje gradientní optimalizace parametrů v programu, často prostřednictvím klesání. Diferencovatelné programování našlo použití zejména v široké škále oblastí vědecké výpočty a umělá inteligence.[4]
Přístupy
Většina diferencovatelných programovacích rámců funguje vytvořením grafu obsahujícího tok řízení a datové struktury v programu.[5] Dřívější pokusy obecně spadají do dvou skupin:
- Statický, sestaven graf založené na přístupech, jako je TensorFlow,[poznámka 1] Theano, a MXNet. Mají tendenci připouštět dobro optimalizace kompilátoru a snadnější škálování na velké systémy, ale jejich statická povaha omezuje interaktivitu a typy programů, které lze snadno vytvořit (např. ty, které zahrnují smyčky nebo rekurze ) a také uživatelům ztěžuje efektivní uvažování o jejich programech.[5][6][7]
- Přetížení obsluhy, dynamický graf založené na přístupech, jako je PyTorch a AutoGrad. Jejich dynamická a interaktivní povaha umožňuje snadnější psaní a zdůvodňování většiny programů. Vedou však k tlumočník režie (zejména při skládání mnoha malých operací), horší škálovatelnost a snaha získat výhody z optimalizace kompilátoru.[6][7][4]
Oba tyto rané přístupy jsou schopné odlišit pouze kód napsaný vhodným způsobem pro rámec, což omezuje jejich interoperabilitu s jinými programy.
Novější balíčky v Julie programovací jazyk - Zygota, Rychlý programovací jazyk - Swift pro TensorFlow a nový programovací jazyk - Myia, vyřešte problémy, kterým dřívější pokusy čelily, zpracováním syntaxe jazyka jako grafu. The mezilehlé zastoupení libovolného kódu pak lze přímo rozlišit, optimalizováno a sestavil.[5][8][6]
Aplikace
Diferencovatelné programování bylo použito v oblastech, jako je kombinování hluboké učení s fyzikální motory v robotika, rozlišitelné sledování paprsku, zpracování obrazu, a pravděpodobnostní programování.[9][10][11][12][4]
Viz také
Poznámky
- ^ TensorFlow 1 používá přístup statickým grafem, zatímco TensorFlow 2 používá ve výchozím nastavení přístup dynamickým grafem.
Reference
- ^ Baydin, Atilim Gunes; Pearlmutter, Barak; Radul, Alexey Andrejevič; Siskind, Jeffrey (2018). „Automatická diferenciace ve strojovém učení: průzkum“. Journal of Machine Learning Research. 18: 1–43.
- ^ Wang, Fei; Decker, James; Wu, Xilun; Essertel, Gregory; Rompf, Tiark (2018), Bengio, S .; Wallach, H .; Larochelle, H .; Grauman, K. (eds.), „Backpropagation with Callbacks: Foundations for Efektivní a expresivní diferencovatelné programování“ (PDF), Pokroky v systémech zpracování neurálních informací 31„Curran Associates, Inc., str. 10201–10212, vyvoláno 2019-02-13
- ^ Innes, Mike (2018). „Jazyky strojového učení a programování“ (PDF). Konference SysML 2018.
- ^ A b C d Innes, Mike; Edelman, Alan; Fischer, Keno; Rackauckas, Chris; Saba, Elliot; Virová B Shah; Tebbutt, Will (2019), ∂P: Diferencovatelný programovací systém pro překlenutí strojového učení a vědeckých výpočtů, arXiv:1907.07587
- ^ A b C Innes, Michael; Saba, Elliot; Fischer, Keno; Gandhi, Dhairya; Rudilosso, Marco Concetto; Joy, Neethu Mariya; Karmali, Tejan; Pal, Avik; Shah, Viral (2018-10-31). "Módní modelování s tavidlem". arXiv:1811.01457 [cs.PL ].
- ^ A b C „Automatická diferenciace v Myii“ (PDF). Citováno 2019-06-24.
- ^ A b "TensorFlow: Statické grafy". Citováno 2019-03-04.
- ^ Innes, Michael (2018-10-18). "Nerozvíjet Adjoint: Rozlišování programů formulářů SSA". arXiv:1810.07951 [cs.PL ].
- ^ Degrave, Jonas; Hermans, Michiel; Dambre, Joni; wyffels, Francis (05.11.2016). "Diferencovatelný fyzikální engine pro hluboké učení v robotice". arXiv:1611.01652 [cs.NE ].
- ^ „Diferencovatelné sledování paprsku Monte Carlo prostřednictvím vzorkování hran“. people.csail.mit.edu. Citováno 2019-02-13.
- ^ „Plán organizace otevřeného softwaru softwaru SciML Scientific Machine Learning“. sciml.ai. Citováno 2020-07-19.
- ^ „Diferencovatelné programování pro zpracování obrazu a hluboké učení v halogenidech“. people.csail.mit.edu. Citováno 2019-02-13.