Adjoint-Based UQ
Adjoint methods compute the sensitivity of an output to all inputs at a cost independent of the number of inputs, powering efficient local UQ.
One solve, all sensitivities
The adjoint method computes the gradient of a scalar output with respect to many inputs by solving one additional linear system, the adjoint equation, regardless of how many inputs there are. This is the reverse-mode counterpart of forward sensitivity, which would need one solve per input. For thousands of uncertain parameters, adjoints are the only feasible route to full gradients.
How it works
Given a state equation R(u, p) = 0 and an output J(u, p), the adjoint variable lambda solves (dR/du)^T lambda = -(dJ/du)^T. The total derivative is then dJ/dp = dJ/dp + lambda^T dR/dp, obtained without differentiating the expensive state solve with respect to each parameter.
Uses in UQ
- First-order (linearized) uncertainty propagation: output variance from input covariance via gradients
- Building active subspaces from averaged gradients
- Gradient-enhanced surrogate training
- Goal-oriented error estimation for adaptive meshing
Second-order information
Hessian-vector products via adjoints enable curvature-aware methods, improving local UQ and the Laplace approximation for large inverse problems. Full Hessians remain expensive, but the actions needed for optimization and low-rank posterior approximations are affordable.
Limits
Adjoint UQ is inherently local: it linearizes around a point, so it captures small-perturbation sensitivity but not large excursions, multimodality, or strong nonlinearity. It also requires an adjoint-capable solver, which is nontrivial to implement or maintain. For global behavior, adjoint gradients feed sampling and surrogate methods rather than replacing them.