Machine learning meets math: Solve differential equations with new Julia library
Need a good math tutor? Julia’s the name and differential equations is the new game. Julia’s latest library combines machine learning with solving differential equations. This collaborative effort shows off the power that Julialang has as a platform for machine learning.
Julia continues to make waves since its co-creators won the 2019 James H. Wilkinson Prize for Numerical Software. The Wilkinson prize is awarded every four years. This year it celebrates the innovative language “for the creation of Julia, an innovative environment for the creation of high-performance tools that enable the analysis and solution of computational science problems.” There’s no better way to start the fresh new year than already on top with a shiny new prize.
Now, the language unveils a new library upon the scientific computing community: DiffEqFlux.jl. It combines the power of solving differential equations and machine learning.
This library for neural differential equations reminds us why Julia deserves the award. Let’s pay our congrats and spread the word.
Nobody solves problems like Julia
Julia’s team showed off DiffEqFlux.jl in a blog post on January 18, 2019. The post is a combined effort of Julia library creators and the authors of the Neural Ordinary Differential Equations paper, which won Best Paper of NeurIPS 2018.
DifferentialEquations.jl is a suite for solving, what else, differential equations. (See some example Jupyter notebooks on GitHub and follow the interactive introduction and tutorial.) Are differential equations a long-lost school memory or a concept that you struggle with? That is no problem with the amount of helpful tutorials and introductions. The Jupyter notebook, “An Intro to DifferentialEquations.jl” helps dip you in.
Flux.jl, on the other hand, is an “elegant machine learning stack”. It is a library for machine learning and enables the powerful nature of Julia. Several demos of Flux are available on GitHub in the model zoo. Use the examples as a starting point for your own machine learning models.
With that in mind, the latest library combines differential equations and machine learning into one beautiful package.
Diffy Q + machine learning = match made in heaven
SEE ALSO: Top 5 IDEs for Julia
So, why is machine learning the perfect match for differential equations?
The announcement blog post answers this question (in a very helpful tone – frankly, I wish all mathematical concepts were explained like this). While you should absolutely read the entire explanation, here is just a sample:
There are three common ways to define a nonlinear transform: direct modeling, machine learning, and differential equations. Directly writing down the nonlinear function only works if you know the exact functional form that relates the input to the output. However, in many cases, such exact relations are not known a priori. So how do you do nonlinear modeling if you don’t know the nonlinearity? One way to address this is to use machine learning.
The blog post’s comprehensive nature cannot be understated. It sets a new precedent for future tutorials and explanations to come. By the end of the post, you will know how to implement the neural ODE layer in Julia and understand its behavior.
With the neural ordinary differential equation (ODE), machine learning meets math!
High honors for a high-level language
For further reading about differential equation solvers, be sure to read this article by the lead developer of DifferentialEquations.jl. Christopher Rackauckas compares differential equation solver suites in various languages: MATLAB, R, Julia (of course), Python, C, Mathematica, Maple, and even an old-school set of Fortran solvers. The article highlights the good and bad about all methods, their limitations and efficiency. (If you haven’t tried Julia yet, perhaps Christopher Rackauckas’ writing will convince you.)
Congratulations once again to Julia for winning the James H. Wilkinson Prize for Numerical Software. All the praise is well-deserved.
We all look forward to seeing what the future holds. Take a bow, you earned it!