주 콘텐츠로 건너뛰기

Classical Optimizers

옵티마이저란 무엇인가요?

Victoria Lipinska가 고전 옵티마이저에 대해, 그리고 고전 옵티마이저가 VQE의 일부로서 어떻게 작동하는지에 대해 설명합니다.

몇 가지 옵티마이저 예시와 잡음이 있을 때와 없을 때 각각이 어떻게 동작하는지에 대해 듣게 됩니다.

참고 문헌

위의 영상에서 참고한 논문은 다음과 같습니다.

고전 옵티마이저 코딩하기

이전 레슨에서는 양자 컴퓨터에서 사용하기에 적합한 Hamiltonian을 만드는 방법과 변분 Circuit을 만드는 방법을 배웠습니다. 또한 변분 Circuit(또는 ansatz)에는 변화시킬 매개변수가 포함되어 있으며, 최적의 매개변수 선택이란 가능한 가장 낮은 비용 함수 혹은 에너지를 산출하는 것이라는 사실도 배웠습니다. 따라서 우리의 문제는 매개변수 공간에서 최적의 집합을 탐색하는 것으로 귀결됩니다. 고전 옵티마이저에 관한 작업은 대부분 이미 되어 있으며, 여러 출처에서 우수한 옵티마이저를 이용할 수 있습니다.

이 레슨에서는 다음 내용을 배웁니다.

  • 고전 옵티마이저가 VQE 계산에 어떻게 들어맞는지
  • SciPy에서 어떤 고전 옵티마이저를 사용할 수 있는지
  • SciPy를 통해 아직 사용할 수 없는 옵티마이저는 무엇이며, 그동안 qiskit.algorithms를 이용해 이를 어떻게 보완할 수 있는지
  • 이 옵티마이저들에서 어떤 옵션을 사용할 수 있으며, 양자 컴퓨팅에서 어떤 의의를 갖는지

SciPy는 최적화를 포함하여 과학 컴퓨팅의 여러 분야와 관련된 패키지를 갖춘 무료 오픈 소스 Python 라이브러리입니다. 특히, SciPy에는 minimize를 포함하는 최적화 패키지가 있습니다.

from scipy.optimize import minimize 이 minimize 함수에는 여러 인자가 있지만, 양자 화학에서 가장 관련성이 높은 인자는 다음과 같습니다:

  • 비용 함수(cost_func). 이는 해밀토니안과 관련되어 있지만, Estimator를 사용하여 기댓값을 결정하는 것과 같은 복잡성도 포함하며, 들뜬 상태 계산의 경우 직교성 조건을 포함할 수 있습니다.
  • 시스템의 초기 상태(x0), 보통 하트리-폭 상태
  • 비용 함수 자체의 인자를 포함한 기타 인자
  • 선택한 고전 최적화 알고리즘으로 설정된 메서드
  • 고전 최적화 알고리즘에 대한 옵션 (다음 섹션에서 논의되는 Session 옵션과 혼동하지 마세요)

아래에 예제 코드가 있습니다. 여기서는 마지막 두 인자에 대한 논의로 제한합니다.

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

SciPy는 사용 가능한 모든 minimize 메서드에 대한 문서를 제공합니다. 다음은 하나 이상의 변수를 가지는 스칼라 함수를 최소화하는 메서드 중 주목할 만한 몇 가지 예입니다.

  • cobyla: Optimization BY Linear Approximation (COBYLA) 알고리즘입니다.
  • slsqp: Sequential Least Squares Programming (SLSQP)입니다.
  • nelder-mead Nelder-Mead 알고리즘입니다.

사용 가능한 대부분의 고전 최적화 알고리즘은 국소 최소값을 찾는 다양한 방법을 사용하지만 전역 최소값을 찾는 것이 보장되지는 않는다는 점에서 국소 최소화기(local minimizer)에 해당합니다. 일부 고전 옵티마이저는 기울기를 명시적으로 추정하여 이를 이용해 국소 최소값을 찾습니다. 다른 옵티마이저들은 목적 함수의 연속적인 선형 또는 이차 근사를 사용하여 최소값을 찾기도 합니다.

이 알고리즘들은 공통적인 옵션을 여럿 가지지만, 미묘한 차이점이 있습니다. 예를 들어, 모두 위에서 보인 'maxiter': 200 표기법을 사용해 최대 반복 횟수를 지정할 수 있는 옵션을 가지고 있습니다. 또한 모두 함수 값이나 변수 값을 기준으로 다른 정지 기준을 지정할 수 있는 옵션을 가지고 있지만, 이 기준은 알고리즘마다 약간씩 다릅니다. 예를 들어 COBYLA는 "신뢰 영역(trust region)"의 하한에 해당하는 허용 오차(예: 'tol': 0.0001)를 지정할 수 있습니다. 이에 비해 SLSQP는 정지 기준에 사용되는 함수 정밀도의 목표('ftol')를 지정할 수 있습니다. Nelder-Mead는 연속된 매개변수(xx) 추정 사이의 차이에 대한 허용 오차(xatol), 또는 비용 함수 f(x)f(x)에 대해 연속적으로 얻은 값들 사이의 차이에 대한 허용 오차(fatol)를 지정하거나(또는 둘 다) 설정할 수 있습니다. 사용 가능한 알고리즘과 옵션의 전체 목록은 SciPy의 minimize 문서를 참조합니다.