États de référence
Dans cette leçon, nous allons explorer comment nous pouvons initialiser notre système avec un état de référence pour aider notre algorithme variationnel à converger plus rapidement. Nous apprendrons d'abord à construire un état de référence manuellement, puis à explorer plusieurs options standard qui peuvent être utilisées dans un algorithme variationnel.
État par défaut
Un état de référence désigne le point de départ initial et fixe pour notre problème. Pour préparer un état de référence, nous devons appliquer l'unitaire non paramétrisé approprié au début de notre circuit quantique, de sorte que . Si tu disposes d'une estimation éclairée ou d'un point de données d'une solution optimale existante, l'algorithme variationnel convergera probablement plus vite si tu l'utilises comme point de départ.
L'état de référence le plus simple possible est l'état par défaut, où l'on utilise l'état initial d'un circuit quantique à qubits : . Pour l'état par défaut, notre opérateur unitaire . Du fait de sa simplicité, l'état par défaut est un état de référence valide utilisé dans de nombreux scénarios.
État de référence classique
Supposons que tu aies un système à trois qubits et que tu veuilles démarrer dans l'état au lieu de l'état par défaut . C'est un exemple d'état de référence purement classique, et pour le construire, il suffit d'appliquer une porte X au qubit (en suivant l'ordre des qubits de Qiskit), puisque .
Dans ce cas, notre opérateur unitaire est , ce qui conduit à l'état de référence .
# 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")
État de référence quantique
Supposons que tu souhaites démarrer avec un état plus complexe impliquant une superposition et/ou une intrication, comme .
Pour obtenir cet état à partir de , une approche consiste à utiliser une porte de Hadamard sur le qubit (), une porte CNOT (CX) avec le qubit comme qubit de contrôle et le qubit comme qubit cible (), et enfin une porte appliquée au qubit ().
Dans ce scénario, notre opérateur unitaire est , et notre état de référence est .
qc = QuantumCircuit(3)
qc.h(0)
qc.cx(0, 1)
qc.x(2)
qc.draw("mpl")
Construire des états de référence à l'aide de circuits modèles
Nous pouvons également utiliser divers circuits modèles, comme TwoLocal qui permet d'exprimer facilement de multiples paramètres réglables et des intrications. Nous couvrirons ces circuits modèles plus en détail dans la prochaine leçon, mais nous pouvons les utiliser pour nos états de référence si nous lions les paramètres :
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")
États de référence spécifiques à l'application
Apprentissage automatique quantique
Dans le contexte d'un classificateur quantique variationnel (VQC), les données d'entraînement sont encodées dans un état quantique avec un circuit paramétrisé connu sous le nom de feature map, où chaque valeur de paramètre représente un point de données de l'ensemble d'entraînement. La zz_feature_map est un type de circuit paramétrisé qui peut être utilisé pour passer nos points de données () à cette 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")
Résumé
Avec cette leçon, tu as appris à initialiser ton système en utilisant :
- L'état de référence par défaut
- Les états de référence classiques
- Les états de référence quantiques
- Les états de référence spécifiques à l'application
Notre charge de travail variationnelle de haut niveau se présente comme suit :
Tandis que les états de référence sont des points de départ initiaux fixes, nous pouvons utiliser une forme variationnelle pour définir un ansatz afin de représenter une collection d'états paramétrisés que notre algorithme variationnel explorera.