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.
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 , takže . 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 -qubitového kvantového Circuit: . Pro výchozí stav platí . 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 namísto výchozího stavu . Toto je příklad čistě klasického referenčního stavu a k jeho sestavení stačí aplikovat Gate X na qubit (v souladu s pořadím Qubitů v Qiskitu), protože .
V tomto případě je náš unitární operátor , což vede k referenčnímu stavu .
# 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")
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 .
Abychom tento stav získali z , jedním přístupem je použít Gate Hadamard na qubit (), Gate CNOT (CX) s Qubitem jako řídicím Qubitem a Qubitem jako cílovým Qubitem () a nakonec Gate aplikovaný na qubit ().
V tomto scénáři je náš unitární operátor a náš referenční stav je .
qc = QuantumCircuit(3)
qc.h(0)
qc.cx(0, 1)
qc.x(2)
qc.draw("mpl")
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")
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ů () 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")
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:
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á.