Optimizer

This section is about setting up an optimization method for the variational algorithm.

Type

optimizer has the following options

  • BFGS [Details]: Supports gtol, max_iter options

  • BFGS_FTOL: Supports ftol, max_iter options

  • L_BFGS_B: Supports ftol, gtol, max_iter, max_fev options

  • NFT [Nak20][Details]: Supports ftol, max_iter, max_fev options

  • NELDER_MEAD:Supports max_iter, max_fev options

  • POWELL [Details]: Supports ftol, max_iter, max_fev options

  • CG: Supports gtol, max_iter options

  • TNC: Supports ftol, gtol, max_iter options

  • SLSQP: Supports ftol, max_iter options

Each optimizer other than BFGS_FTOL and NFT is the same as one in scipy.optimize.minimize.

For BFGS the cost function gradient difference gtol is used for convergence condition. For BFGS_FTOL the cost function difference ftol is used for convergence condition.

References:

[Nak20] “Sequential minimal optimization for quantum-classical hybrid algorithms.”, K. M. Nakanishi, K. Fujii, and S. Todo, Phys. Rev. Research 2, 043158 (2020).

Options

The following options allow you to specify the condition to stop the optimization.

  • ftol: stop the optimization when the increase or decrease from the previous iteration of the cost function is less than or equal to this value. (default: \(10^{-6}\))

  • gtol: Stops optimization when the slope of the cost function becomes less than or equal to this value. (default: \(10^{-6}\))

  • max_iter: Maximum number of iterations. (default: \(10^3\))

  • max_fev: Maximum number of times the cost function is evaluated. (default: \(10^4\))

  • max_run: maximum number of times to run the quantum circuit (default: \(10^4\))

Input example

"optimizer": {
    "type": "BFGS",
    "ftol": 1e-06,
    "gtol": 1e-06,
    "max_iter": 100000,
    "max_fev": 100000,
    "max_run": 100000
}

Differential type

The following options allow you to specify the differential type of gradient in optimization calculation. Note there are some optimizers that do not require gradients.

  • differential_type: Choice of the numerical derivative NUMERICAL or the analytical derivative ANALYTICAL [Mit18]. By default, NUMERICAL or ANALYTICAL is chosen automatically when QuantumDevice is set to EXACT_SIMULATOR or SAMPLING_SIMULATOR, respectively.

References:

[Mit18] “Quantum circuit learning”, K. Mitarai, M. Negoro, M. Kitagawa, and K. Fujii, Phys. Rev. A 98, 032309.