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",
}