Quick Summary Table
Overview of Scientific Machine Learning and Scientific AI
- How can you accelerate the solution of partial differential equations using deep learning?
- How can you automatically identify dynamical systems and scientific laws?
- How can you train neural networks so that their resulting model generates an explainable hypothesis?
- How can you utilize existing data to utilize scientific simulators to allow for training networks with minimal or sparse data?
- If you put a neural network as a controller to some system, how can you ensure its behavior is "safe"?
The Tools of Scientific Machine Learning
- Tooling for solving neural differential equations
- Differentiable programming (automatic differentiation) tools
- Probabilistic programming tools to learn uncertainty from data
- Helper tools for sparsity detection and sparse differentiation
- Structured linear algebra tools
- Number types for mixed precision arithmetic
- Methods for discretizing partial differential equations
- Tools for generating and utilizing GPU kernels
- Uncertainty quantification and Global sensitivity analysis
- Surrogate modeling techniques
Example Challenge Problem: Natural Language Processing + PDE Construction
The Defense Advanced Research Projects Agency (DARPA) Defense Sciences Office (DSO) is requesting information on state-of-the-art approaches to generate multi-physics modeling and simulation codes directly from a description of the physical phenomena. Of interest are modeling and simulating increasingly complex systems involving multiple physics that require high fidelity simulations but have limited test data (e.g., combustion, hypersonics, nuclear stockpile).
- Build an Natural Language Processing (NLP) stack that interprets text into PDEs
- Autodiscretize and solve the PDE
- Write a loss function which checks the PDE solution against data
- Add regularization based on the global sensitivity and uncertainty of the solution
Comparison of Scientific Machine Learning Packages and Tools
The Automatic Differentiation (Differentiable Programming) Frameworks
- Beg the developers of the framework to add the package as a dependency and define the adjoints
- Define the adjoints yourself
- Rewrite the package utilizing the tools of the AD framework