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.
- 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.
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)
Some example code is shown below. We restrict our discussion here to the last two arguments.
cost_func,
x0,
args=(ansatz, hamiltonian, estimator),
method="cobyla",
options={"maxiter": 200})
SciPy obsahuje dokumentaci ke všem dostupným metodám minimize. Zde je několik pozoruhodných příkladů – všechny jsou metodami pro minimalizaci skalární funkce jedné nebo více proměnných:
- cobyla: Algoritmus COBYLA (Constrained Optimization BY Linear Approximation).
- slsqp: Sekvenční programování s nejmenšími čtverci (SLSQP).
- nelder-mead Algoritmus Nelder-Mead.
Většina dostupných algoritmů klasické optimalizace jsou lokální minimalizátory v tom smyslu, že pomocí různých metod hledají lokální minima, avšak není zaručeno, že najdou globální minima. Některé klasické optimalizátory explicitně odhadují gradienty a využívají je k nalezení lokálních minim. Jiné mohou pro hledání minim používat postupné lineární nebo kvadratické aproximace účelové funkce.
Tyto algoritmy mají několik společných možností nastavení, avšak s jemnými rozdíly. Například všechny umožňují zadat maximální počet iterací pomocí notace 'maxiter': 200 z výše uvedeného příkladu. Všechny mají nějakou možnost pro zadání jiného kritéria zastavení na základě hodnot funkcí nebo proměnných, přičemž tato kritéria se pro různé algoritmy mírně liší. COBYLA například umožňuje zadat toleranci (například 'tol': 0.0001), která představuje dolní mez tzv. „oblasti důvěry" (trust region). Oproti tomu SLSQP umožňuje zadat cílovou přesnost funkce použité v kritériu zastavení ('ftol'). Nelder-Mead umožňuje zadat toleranci rozdílu mezi po sobě jdoucími odhady parametrů () (xatol) nebo toleranci rozdílu mezi po sobě jdoucími hodnotami účelové funkce (fatol) (nebo obojí).
Pro úplný seznam dostupných algoritmů a možností nastavení navštiv dokumentaci SciPy minimize.