Přeskočit na hlavní obsah

Referenční stavy

V této lekci prozkoumáme, jak můžeme inicializovat náš systém pomocí referenčního stavu, aby náš variační algoritmus konvergoval rychleji. Nejprve se naučíme, jak referenční stav sestavit ručně, a poté prozkoumáme několik standardních možností, které lze použít ve variačním algoritmu.

Diagram možností referenčních stavů zahrnující výchozí, aplikačně specifické a kvantové.

Výchozí stav

Referenční stav označuje pevný počáteční bod pro náš problém. Abychom připravili referenční stav, musíme na začátek našeho kvantového Circuit aplikovat odpovídající neparametrizovaný unitární operátor URU_R, takže ρ=UR0|\rho\rangle = U_R |0\rangle. Máš-li kvalifikovaný odhad nebo datový bod z existujícího optimálního řešení, variační algoritmus pravděpodobně konverguje rychleji, pokud jej použiješ jako výchozí bod.

Nejjednodušším možným referenčním stavem je výchozí stav, kde použijeme počáteční stav nn-qubitového kvantového Circuit: 0n|0\rangle^{\otimes n}. Pro výchozí stav platí URIU_R \equiv I. Díky své jednoduchosti je výchozí stav platným referenčním stavem používaným v mnoha scénářích.

Klasický referenční stav

Předpokládejme, že máš tříqubitový systém a chceš začít ve stavu 001|001\rangle namísto výchozího stavu 000|000\rangle. Toto je příklad čistě klasického referenčního stavu a k jeho sestavení stačí aplikovat Gate X na Qubit 00 (v souladu s pořadím Qubitů v Qiskitu), protože 001=X0000|001\rangle = X_0 |000\rangle.

V tomto případě je náš unitární operátor URX0U_R \equiv X_0, což vede k referenčnímu stavu ρ001|\rho\rangle \equiv |001\rangle.

# 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")

Výstup předchozí buňky kódu

Kvantový referenční stav

Předpokládejme, že chceš začít s komplexnějším stavem zahrnujícím superpozici nebo provázanost, například 12(100+111)\frac{1}{\sqrt{2}}(|100\rangle+|111\rangle).

Abychom tento stav získali z 000|000\rangle, jedním přístupem je použít Gate Hadamard na Qubit 00 (H0H_0), Gate CNOT (CX) s Qubitem 00 jako řídicím Qubitem a Qubitem 11 jako cílovým Qubitem (CNOT01CNOT_{01}) a nakonec Gate XX aplikovaný na Qubit 22 (X2X_2).

V tomto scénáři je náš unitární operátor URX2CNOT01H0000U_{R} \equiv X_2CNOT_{01}H_0|000\rangle a náš referenční stav je ρ12(100+111)|\rho\rangle \equiv \frac{1}{\sqrt{2}}(|100\rangle+|111\rangle).

qc = QuantumCircuit(3)
qc.h(0)
qc.cx(0, 1)
qc.x(2)

qc.draw("mpl")

Výstup předchozí buňky kódu

Sestavování referenčních stavů pomocí šablonových Circuit

Můžeme také použít různé šablonové Circuit, například TwoLocal, které umožňují snadné vyjádření více laditelných parametrů a provázaností. Těmito šablonovými Circuit se budeme podrobněji zabývat v příští lekci, ale lze je použít pro naše referenční stavy za předpokladu, že parametry navážeme:

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

Výstup předchozí buňky kódu

Aplikačně specifické referenční stavy

Kvantové strojové učení

V kontextu variačního kvantového klasifikátoru (VQC) jsou trénovací data zakódována do kvantového stavu pomocí parametrizovaného Circuit známého jako feature map, kde každá hodnota parametru představuje datový bod z trénovací datové sady. zz_feature_map je typ parametrizovaného Circuit, který lze využít k předání našich datových bodů (xx) do této feature map.

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

Výstup předchozí buňky kódu

Shrnutí

V této lekci ses naučil/a inicializovat svůj systém pomocí:

  • Výchozího referenčního stavu
  • Klasických referenčních stavů
  • Kvantových referenčních stavů
  • Aplikačně specifických referenčních stavů

Náš vysokoúrovňový variační pracovní tok vypadá takto:

Diagram Circuit s unitárním operátorem připravujícím referenční stav.

Zatímco referenční stavy jsou pevnými, počátečními body, můžeme použít variační formu k definování ansatzu, který reprezentuje kolekci parametrizovaných stavů, které náš variační algoritmus prozkoumá.