microquantum.optimizers.spsa¶
SPSA and QNSPSA optimizers for noisy quantum landscapes.
SPSA (Simultaneous Perturbation Stochastic Approximation) estimates gradients using only two cost function evaluations regardless of parameter count, making it ideal for shot-noisy quantum optimization.
QNSPSA (Quantum Natural SPSA) uses the Fubini-Study metric tensor to precondition SPSA updates for better convergence on quantum optimization landscapes.
Module Contents¶
- class microquantum.optimizers.spsa.SPSA(a=0.1, c=0.1, alpha=0.602, gamma=0.101, A=10.0, max_iter=200, tol=1e-06, seed=None, blocking=False, resamples=1)[source]¶
Bases:
microquantum.optimizers.base.OptimizerSimultaneous Perturbation Stochastic Approximation.
Estimates the gradient using random perturbations in all parameters simultaneously, requiring only 2 cost evaluations per iteration regardless of parameter count.
- Parameters:
a (float) – Initial step size (decays as 1/(iteration + A)^alpha).
c (float) – Perturbation size for gradient estimation.
alpha (float) – Step size decay exponent (typically 0.602).
gamma (float) – Perturbation decay exponent (typically 0.101).
A (float) – Stabilization constant for step size decay.
max_iter (int) – Maximum number of iterations.
tol (float) – Convergence tolerance.
seed (int | None) – Random seed for reproducibility.
blocking (bool) – Only accept updates that do not worsen the cost (extra cost evaluations per iteration).
resamples (int) – Cost evaluations averaged per perturbed point (variance reduction for shot-noisy objectives).
- Reference:
J.C. Spall, “Multivariate Stochastic Approximation using Simultaneous Perturbation Gradient Approximation”, 1992.
- class microquantum.optimizers.spsa.QNSPSA(a=0.1, c=0.1, alpha=0.602, gamma=0.101, A=10.0, fidelity_fn=None, max_iter=200, tol=1e-06, seed=None)[source]¶
Bases:
microquantum.optimizers.base.OptimizerQuantum Natural SPSA with Fubini-Study metric tensor.
Improves SPSA by preconditioning the gradient estimate with the quantum Fisher information matrix (Fubini-Study metric tensor), leading to better convergence on quantum cost landscapes.
The metric tensor is estimated using two additional SPSA-style evaluations per iteration (4 total cost evaluations).
- Parameters:
a (float) – Initial step size.
c (float) – Perturbation size for gradient estimation.
alpha (float) – Step size decay exponent.
gamma (float) – Perturbation decay exponent.
A (float) – Stabilization constant.
fidelity_fn (Optional[Callable[[dict[microquantum.core.parameter.Parameter, float], dict[microquantum.core.parameter.Parameter, float]], float]]) – Function computing state fidelity overlap. Signature: (params_a, params_b) -> float in [0, 1]. If None, falls back to vanilla SPSA.
max_iter (int) – Maximum iterations.
tol (float) – Convergence tolerance.
seed (int | None) – Random seed.
- Reference:
G. Stoudenmire & D. Wiersema, “OpenFermion: The Electronic Structure Package for Quantum Computers”, 2020.