ODIN PRESS
Technical › Differentiable Programming for Inverse Problems
Differentiable Programming for Inverse Problems, front cover

Differentiable Programming for Inverse Problems

Adjoint Gradients and Reproducible Solvers in PyTorch

by Lena Ostrowski

Python516 pages15 chapters114 figures6 × 9 inPaperbackHardcoverDust jacket

Contents

  1. Preface
  2. List of Figures
  3. 1The Inverse Problem and Why Gradients Are the Bottleneck
  4. 2Reverse-Mode Automatic Differentiation: Exact Gradients at Constant Cost
  5. 3The Adjoint Method: Autodiff Versus Hand-Derived Adjoints
  6. 4Optimization Machinery: Descent, L-BFGS, Conditioning, and Convergence
  7. 5Ill-Posedness, Regularization, and Identifiability
  8. 6PDE-Constrained Inversion: Differentiating Through a Solver
  9. 7Simulator-Based Inversion: Differentiable Forward Models
  10. 8Uncertainty Quantification: Gauss–Newton and the Hessian via Autodiff
  11. 9Gravity and Potential-Field Inversion
  12. 10Subsurface Permeability Identification in Darcy Flow
  13. 11Advection–Diffusion Source Inversion
  14. 124D-Var Data Assimilation for Shallow-Water Flow
  15. 13Phase Retrieval and Coherent Diffraction Imaging
  16. 14Elastography: Recovering a Spatially-Varying Modulus Field
  17. 15When Not to Use Autodiff: The Honest Boundary
  18. A Source Code
  19. References
  20. Index
  21. About the Author

About this book

For two decades, the hardest part of every inverse problem I touched was the same: deriving, coding, and sign-checking the adjoint equations that supply the gradient. Reverse-mode automatic differentiation ended that. The gradient that once cost a graduate student a season now comes exact, for the price of a backward pass — and autodiff, it turns out, is the classical adjoint method, computed mechanically.

But a gradient is not a reconstruction. This book closes the gap the existing literature leaves open: it proves the autodiff–adjoint equivalence, prices it, and then builds everything the gradient alone cannot give you — the optimizer, the regularization that stabilizes an ill-posed inverse, and the Gauss–Newton uncertainty that turns an estimate into a result. The second half spends that machinery on seven real problems — subsurface flow, contaminant transport, data assimilation, phase retrieval, elastography — and reports each one’s limits without flinching.

Every method is earned by the experiment or derivation that backs it; every number is computed by the runnable code in the appendix and checked against finite differences. For the working scientist who wants the method and the code in one place, with nothing hand-waved and every result reproducible to the last digit.

The covers

Differentiable Programming for Inverse Problems, back coverDifferentiable Programming for Inverse Problems, front cover