Optimizer¶
このセクションでは変分アルゴリズムを実行する際に最適化を行う手法を設定します。
Type¶
optimizer
のタイプは以下の種類から選択可能です。
BFGS [解説]:
gtol
,max_iter
のオプションに対応BFGS_FTOL:
ftol
,max_iter
のオプションに対応L_BFGS_B:
ftol
,gtol
,max_iter
,max_fev
のオプションに対応NFT [Nak20][解説]:
ftol
,max_iter
,max_fev
のオプションに対応NELDER_MEAD:
max_iter
,max_fev
のオプションに対応POWELL [解説]:
ftol
,max_iter
,max_fev
のオプションに対応CG:
gtol
,max_iter
のオプションに対応TNC:
ftol
,gtol
,max_iter
のオプションに対応SLSQP:
ftol
,max_iter
のオプションに対応
BFGS_FTOL と NFT 以外は scipy.optimize.minimize の method
と同等です。
BFGSではコスト関数の勾配の差分gtol
を収束条件に使用するのに対して、BFGS_FTOLではコスト関数の値の差分ftol
を収束条件に使用します。
参考文献:¶
[Nak19] “Sequential minimal optimization for quantum-classical hybrid algorithms.”, K. M. Nakanishi, K. Fujii, and S. Todo, Phys. Rev. Research 2, 043158 (2020).
Options¶
以下のオプションで最適化の終了条件を指定することができます。
ftol
: コスト関数の前イテレーションからの増減がこの値以下になったときに最適化を停止 (デフォルト値は\(10^{-6}\))gtol
: コスト関数の前イテレーションからの勾配がこの値以下になったとき最適化を停止 (デフォルト値は\(10^{-6}\))max_iter
: イテレーションの最大回数 (デフォルト値は\(10^3\))max_fev
: コスト関数の最大評価回数 (デフォルト値は\(10^4\))max_run
: 量子回路実行の上限回数 (デフォルト値は\(10^4\))
Differential type¶
Optimizerが勾配を求める際に使う、微分の求め方を指定します。(OptimizerのTypeによっては勾配を用いないものもあります。)
differential_type
: 数値微分NUMERICALまたは解析微分ANALYTICAL [Mit18]の選択。デフォルトではEXACT_SIMULATORのときNUMERICAL、SAMPLING_SIMULATORのときANALYTICALと自動で切り替わります。
参考文献:¶
[Mit18] “Quantum circuit learning”, K. Mitarai, M. Negoro, M. Kitagawa, and K. Fujii, Phys. Rev. A 98, 032309.
入力例¶
"optimizer": {
"type": "BFGS",
"ftol": 1e-06,
"gtol": 1e-06,
"max_iter": 100000,
"max_fev": 100000,
"max_run": 100000,
"differential_type": "ANALYTICAL",
}