The current implementation of the maximum likelihood fits uses gradient descent to converge to the optimal parameter values. In principle, for comparison with the optimization implementation in pyhf, and for more robust minimization, switching to SciPy optimizers is preferred.
To do this, one needs to differentiate through the optimizer using implicit differentiation. It's probably possible to do this using fax like we do now, but this issue on the jax repo discusses the possibility of wrapping SciPy optimizers using jax.lax.custom_root, which would remove a dependency, and make for (probably) more simplistic code.
The current implementation of the maximum likelihood fits uses gradient descent to converge to the optimal parameter values. In principle, for comparison with the optimization implementation in pyhf, and for more robust minimization, switching to SciPy optimizers is preferred.
To do this, one needs to differentiate through the optimizer using implicit differentiation. It's probably possible to do this using fax like we do now, but this issue on the jax repo discusses the possibility of wrapping SciPy optimizers using
jax.lax.custom_root, which would remove a dependency, and make for (probably) more simplistic code.