Aller au contenu principal

Diagonalisation quantique par échantillonnage (SQD)

La diagonalisation quantique par échantillonnage (SQD, de l'anglais Sample-based Quantum Diagonalization) combine l'algèbre linéaire classique et la puissance de l'informatique quantique pour diagonaliser un hamiltonien (matrice) et calculer ses valeurs propres et vecteurs propres. La diagonalisation de matrices est une opération mathématique importante, car de nombreux problèmes en science, en calcul et en optimisation y font appel.

La vidéo ci-dessous donne une vue d'ensemble de SQD, de ce qui détermine son utilité et de ce qui le rend plus rapide que de nombreuses autres approches. Le texte qui suit entre dans les détails.

1. Introduction et motivation

Prenons comme exemple l'équation aux valeurs propres d'énergie rendue célèbre par Schrödinger.

Hψ=EψH \vert \psi \rangle = E \vert \psi \rangle

HH est l'hamiltonien d'un système, ψ|\psi\rangle est la fonction d'onde (également appelée état propre) et EE est une valeur propre. Les valeurs propres de la matrice HH représentent les niveaux d'énergie du système. Par exemple, si le système est une molécule, la valeur propre la plus basse représente l'énergie de l'état fondamental de la molécule. Dans de nombreux problèmes, on s'intéresse à l'estimation de l'énergie de l'état fondamental.

En appliquant des techniques de diagonalisation exacte issues de l'algèbre linéaire, on peut diagonaliser la matrice HH complète. Cependant, cette approche devient coûteuse en calcul (voire impossible) à mesure que la matrice grandit. Par exemple, même pour de petites molécules chimiques, HH peut être d'une taille prohibitive (par exemple, le hamiltonien de la molécule N2N_2 avec une base cc-PVDZ a une dimension de 65780×65780).65780 \times 65780).

Heureusement, on n'a pas toujours besoin de toutes les valeurs propres et de tous les vecteurs propres d'un hamiltonien HH, et donc, la diagonalisation de la matrice complète n'est pas nécessaire dans de nombreux cas pratiques. Par exemple, pour l'estimation de l'état fondamental, on s'intéresse à la valeur propre la plus basse et au vecteur propre correspondant. Cela nous permet d'appliquer le concept de projection sur un sous-espace (utile).

Considère une matrice N×NN \times N, HH, où l'espace vectoriel complet (espace de Hilbert) a une dimension NN (NN est grand). Ensuite, on sélectionne un sous-espace (S\mathcal{S}) — qui est un sous-ensemble de l'espace de Hilbert complet — de dimension MM, où MM est suffisamment petit. Après avoir projeté HH sur ce sous-espace, la matrice projetée (appelons-la HSH_\mathcal{S}) sera plus petite (M×MM \times M). Le HSH_\mathcal{S} plus petit peut être diagonalisé à l'aide d'une méthode numérique classique appropriée, et générer des valeurs propres et des vecteurs propres pour ce sous-espace.

Remarque : le sous-espace doit être dans le support de notre état cible (par exemple, l'état fondamental). En d'autres termes, le hamiltonien projeté HSH_\mathcal{S} doit être dans un sous-espace qui inclut la valeur propre la plus basse.

2. Projection et diagonalisation

Supposons qu'on veuille trouver la valeur propre la plus basse et le vecteur propre correspondant pour le hamiltonien 8×88 \times 8 suivant HH.

H=[0.22350.03900.10350.08180.17460.10910.11650.01040.03900.66210.07060.19640.07820.26190.10950.00290.10350.07060.99610.17240.10670.22990.18170.15710.08180.19640.17240.17730.10190.47780.12720.04140.17460.07820.10670.10190.14180.13590.17930.07660.10910.26190.22990.47780.13590.10140.16960.05520.11650.10950.18170.12720.17930.16960.42270.27020.01040.00290.15710.04140.07660.05520.27020.4456]H = \begin{bmatrix} 0.2235 & -0.0390 & -0.1035 & -0.0818 & 0.1746 & 0.1091 & 0.1165 & -0.0104 \\ -0.0390 & 0.6621 & 0.0706 & -0.1964 & -0.0782 & 0.2619 & 0.1095 & 0.0029 \\ -0.1035 & 0.0706 & 0.9961 & 0.1724 & 0.1067 & -0.2299 & -0.1817 & 0.1571 \\ -0.0818 & -0.1964 & 0.1724 & -0.1773 & 0.1019 & -0.4778 & -0.1272 & -0.0414 \\ 0.1746 & -0.0782 & 0.1067 & 0.1019 & 0.1418 & -0.1359 & -0.1793 & -0.0766 \\ 0.1091 & 0.2619 & -0.2299 & -0.4778 & -0.1359 & 0.1014 & 0.1696 & 0.0552 \\ 0.1165 & 0.1095 & -0.1817 & -0.1272 & -0.1793 & 0.1696 & 0.4227 & 0.2702 \\ -0.0104 & 0.0029 & 0.1571 & -0.0414 & -0.0766 & 0.0552 & 0.2702 & 0.4456 \\ \end{bmatrix}

On va diagonaliser la matrice complète ainsi que différentes versions projetées (HSH_\mathcal{S}) pour différents sous-espaces afin de démontrer la scalabilité et l'importance du choix du sous-espace.

L'énergie de l'état fondamental (valeur propre minimale) de la matrice HH est 0.5357-0.5357 et la fonction d'onde exacte de l'état fondamental (vecteur propre) est :

GSexact=0.8011+0.6101.\text{GS}_{\text{exact}} = 0.8 * |011\rangle + 0.6 * |101\rangle.

c'est-à-dire que l'état fondamental de la matrice est engendré par deux états de base computationnels (vecteurs) 011\vert 011 \rangle et 101\vert 101 \rangle.

# Added by doQumentation — required packages for this notebook
!pip install -q numpy scipy
import numpy as np
from scipy.linalg import eigh

np.set_printoptions(precision=4, sign="-", suppress=True, linewidth=100)

H = np.array(
[
[0.2235, -0.039, -0.1035, -0.0818, 0.1746, 0.1091, 0.1165, -0.0104],
[-0.0390, 0.6621, 0.0706, -0.1964, -0.0782, 0.2619, 0.1095, 0.0029],
[-0.1035, 0.0706, 0.9961, 0.1724, 0.1067, -0.2299, -0.1817, 0.1571],
[-0.0818, -0.1964, 0.1724, -0.1773, 0.1019, -0.4778, -0.1272, -0.0414],
[0.1746, -0.0782, 0.1067, 0.1019, 0.1418, -0.1359, -0.1793, -0.0766],
[0.1091, 0.2619, -0.2299, -0.4778, -0.1359, 0.1014, 0.1696, 0.0552],
[0.1165, 0.1095, -0.1817, -0.1272, -0.1793, 0.1696, 0.4227, 0.2702],
[-0.0104, 0.0029, 0.1571, -0.0414, -0.0766, 0.0552, 0.2702, 0.4456],
]
)
eigvals, eigvecs = eigh(H)

print("Eigenvalues:")
print(eigvals)
print(f"Minimum eigenvalue: {eigvals.min()}")

print("\nEigenvectors (columns represent vectors):")
print(eigvecs)
print("\nEigenvector for the minimum eigenvalue (ground state)")
print(eigvecs[:, np.argmin(eigvals)])
Eigenvalues:
[-0.5357 -0.1321 0.1049 0.1258 0.3616 0.6405 0.947 1.3039]
Minimum eigenvalue: -0.5356560029438817

Eigenvectors (columns represent vectors):
[[-0. -0.5612 0.098 -0.0024 0.8051 -0.0806 0.0643 0.1288]
[-0. -0.1403 -0.1985 -0.4249 -0.0092 0.585 -0.5952 0.2526]
[ 0. 0.0416 0.3041 0.2122 0.1509 -0.0139 -0.5794 -0.7086]
[ 0.8 -0.1936 -0.0127 -0.4376 -0.1081 -0.0838 0.1557 -0.2966]
[ 0. 0.6716 -0.3535 -0.2552 0.5395 0.0954 0.1449 -0.1941]
[ 0.6 0.258 0.017 0.5834 0.1441 0.1118 -0.2076 0.3954]
[ 0. 0.3088 0.5504 -0.4197 0.0626 -0.468 -0.2625 0.3657]
[-0. -0.1146 -0.6559 0.0356 -0.0394 -0.6352 -0.3856 0.0418]]

Eigenvector for the minimum eigenvalue (ground state)
[-0. -0. 0. 0.8 0. 0.6 0. -0. ]

Ensuite, on va projeter la matrice HH sur différents sous-espaces et vérifier si on peut obtenir l'état fondamental exact. En particulier, on va projeter la matrice sur un sous-espace engendré par :

  1. les vecteurs de l'état fondamental exact (011\vert 011 \rangle et 101\vert 101 \rangle).
  2. des vecteurs qui excluent certains ou tous les vecteurs de l'état fondamental exact (par exemple, 000\vert 000 \rangle, 011\vert 011 \rangle et 110\vert 110 \rangle).
  3. des vecteurs qui incluent à la fois l'état fondamental exact et des états hors de l'état fondamental (mais pas tous les vecteurs possibles dans l'espace de Hilbert).

2.1 Cas 1 : le sous-espace inclut l'état fondamental

Supposons qu'on veuille projeter HH dans un sous-espace (S\mathcal{S}) engendré par deux vecteurs x1=011x_1 = |011\rangle et x2=101x_2 = |101\rangle. Le hamiltonien projeté est défini par :

HS=[x1Hx1x1Hx2x2Hx1x2Hx2]H_\mathcal{S} = \begin{bmatrix} \langle x1 | H | x1 \rangle & \langle x1 | H | x2 \rangle \\ \langle x2 | H | x1 \rangle & \langle x2 | H | x2 \rangle \end{bmatrix}
x1 = np.zeros(8)
x1[3] = 1 # binary 011 is 3 in decimal. |011> = |3> = [0,0,0,1,0,0,0,0]

x2 = np.zeros(8)
x2[5] = 1 # binary 101 is 5 in decimal

Hs = np.array([[x1 @ H @ x1.T, x1 @ H @ x2.T], [x2 @ H @ x1.T, x2 @ H @ x2.T]])
print(Hs)
[[-0.1773 -0.4778]
[-0.4778 0.1014]]
eigvals, eigvecs = eigh(Hs)
print(f"Minimum eigenvalue: {eigvals.min()}")
print(f"Eigenvector for minimum eigenvalue: {eigvecs[:,np.argmin(eigvals)]}")
Minimum eigenvalue: -0.535656000064295
Eigenvector for minimum eigenvalue: [-0.8 -0.6]

On peut faire plusieurs observations clés ici.

  • Comme on a engendré le sous-espace avec deux vecteurs, la dimension de la matrice projetée (HSH_\mathcal{S}) est 2×22 \times 2, ce qui est plus petit que la matrice complète HH (8×88 \times 8).
  • La valeur propre minimale de la matrice projetée correspond à la valeur propre de l'état fondamental exact.
  • Les valeurs dans la variable eigvecs désignent l'amplitude des vecteurs générateurs du sous-espace, et à l'aide de celles-ci on peut reconstruire l'état propre (état fondamental). Dans ce cas, on obtient l'état fondamental exact (à une phase globale près) :
ψ=(0.8011+0.6101)|\psi \rangle = - (0.8 |011\rangle + 0.6 |101\rangle)

2.2 Cas 2 : le sous-espace exclut certains ou tous les vecteurs de l'état fondamental

Ensuite, on projette HH sur un sous-espace engendré par trois vecteurs x1=000x_1 = |000\rangle, x2=011x_2 = |011\rangle et x3=110x_3 = |110\rangle. On choisit délibérément les vecteurs de manière à exclure un vecteur de l'état fondamental (101\vert 101 \rangle). Le hamiltonien projeté est défini par :

HS=[x1Hx1x1Hx2x1Hx3x2Hx1x2Hx2x2Hx3x3Hx1x3Hx2x3Hx3]H_\mathcal{S} = \begin{bmatrix} \langle x1 | H | x1 \rangle & \langle x1 | H | x2 \rangle & \langle x1 | H | x3 \rangle\\ \langle x2 | H | x1 \rangle & \langle x2 | H | x2 \rangle & \langle x2 | H | x3 \rangle \\ \langle x3 | H | x1 \rangle & \langle x3 | H | x2 \rangle & \langle x3 | H | x3 \rangle \\ \end{bmatrix}
x1 = np.zeros(8)
x1[0] = 1

x2 = np.zeros(8)
x2[3] = 1

x3 = np.zeros(8)
x3[6] = 1

Hs = np.array(
[
[x1 @ H @ x1.T, x1 @ H @ x2.T, x1 @ H @ x3.T],
[x2 @ H @ x1.T, x2 @ H @ x2.T, x2 @ H @ x3.T],
[x3 @ H @ x1.T, x3 @ H @ x2.T, x3 @ H @ x3.T],
]
)
print(Hs)
[[ 0.2235 -0.0818  0.1165]
[-0.0818 -0.1773 -0.1272]
[ 0.1165 -0.1272 0.4227]]
eigvals, eigvecs = eigh(Hs)
print(f"Minimum eigenvalue: {eigvals.min()}")
Minimum eigenvalue: -0.21108858736702252

La valeur propre 0.2111-0.2111 dans ce cas ne correspond pas à la valeur propre minimale 0.5357-0.5357 du hamiltonien complet. L'observation clé ici est la suivante : si on projette sur un sous-espace qui exclut des états de base figurant dans notre état cible (fondamental) — partiellement ou complètement — l'état fondamental estimé sera différent de l'état exact.

2.3 Cas 3 : le sous-espace inclut à la fois des vecteurs de l'état fondamental et des vecteurs hors état fondamental

Ensuite, on montre un cas où le sous-espace est engendré par des vecteurs qui incluent les vecteurs de l'état fondamental exact ainsi que des vecteurs indésirables. Supposons que notre sous-espace soit engendré par x1=011x_1 = |011\rangle, x2=101x_2 = |101\rangle (présents dans l'état fondamental exact) et x3=111x_3 = |111\rangle (absent dans l'état fondamental exact).

x1 = np.zeros(8)
x1[3] = 1

x2 = np.zeros(8)
x2[5] = 1

x3 = np.zeros(8)
x3[7] = 1

Hs = np.array(
[
[x1 @ H @ x1.T, x1 @ H @ x2.T, x1 @ H @ x3.T],
[x2 @ H @ x1.T, x2 @ H @ x2.T, x2 @ H @ x3.T],
[x3 @ H @ x1.T, x3 @ H @ x2.T, x3 @ H @ x3.T],
]
)
print(Hs)
[[-0.1773 -0.4778 -0.0414]
[-0.4778 0.1014 0.0552]
[-0.0414 0.0552 0.4456]]
eigvals, eigvecs = eigh(Hs)
print(f"Minimum eigenvalue: {eigvals.min()}")
print(f"Eigenvector for minimum eigenvalue: {eigvecs[:,np.argmin(eigvals)]}")
Minimum eigenvalue: -0.53565600006461
Eigenvector for minimum eigenvalue: [ 0.8 0.6 -0. ]

Dans ce cas, on obtient à nouveau 0.5357-0.5357 comme valeur propre minimale, ce qui correspond à la matrice complète (c'est-à-dire l'état fondamental exact). Un autre résultat intéressant est l'amplitude de x3x_3 retournée par le processus de projection et de diagonalisation. L'amplitude est 00, et lorsqu'on reconstruit la fonction d'onde (état propre) avec les amplitudes et vecteurs calculés, on obtient :

ψ=0.8011+0.6101+0.0111=0.8011+0.6101(eˊtat fondamental exact)\vert \psi \rangle = 0.8 |011\rangle + 0.6 |101\rangle + 0.0 |111\rangle = 0.8 |011\rangle + 0.6 |101\rangle \left( \text{état fondamental exact} \right)

Ainsi, même si notre sous-espace inclut des vecteurs non cibles (avec l'ensemble complet des vecteurs cibles), on peut calculer la valeur propre et l'état propre corrects car le processus de projection et de diagonalisation filtre les vecteurs non cibles en fixant leurs amplitudes à 00. Cette propriété de SQD confère une tolérance intrinsèque au bruit.

3. Rôle du quantique dans SQD

Les analyses ci-dessus établissent l'importance des vecteurs générateurs du sous-espace, qui doivent être dans le support de l'état cible. Cela soulève une question importante : Comment choisir des vecteurs ayant le support de l'état fondamental pour la construction du sous-espace ?

C'est là qu'interviennent les ordinateurs quantiques. La synergie quantique-classique fonctionne comme suit dans le paradigme SQD :

  1. À l'aide d'un circuit quantique approprié, on essaie de préparer un état sur un ordinateur quantique qui générera des états de base sur lesquels la fonction d'onde cible (par exemple, l'état fondamental) a un support significatif. Les états de base échantillonnés (chaînes de bits) vont engendrer le sous-espace pour la projection du hamiltonien.
  2. Un ordinateur classique projette le hamiltonien sur le sous-espace (engendré par les échantillons/vecteurs issus de l'ordinateur quantique) et le diagonalise pour calculer les valeurs propres et les vecteurs propres à l'aide de méthodes numériques appropriées. Un diagramme des composantes quantique et classique de SQD. En quantique, tu prépares et échantillonnes à partir de ton support cible ; classiquement, tu projettes ta matrice sur le sous-espace échantillonné et tu diagonalises ta matrice projetée. Il peut y avoir plusieurs façons de préparer un tel état quantique, et elles peuvent être variationnelles ou non variationnelles selon le problème.

Dans les deux prochaines leçons, on montrera deux exemples spécifiques de préparation d'états et d'échantillonnage à partir de ceux-ci.

  1. Dans la leçon 4, on utilisera un ansatz LUCJ (couplage unitaire local de Jastrow) paramétré pour générer des échantillons pour un problème de chimie (estimation de l'énergie de l'état fondamental de la molécule N2N_2). On initialisera l'ansatz LUCJ avec des paramètres issus du calcul classique CCSD (coupled cluster singles and doubles).
  2. Dans la leçon 5, on échantillonnera à partir d'états de base de Krylov pour engendrer le sous-espace pour un problème de physique de la matière condensée. Cette approche est non variationnelle.

En dehors des approches spécifiques au problème ci-dessus, une approche générique pour la préparation d'état implique un ansatz variationnel, dans lequel on mettra à jour de manière itérative les paramètres de l'ansatz à l'aide d'un optimiseur classique. Un organigramme partant d'un circuit quantique variationnel, passant par l'échantillonnage quantique vers le calcul classique dans lequel la matrice est projetée et diagonalisée. Les résultats sont ensuite transmis à un optimiseur classique qui sélectionne de nouveaux paramètres variationnels, et on retourne au circuit quantique variationnel. Les échantillons issus d'ordinateurs quantiques pré-tolérants aux pannes peuvent être bruités. SQD emploie un processus de récupération de configuration auto-cohérent pour corriger les échantillons bruités [1]. On discutera du processus de récupération de configuration plus en détail et on l'appliquera pour corriger de manière itérative les échantillons bruités afin d'affiner l'estimation de l'énergie de l'état fondamental pour un problème de chimie dans la leçon 4.

3.1 Notes sur le support de l'état fondamental

Expliquons davantage le concept de support de l'état fondamental. Le support de l'état fondamental peut être défini comme l'ensemble des états de base pour lesquels l'état fondamental a une amplitude non nulle (jusqu'à un seuil de coupure).

Supposons que l'état fondamental exact d'un problème à 33 qubits soit

ψ=12000+12111\vert \psi \rangle = \frac{1}{\sqrt{2}} \vert 000 \rangle + \frac{1}{\sqrt{2}} \vert 111 \rangle

Si on échantillonne l'état ci-dessus, on devrait obtenir un ensemble d'états de base computationnels {000\{\vert 000 \rangle, 111}\vert 111 \rangle \} (les autres états de base computationnels ont une amplitude nulle dans l'état fondamental, et donc, idéalement, n'apparaîtront pas lors de l'échantillonnage).

Idéalement, l'ensemble des vecteurs de base pour cet état est constitué de {000,111}\{ \vert 000 \rangle, \vert 111 \rangle \} (en d'autres termes, le sous-espace de cet état est engendré par ces deux vecteurs de base).

En pratique, on n'a pas besoin de préparer l'état fondamental exact car l'échantillonnage de nombreux autres états peut nous donner le même ensemble de vecteurs. Par exemple :

ψa=0.8000+0.6111Sampling{000,111}ψb=12000+32111Sampling{000,111}ψc=12000+12111+12101Sampling{000,101,111}\begin{align} \vert \psi_a \rangle = 0.8 \vert 000 \rangle + 0.6 \vert 111 \rangle &\xrightarrow{\text{Sampling}} \{ \vert 000 \rangle, \vert 111 \rangle \} \\ \vert \psi_b \rangle = \frac{1}{2} \vert 000 \rangle + \frac{\sqrt{3}}{2} \vert 111 \rangle &\xrightarrow{\text{Sampling}} \{ \vert 000 \rangle, \vert 111 \rangle \} \\ \vert \psi_c \rangle = \frac{1}{2} \vert 000 \rangle + \frac{1}{2} \vert 111 \rangle + \frac{1}{\sqrt{2}} \vert 101 \rangle &\xrightarrow{\text{Sampling}} \{ \vert 000 \rangle, \vert 101 \rangle, \vert 111 \rangle \} \end{align}

Préparer et échantillonner à partir de l'un des états ci-dessus générera des vecteurs ayant une amplitude non nulle dans l'état fondamental, et tous ces états sont qualifiés pour avoir le support de l'état fondamental. Remarque que l'échantillonnage de ψc\vert \psi_c \rangle inclut un vecteur supplémentaire 101\vert 101 \rangle dont l'amplitude est 00 dans l'état fondamental exact. Cependant, on a montré précédemment qu'inclure de tels vecteurs dans le sous-espace n'est pas problématique car l'opération de projection et de diagonalisation fixe l'amplitude des vecteurs indésirables à 00, et on peut obtenir la valeur propre attendue et reconstruire l'état propre correct.

Diagrammes de bons et mauvais supports d'ansatz. Un bon ansatz a un support qui contient complètement le support de l'état fondamental. Un ansatz médiocre ne contient qu'une partie ou aucune partie du support de l'état fondamental.

Ainsi, préparer et échantillonner à partir de l'état fondamental exact n'est pas nécessaire. En fait, faire ainsi peut être difficile car l'état fondamental exact n'est pas connu a priori, et il est souvent avantageux de ne pas préparer et échantillonner à partir de l'état fondamental exact, surtout si la fonction d'onde (état) est asymétrique avec certains états de base ayant des probabilités très élevées. Considère la fonction d'onde suivante :

ψ=0.70000.7010+0.11010.01111\vert \psi \rangle = 0.7 \vert 000 \rangle - 0.7 \vert 010 \rangle + 0.1 \vert 101 \rangle - 0.01 \vert 111 \rangle

C'est une fonction d'onde asymétrique où les états de base 000\vert 000 \rangle et 010\vert 010 \rangle ont des amplitudes bien plus grandes que 101\vert 101 \rangle et 111\vert 111 \rangle. Lors de l'échantillonnage, on obtiendra 000\vert 000 \rangle et 010\vert 010 \rangle plus fréquemment (probabiliteˊ d’eˊchantillonnage=amplitude2\text{probabilité d'échantillonnage} = \vert \text{amplitude} \vert^{2} 49%\approx 49\% pour 000\vert 000 \rangle et 010\vert 010 \rangle chacun, 1%\approx 1\% pour 101\vert 101 \rangle et 0.01%\approx 0.01\% pour 111\vert 111 \rangle). Avec un budget d'échantillonnage fini (shots), il est très probable que notre ensemble échantillonné ne contienne que 000\vert 000 \rangle et 010\vert 010 \rangle. Comme montré précédemment, si on engendre le sous-espace avec un tel ensemble avec des vecteurs manquants, on ne sera pas en mesure de trouver la valeur propre minimale vraie. Par conséquent, il sera avantageux (et nécessaire) d'échantillonner à partir d'un état ayant le support de l'état fondamental.

3.2 Un argument contre l'échantillonnage uniforme

On peut être tenté de tirer des échantillons à partir d'une distribution uniforme pour engendrer le sous-espace. Bien que cela puisse fonctionner pour de petits problèmes, cela commencera à échouer pour des problèmes plus grands et plus pratiques. Pour de grands problèmes avec de nombreux qubits, l'espace de Hilbert peut être d'une taille prohibitive. Par exemple, un espace de Hilbert à 32 qubits possède plus de 44 milliards de vecteurs de base possibles (232=4.294.967.2962^{32} = 4.294.967.296). Si on échantillonne uniformément dans cet espace avec un budget d'échantillons fini (disons 1000010000 vecteurs pour que le processus de diagonalisation reste faisable), le sous-espace peut exclure plus souvent les vecteurs ayant le support de l'état fondamental car le processus sera aléatoire. Par conséquent, on a besoin d'une manière systématique d'échantillonner à partir du support de l'état fondamental en s'appuyant sur des circuits quantiques.

4. SQD et la parcimonie de la fonction d'onde

L'écart entre l'espace de Hilbert complet et les dimensions de sous-espace faisables met en évidence un autre aspect important de SQD : la parcimonie de la fonction d'onde. L'approche SQD fonctionne bien pour les fonctions d'onde parcimonieuses ou concentrées où une petite fraction des états de base a des amplitudes non négligeables. Il y a deux raisons à cela :

  1. Si la fonction d'onde est large (c'est-à-dire que de nombreux états de base ont des amplitudes non négligeables) et qu'on omet d'inclure des vecteurs ayant le support de l'état cible dans le sous-espace, on peut se retrouver avec des valeurs propres et des vecteurs propres incorrects.
  2. Pour éviter le problème ci-dessus, on doit inclure de nombreux vecteurs dans le sous-espace. Cependant, la dimension du hamiltonien projeté est directement liée à la dimension du sous-espace. Un sous-espace plus grand signifiera un hamiltonien plus grand, qui peut devenir impossible à diagonaliser.

On illustre le problème avec la matrice suivante (HnewH_{new}). La valeur propre la plus basse de HnewH_{new} est 2.2081-2.2081, et la fonction d'onde (état propre) correspondante est large :

ψ=000+001+010+011+100+101+110+1118|\psi\rangle = \frac{|000\rangle + |001\rangle + |010\rangle + |011\rangle + |100\rangle + |101\rangle + |110\rangle + |111\rangle}{\sqrt{8}}
H_new = np.array(
[
[-0.958, 0.1853, -0.2663, -0.3875, -0.0524, -0.3779, -0.0145, -0.3369],
[0.1853, -0.4081, -0.8549, -0.2312, 0.0615, -0.2493, -0.3804, -0.3312],
[-0.2663, -0.8549, -0.6929, -0.0063, -0.0478, -0.0236, -0.2494, -0.0669],
[-0.3875, -0.2312, -0.0063, -0.4468, -0.6301, -0.4627, -0.1188, 0.0753],
[-0.0524, 0.0615, -0.0478, -0.6301, -0.6664, -0.1514, -0.3571, -0.3644],
[-0.3779, -0.2493, -0.0236, -0.4627, -0.1514, -0.9605, 0.0137, 0.0035],
[-0.0145, -0.3804, -0.2494, -0.1188, -0.3571, 0.0137, -1.1449, 0.0433],
[-0.3369, -0.3312, -0.0669, 0.0753, -0.3644, 0.0035, 0.0433, -1.2307],
]
)
eigvals, eigvecs = eigh(H_new)
print(f"Minimum eigenvalue: {eigvals.min()}")
print(f"Eigenvector for minimum eigenvalue: {eigvecs[:,np.argmin(eigvals)]}")
Minimum eigenvalue: -2.208137504726661
Eigenvector for minimum eigenvalue: [0.3536 0.3536 0.3536 0.3536 0.3535 0.3536 0.3535 0.3535]

Supposons qu'on projette HnewH_{new} sur un sous-espace engendré par quatre vecteurs : 000|000\rangle, 010|010\rangle, 101|101\rangle et 110|110\rangle et qu'on calcule la valeur propre.

x1 = np.zeros(8)
x1[0] = 1

x2 = np.zeros(8)
x2[2] = 1

x3 = np.zeros(8)
x3[5] = 1

x4 = np.zeros(8)
x4[6] = 1

H_new_s = np.array(
[
[x1 @ H_new @ x1.T, x1 @ H_new @ x2.T, x1 @ H_new @ x3.T, x1 @ H_new @ x4.T],
[x2 @ H_new @ x1.T, x2 @ H_new @ x2.T, x2 @ H_new @ x3.T, x2 @ H_new @ x4.T],
[x3 @ H_new @ x1.T, x3 @ H_new @ x2.T, x3 @ H_new @ x3.T, x3 @ H_new @ x4.T],
[x4 @ H_new @ x1.T, x4 @ H_new @ x2.T, x4 @ H_new @ x3.T, x4 @ H_new @ x4.T],
]
)
print(H_new_s)
[[-0.958  -0.2663 -0.3779 -0.0145]
[-0.2663 -0.6929 -0.0236 -0.2494]
[-0.3779 -0.0236 -0.9605 0.0137]
[-0.0145 -0.2494 0.0137 -1.1449]]
eigvals, eigvecs = eigh(H_new_s)
print(f"Minimum eigenvalue: {eigvals.min()}")
Minimum eigenvalue: -1.4266552340586673

L'exemple ci-dessus montre que lorsque la fonction d'onde est large et qu'on n'inclut pas les états de base dans le sous-espace, le calcul de la valeur propre devient incorrect.

5. SQD vs. VQE

Comme indiqué précédemment, SQD peut nécessiter un circuit quantique variationnel et des mises à jour itératives des paramètres pour préparer et échantillonner à partir du support de l'état fondamental. Comme cette routine de mise à jour itérative des paramètres est similaire à VQE, on peut se demander en quoi ces méthodes diffèrent et quels sont les avantages de SQD par rapport à VQE. Dans cette section, on compare les méthodes et on discute des avantages de SQD avec une molécule N2N_2 décrite avec la base minimale (sto-3g) comme exemple.

 VQESQD
Surcharge de mesureDe nombreux termes de Pauli, de nombreux circuits de mesure : Le hamiltonien de la molécule comporte 29512951 termes de Pauli uniques. Comme les termes de Pauli peuvent contenir des termes XX et YY, et que les mesures quantiques typiques sont effectuées dans la base ZZ, on a besoin d'un changement de base de mesure pour évaluer ces termes. Lorsqu'on optimise les mesures, les 29512951 termes peuvent être regroupés en 11871187 groupes, où chaque groupe peut être évalué à l'aide d'un seul circuit. Ainsi, on a besoin d'au moins 11871187 circuits uniques pour évaluer tous les termes de Pauli. De nombreux shots par circuit pour une variance plus faible. De plus, la valeur attendue évaluée de chaque terme de Pauli a une variance associée qui dépend inversement de shots\sqrt{shots}. Par conséquent, pour estimer précisément chaque terme, on doit allouer de nombreux shots par circuit. Par exemple, pour atteindre la précision chimique (11 kcal/mol), on a généralement besoin de shots de l'ordre de 10510^5-10710^7 par circuit. Ainsi, VQE a besoin de nombreux circuits de mesure et chaque circuit avec un certain nombre de shots. Dans des cas pratiques, cette surcharge de mesure peut être restrictive.Dans SQD, on n'a pas besoin de circuits de mesure différents pour chaque groupe de termes de Pauli. En général, on mesure un seul circuit pour un nombre fixe de shots. Bien qu'on puisse définir le nombre de shots à une grande valeur selon le problème, la surcharge reste bien inférieure à VQE. De plus, les estimations d'énergie par le processus de diagonalisation sont exactes, ce qui signifie que les valeurs propres calculées sont exactes dans ce sous-espace et n'ont pas de variance associée comme dans VQE. (Dans le cas de l'échantillonnage d'états de base de Krylov (leçon 5), on doit mesurer plusieurs circuits, mais le nombre de circuits reste bien inférieur à VQE).
Borne sur l'énergie estiméeDans VQE, les estimations d'énergie ne sont pas bornées et peuvent être inférieures aux vraies valeurs minimales en raison du bruit.Le processus d'estimation d'énergie dans SQD produit toujours une borne supérieure à l'énergie de l'état fondamental et l'énergie estimée ne sera jamais inférieure à la vraie énergie de l'état fondamental.
Tolérance au bruitL'estimation d'énergie dans VQE est sensible au bruit des ordinateurs quantiques pré-tolérants aux pannes.SQD possède une tolérance intrinsèque au bruit. Les ordinateurs quantiques pré-tolérants aux pannes peuvent produire des échantillons bruités. Même si on inclut ces échantillons dans le sous-espace, la diagonalisation suivante peut supprimer ces échantillons en fixant leurs amplitudes à zéro. De plus, on discutera d'une méthode appelée récupération de configuration en relation avec SQD qui améliore encore davantage la tolérance au bruit de SQD.

6. Résumé

  1. Dans SQD, un ordinateur quantique génère des échantillons et un ordinateur classique projette un hamiltonien sur un sous-espace engendré par les échantillons et le diagonalise pour calculer les valeurs propres et les vecteurs propres.
  2. Les échantillons générés doivent provenir du support de l'état cible (fondamental).
  3. Selon le problème, le flux de préparation d'état quantique et de génération d'échantillons peut être itératif ou non itératif.
  4. SQD fonctionne mieux pour les fonctions d'onde parcimonieuses. Une fonction d'onde large nécessitera un grand sous-espace pour des solutions précises, ce qui rend l'opération classique de projection et de diagonalisation coûteuse.
  5. SQD présente plusieurs avantages par rapport à VQE, tels qu'une surcharge de mesure plus faible et une borne supérieure à l'énergie de l'état fondamental estimée, ce qui le rend plus scalable.

Références

[1] J. Robledo-Moreno et al., "Chemistry Beyond Exact Solutions on a Quantum-Centric Supercomputer" (2024). arXiv:quant-ph/2405.05068.