Stări de referință
În această lecție, vom explora cum putem inițializa sistemul nostru cu o stare de referință pentru a ajuta algoritmul nostru variațional să conveargă mai rapid. Mai întâi, vom învăța cum să construim o stare de referință manual, iar apoi vom explora câteva opțiuni standard care pot fi utilizate într-un algoritm variațional.
Starea implicită
O stare de referință se referă la punctul de plecare inițial și fix pentru problema noastră. Pentru a pregăti o stare de referință, trebuie să aplicăm unitara corespunzătoare, neparametrizată la începutul circuitului nostru cuantic, astfel încât . Dacă ai o ipoteză educată sau un punct de date dintr-o soluție optimă existentă, algoritmul variațional va converge probabil mai rapid dacă îl folosești ca punct de plecare.
Cea mai simplă stare de referință posibilă este starea implicită, unde folosim starea de start a unui circuit cuantic cu qubiți: . Pentru starea implicită, operatorul nostru unitar este . Datorită simplității sale, starea implicită este o stare de referință validă utilizată în multe scenarii.
Stare de referință clasică
Presupune că ai un sistem cu trei qubiți și dorești să pornești din starea în loc de starea implicită . Acesta este un exemplu de stare de referință pur clasică, iar pentru a o construi, trebuie pur și simplu să aplici un X gate qubitului (urmând ordinea qubiților din Qiskit), deoarece .
În acest caz, operatorul nostru unitar este , ceea ce duce la starea de referință .
# 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")
Stare de referință cuantică
Presupune că dorești să pornești cu o stare mai complexă care implică superpoziție și/sau entanglement, precum .
Pentru a obține această stare din , o abordare este să folosești un Hadamard gate pe qubit (), un gate CNOT (CX) cu qubit ca qubit de control și qubit ca qubit țintă (), și în final un gate aplicat qubitului ().
În acest scenariu, operatorul nostru unitar este , iar starea noastră de referință este .
qc = QuantumCircuit(3)
qc.h(0)
qc.cx(0, 1)
qc.x(2)
qc.draw("mpl")
Construirea stărilor de referință folosind circuite șablon
Putem utiliza, de asemenea, diverse circuite șablon, cum ar fi TwoLocal, care permite exprimarea cu ușurință a mai multor parametri reglabili și a entanglement-urilor. Vom acoperi aceste circuite șablon în detaliu în lecția următoare, dar le putem folosi pentru stările noastre de referință dacă legăm parametrii:
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")
Stări de referință specifice aplicației
Învățare automată cuantică
În contextul unui clasificator cuantic variațional (VQC), datele de antrenament sunt codificate într-o stare cuantică printr-un circuit parametrizat cunoscut ca hartă de caracteristici (feature map), unde fiecare valoare a parametrului reprezintă un punct de date din setul de date de antrenament. zz_feature_map este un tip de circuit parametrizat care poate fi utilizat pentru a transmite punctele noastre de date () acestei hărți de caracteristici.
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")
Rezumat
Cu această lecție, ai învățat cum să îți inițializezi sistemul folosind:
- Starea de referință implicită
- Stări de referință clasice
- Stări de referință cuantice
- Stări de referință specifice aplicației
Fluxul nostru variațional de nivel înalt arată astfel:
În timp ce stările de referință sunt puncte de plecare fixe și inițiale, putem utiliza o formă variațională pentru a defini un ansatz care să reprezinte o colecție de stări parametrizate pe care algoritmul nostru variațional să le exploreze.