Zum Hauptinhalt springen

Stichprobenbasierte Quantendiagonalisierung (SQD)

Die stichprobenbasierte Quantendiagonalisierung (SQD) kombiniert klassische lineare Algebra mit der Leistungsfähigkeit des Quantencomputers, um einen Hamiltonoperator (eine Matrix) zu diagonalisieren und seine Eigenwerte sowie Eigenvektoren zu berechnen. Die Matrixdiagonalisierung ist eine wichtige mathematische Operation, die in vielen Bereichen der Wissenschaft, der Informatik und der Optimierung eingesetzt wird.

Das folgende Video gibt einen Überblick über SQD, zeigt, was seine Nützlichkeit bestimmt, und erklärt, was es gegenüber vielen anderen Ansätzen schneller macht. Der nachfolgende Text enthält weitere Details.

1. Einführung und Motivation

Betrachten wir als Beispiel die Energieeigenwertgleichung, die durch Schrödinger berühmt wurde.

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

HH ist der Hamiltonoperator eines Systems, ψ|\psi\rangle die Wellenfunktion (auch als Eigenzustand bekannt) und EE ein Eigenwert. Die Eigenwerte der Matrix HH repräsentieren die Energieniveaus des Systems. Bei einem Molekül zum Beispiel stellt der kleinste Eigenwert die Grundzustandsenergie des Moleküls dar. In vielen Problemen interessiert man sich für die Schätzung der Grundzustandsenergie.

Durch Anwendung exakter Diagonalisierungsverfahren aus der linearen Algebra lässt sich die vollständige Matrix HH diagonalisieren. Dieser Ansatz wird jedoch rechenintensiv (und sogar unmöglich), je größer die Matrix wird. Bereits für kleine chemische Moleküle kann HH unhandlich groß werden – beispielsweise hat der Hamiltonoperator für das N2N_2-Molekül mit einer cc-PVDZ-Basis eine Dimension von 65780×6578065780 \times 65780.

Glücklicherweise benötigt man nicht immer alle Eigenwerte und Eigenvektoren eines Hamiltonoperators HH. Die Diagonalisierung der vollständigen Matrix ist daher in vielen praktischen Fällen gar nicht erforderlich. Bei der Grundzustandsschätzung interessiert man sich zum Beispiel nur für den kleinsten Eigenwert und den zugehörigen Eigenvektor. Dies ermöglicht es, das Konzept der Projektion auf einen (nützlichen) Unterraum anzuwenden.

Betrachten wir eine N×NN \times N-Matrix HH, deren vollständiger Vektorraum (Hilbertraum) die Dimension NN hat (NN ist groß). Dann wählen wir einen Unterraum (S\mathcal{S}) – eine Teilmenge des vollständigen Hilbertraums – mit der Dimension MM, wobei MM hinreichend klein ist. Nach der Projektion von HH auf diesen Unterraum ist die projizierte Matrix (z. B. HSH_\mathcal{S}) kleiner (M×MM \times M). Das kleinere HSH_\mathcal{S} kann mit einer geeigneten klassischen numerischen Methode diagonalisiert werden, um Eigenwerte und Eigenvektoren für diesen Unterraum zu berechnen.

Beachte, dass der Unterraum im Träger unseres Ziel- (z. B. Grundzustands-)Eigenzustands liegen muss. Mit anderen Worten muss der projizierte Hamiltonoperator HSH_\mathcal{S} in einem Unterraum liegen, der den kleinsten Eigenwert enthält.

2. Projektion und Diagonalisierung

Angenommen, wir möchten den kleinsten Eigenwert und den zugehörigen Eigenvektor der folgenden 8×88 \times 8-Hamiltonmatrix HH finden.

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}

Wir werden die vollständige Matrix sowie verschiedene projizierte Versionen (HSH_\mathcal{S}) für unterschiedliche Unterräume diagonalisieren, um die Skalierbarkeit und die Bedeutung der Unterraumwahl zu veranschaulichen.

Die Grundzustandsenergie (minimaler Eigenwert) der Matrix HH beträgt 0.5357-0.5357, und die exakte Grundzustands-Wellenfunktion (Eigenvektor) lautet:

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

Das heißt, der Grundzustand der Matrix wird von zwei Rechenbasisvektoren 011\vert 011 \rangle und 101\vert 101 \rangle aufgespannt.

# 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. ]

Als nächstes werden wir die Matrix HH auf verschiedene Unterräume projizieren und prüfen, ob wir den exakten Grundzustand erhalten. Wir projizieren die Matrix insbesondere auf einen Unterraum, der aufgespannt wird durch:

  1. die exakten Grundzustandsvektoren (011\vert 011 \rangle und 101\vert 101 \rangle),
  2. Vektoren, die einige oder alle exakten Grundzustandsvektoren ausschließen (z. B. 000\vert 000 \rangle, 011\vert 011 \rangle und 110\vert 110 \rangle),
  3. Vektoren, die sowohl exakte Grundzustands- als auch Nicht-Grundzustandsvektoren enthalten (aber nicht alle möglichen Vektoren im Hilbertraum).

2.1 Fall 1: Unterraum enthält den Grundzustand

Angenommen, wir möchten HH auf einen Unterraum (S\mathcal{S}) projizieren, der von zwei Vektoren x1=011x_1 = |011\rangle und x2=101x_2 = |101\rangle aufgespannt wird. Der projizierte Hamiltonoperator ist definiert durch:

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]

Hier lassen sich mehrere wichtige Beobachtungen machen.

  • Da wir den Unterraum mit zwei Vektoren aufgespannt haben, hat die projizierte Matrix (HSH_\mathcal{S}) die Dimension 2×22 \times 2 – kleiner als die vollständige Matrix HH (8×88 \times 8).
  • Der minimale Eigenwert der projizierten Matrix stimmt mit dem Eigenwert des exakten Grundzustands überein.
  • Die Werte in der Variable eigvecs geben die Amplituden der den Unterraum aufspannenden Vektoren an. Mit ihnen lässt sich der Eigenzustand (Grundzustand) rekonstruieren. In diesem Fall erhalten wir den exakten Grundzustand (bis auf eine globale Phase):
ψ=(0.8011+0.6101)|\psi \rangle = - (0.8 |011\rangle + 0.6 |101\rangle)

2.2 Fall 2: Unterraum schließt einige oder alle Grundzustandsvektoren aus

Als nächstes projizieren wir HH auf einen Unterraum, der von drei Vektoren x1=000x_1 = |000\rangle, x2=011x_2 = |011\rangle und x3=110x_3 = |110\rangle aufgespannt wird. Wir wählen die Vektoren bewusst so, dass ein Grundzustandsvektor (101\vert 101 \rangle) ausgeschlossen wird. Der projizierte Hamiltonoperator ist definiert durch:

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

Der Eigenwert 0.2111-0.2111 stimmt in diesem Fall nicht mit dem minimalen Eigenwert 0.5357-0.5357 des vollständigen Hamiltonoperators überein. Die entscheidende Beobachtung lautet: Wenn wir auf einen Unterraum projizieren, dem Basiszustände unseres Ziel-(Grundzustands-)Zustands fehlen – teilweise oder vollständig –, weicht der geschätzte Grundzustand vom exakten ab.

2.3 Fall 3: Unterraum enthält sowohl Grundzustands- als auch Nicht-Grundzustandsvektoren

Als nächstes zeigen wir einen Fall, bei dem der Unterraum von Vektoren aufgespannt wird, die sowohl die exakten Grundzustandsvektoren als auch unerwünschte Vektoren enthalten. Angenommen, unser Unterraum wird von x1=011x_1 = |011\rangle, x2=101x_2 = |101\rangle (im exakten Grundzustand vorhanden) und x3=111x_3 = |111\rangle (im exakten Grundzustand nicht vorhanden) aufgespannt.

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

In diesem Fall erhalten wir erneut 0.5357-0.5357 als minimalen Eigenwert, der mit dem der vollständigen Matrix übereinstimmt (d. h. dem exakten Grundzustand). Ein weiteres interessantes Ergebnis ist die Amplitude von x3x_3, die durch den Projektions- und Diagonalisierungsprozess zurückgegeben wird. Diese Amplitude beträgt 00. Wenn wir die Wellenfunktion (Eigenzustand) mit den berechneten Amplituden und Vektoren rekonstruieren, erhalten wir:

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

Selbst wenn unser Unterraum einige Nicht-Zielvektoren enthält (zusammen mit der vollständigen Menge der Zielvektoren), können wir den korrekten Eigenwert und Eigenzustand berechnen – denn der Projektions- und Diagonalisierungsprozess filtert Nicht-Zielvektoren heraus, indem er ihre Amplituden auf 00 setzt. Diese Eigenschaft von SQD bietet eine inhärente Rauschtoleranz.

3. Die Rolle des Quantencomputers in SQD

Die obigen Analysen belegen die Bedeutung der den Unterraum aufspannenden Vektoren, die im Träger des Zielzustands liegen müssen. Damit ergibt sich eine wichtige Frage: Wie wählen wir Vektoren mit Zielzustandsträger für die Unterraumkonstruktion?

Hier kommen Quantencomputer ins Spiel. Die quantenklassische Synergie funktioniert im SQD-Paradigma wie folgt:

  1. Mit einem geeigneten Quantencircuit versuchen wir, auf einem Quantencomputer einen Zustand vorzubereiten, der Basiszustände erzeugt, auf denen die Ziel-Wellenfunktion (z. B. der Grundzustand) erhebliche Unterstützung hat. Die abgetasteten Basiszustände (Bitstrings) spannen den Unterraum für die Hamiltonprojektion auf.
  2. Ein klassischer Computer projiziert den Hamiltonoperator auf den Unterraum (aufgespannt durch Stichproben/Vektoren vom Quantencomputer) und diagonalisiert ihn, um Eigenwerte und Eigenvektoren mit geeigneten numerischen Methoden zu berechnen. Ein Diagramm der Quanten- und klassischen Komponenten von SQD. Im Quantenteil wird ein Zustand vorbereitet und aus dem Zielträger gesampelt; klassisch wird die Matrix auf den gesampelten Unterraum projiziert und die projizierte Matrix diagonalisiert. Es gibt verschiedene Möglichkeiten, einen solchen Quantenzustand vorzubereiten – je nach Problem variational oder nicht-variational.

In den nächsten zwei Lektionen zeigen wir zwei konkrete Beispiele für die Zustandsvorbereitung und das Sampling.

  1. In Lektion 4 verwenden wir einen parametrisierten lokalen unitären gekoppelten Jastrow-Ansatz (LUCJ), um Stichproben für ein Chemieproblem (Grundzustandsenergieabschätzung des N2N_2-Moleküls) zu erzeugen. Wir initialisieren den LUCJ-Ansatz mit Parametern aus einer klassischen Coupled-Cluster-Singles-and-Doubles-(CCSD-)Berechnung.
  2. In Lektion 5 sampeln wir aus Krylov-Basiszuständen, um den Unterraum für ein Problem der Festkörperphysik aufzuspannen. Dieser Ansatz ist nicht-variationaler Natur.

Neben diesen problemspezifischen Ansätzen beinhaltet ein allgemeines Verfahren zur Zustandsvorbereitung einen variationalen Ansatz, bei dem die Ansatz-Parameter iterativ mit einem klassischen Optimierer aktualisiert werden. Ein Flussdiagramm vom variationalen Quantencircuit über das Quanten-Sampling hin zum klassischen Computing, in dem die Matrix projiziert und diagonalisiert wird. Die Ergebnisse werden dann an einen klassischen Optimierer weitergegeben, der neue variationelle Parameter auswählt, und wir kehren zum variationalen Quantencircuit zurück. Stichproben von vor-fehlertoleranten Quantencomputern können verrauscht sein. SQD setzt einen selbstkonsistenten Konfigurationswiederherstellungsprozess ein, um verrauschte Stichproben zu korrigieren [1]. Den Konfigurationswiederherstellungsprozess werden wir in Lektion 4 genauer besprechen und ihn iterativ anwenden, um verrauschte Stichproben zu korrigieren und die Grundzustandsenergieabschätzung für ein Chemieproblem zu verfeinern.

3.1 Hinweise zum Grundzustandsträger

Erläutern wir das Konzept des Grundzustandsträgers etwas genauer. Der Grundzustandsträger lässt sich als die Menge der Basiszustände definieren, in denen der Grundzustand eine von null verschiedene Amplitude hat (bis zu einem Schwellenwert).

Angenommen, der exakte Grundzustand eines 33-Qubit-Problems lautet

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

Wenn wir den obigen Zustand sampeln, erhalten wir eine Menge von Rechenbasisvektoren {000\{\vert 000 \rangle, 111}\vert 111 \rangle \} (andere Rechenbasisvektoren haben im Grundzustand eine Amplitude von null und erscheinen daher beim Sampeln idealerweise nicht).

Im Idealfall besteht die Menge der Basisvektoren für diesen Zustand aus {000,111}\{ \vert 000 \rangle, \vert 111 \rangle \} (der Unterraum dieses Zustands wird von diesen beiden Basisvektoren aufgespannt).

In der Praxis müssen wir den exakten Grundzustand nicht vorbereiten, da das Sampeln aus vielen anderen Zuständen uns dieselben Vektoren liefern kann. Zum Beispiel:

ψ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}

Das Vorbereiten und Sampeln aus einem der obigen Zustände erzeugt Vektoren mit von null verschiedener Amplitude im Grundzustand – alle qualifizieren sich als Zustände mit Grundzustandsträger. Beachte, dass das Sampeln von ψc\vert \psi_c \rangle einen zusätzlichen Vektor 101\vert 101 \rangle liefert, der im exakten Grundzustand die Amplitude 00 hat. Wir haben jedoch bereits gezeigt, dass das Einbeziehen solcher Vektoren in den Unterraum kein Problem darstellt, da der Projektions- und Diagonalisierungsprozess die Amplitude unerwünschter Vektoren auf 00 setzt und wir den korrekten Eigenzustand rekonstruieren können.

Diagramme guter und schlechter Ansatz-Träger. Ein guter Ansatz hat einen Träger, der den Grundzustandsträger vollständig enthält. Ein schlechter Ansatz enthält nur einen Teil oder keinen Teil des Grundzustandsträgers.

Das Vorbereiten und Sampeln aus dem exakten Grundzustand ist also nicht notwendig. Tatsächlich kann dies schwierig sein, da der exakte Grundzustand a priori unbekannt ist. Oft ist es sogar vorteilhaft, nicht aus dem exakten Grundzustand zu sampeln – besonders wenn die Wellenfunktion (der Zustand) asymmetrisch ist und einige Basiszustände sehr hohe Wahrscheinlichkeiten aufweisen. Betrachten wir folgende Wellenfunktion:

ψ=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

Dies ist eine asymmetrische Wellenfunktion, bei der die Basiszustände 000\vert 000 \rangle und 010\vert 010 \rangle deutlich größere Amplituden haben als 101\vert 101 \rangle und 111\vert 111 \rangle. Beim Sampeln erhalten wir 000\vert 000 \rangle und 010\vert 010 \rangle häufiger (Sampling-Wahrscheinlichkeit=Amplitude2\text{Sampling-Wahrscheinlichkeit} = \vert \text{Amplitude} \vert^{2} 49%\approx 49\% für 000\vert 000 \rangle und 010\vert 010 \rangle jeweils, 1%\approx 1\% für 101\vert 101 \rangle und 0,01%\approx 0,01\% für 111\vert 111 \rangle). Bei einem begrenzten Sampling-Budget (Shots) ist es sehr wahrscheinlich, dass unsere Stichprobenmenge nur 000\vert 000 \rangle und 010\vert 010 \rangle enthält. Wie bereits gezeigt, können wir, wenn wir den Unterraum mit einer solchen unvollständigen Menge aufspannen, den wahren minimalen Eigenwert nicht finden. Daher ist es vorteilhaft (und notwendig), aus einem Zustand mit Grundzustandsträger zu sampeln.

3.2 Gegen gleichmäßiges Sampling

Es mag verlockend erscheinen, Stichproben aus einer gleichmäßigen Verteilung zu ziehen, um den Unterraum aufzuspannen. Für kleine Probleme mag das funktionieren, für größere und praktischere Probleme jedoch nicht mehr. Bei großen Problemen mit vielen Qubits kann der Hilbertraum unhandlich groß werden. Ein 32-Qubit-Hilbertraum hat zum Beispiel mehr als 44 Milliarden mögliche Basisvektoren (232=4.294.967.2962^{32} = 4.294.967.296). Wenn wir aus diesem Raum mit einem begrenzten Stichprobenbudget (z. B. 1000010000 Vektoren, um die Diagonalisierung handhabbar zu halten) gleichmäßig sampeln, kann der Unterraum häufig Vektoren mit Grundzustandsträger auslassen, da der Prozess zufällig ist. Wir brauchen daher eine systematische Methode, um mithilfe von Quantencircuits aus dem Grundzustandsträger zu sampeln.

4. SQD und die Sparsität der Wellenfunktion

Die Lücke zwischen dem vollständigen Hilbertraum und der Dimension des handhabbaren Unterraums bringt einen weiteren wichtigen Aspekt von SQD ins Spiel: die Sparsität der Wellenfunktion. Der SQD-Ansatz funktioniert gut für sparse oder konzentrierte Wellenfunktionen, bei denen nur ein kleiner Bruchteil der Basiszustände nicht-vernachlässigbare Amplituden aufweist. Dafür gibt es zwei Gründe:

  1. Wenn die Wellenfunktion breit ist (d. h. viele Basiszustände haben nicht-vernachlässigbare Amplituden) und wir Vektoren mit Zielzustandsträger im Unterraum nicht berücksichtigen, erhalten wir möglicherweise falsche Eigenwerte und Eigenvektoren.
  2. Um das obige Problem zu vermeiden, müssen wir viele Vektoren in den Unterraum aufnehmen. Die Dimension des projizierten Hamiltonoperators hängt jedoch direkt von der Unterraumdimension ab. Ein größerer Unterraum bedeutet einen größeren Hamiltonoperator, was die Diagonalisierung unhandhabbar machen kann.

Wir veranschaulichen das Problem mit der folgenden Matrix (HnewH_{new}). Der kleinste Eigenwert von HnewH_{new} beträgt 2.2081-2.2081, und die zugehörige Wellenfunktion (Eigenzustand) ist breit:

ψ=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]

Angenommen, wir projizieren HnewH_{new} auf einen Unterraum, der von vier Vektoren aufgespannt wird: 000|000\rangle, 010|010\rangle, 101|101\rangle und 110|110\rangle, und berechnen den Eigenwert.

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

Das obige Beispiel zeigt: Wenn die Wellenfunktion breit ist und wir Basiszustände nicht in den Unterraum aufnehmen, wird die Eigenwertberechnung ungenau.

5. SQD vs. VQE

Wie bereits erwähnt, kann SQD einen variationalen Quantencircuit und iterative Parameteraktualisierungen benötigen, um aus dem Grundzustandsträger zu sampeln. Da diese iterative Parameteraktualisierungsroutine VQE ähnelt, kann man fragen, worin sich die Methoden unterscheiden und welche Vorteile SQD gegenüber VQE hat. In diesem Abschnitt vergleichen wir die Methoden und diskutieren die Vorteile von SQD am Beispiel eines N2N_2-Moleküls mit einem minimalen Basissatz (sto-3g).

 VQESQD
MessaufwandViele Pauli-Terme, viele Messcircuits: Der Hamiltonoperator des Moleküls enthält 29512951 eindeutige Pauli-Terme. Da die Pauli-Terme XX- und YY-Terme enthalten können und typische Quantenmessungen in der ZZ-Basis durchgeführt werden, ist ein Wechsel der Messbasis erforderlich, um diese Terme auszuwerten. Bei optimierter Messung lassen sich die 29512951 Terme in 11871187 Gruppen zusammenfassen, wobei jede Gruppe mit einem einzigen Circuit ausgewertet werden kann. Daher werden mindestens 11871187 eindeutige Circuits benötigt, um alle Pauli-Terme auszuwerten. Viele Shots pro Circuit für engere Varianz: Der ausgewertete Erwartungswert jedes Pauli-Terms hat eine Varianz, die umgekehrt proportional zu shots\sqrt{shots} ist. Um jeden Term präzise abzuschätzen, müssen viele Shots pro Circuit eingeplant werden. Um chemische Genauigkeit (11 kcal/mol) zu erreichen, sind typischerweise Shots in der Größenordnung von 10510^510710^7 pro Circuit erforderlich. VQE benötigt also viele Messcircuits, von denen jeder eine bestimmte Anzahl von Shots erfordert. Für praktische Anwendungen kann dieser Messaufwand sehr einschränkend sein.Bei SQD werden keine unterschiedlichen Messcircuits für jede gruppierte Pauli-Term-Gruppe benötigt. Typischerweise wird ein einziger Circuit für eine feste Anzahl von Shots gemessen. Zwar kann die Anzahl der Shots je nach Problem groß sein, der Gesamtaufwand bleibt jedoch deutlich geringer als bei VQE. Außerdem sind die Energieabschätzungen durch den Diagonalisierungsprozess exakt – die berechneten Eigenwerte sind exakt in dem Unterraum und haben keine Varianz, wie sie bei VQE auftreten würde. (Im Fall des Krylov-Basiszustands-Samplings (Lektion 5) müssen mehrere Circuits gemessen werden, aber die Anzahl der Circuits bleibt deutlich kleiner als bei VQE.)
Geschätzte EnergieschrankeBei VQE sind die Energieabschätzungen nicht beschränkt und können aufgrund von Rauschen unter die wahren Minimalwerte fallen.Der Energieabschätzungsprozess in SQD liefert stets eine obere Schranke für die Grundzustandsenergie; der geschätzte Wert liegt nie unter der wahren Grundzustandsenergie.
RauschtoleranzDie VQE-Energieabschätzung ist anfällig für Rauschen von vor-fehlertoleranten Quantencomputern.SQD verfügt über eine inhärente Rauschtoleranz. Vor-fehlertollerante Quantencomputer können verrauschte Stichproben erzeugen. Selbst wenn diese Stichproben in den Unterraum einbezogen werden, kann die anschließende Diagonalisierung diese Stichproben unterdrücken, indem ihre Amplituden auf null gesetzt werden. Außerdem werden wir eine Methode namens Konfigurationswiederherstellung im Zusammenhang mit SQD besprechen, die die Rauschtoleranz von SQD weiter verbessert.

6. Zusammenfassung

  1. Bei SQD erzeugt ein Quantencomputer Stichproben, und ein klassischer Computer projiziert einen Hamiltonoperator auf einen von den Stichproben aufgespannten Unterraum und diagonalisiert ihn, um Eigenwerte und Eigenvektoren zu berechnen.
  2. Die erzeugten Stichproben sollten aus dem Träger des Ziel-(Grundzustands-)Zustands stammen.
  3. Je nach Problem kann der Ablauf der Quantenzustandsvorbereitung und Stichprobenerzeugung iterativ oder nicht-iterativ sein.
  4. SQD funktioniert am besten für sparse Wellenfunktionen. Eine breite Wellenfunktion erfordert einen großen Unterraum für genaue Lösungen, was die klassische Projektion und Diagonalisierung aufwendig macht.
  5. SQD bietet gegenüber VQE mehrere Vorteile, wie z. B. einen geringeren Messaufwand und eine obere Schranke für die geschätzte Grundzustandsenergie, was es skalierbarer macht.

Referenzen

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