Implementation of the Emulator-based Component Analysis
Anton Vladyka, Eemeli A. Eronen, Johannes Niskanen
TL;DR
This work presents a PyTorch-powered implementation of emulator-based component analysis (ECA), a projection-pursuit framework for solving ill-posed nonlinear inverse problems using a fast forward emulator. ECA identifies an orthogonal basis in input space that maximizes the variance of the emulator-predicted targets, enabling reconstruction of approximate inverse solutions in a reduced subspace via transform, inverse, and reconstruct operations. The implementation provides a reusable Python class with tunable optimization settings, demonstrated on a synthetic forward map $y(\mathbf{x})$ and on NEXAFS spectroscopy data using LMBTR descriptors, achieving robust, interpretable dimension reduction (often with only the first one or two components capturing most variance). The work makes the code and data publicly available, enabling reproducibility and broad application to other ill-posed inverse problems with fast emulators.
Abstract
We present a PyTorch-powered implementation of the emulator-based component analysis used for ill-posed numerical non-linear inverse problems, where an approximate emulator for the forward problem is known. This emulator may be a numerical model, an interpolating function, or a fitting function such as a neural network. With the help of the emulator and a data set, the method seeks dimensionality reduction by projection in the variable space so that maximal variance of the target (response) values of the data is covered. The obtained basis set for projection in the variable space defines a subspace of the greatest response for the outcome of the forward problem. The method allows for the reconstruction of the coordinates in this subspace for an approximate solution to the inverse problem. We present an example of using the code provided as a Python class.
