Mga Classical Optimizer
Ano ang optimizer?
Ikinukwento ni Victoria Lipinska ang tungkol sa mga classical optimizer at kung paano sila gumaganap bilang bahagi ng VQE.
Maririnig mo ang tungkol sa ilang halimbawa ng mga optimizer at kung paano sila gumaganap sa presensya at kawalan ng ingay (noise).
Mga Sanggunian
Ang mga sumusunod na artikulo ay binanggit sa video sa itaas.
- 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.
Pag-code ng isang classical optimizer
Sa mga nakaraang aralin, natuto ka kung paano gumawa ng Hamiltonian na angkop para gamitin sa quantum computer at kung paano gumawa ng variational circuit. Natutunan mo rin na ang variational circuit (o ansatz) ay naglalaman ng mga parameter na kailangang baguhin, at ang pinakamainam na pagpili ng mga parameter ay ang anumang nagbubunga ng pinakamababang posibleng cost function o enerhiya. Kaya naman, ang ating problema ay naibaba na sa paghahanap ng pinakamainam na hanay ng mga parameter sa parameter space. Karamihan sa trabaho ng mga classical optimizer ay nagawa na para sa atin, dahil may mga napakahusay na optimizer na mula sa iba't ibang pinagkukunan.
Sa araling ito matututunan mo:
- Kung paano ang mga classical optimizer ay akma sa isang VQE na kalkulasyon
- Kung anong mga classical optimizer ang available mula sa SciPy
- Kung anong mga optimizer ang hindi pa available sa SciPy at kung paano dagdagan habang naghihintay gamit ang
qiskit.algorithms - Kung anong mga opsyon ang available para sa mga optimizer na ito at ang kahalagahan nito para sa quantum computing
Ang SciPy ay isang libre at open-source na Python library na may mga pakete na may kaugnayan sa maraming larangan ng siyentipikong computing, kasama na ang optimization. Sa partikular, ang SciPy ay may optimization package na kinabibilangan ng 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)
May kasamang halimbawang code sa ibaba. Ihihigpit natin ang ating talakayan dito sa huling dalawang argumento.
cost_func,
x0,
args=(ansatz, hamiltonian, estimator),
method="cobyla",
options={"maxiter": 200})
May dokumentasyon ang SciPy sa lahat ng available minimize methods. Narito ang ilang kapansin-pansing halimbawa, na lahat ay mga method para sa pag-minimize ng scalar function ng isa o higit pang mga variable:
- cobyla: Optimization BY Linear Approximation (COBYLA) algorithm.
- slsqp: Sequential Least Squares Programming (SLSQP).
- nelder-mead Nelder-Mead algorithm.
Karamihan sa mga available na classical optimization algorithms ay local minimizers, ibig sabihin gumagamit sila ng iba't ibang mga paraan upang mahanap ang local minima, ngunit hindi sila garantisadong makakahanap ng global minima. Ang ilang classical optimizers ay tahasang nagtatantiya ng gradients at ginagamit ang mga ito upang makahanap ng local minima. Ang iba naman ay maaaring gumamit ng successive linear o quadratic approximations ng objective function upang makahanap ng minima.
Ang mga algorithm na ito ay may ilang common options, ngunit may banayad na pagkakaiba. Halimbawa, lahat ay may option na tukuyin ang maximum na bilang ng iterations gamit ang notation na 'maxiter': 200 mula sa itaas. Lahat ay may ilang option na tumutukoy sa ibang stopping criterion batay sa function o variable values, bagama't bahagyang naiiba ang mga criterion na ito para sa iba't ibang algorithm. Ang COBYLA, halimbawa, ay nagbibigay-daan sa iyo upang tukuyin ang isang tolerance (halimbawa, 'tol': 0.0001) na siyang lower bound sa isang "trust region". Sa paghahambing, pinapahintulutan ka ng SLSQP na tukuyin ang isang goal sa precision ng function na ginagamit sa stopping criterion ('ftol'). Pinapahintulutan naman ng Nelder-Mead na tukuyin ang isang tolerance sa pagkakaiba sa pagitan ng successive na mga hula sa parameter () (xatol) o isang tolerance sa pagkakaiba sa pagitan ng successive na mga value na nakuha para sa cost function (fatol) (o pareho).
Para sa kumpletong listahan ng mga available na algorithm at options, bisitahin ang SciPy's minimize documentation.