Diferencovatelné programování

Z Wikipedie, otevřené encyklopedie
Programovací paradigmata

Diferencovatelné programování (anglicky differentiable programming) je programovací paradigma, ve kterém lze numerický počítačový program automaticky derivovat.[1][2][3] To umožňuje optimalizaci parametrů programu, obvykle pomocí metody gradientního sestupu nebo i dalšími metodami strojového učení, založenými na derivacích vyššího řádu. Diferenciovatelné programování se využívá v široké škále oblastí, zejména pro vědecké výpočty a umělou inteligenci. Jeden z prvních návrhů tohoto programovacího paradigmatu byl předložen týmem Advanced Concepts Team Evropské kosmické agentury počátkem roku 2016.[4]

Diferencovatelné programování obvykle funguje na základě grafu popisujícího tok instrukcí a datové struktury počítačového programu. Práce s ním obecně využívá jeden z následujících dvou přístupů:

  • Statické přístupy s kompilovaným grafem jako TensorFlow, Theano, and MXNet. Programy jsou rychlejší a lépe škálují na větší úlohy, ale limitují interaktivitu a uživatelskou přívětivost. Taktéž mívají potíže s některými prvky programů jako jsou smyčky a rekurze.[5]
  • Přetěžování operátorů, přístupy založené na dynamických grafech, jaké využívá PyTorch a AutoGrad. Jejich dynamická a interaktivní povaha je uživatelsky přívětivá, ale výpočetně náročnější kvůli využití interpretu (zejména při sestavování mnoha malých operací), horší škálovatelnosti a sníženému přínosu optimalizace kompilátoru (balíček Zygota pro programovací jazyk Julia však umožňuje stálou just-in-time kompilaci).

Půodní přístupy jsou schopny zpracovat jen svůj nativní programovací jazyk, což omezuje jejich interoperabilitu s jinými programy. Novější přístupy umožňují derivovat libovolný program.

Diferenciovatelné programování bylo aplikováno v oblastech, jako je kombinace hlubokého učení s fyzikálními jevy v robotice, řešení strukturálních problémů fyziky pomocí teorie funkcionálu hustoty,[6] sledování paprsku,[7] zpracování obrazu,[8] a pravděpodobnostní programování.

Reference[editovat | editovat zdroj]

V tomto článku byl použit překlad textu z článku Differentiable programming na anglické Wikipedii.

  1. Genetic programming: 20th European Conference, EuroGP 2017, Amsterdam, The Netherlands, April 19-21, 2017: proceedings. Příprava vydání James McDermott, Mauro Castelli, Lukas Sekanina, Evert Haasdijk, Pablo García-Sánchez. Cham: Springer 358 s. (Lecture notes in computer science Theoretical computer science and general issues). ISBN 978-3-319-55695-6. 
  2. BAYDIN, Atilim Gunes; PEARLMUTTER, Barak A.; RADUL, Alexey Andreyevich. Automatic Differentiation in Machine Learning: a Survey. Journal of Machine Learning Research. 2018, roč. 18, čís. 153, s. 1–43. Dostupné online [cit. 2023-07-05]. ISSN 1533-7928. 
  3. Proceedings of the 32nd International Conference on Neural Information Processing Systems | Guide Proceedings. Guide Proceedings. Dostupné online [cit. 2023-07-05]. DOI 10.5555/3327546. (anglicky) 
  4. ADVANCED CONCEPTS TEAM. Differential Intelligence. esa.int [online]. 2016-10-01 [cit. 2023-07-05]. Dostupné online. (anglicky) 
  5. TensorFlow: Static Graphs — PyTorch Tutorials 1.7.0 documentation. pytorch.org [online]. [cit. 2023-07-05]. Dostupné online. 
  6. LI, Li; HOYER, Stephan; PEDERSON, Ryan. Kohn-Sham Equations as Regularizer: Building Prior Knowledge into Machine-Learned Physics. Physical Review Letters. 2021-01-22, roč. 126, čís. 3, s. 036401. PMID: 33543980. Dostupné online [cit. 2023-07-05]. ISSN 1079-7114. DOI 10.1103/PhysRevLett.126.036401. PMID 33543980. 
  7. Differentiable Monte Carlo Ray Tracing through Edge Sampling. people.csail.mit.edu [online]. [cit. 2023-07-05]. Dostupné online. 
  8. Differentiable Programming for Image Processing and Deep Learning in Halide. cseweb.ucsd.edu [online]. [cit. 2023-07-05]. Dostupné online.