Aller au contenu principal
Ce projet est en phase bêta. Tu as trouvé un bug ? Ouvrir un ticket GitHub. Une question ou une idée ? Pose ta question dans Discussions — tes retours sont les bienvenus !
Quelle est la qualité de la traduction sur cette page ?

É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.

Diagramme des options pour les états de référence, y compris l'état par défaut, spécifique à l'application, et quantique.

É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é URU_R au début de notre circuit quantique, de sorte que ∣ρ⟩=UR∣0⟩|\rho\rangle = U_R |0\rangle. 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 à nn qubits : ∣0⟩⊗n|0\rangle^{\otimes n}. Pour l'état par défaut, notre opérateur unitaire UR≡IU_R \equiv I. 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 ∣001⟩|001\rangle au lieu de l'état par défaut ∣000⟩|000\rangle. 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 00 (en suivant l'ordre des qubits de Qiskit), puisque ∣001⟩=X0∣000⟩|001\rangle = X_0 |000\rangle.

Dans ce cas, notre opérateur unitaire est UR≡X0U_R \equiv X_0, ce qui conduit à l'état de référence ∣ρ⟩≡∣001⟩|\rho\rangle \equiv |001\rangle.

# Added by doQumentation — installs the packages this notebook needs if they are missing
import importlib.util

_needed = {"qiskit": "qiskit"}
_missing = [pip for module, pip in _needed.items()
if importlib.util.find_spec(module) is None]
# One at a time, so a package that fails to install does not block the others
for _pip in _missing:
%pip install -q {_pip}
if not _missing:
print("\u2713 All required packages are installed")
from qiskit import QuantumCircuit

qc = QuantumCircuit(3)
qc.x(0)

qc.draw("mpl")

Sortie de la cellule de code précédente

É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 12(∣100⟩+∣111⟩)\frac{1}{\sqrt{2}}(|100\rangle+|111\rangle).

Pour obtenir cet état à partir de ∣000⟩|000\rangle, une approche consiste à utiliser une porte de Hadamard sur le qubit 00 (H0H_0), une porte CNOT (CX) avec le qubit 00 comme qubit de contrôle et le qubit 11 comme qubit cible (CNOT01CNOT_{01}), et enfin une porte XX appliquée au qubit 22 (X2X_2).

Dans ce scénario, notre opérateur unitaire est UR≡X2CNOT01H0∣000⟩U_{R} \equiv X_2CNOT_{01}H_0|000\rangle, et notre état de référence est ∣ρ⟩≡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")

Sortie de la cellule de code précédente

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

Sortie de la cellule de code précédente

É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 (xx) à 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")

Sortie de la cellule de code précédente

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

Vue d'ensemble de notre flux de travail variationnel :

Un diagramme de circuit d'un opérateur unitaire préparant un état de référence.

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.