Differentiable programming GudangMovies21 Rebahinxxi LK21

      Differentiable programming is a programming paradigm in which a numeric computer program can be differentiated throughout via automatic differentiation. This allows for gradient-based optimization of parameters in the program, often via gradient 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, particularly scientific computing and machine learning. One of the early proposals to adopt such a framework in a systematic fashion to improve upon learning algorithms was made by the Advanced Concepts Team at the European Space Agency in early 2016.


      Approaches


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

      Static, compiled graph-based approaches such as TensorFlow, Theano, and MXNet. They tend to allow for good compiler 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 involving loops or recursion), as well as making it harder for users to reason effectively about their programs. 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.
      Operator overloading, dynamic graph based approaches such as PyTorch, NumPy's autograd package as well as Pyaudi. Their dynamic and interactive nature lets most programs be written and reasoned about more easily. However, they lead to interpreter overhead (particularly when composing many small operations), poorer scalability, and reduced benefit from compiler optimization.
      The use of Just-in-Time compilation has emerged recently as a possible solution to overcome some of the bottlenecks of interpreted languages. The C++ heyoka and python package heyoka.py make large use of this technique to offer advanced differentiable programming capabilities (also at high orders). A package for the Julia programming language – Zygote – works directly on Julia's intermediate representation.
      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.


      Applications


      Differentiable programming has been applied in areas such as combining deep learning with physics engines in robotics, solving electronic structure problems with differentiable density functional theory, differentiable ray tracing, image processing, and probabilistic programming.


      Multidisciplinary application


      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. This involves leveraging differentiable programming 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.


      See also


      Differentiable function
      Machine learning


      Notes




      References

    Kata Kunci Pencarian:

    differentiable programmingdifferentiable programming for differential equations a reviewdifferentiable programming tensor networksdifferentiable programming bookdifferentiable programming languagesdifferentiable programming pythondifferentiable programming exampledifferentiable programming for earth system modelingdifferentiable programming for image processing and deep learning in halidedifferentiable programming julia
    A Beginner

    A Beginner's Guide to Differentiable Programming | Pathmind

    Differentiable Programming

    Differentiable Programming

    Differentiable Programming

    Differentiable Programming

    Differentiable Programming

    Differentiable Programming

    Differentiable Programming

    Differentiable Programming

    Differentiable Programming a la Moreau | SigPort

    Differentiable Programming a la Moreau | SigPort

    Differentiable Programming & Network Calculus: Configuration Synthesis ...

    Differentiable Programming & Network Calculus: Configuration Synthesis ...

    Differentiable Programming | PDF | Computer Programming | Derivative

    Differentiable Programming | PDF | Computer Programming | Derivative

    Pontryagin Differentiable Programming: An End-to-End Learning and ...

    Pontryagin Differentiable Programming: An End-to-End Learning and ...

    Schematic of generalized differentiable programming. | Download ...

    Schematic of generalized differentiable programming. | Download ...

    Schematic of generalized differentiable programming. | Download ...

    Schematic of generalized differentiable programming. | Download ...

    Differentiable Programming - A Simple Introduction

    Differentiable Programming - A Simple Introduction