古典的な最適化手法
最適化手法とは?
Victoria Lipinska が、古典的な最適化手法とそれが VQE の一部としてどのように機能するかを説明します。
いくつかの最適化手法の例と、ノイズがある場合とない場合それぞれにおけるパフォーマンスについて学びます。
参考文献
以下の論文は上記の動画で参照されています。
- A Comparison of Various Classical Optimizers for a Variational Quantum Linear Solver, Pellow-Jarman, et al.
- The Variational Quantum Eigensolver: A review of methods and best practices, Tilly, et al.
- Quantum computational chemistry, McArdle, et al.
- Barren plateaus in quantum neural network training landscapes, McClean, et al.
- Connecting Ansatz Expressibility to Gradient Magnitudes and Barren Plateaus, Holmes, et al.
- Effect of barren plateaus on gradient-free optimization, Arrasmith, et al.
古典的な最適化手法のコーディング
前のレッスンでは、量子コンピュータで使用するのに適したハミルトニアンの作り方と、変分回路の作り方を学びました。また、変分回路(アンザッツ)には変化させるパラメータが含まれており、コスト関数またはエネルギーが最も低くなるパラメータの選択が最適であることも学びました。つまり、問題は最適なパラメータの組み合わせをパラメータ空間の中から探し出すことに帰着します。古典的な最適化手法については、優れた実装が複数のライブラリで提供されているため、自分で作り込む必要はほとんどありません。
このレッスンで学ぶ内容は以下の通りです:
- 古典的な最適化手法が VQE の計算においてどのような位置づけにあるか
- SciPy から利用できる古典的な最適化手法の種類
- SciPy からはまだ利用できない最適化手法と、当面
qiskit.algorithmsを使って補完する方法 - これらの最適化手法で利用できるオプションと、量子コンピューティングにおける意義
SciPy は、最適化を含む科学技術計算の多くの分野に関連するパッケージを備えた、無料のオープンソース Python ライブラリです。特に SciPy の最適化パッケージには minimize が含まれています:
from scipy.optimize import minimize
This minimize function has several arguments, but the most relevant arguments for quantum chemistry are:
- The cost function (
cost_func). This is related to the Hamiltonian, but also includes some complexities, such as determining the expectation value by using Estimator, and in the case of excited state calculations, might include orthogonality conditions. - An initial state (x0) for the system, often the Hartree Fock state
- Other arguments, including arguments of the cost function itself
- The method set to the classical optimizer you select
- Options for the classical optimizer (not to be confused with Session options discussed in the next section)
いくつかのサンプルコードを以下に示します。ここでの議論は最後の2つの引数に限定します。
cost_func,
x0,
args=(ansatz, hamiltonian, estimator),
method="cobyla",
options={"maxiter": 200})
SciPyには利用可能なすべての最小化メソッドに関するドキュメントがあります。以下は注目すべきいくつかの例で、いずれも1つ以上の変数のスカラー関数を最小化するためのメソッドです。
- cobyla:Constrained Optimization BY Linear Approximation (COBYLA) アルゴリズム。
- slsqp:Sequential Least Squares Programming (SLSQP)。
- nelder-mead Nelder-Meadアルゴリズム。
利用可能な古典的最適化アルゴリズムのほとんどは局所最小化法であり、さまざまな方法を用いて局所最小値を見つけますが、大域的最小値を見つけることは保証されません。一部の古典的な最適化手法は、明示的に勾配を推定し、それを用いて局所最小値を求めます。他の手法は、目的関数の逐次的な線形近似や二次近似を用いて最小値を求めることがあります。
これらのアルゴリズムには、微妙な違いはあるものの、いくつかの共通のオプションがあります。例えば、すべてのアルゴリズムには、上記の'maxiter': 200という表記を使用して最大反復回数を指定するオプションがあります。すべてに、関数値または変数値に基づく異なる停止基準を指定するオプションがありますが、これらの基準はアルゴリズムごとにわずかに異なります。例えばCOBYLAでは、「信頼領域」の下限となる許容誤差(例えば'tol': 0.0001)を指定できます。それに比べてSLSQPでは、停止基準に使用される関数の精度に関する目標('ftol')を指定できます。Nelder-Meadでは、連続するパラメータ()の推測値の差の許容誤差(xatol)、またはコスト関数について得られる連続する値の差の許容誤差(fatol)(あるいはその両方)を指定できます。
利用可能なアルゴリズムとオプションの完全なリストについては、SciPyのminimizeドキュメントを参照してください。