Přeskočit na hlavní obsah

Klasické optimalizátory

Co je to optimalizátor?​

Victoria Lipinska nám vysvětluje klasické optimalizátory a to, jak fungují jako součást VQE.

Dozvíš se o několika příkladech optimalizátorů a o tom, jak si vedou v přítomnosti i nepřítomnosti šumu.

Reference​

Následující články jsou zmíněny ve výše uvedeném videu.

Kódování klasického optimalizátoru​

V předchozích lekcích ses naučil/a sestavit hamiltonián vhodný pro použití na kvantovém počítači a jak vytvořit variační Circuit. Také ses dozvěděl/a, že variační Circuit (nebo ansatz) obsahuje parametry, které je třeba měnit, a že optimální volba parametrů je taková, která přináší nejnižší možnou hodnotu účelové funkce nebo energie. Náš problém se tedy redukuje na prohledávání prostoru parametrů za účelem nalezení optimální sady. Velká část práce s klasickými optimalizátory je za nás již hotová, protože výborné optimalizátory jsou dostupné z několika zdrojů.

V této lekci se dozvíš:

  • Jak klasické optimalizátory zapadají do výpočtu VQE
  • Jaké klasické optimalizátory jsou dostupné ze SciPy
  • Jaké optimalizátory zatím nejsou dostupné přes SciPy a jak je mezitím doplnit pomocí qiskit.algorithms
  • Jaké možnosti nastavení jsou pro tyto optimalizátory k dispozici a jaký mají význam pro kvantové výpočty

SciPy je bezplatná open-source Python knihovna s balíčky relevantními pro mnoho oblastí vědeckého výpočetnictví, včetně optimalizace. Konkrétně SciPy obsahuje optimalizační balíček zahrnující funkci 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)

Níže je uveden ukázkový kód. Zde omezíme naši diskuzi na poslední dva argumenty.

cost_func,
x0,
args=(ansatz, hamiltonian, estimator),
method="cobyla",
options={"maxiter": 200})

SciPy má dokumentaci ke všem dostupným metodám minimalizace. Zde je několik pozoruhodných příkladů, přičemž všechny jsou metody pro minimalizaci skalární funkce jedné nebo více proměnných:

  • cobyla: algoritmus Optimization BY Linear Approximation (COBYLA).
  • slsqp: Sequential Least Squares Programming (SLSQP).
  • nelder-mead algoritmus Nelder-Mead.

Většina dostupných klasických optimalizačních algoritmů jsou lokální minimalizátory, protože používají různé metody k nalezení lokálních minim, ale nemají zaručeno nalezení globálních minim. Některé klasické optimalizátory explicitně odhadují gradienty a používají je k nalezení lokálních minim. Jiné mohou používat postupné lineární nebo kvadratické aproximace účelové funkce k nalezení minim.

Tyto algoritmy mají několik společných možností, ale s jemnými rozdíly. Například všechny mají možnost specifikovat maximální počet iterací pomocí notace 'maxiter': 200 uvedené výše. Všechny mají nějakou možnost specifikace jiného kritéria zastavení založeného na hodnotách funkce nebo proměnných, ačkoli tato kritéria se u různých algoritmů mírně liší. COBYLA například umožňuje specifikovat toleranci (například 'tol': 0.0001), která je dolní mezí „důvěryhodné oblasti“ (trust region). Naproti tomu SLSQP ti umožňuje specifikovat cíl v přesnosti funkce použité v kritériu zastavení ('ftol'). Nelder-Mead ti umožňuje specifikovat toleranci v rozdílu mezi po sobě jdoucími odhady parametrů (xx) (xatol) nebo toleranci v rozdílu mezi po sobě jdoucími hodnotami účelové funkce f(x)f(x) (fatol) (nebo obojí). Úplný seznam dostupných algoritmů a možností najdeš v dokumentaci k funkci minimize v SciPy.