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
Tato funkce minimize má několik argumentů, ale pro kvantovou chemii jsou nejrelevantnější tyto:
- Účelová funkce (
cost_func). Souvisí s hamiltoniánem, ale zahrnuje i další složitosti, například určení střední hodnoty pomocí Estimatoru a v případě výpočtů excitovaných stavů může obsahovat podmínky ortogonality. - Počáteční stav (x0) systému, často Hartreeho-Fockův stav
- Další argumenty, včetně argumentů samotné účelové funkce
- Metoda (
method) nastavená na zvolený klasický optimalizátor - Možnosti nastavení klasického optimalizátoru (nezaměňovat s možnostmi Session, o kterých pojednává další část)
Níže je ukázka kódu. Naši diskuzi zde omezíme na poslední dva argumenty.
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.