참조 상태
이 강의에서는 변분 알고리즘이 더 빠르게 수렴하도록 돕기 위해 참조 상태로 시스템을 초기화하는 방법을 살펴봅니다. 먼저 참조 상태를 수동으로 구성하는 방법을 배우고, 이어서 변분 알고리즘에서 사용할 수 있는 몇 가지 표준적인 선택지를 탐구합니다.
기본 상태
참조 상태는 우리 문제의 고정된 초기 시작 상태를 의미합니다. 참조 상태를 준비하려면 Quantum Circuit의 시작 부분에 적절한 비매개변수 유니타리 을 적용하여 이 되도록 해야 합니다. 만약 기존 최적해에서 얻은 유용한 추측이나 데이터 포인트가 있다면, 이를 시작점으로 사용할 때 변분 알고리즘이 더 빠르게 수렴할 가능성이 높습니다.
가장 간단한 참조 상태는 기본 상태로, -Qubit Quantum Circuit의 시작 상태인 을 사용합니다. 기본 상태의 경우 유니타리 연산자는 가 됩니다. 단순성 덕분에 기본 상태는 많은 상황에서 유효한 참조 상태로 사용됩니다.
고전적 참조 상태
세 개의 qubit 시스템이 있고, 기본 상태 대신 상태로 시작하고 싶다고 가정해 봅니다. 이는 순수하게 고전적인 참조 상태의 예이며, 이를 구성하려면 Qiskit의 qubit 순서 규칙에 따라 qubit 에 X gate를 적용하기만 하면 됩니다. 즉, 입니다.
이 경우 유니타리 연산자는 이며, 이는 참조 상태 로 이어집니다.
# Added by doQumentation — required packages for this notebook
!pip install -q qiskit
from qiskit import QuantumCircuit
qc = QuantumCircuit(3)
qc.x(0)
qc.draw("mpl")
양자 참조 상태
처럼 중첩 및/또는 얽힘을 포함하는 더 복잡한 상태에서 시작하려 한다고 가정해 봅니다.
에서 이 상태를 얻는 한 가지 방법은 qubit 에 Hadamard gate()를 적용하고, qubit 을 제어 Qubit으로 qubit 을 대상 Qubit으로 하는 CNOT (CX) gate()를 적용한 후, 마지막으로 qubit 에 gate()를 적용하는 것입니다.
이 경우 유니타리 연산자는 이고, 참조 상태는 입니다.
qc = QuantumCircuit(3)
qc.h(0)
qc.cx(0, 1)
qc.x(2)
qc.draw("mpl")
템플릿 Circuit을 사용한 참조 상태 구성
여러 조정 가능한 매개변수와 얽힘을 쉽게 표현할 수 있는 TwoLocal과 같은 다양한 템플릿 Circuit도 사용할 수 있습니다. 이러한 템플릿 Circuit은 다음 강의에서 더 자세히 다루지만, 매개변수를 바인딩하면 참조 상태로 사용할 수 있습니다.
from qiskit.circuit.library import TwoLocal
from math import pi
reference_circuit = TwoLocal(2, "rx", "cz", entanglement="linear", reps=1)
theta_list = [pi / 2, pi / 3, pi / 3, pi / 2]
reference_circuit = reference_circuit.assign_parameters(theta_list)
reference_circuit.decompose().draw("mpl")
응용 분야별 참조 상태
양자 기계 학습
변분 양자 분류기(VQC)의 맥락에서 훈련 데이터는 *특성 맵(feature map)*으로 알려진 매개변수화된 Circuit을 통해 양자 상태로 인코딩되며, 각 매개변수 값은 훈련 데이터셋의 데이터 포인트를 나타냅니다. zz_feature_map은 이 특성 맵에 데이터 포인트()를 전달하는 데 활용할 수 있는 매개변수화된 Circuit의 한 종류입니다.
from qiskit.circuit.library import zz_feature_map
data = [0.1, 0.2]
zz_feature_map_reference = zz_feature_map(feature_dimension=2, reps=2)
zz_feature_map_reference = zz_feature_map_reference.assign_parameters(data)
zz_feature_map_reference.decompose().draw("mpl")
요약
이 강의를 통해 다음을 이용해 시스템을 초기화하는 방법을 배웠습니다.
- 기본 참조 상태
- 고전적 참조 상태
- 양자 참조 상태
- 응용 분야별 참조 상태
고수준의 변분 워크로드는 다음과 같이 보입니다.
참조 상태는 고정된 초기 시작점이지만, *변분 형식(variational form)*을 사용하여 변분 알고리즘이 탐색할 매개변수화된 상태의 집합을 나타내는 ansatz를 정의할 수 있습니다.