Skip to main content
IBM Quantum Platform

Diagonalisation quantique basée sur des échantillons (SQD)

La diagonalisation quantique basée sur l'échantillonnage (SQD) combine l'algèbre linéaire classique et la puissance de l'informatique quantique pour diagonaliser un hamiltonien (matrice) et calculer ses valeurs et vecteurs propres. La diagonalisation des matrices est une opération mathématique importante, car de nombreux problèmes scientifiques, informatiques et d'optimisation font appel à cette méthode.

La vidéo ci-dessous donne un aperçu de la SQD, de ce qui détermine son utilité et de ce qui la rend plus rapide que beaucoup d'autres approches. Le texte suivant donne plus de détails.


1. Introduction et motivation

Prenons l'exemple de l'équation des valeurs propres de l'é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 connue sous le nom d'é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, nous nous intéressons à l'estimation de l'énergie de l'état fondamental.

En appliquant les techniques de diagonalisation exacte de l'algèbre linéaire, nous pouvons diagonaliser la matrice complète HH. Toutefois, cette approche devient coûteuse en termes de calcul (voire impossible) lorsque la matrice devient plus grande. Par exemple, même pour les petites molécules chimiques, HH peut être d'une taille prohibitive (par exemple, l'hamiltonien de la molécule N2N_2 avec une base cc-PVDZ a une dimension de 65780×65780).65780 \times 65780).

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

Considérons une matrice N×NN \times N, HH, dont l'espace vectoriel complet (espace de Hilbert) a une dimension de NN ( NN est grand). Ensuite, nous sélectionnons 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 (disons HSH_\mathcal{S} ) sera plus petite ( M×MM \times M ). La plus petite HSH_\mathcal{S} peut être diagonalisée à 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.

Il convient de noter que le sous-espace doit soutenir l'état propre de notre cible (par exemple, le sol). En d'autres termes, l'hamiltonien projeté HSH_\mathcal{S} doit se trouver dans un sous-espace qui inclut la valeur propre la plus basse.


2. Projection et diagonalisation

Considérons que nous voulons trouver la plus petite valeur propre et le vecteur propre correspondant pour la matrice hamiltonienne suivante 8×88 \times 8 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}

Nous diagonaliserons la matrice complète ainsi que différentes versions projetées ( HSH_\mathcal{S} ) pour différents sous-espaces afin de démontrer l'extensibilité 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 couvert par deux états de base de calcul (vecteurs) 011\vert 011 \rangle et 101\vert 101 \rangle.

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

Output:

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, nous projetterons la matrice HH sur différents sous-espaces et nous vérifierons si nous pouvons obtenir l'état fondamental exact. En particulier, nous projetterons la matrice sur un sous-espace couvert par :

  1. vecteurs exacts de l'état fondamental ( 011\vert 011 \rangle et 101\vert 101 \rangle ).
  2. qui exclut une partie ou la totalité des vecteurs d'état fondamental exacts (par exemple, 000\vert 000 \rangle, 011\vert 011 \rangle, et 110\vert 110 \rangle ).
  3. des vecteurs qui comprennent à la fois l'état exact au sol et l'état hors sol (mais pas tous les vecteurs possibles dans l'espace de Hilbert).

2.1 Case-1: Le sous-espace comprend l'état fondamental

Supposons que nous voulions projeter HH dans un sous-espace ( S\mathcal{S} ) traversé par deux vecteurs x1=011x_1 = |011\rangle et x2=101x_2 = |101\rangle. L'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)

Output:

[[-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)]}")

Output:

Minimum eigenvalue: -0.535656000064295
Eigenvector for minimum eigenvalue: [-0.8 -0.6]

Nous pouvons faire plusieurs observations clés à ce sujet.

  • Comme nous avons couvert 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 exacte de l'état fondamental.
  • Les valeurs de la variable eigvecs représentent l'amplitude des vecteurs de recouvrement du sous-espace, et nous pouvons reconstruire l'état propre (état fondamental) à l'aide de ces valeurs. Dans ce cas, nous obtenons l'état fondamental exact (jusqu'à une phase globale) :
ψ=(0.8011+0.6101)|\psi \rangle = - (0.8 |011\rangle + 0.6 |101\rangle)

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

Ensuite, nous projetons HH sur un sous-espace couvert par trois vecteurs x1=000x_1 = |000\rangle, x2=011x_2 = |011\rangle, et x3=110x_3 = |110\rangle. Nous choisissons délibérément les vecteurs de manière à exclure un vecteur d'état fondamental ( 101\vert 101 \rangle ). L'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)

Output:

[[ 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()}")

Output:

Minimum eigenvalue: -0.21108858736702252

Dans ce cas, la valeur propre 0.2111-0.2111 ne correspond pas à la valeur propre minimale 0.5357-0.5357 de l'hamiltonien complet. L'observation clé est la suivante : si nous projetons sur un sous-espace qui exclut les états de base dans notre état cible (fondamental) - que ce soit partiellement ou complètement - l'état fondamental estimé sera différent de l'état exact.

2.3 Case-3: Le sous-espace comprend à la fois les vecteurs d'état fondamental et les vecteurs d'état non fondamental

Ensuite, nous montrons un cas où le sous-espace est couvert par des vecteurs qui comprennent des vecteurs de l'état fondamental exact ainsi que des vecteurs non désirés. Supposons que notre sous-espace soit couvert par x1=011x_1 = |011\rangle, x2=101x_2 = |101\rangle (présent 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)

Output:

[[-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)]}")

Output:

Minimum eigenvalue: -0.53565600006461
Eigenvector for minimum eigenvalue: [ 0.8  0.6 -0. ]

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

ψ=0.8011+0.6101+0.0111=0.8011+0.6101(exact ground state)\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{exact ground state} \right)

Ainsi, même si notre sous-espace comprend certains vecteurs non ciblés (ainsi que l'ensemble des vecteurs ciblés), nous pouvons calculer la valeur propre et l'état propre corrects car le processus de projection et de diagonalisation filtre les vecteurs non ciblés en fixant leurs amplitudes à 00. Cette propriété de la SQD offre une tolérance au bruit inhérente.


3. Rôle du quantum dans le SQD

Les analyses ci-dessus montrent l'importance des vecteurs de recouvrement du sous-espace, qui doivent soutenir l'état cible. Cela soulève une question importante : Comment choisir les vecteurs avec le support de l'état cible pour la construction du sous-espace?

C'est là que les ordinateurs quantiques entrent en jeu. La synergie quantique-classique fonctionne comme suit dans le paradigme SQD :

  1. En utilisant un circuit quantique approprié, nous essayons 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) couvriront le sous-espace pour la projection hamiltonienne.
  2. Un ordinateur classique projette l'hamiltonien sur le sous-espace (couvert par les échantillons/vecteurs 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.
Schéma illustrant les composantes quantiques et classiques du SQD. En mécanique quantique, on prépare et on prélève des échantillons sur le support cible, puis on projette de manière classique sa matrice sur le sous-espace échantillonné et on diagonalise la matrice projetée.

Il existe plusieurs façons de préparer un tel état quantique, qui peuvent être variationnelles ou non variationnelles en fonction du problème.

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

  1. Dans la leçon 4, nous utiliserons un ansatz de Jastrow couplé unitaire local paramétré (LUCJ) 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 ). Nous initialiserons l'ansatz LUCJ avec des paramètres issus du calcul classique des grappes couplées simples et doubles (CCSD).
  2. Dans la leçon 5, nous échantillonnerons les états de la base de Krylov pour couvrir le sous-espace d'un problème de physique de la matière condensée. Cette approche est de nature non variationnelle.

Outre les approches spécifiques aux problèmes mentionnés ci-dessus, une approche générique pour la préparation de l'état implique un ansatz variationnel, où nous mettrons itérativement à jour les paramètres de l'ansatz à l'aide d'un optimiseur classique.

Organigramme illustrant le passage d'un circuit quantique variationnel au calcul classique, en passant par l'échantillonnage quantique, au cours duquel la matrice est projetée puis diagonalisée. Les résultats sont ensuite transmis à un optimiseur classique qui sélectionne de nouveaux paramètres variationnels, puis nous revenons au circuit quantique variationnel.

Les échantillons provenant d'ordinateurs quantiques avant la tolérance aux pannes peuvent être bruyants. La SQD utilise un processus de récupération de configuration autoconsistant pour corriger les échantillons bruyants [1]. Nous examinerons plus en détail le processus de récupération de la configuration et l'appliquerons pour corriger les échantillons bruyants de manière itérative 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 Remarques sur le support de l'état fondamental

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

Supposons que l'état fondamental exact d'un problème 33 -qubit soit

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

Si nous échantillonnons l'état ci-dessus, nous devrions obtenir un ensemble d'états de base de calcul {000\{\vert 000 \rangle, 111}\vert 111 \rangle \} (d'autres états de base de calcul ont une amplitude nulle dans l'état fondamental et n'apparaissent donc idéalement pas lors de l'échantillonnage).

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

Dans la pratique, il n'est pas nécessaire 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}

La préparation et l'échantillonnage à partir de l'un des états ci-dessus génèrent des vecteurs dont l'amplitude n'est pas nulle dans l'état fondamental, et tous ces vecteurs sont considérés comme ayant un support dans l'état fondamental. Notez que l'échantillonnage ψc\vert \psi_c \rangle comprend un vecteur supplémentaire 101\vert 101 \rangle qui a une amplitude de 00 dans l'état fondamental exact. Cependant, nous avons montré précédemment que l'inclusion de ces 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 nous pouvons obtenir la valeur propre attendue et reconstruire l'état propre correct.

Schémas illustrant les bons et les mauvais appuis de l'ansatz. Un bon ansatz possède un support qui englobe entièrement le support de l'état fondamental. Un « ansatz » de mauvaise qualité ne contient qu'une partie, voire aucune, de la fonction d'onde de l'état fondamental.

Il n'est donc pas nécessaire de préparer et d'échantillonner l'état fondamental exact. En fait, cela 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 d'échantillonner à partir de l'état fondamental exact, en particulier si la fonction d'onde (état) est asymétrique, certains états de base ayant des probabilités très élevées. Considérons 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

Il s'agit d'une fonction d'onde asymétrique où les états de base 000\vert 000 \rangle et 010\vert 010 \rangle ont des amplitudes beaucoup plus importantes que 101\vert 101 \rangle et 111\vert 111 \rangle. Lors de l'échantillonnage, nous obtiendrons 000\vert 000 \rangle et 010\vert 010 \rangle plus fréquemment ( sampling probability=amplitude2\text{sampling probability} = \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 (tirs ), il est très probable que notre ensemble échantillonné ne contienne que 000\vert 000 \rangle et 010\vert 010 \rangle. Comme nous l'avons montré précédemment, si nous couvrons le sous-espace avec un tel ensemble de vecteurs manquants, nous ne serons pas en mesure de trouver la véritable valeur propre minimale. Il sera donc utile (et nécessaire) de prélever des échantillons dans un État bénéficiant du soutien de l'État du sol.

3.2 Arguments contre l'échantillonnage uniforme

Il peut être tentant de tirer des échantillons d'une distribution uniforme pour couvrir le sous-espace. Si elle peut fonctionner pour les petits problèmes, elle commencera à échouer pour les problèmes plus importants et plus pratiques. Pour les problèmes importants comportant de nombreux qubits, l'espace de Hilbert peut être d'une taille prohibitive. Par exemple, un espace de Hilbert de 32 qubits a plus de 44 milliards de vecteurs de base possibles ( 232=4,294,967,2962^{32} = 4,294,967,296 ). Si nous échantillonnons uniformément cet espace avec un budget d'échantillonnage fini (disons 1000010000 vecteurs pour que le processus de diagonalisation reste réalisable), le sous-espace peut exclure des vecteurs avec un support d'état fondamental plus souvent, car le processus sera aléatoire. Nous avons donc besoin d'un moyen systématique d'échantillonner à partir du support de l'état fondamental en tirant parti des circuits quantiques.


4. SQD et parcimonie de la fonction d'onde

L'écart entre l'espace de Hilbert complet et les dimensions du sous-espace réalisable apporte un autre aspect important de la SQD, à savoir la rareté de la fonction d'onde. L'approche SQD fonctionne bien pour les fonctions d'onde éparses 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 que nous omettons d'inclure des vecteurs avec un support d'état cible dans le sous-espace, nous pouvons nous retrouver avec des valeurs propres et des vecteurs propres incorrects.
  2. Pour éviter ce problème, nous devons inclure de nombreux vecteurs dans le sous-espace. Cependant, la dimension de l'hamiltonien projeté est directement liée à la dimension du sous-espace. Un sous-espace plus grand signifie un hamiltonien plus grand, dont la diagonalisation peut s'avérer impossible.

Nous présentons le problème avec la matrice suivante ( HnewH_{new} ). La valeur propre la plus basse de la matrice HnewH_{new} est 2.2081-2.2081, et la fonction d'onde correspondante (état propre) 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)]}")

Output:

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 que nous projetions le site HnewH_{new} sur un sous-espace couvert par quatre vecteurs : 000|000\rangle, 010|010\rangle, 101|101\rangle, et 110|110\rangle et calculons 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)

Output:

[[-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()}")

Output:

Minimum eigenvalue: -1.4266552340586673

L'exemple ci-dessus montre que lorsque la fonction d'onde est large et que nous n'incluons pas les états de base dans le sous-espace, le calcul des valeurs propres devient incorrect.


5. SQD contre VQE

Comme indiqué précédemment, la 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. Cette routine de mise à jour itérative des paramètres étant similaire à l'EQV, on peut se demander en quoi ces méthodes sont différentes et quels sont les avantages de la SQD par rapport à l'EQV Dans cette section, nous comparons les méthodes et discutons des avantages de la SQD en prenant pour exemple une molécule N2N_2 décrite avec un ensemble de base minimal (sto-3g).

 
VQE
SQD
Frais généraux de mesureBeaucoup de termes de Pauli, beaucoup de circuits de mesure : L'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, nous devons changer de base de mesure pour évaluer ces termes. Lorsqu'ils sont optimisés pour les mesures, les termes de 29512951 peuvent être regroupés en 11871187 groupes, chaque groupe pouvant être évalué à l'aide d'un seul circuit. Nous avons donc besoin d'au moins 11871187 circuits uniques pour évaluer tous les termes de Pauli. De nombreux tirs par circuit pour une variance plus étroite. Une fois encore, la valeur espérée évaluée de chaque terme de Pauli est assortie d'une variance qui dépend inversement de shots\sqrt{shots}. Par conséquent, pour estimer avec précision chaque terme, nous devons allouer un grand nombre de tirs par circuit. Par exemple, pour atteindre la précision chimique ( 11 kcal/mol), il faut généralement des prises de vue de l'ordre de 10510^5 - 10710^7 par circuit. La VQE nécessite donc de nombreux circuits de mesure et chaque circuit comporte un certain nombre de prises de vue. Dans la pratique, cette surcharge de mesure peut s'avérer restrictive.En SQD, nous n'avons pas besoin de circuits de mesure différents pour chaque groupe de termes de Pauli. En règle générale, nous mesurons un circuit unique pendant un nombre fixe de prises de vue. Bien que nous puissions fixer le nombre de prises de vue à une valeur élevée en fonction du problème, les frais généraux restent bien inférieurs à ceux de VQE. En outre, les estimations d'énergie utilisant 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 attachée à elles comme VQE. (Dans le cas de l'échantillonnage des états de la base de Krylov (leçon 5), nous devons mesurer plusieurs circuits, mais le nombre de circuits reste bien inférieur à VQE).
Estimation de l'énergie liéeDans la VQE, les estimations d'énergie ne sont pas limitées et peuvent être inférieures aux vraies valeurs minimales en raison du bruit.Le processus d'estimation de l'énergie dans SQD produit toujours une limite supérieure à l'énergie de l'état fondamental et l'énergie estimée ne sera jamais inférieure à l'énergie réelle de l'état fondamental.
Tolérance au bruitL'estimation de l'énergie de la VQE est sensible au bruit des ordinateurs quantiques tolérants aux pannes.Le SQD a une tolérance inhérente au bruit. Les ordinateurs quantiques tolérants aux pannes peuvent produire des échantillons bruyants. Même si nous incluons ces échantillons dans le sous-espace, la diagonalisation ultérieure peut supprimer ces échantillons en mettant leurs amplitudes à zéro. Nous discuterons également d'une méthode appelée récupération de configuration en relation avec la SQD, qui améliore encore la tolérance au bruit de la SQD.

6. Résumé

  1. Dans la SQD, un ordinateur quantique génère des échantillons et un ordinateur classique projette un hamiltonien sur un sous-espace couvert 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 (sol).
  3. En fonction du problème, la préparation de l'état quantique et le flux de génération d'échantillons peuvent être itératifs ou non.
  4. SQD fonctionne mieux pour les fonctions d'onde peu nombreuses. Une fonction d'onde large nécessitera un grand sous-espace pour des solutions précises, ce qui rend la projection classique et l'opération de diagonalisation coûteuses.
  5. La SQD présente plusieurs avantages par rapport à la VQE, tels qu'un surcoût de mesure plus faible et une limite supérieure à l'énergie estimée de l'état fondamental, ce qui la rend plus évolutive.

Références

[1] J. Robledo-Moreno et al, "La chimie au-delà des solutions exactes sur un superordinateur centré sur les quanta" (2024). arXiv:quant-ph/2405.05068.

Cette page a-t-elle été utile ?
Signaler un bogue, une coquille ou proposer du contenu sur GitHub.