Lumaktaw sa pangunahing nilalaman

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.

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)

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})

Ang SciPy ay may dokumentasyon sa lahat ng available na minimize method. Narito ang ilang kapansin-pansing halimbawa, lahat ng ito ay mga pamamaraan para sa pag-minimize ng isang scalar function ng isa o higit pang 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 algorithm ay mga lokal na minimizer, dahil gumagamit sila ng iba't ibang pamamaraan para mahanap ang mga lokal na minimum, ngunit hindi sila garantisadong makakahanap ng mga global na minimum. Ang ilang classical optimizer ay hayagang tinatantya ang mga gradient at ginagamit ang mga ito para mahanap ang mga lokal na minimum. Ang iba ay maaaring gumamit ng magkakasunod na linear o quadratic na pagtatantya ng objective function para mahanap ang mga minimum.

Ang mga algorithm na ito ay may ilang karaniwang opsyon, ngunit may maliliit na pagkakaiba. Halimbawa, lahat ay may opsyon na tukuyin ang pinakamataas na bilang ng mga iteration gamit ang 'maxiter': 200 na notasyon mula sa itaas. Lahat ay may ilang opsyon na tumutukoy ng ibang pamantayan sa pagtigil batay sa mga halaga ng function o variable, kahit na bahagyang magkaiba ang mga pamantayang ito para sa iba't ibang algorithm. Ang COBYLA, halimbawa, ay nagpapahintulot sa iyo na tukuyin ang isang tolerance (halimbawa, 'tol': 0.0001) na siyang lower bound ng isang "trust region". Sa paghahambing, ang SLSQP ay nagpapahintulot sa iyo na tukuyin ang isang layunin sa katumpakan ng function na ginagamit sa pamantayan ng pagtigil ('ftol'). Ang Nelder-Mead ay nagpapahintulot sa iyo na tukuyin ang isang tolerance sa pagkakaiba ng magkakasunod na mga hula ng parameter (xx) (xatol) o isang tolerance sa pagkakaiba ng magkakasunod na mga halagang nakuha para sa cost function f(x)f(x) (fatol) (o pareho). Para sa kumpletong listahan ng mga available na algorithm at opsyon, bisitahin ang dokumentasyon ng SciPy's minimize.