Referenzzustände
In dieser Lektion lernen wir, wie wir unser System mit einem Referenzzustand initialisieren können, um die Konvergenz unseres variationalen Algorithmus zu beschleunigen. Zunächst lernen wir, wie man einen Referenzzustand manuell konstruiert, und erkunden dann verschiedene Standardoptionen, die in einem variationalen Algorithmus verwendet werden können.
Standardzustand
Ein Referenzzustand bezeichnet den initialen, festen Ausgangspunkt für unser Problem. Um einen Referenzzustand vorzubereiten, müssen wir am Anfang unseres Quantencircuits den geeigneten, nicht-parametrisierten unitären Operator anwenden, sodass gilt. Wenn du eine fundierte Schätzung oder einen Datenpunkt aus einer bereits bekannten optimalen Lösung hast, wird der variationale Algorithmus wahrscheinlich schneller konvergieren, wenn du diesen als Ausgangspunkt verwendest.
Der einfachstmögliche Referenzzustand ist der Standardzustand, bei dem wir den Anfangszustand eines -Qubit-Quantencircuits verwenden: . Für den Standardzustand gilt . Aufgrund seiner Einfachheit ist der Standardzustand ein gültiger Referenzzustand, der in vielen Szenarien eingesetzt wird.
Klassischer Referenzzustand
Angenommen, du hast ein Drei-Qubit-System und möchtest im Zustand statt im Standardzustand starten. Dies ist ein Beispiel für einen rein klassischen Referenzzustand. Um ihn zu konstruieren, musst du lediglich ein X-Gate auf Qubit anwenden (gemäß Qiskits Qubit-Reihenfolge), da .
In diesem Fall ist unser unitärer Operator , was zum Referenzzustand führt.
# 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")
Quanten-Referenzzustand
Angenommen, du möchtest mit einem komplexeren Zustand beginnen, der Superposition und/oder Verschränkung beinhaltet, wie etwa .
Um diesen Zustand aus zu erhalten, kann man einen Hadamard-Gate auf Qubit (), ein CNOT (CX)-Gate mit Qubit als Kontroll-Qubit und Qubit als Ziel-Qubit () sowie schließlich ein -Gate auf Qubit () anwenden.
In diesem Szenario ist unser unitärer Operator , und unser Referenzzustand ist .
qc = QuantumCircuit(3)
qc.h(0)
qc.cx(0, 1)
qc.x(2)
qc.draw("mpl")
Referenzzustände mit Template-Circuits konstruieren
Wir können auch verschiedene Template-Circuits verwenden, wie etwa TwoLocal, das eine einfache Darstellung mehrerer abstimmbarer Parameter und Verschränkungen ermöglicht. Diese Template-Circuits werden wir in der nächsten Lektion ausführlicher behandeln, aber wir können sie für unsere Referenzzustände verwenden, sofern wir die Parameter binden:
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")
Anwendungsspezifische Referenzzustände
Quantenmaschinelles Lernen
Im Kontext eines variationalen Quanten-Klassifikators (VQC) werden die Trainingsdaten mit einem parametrisierten Circuit, der als Feature Map bezeichnet wird, in einen Quantenzustand kodiert. Dabei repräsentiert jeder Parameterwert einen Datenpunkt aus dem Trainingsdatensatz. Die zz_feature_map ist ein Typ von parametrisierten Circuits, der genutzt werden kann, um unsere Datenpunkte () an diese Feature Map zu übergeben.
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")
Zusammenfassung
In dieser Lektion hast du gelernt, wie du dein System mithilfe folgender Methoden initialisieren kannst:
- Standardreferenzzustand
- Klassische Referenzzustände
- Quanten-Referenzzustände
- Anwendungsspezifische Referenzzustände
Unser variationaler Arbeitsablauf auf hoher Ebene sieht wie folgt aus:
Während Referenzzustände feste Ausgangspunkte sind, können wir eine Variationsform verwenden, um einen Ansatz zu definieren, der eine Sammlung parametrisierter Zustände darstellt, die unser variationaler Algorithmus erkunden kann.