Movatterモバイル変換


[0]ホーム

URL:


Jump to content
WikipediaThe Free Encyclopedia
Search

Differentiable programming

From Wikipedia, the free encyclopedia
Programming paradigm
Part of a series on
Machine learning
anddata mining

Differentiable programming is aprogramming paradigm in which a numeric computer program can bedifferentiated throughout viaautomatic differentiation.[1][2][3][4][5] This allows forgradient-based optimization of parameters in the program, often viagradient descent, as well as other learning approaches that are based on higher-order derivative information. Differentiable programming has found use in a wide variety of areas, particularlyscientific computing andmachine learning.[5] One of the early proposals to adopt such a framework in a systematic fashion to improve upon learning algorithms was made by theAdvanced Concepts Team at theEuropean Space Agency in early 2016.[6]

Approaches

[edit]

Most differentiable programming frameworks work by constructing a graph containing the control flow anddata structures in the program.[7] Attempts generally fall into two groups:

  • Static,compiled graph-based approaches such asTensorFlow,[note 1]Theano, andMXNet. They tend to allow for goodcompiler optimization and easier scaling to large systems, but their static nature limits interactivity and the types of programs that can be created easily (e.g. those involvingloops orrecursion), as well as making it harder for users to reason effectively about their programs.[7] A proof-of-concept compiler toolchain called Myia uses a subset of Python as a front end and supports higher-order functions, recursion, and higher-order derivatives.[8][9][10]
  • Operator overloading, dynamic graph-based approaches such asPyTorch,NumPy'sautograd package, andPyaudi. Their dynamic and interactive nature lets most programs be written and reasoned about more easily. However, they lead tointerpreter overhead (particularly when composing many small operations), poorer scalability, and reduced benefit from compiler optimization.[9][10]

The use of just-in-time compilation has emerged recently[when?] as a possible solution to overcome some of the bottlenecks of interpreted languages. The C++heyoka and Python packageheyoka.py make large use of this technique to offer advanced differentiable programming capabilities (also at high orders). A package for theJulia programming language – Zygote – works directly on Julia'sintermediate representation.[7][11][5]

A limitation of earlier approaches is that they are only able to differentiate code written in a suitable manner for the framework, limiting their interoperability with other programs. Newer approaches resolve this issue by constructing the graph from the language's syntax or IR, allowing arbitrary code to be differentiated.[7][9]

Applications

[edit]

Differentiable programming has been applied in areas such as combiningdeep learning withphysics engines inrobotics,[12] solvingelectronic-structure problems with differentiabledensity functional theory,[13] differentiableray tracing,[14]differentiable imaging,[15][16]image processing,[17] andprobabilistic programming.[5]

Multidisciplinary application

[edit]

Differentiable programming is making significant strides in various fields beyond its traditional applications. In healthcare and life sciences, for example, it is being used for deep learning in biophysics-based modelling of molecular mechanisms, in areas such as protein structure prediction and drug discovery. These applications demonstrate the potential of differentiable programming in contributing to significant advancements in understanding complex biological systems and improving healthcare solutions.[18]

See also

[edit]

Notes

[edit]
  1. ^TensorFlow 1 uses the static graph approach, whereas TensorFlow 2 uses the dynamic graph approach by default.

References

[edit]
  1. ^Izzo, Dario; Biscani, Francesco; Mereta, Alessio (2017). "Differentiable Genetic Programming".Genetic Programming. Lecture Notes in Computer Science. Vol. 10196. pp. 35–51.arXiv:1611.04766.doi:10.1007/978-3-319-55696-3_3.ISBN 978-3-319-55695-6.S2CID 17786263.
  2. ^Baydin, Atilim Gunes; Pearlmutter, Barak A.; Radul, Alexey Andreyevich; Siskind, Jeffrey Mark (2018)."Automatic Differentiation in Machine Learning: a Survey".Journal of Machine Learning Research.18 (153):1–43.
  3. ^Wang, Fei; Decker, James; Wu, Xilun; Essertel, Gregory; Rompf, Tiark (2018)."Backpropagation with Callbacks: Foundations for Efficient and Expressive Differentiable Programming"(PDF). In Bengio, S.; Wallach, H.; Larochelle, H.; Grauman, K (eds.).NIPS'18: Proceedings of the 32nd International Conference on Neural Information Processing Systems. Curran Associates. pp. 10201–10212.
  4. ^Innes, Mike (2018)."On Machine Learning and Programming Languages"(PDF).SysML Conference 2018. Archived fromthe original(PDF) on 2019-07-17. Retrieved2019-07-04.
  5. ^abcdInnes, Mike; Edelman, Alan; Fischer, Keno; Rackauckas, Chris; Saba, Elliot; Viral B Shah; Tebbutt, Will (2019). "A Differentiable Programming System to Bridge Machine Learning and Scientific Computing".arXiv:1907.07587 [cs.PL].
  6. ^"Differential Intelligence". October 2016. Retrieved2022-10-19.
  7. ^abcdInnes, Michael; Saba, Elliot; Fischer, Keno; Gandhi, Dhairya; Marco Concetto Rudilosso; Neethu Mariya Joy; Karmali, Tejan; Pal, Avik; Shah, Viral (2018). "Fashionable Modelling with Flux".arXiv:1811.01457 [cs.PL].
  8. ^Merriënboer, Bart van; Breuleux, Olivier; Bergeron, Arnaud; Lamblin, Pascal (3 December 2018)."Automatic differentiation in ML: where we are and where we should be going".NIPS'18. Vol. 31. pp. 8771–8781.
  9. ^abcBreuleux, O.; van Merriënboer, B. (2017)."Automatic Differentiation in Myia"(PDF). Archived fromthe original(PDF) on 2019-06-24. Retrieved2019-06-24.
  10. ^ab"TensorFlow: Static Graphs".Tutorials: Learning PyTorch. PyTorch.org. Retrieved2019-03-04.
  11. ^Innes, Michael (2018). "Don't Unroll Adjoint: Differentiating SSA-Form Programs".arXiv:1810.07951 [cs.PL].
  12. ^Degrave, Jonas; Hermans, Michiel; Dambre, Joni; wyffels, Francis (2016). "A Differentiable Physics Engine for Deep Learning in Robotics".arXiv:1611.01652 [cs.NE].
  13. ^Li, Li; Hoyer, Stephan; Pederson, Ryan; Sun, Ruoxi; Cubuk, Ekin D.; Riley, Patrick; Burke, Kieron (2021)."Kohn-Sham Equations as Regularizer: Building Prior Knowledge into Machine-Learned Physics".Physical Review Letters.126 (3) 036401.arXiv:2009.08551.Bibcode:2021PhRvL.126c6401L.doi:10.1103/PhysRevLett.126.036401.PMID 33543980.
  14. ^Li, Tzu-Mao; Aittala, Miika; Durand, Frédo; Lehtinen, Jaakko (2018)."Differentiable Monte Carlo Ray Tracing through Edge Sampling".ACM Transactions on Graphics.37 (6): 222:1–11.doi:10.1145/3272127.3275109.S2CID 52839714.
  15. ^Chen, Ni; Cao, Liangcai; Poon, Ting-Chung; Lee, Byoungho; Lam, Edmund Y. (2023)."Differentiable Imaging: A New Tool for Computational Optical Imaging".Advanced Physics Research.2 (6) 2200118.doi:10.1002/apxr.202200118.hdl:10754/686576.ISSN 2751-1200.
  16. ^Chen, Ni; Brady, David J.; Lam, Edmund Y. (2025-07-04)."Differentiable Imaging: Progress, Challenges, and Outlook".Advanced Devices & Instrumentation.6 0117.Bibcode:2025AdDI....6..117C.doi:10.34133/adi.0117.ISSN 2767-9713.
  17. ^Li, Tzu-Mao; Gharbi, Michaël; Adams, Andrew; Durand, Frédo; Ragan-Kelley, Jonathan (August 2018)."Differentiable Programming for Image Processing and Deep Learning in Halide".ACM Transactions on Graphics.37 (4): 139:1–13.doi:10.1145/3197517.3201383.hdl:1721.1/122623.S2CID 46927588.
  18. ^AlQuraishi, Mohammed; Sorger, Peter K. (October 2021)."Differentiable biology: using deep learning for biophysics-based and data-driven modeling of molecular mechanisms".Nature Methods.18 (10):1169–1180.doi:10.1038/s41592-021-01283-4.PMC 8793939.PMID 34608321.
Differentiable computing
General
Hardware
Software libraries
Imperative
Structured
Object-oriented
(comparison,list)
Declarative
Functional
(comparison)
Dataflow
Logic
Domain-
specific
language

(DSL)
Concurrent,
distributed,
parallel
Metaprogramming
Separation
of concerns
Retrieved from "https://en.wikipedia.org/w/index.php?title=Differentiable_programming&oldid=1316394813"
Categories:
Hidden categories:

[8]ページ先頭

©2009-2025 Movatter.jp