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 ∣ρ⟩=UR∣0⟩|\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: ∣0⟩⊗n|0\rangle^{\otimes n}. Pro výchozí stav platí UR≡IU_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⟩=X0∣000⟩|001\rangle = X_0 |000\rangle.

V tomto případě je náš unitární operátor UR≡X0U_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 UR≡X2CNOT01H0∣000⟩U_{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á.