Skip to main content
IBM Quantum Platform

Sample-basierte Quantendiagonalisierung (SQD)

Die stichprobenbasierte Quantendiagonalisierung (SQD) kombiniert die klassische lineare Algebra mit der Leistungsfähigkeit des Quantencomputers, um eine Hamilton-Matrix zu diagonalisieren und ihre Eigenwerte und Eigenvektoren zu berechnen. Die Diagonalisierung von Matrizen ist eine wichtige mathematische Operation, da viele Probleme in Wissenschaft, Berechnung und Optimierung diese Methode verwenden.

Das folgende Video gibt einen Überblick über SQD, was seine Nützlichkeit ausmacht und was es schneller als viele andere Ansätze macht. Der folgende Text enthält weitere Einzelheiten.


1. Einleitung und Motivation

Nehmen 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 Hamiltonian eines Systems, ∣ψ⟩|\psi\rangle ist die Wellenfunktion (auch als Eigenzustand bekannt) und EE ist ein Eigenwert. Die Eigenwerte der Matrix HH stellen die Energieniveaus des Systems dar. Handelt es sich bei dem System zum Beispiel um ein Molekül, so stellt der niedrigste Eigenwert die Grundzustandsenergie des Moleküls dar. Bei vielen Problemen sind wir an der Abschätzung der Energie im Grundzustand interessiert.

Durch die Anwendung von Verfahren zur exakten Diagonalisierung aus der linearen Algebra können wir die vollständige Matrix HH diagonalisieren. Allerdings wird dieser Ansatz mit zunehmender Größe der Matrix rechenintensiv (oder sogar unmöglich). So kann beispielsweise selbst bei kleinen chemischen Molekülen die Dimension „ HH “ unzumutbar groß sein (so hat beispielsweise der Hamiltonoperator für das Molekül „ N2N_2 “ mit einer cc-PVDZ-Basis die Dimension „ 65780×65780)65780 \times 65780) “.

Glücklicherweise werden nicht immer alle Eigenwerte und Eigenvektoren einer Hamilton-Matrix HH benötigt, so dass eine Diagonalisierung der vollständigen Matrix in vielen praktischen Fällen nicht erforderlich ist. Bei der Schätzung des Grundzustands beispielsweise sind wir an dem niedrigsten Eigenwert und dem entsprechenden Eigenvektor interessiert. Dies ermöglicht es uns, das Konzept der Projektion auf einen (nützlichen) Unterraum anzuwenden.

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

Beachten Sie, dass der Unterraum unseren Zieleigenzustand (z. B. den Boden) unterstützen muss. Mit anderen Worten: Der projizierte Hamiltonian HSH_\mathcal{S} muss in einem Unterraum liegen, der den niedrigsten Eigenwert enthält.


2. Projektion und Diagonalisierung

Angenommen, wir wollen den niedrigsten Eigenwert und den entsprechenden Eigenvektor für die folgende 8×88 \times 8 Hamilton-Matrix HH finden.

H=[0.2235−0.0390−0.1035−0.08180.17460.10910.1165−0.0104−0.03900.66210.0706−0.1964−0.07820.26190.10950.0029−0.10350.07060.99610.17240.1067−0.2299−0.18170.1571−0.0818−0.19640.1724−0.17730.1019−0.4778−0.1272−0.04140.1746−0.07820.10670.10190.1418−0.1359−0.1793−0.07660.10910.2619−0.2299−0.4778−0.13590.10140.16960.05520.11650.1095−0.1817−0.1272−0.17930.16960.42270.2702−0.01040.00290.1571−0.0414−0.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 zusammen mit verschiedenen projizierten Versionen ( HSH_\mathcal{S} ) für verschiedene Unterräume diagonalisieren, um die Skalierbarkeit und Bedeutung der Wahl des Unterraums zu demonstrieren.

Die Grundzustandsenergie (minimaler Eigenwert) der Matrix HH ist −0.5357-0.5357 und die genaue Grundzustandswellenfunktion (Eigenvektor) ist:

GSexact=0.8∗∣011⟩+0.6∗∣101⟩.\text{GS}_{\text{exact}} = 0.8 * |011\rangle + 0.6 * |101\rangle.

d.h. der Grundzustand der Matrix wird von zwei Berechnungsbasiszuständen (Vektoren) ∣011⟩\vert 011 \rangle und ∣101⟩\vert 101 \rangle aufgespannt.

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

Als nächstes werden wir die Matrix HH auf verschiedene Unterräume projizieren und prüfen, ob wir den exakten Grundzustand erhalten können. Insbesondere werden wir die Matrix auf einen Unterraum projizieren, der von aufgespannt wird:

  1. exakte 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 den exakten Grundzustand als auch den Außer-Grund-Zustand umfassen (aber nicht alle möglichen Vektoren im Hilbert-Raum).

2.1 Case-1: Der Unterraum umfasst den Grundzustand

Angenommen, wir wollen HH in einen Unterraum ( S\mathcal{S} ) projizieren, der von zwei Vektoren x1=∣011⟩x_1 = |011\rangle und x2=∣101⟩x_2 = |101\rangle aufgespannt wird. Der projizierte Hamiltonian ist definiert durch:

HS=[⟨x1∣H∣x1⟩⟨x1∣H∣x2⟩⟨x2∣H∣x1⟩⟨x2∣H∣x2⟩]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.T @ H @ x1, x1.T @ H @ x2], [x2.T @ H @ x1, x2.T @ H @ x2]])
print(Hs)

Output:

[[-0.1773 -0.4778]
 [-0.4778  0.1014]]

Beachten Sie, dass wir bei der Darstellung der projizierten Hamilton-Elemente als implizit die gängige Konvention übernehmen x1.T @ H @ x2, wonach die Zustandsvektoren und x1 Kets (Spaltenvektoren) x2 entsprechen, was mit Ausdrücken wie x1=∣011⟩x_1 = |011\rangle übereinstimmt. Allerdings unterscheiden Arrays vom Typ NumPy's 1D an sich nicht zwischen Zeilen- und Spaltenvektoren, und für die hier verwendeten Vektoren hat die Transponierungsoperation keine numerischen Auswirkungen. Folglich x1 @ H @ x2.T würde die Schreibweise zum gleichen numerischen Ergebnis führen, obwohl x1.T @ H @ x2 besser mit der üblichen Dirac-Notation ⟨x1∣H∣x2⟩\langle x_1|H|x_2\rangle übereinstimmt.

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]

Wir können hier mehrere wichtige Feststellungen treffen.

  • Da wir den Unterraum mit zwei Vektoren aufgespannt haben, ist die Dimension der projizierten Matrix ( HSH_\mathcal{S} ) 2×22 \times 2 und damit kleiner als die der Vollmatrix HH ( 8×88 \times 8 ).
  • Der minimale Eigenwert der projizierten Matrix entspricht dem Eigenwert des exakten Grundzustands.
  • Die Werte in der Variablen eigvecs bezeichnen die Amplitude der den Unterraum überspannenden Vektoren, mit deren Hilfe wir den Eigenzustand (Grundzustand) rekonstruieren können. In diesem Fall erhalten wir den exakten Grundzustand (bis zu einer globalen Phase):
∣ψ⟩=−(0.8∣011⟩+0.6∣101⟩)|\psi \rangle = - (0.8 |011\rangle + 0.6 |101\rangle)

2.2 Case-2: Der Unterraum schließt einige oder alle Grundzustandsvektoren aus

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

HS=[⟨x1∣H∣x1⟩⟨x1∣H∣x2⟩⟨x1∣H∣x3⟩⟨x2∣H∣x1⟩⟨x2∣H∣x2⟩⟨x2∣H∣x3⟩⟨x3∣H∣x1⟩⟨x3∣H∣x2⟩⟨x3∣H∣x3⟩]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.T @ H @ x1, x1.T @ H @ x2, x1.T @ H @ x3],
        [x2.T @ H @ x1, x2.T @ H @ x2, x2.T @ H @ x3],
        [x3.T @ H @ x1, x3.T @ H @ x2, x3.T @ H @ x3],
    ]
)
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

Der Eigenwert −0.2111-0.2111 stimmt in diesem Fall nicht mit dem minimalen Eigenwert −0.5357-0.5357 des vollständigen Hamiltonian überein. Die wichtigste Beobachtung dabei ist: Wenn wir auf einen Unterraum projizieren, der Basiszustände in unserem Zielzustand (Grundzustand) - entweder teilweise oder vollständig - ausschließt, wird der geschätzte Grundzustand anders sein als der exakte Zustand.

2.3 Case-3: Der Unterraum umfasst sowohl Grundzustands- als auch Nicht-Grundzustandsvektoren

Als Nächstes zeigen wir einen Fall, in dem der Unterraum von Vektoren aufgespannt wird, die sowohl exakte Grundzustandsvektoren als auch unerwünschte Vektoren enthalten. Angenommen, unser Unterraum wird von x1=∣011⟩x_1 = |011\rangle, x2=∣101⟩x_2 = |101\rangle (im exakten Grundzustand vorhanden) und x3=∣111⟩x_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.T @ H @ x1, x1.T @ H @ x2, x1.T @ H @ x3],
        [x2.T @ H @ x1, x2.T @ H @ x2, x2.T @ H @ x3],
        [x3.T @ H @ x1, x3.T @ H @ x2, x3.T @ H @ x3],
    ]
)
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. ]

In diesem Fall erhalten wir wieder −0.5357-0.5357 als minimalen Eigenwert, der mit der vollständigen Matrix (d. h. dem exakten Grundzustand) übereinstimmt. Ein weiteres interessantes Ergebnis ist die Amplitude von x3x_3, die sich aus dem Projektions- und Diagonalisierungsprozess ergibt. Die Amplitude ist 00, und wenn wir die Wellenfunktion (Eigenzustand) mit den berechneten Amplituden und Vektoren rekonstruieren, erhalten wir:

∣ψ⟩=0.8∣011⟩+0.6∣101⟩+0.0∣111⟩=0.8∣011⟩+0.6∣101⟩(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)

Selbst wenn unser Unterraum also einige Nicht-Ziel-Vektoren enthält (zusammen mit dem vollständigen Satz von Zielvektoren), können wir den korrekten Eigenwert und Eigenzustand berechnen, da der Projektions- und Diagonalisierungsprozess die Nicht-Ziel-Vektoren herausfiltert, indem er ihre Amplituden auf 00 setzt. Diese Eigenschaft von SQD bietet eine inhärente Rauschtoleranz.


3. Die Rolle der Quantenphysik in der SQD

Die obigen Analysen belegen die Bedeutung der Unterraum-Vektoren, die den Zielzustand unterstützen müssen. Dies wirft eine wichtige Frage auf: Wie wählen wir Vektoren mit Zielzustandsunterstützung für die Unterraumkonstruktion aus?

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

  1. Mit Hilfe eines geeigneten Quantenschaltkreises versuchen wir, auf einem Quantencomputer einen Zustand herzustellen, der Basiszustände erzeugt, auf denen die Zielwellenfunktion (z. B. der Grundzustand) eine signifikante Unterstützung hat. Die abgetasteten Basiszustände (Bitstrings) werden den Unterraum für die Hamilton-Projektion aufspannen.
  2. Ein klassischer Computer projiziert den Hamiltonian auf den Unterraum (aufgespannt durch Stichproben/Vektoren des Quantencomputers) und diagonalisiert ihn, um Eigenwerte und Eigenvektoren mit geeigneten numerischen Methoden zu berechnen.
Ein Diagramm der quantenmechanischen und klassischen Komponenten von SQD. In der Quantenmechanik bereitet man den Zielraum vor und nimmt Stichproben daraus; anschließend projiziert man die Matrix klassisch auf den Stichprobenunterraum und diagonalisiert die projizierte Matrix.

Es gibt verschiedene Möglichkeiten, einen solchen Quantenzustand herzustellen, und je nach Problemstellung können sie variabel oder nicht-variabel sein.

In den nächsten beiden Lektionen werden wir zwei konkrete Beispiele für die Vorbereitung von Zuständen und die Entnahme von Stichproben aus ihnen zeigen.

  1. In Lektion 4 werden wir einen parametrisierten, lokal unitären, gekoppelten Jastrow-Ansatz (LUCJ) verwenden, um Stichproben für ein chemisches Problem zu erzeugen (Abschätzung der Grundzustandsenergie eines N2N_2 Moleküls). Wir werden den LUCJ-Ansatz mit Parametern aus klassischen gekoppelten Cluster-Singles und -Doubles (CCSD)-Berechnungen initialisieren.
  2. In Lektion 5 werden wir eine Stichprobe von Krylov-Basiszuständen nehmen, um den Unterraum für ein Problem aus der Physik der kondensierten Materie aufzuspannen. Dieser Ansatz ist von Natur aus nicht variabel.

Neben den oben genannten problemspezifischen Ansätzen beinhaltet ein allgemeiner Ansatz für die Zustandsvorbereitung einen Variationsansatz, bei dem wir die Ansatzparameter mit Hilfe eines klassischen Optimierers iterativ aktualisieren werden.

Ein Flussdiagramm, das den Weg von einem variationalen Quantenschaltkreis über Quanten-Sampling bis hin zur klassischen Berechnung veranschaulicht, bei der die Matrix projiziert und diagonalisiert wird. Anschließend werden die Ergebnisse in einen klassischen Optimierer eingespeist, der neue Variationsparameter auswählt, und wir kehren zum variationalen Quantenschaltkreis zurück.

Stichproben von vor der Fehlertoleranz entwickelten Quantencomputern können verrauscht sein. SQD verwendet einen selbstkonsistenten Konfigurationswiederherstellungsprozess, um verrauschte Proben zu korrigieren [1]. In Lektion 4 werden wir den Prozess der Konfigurationswiederherstellung genauer erörtern und ihn zur iterativen Korrektur verrauschter Proben anwenden, um die Abschätzung der Grundzustandsenergie für ein Chemieproblem zu verfeinern.

3.1 Hinweise zur Unterstützung des Grundzustands

Erläutern wir das Konzept der Grundzustandsunterstützung näher. Die Grundzustandsunterstützung kann definiert werden als die Menge der Basiszustände, bei denen der Grundzustand eine Amplitude ungleich Null hat (bis zu einer bestimmten Schwelle).

Angenommen, der exakte Grundzustand eines 33 -qubit-Problems ist

∣ψ⟩=12∣000⟩+12∣111⟩\vert \psi \rangle = \frac{1}{\sqrt{2}} \vert 000 \rangle + \frac{1}{\sqrt{2}} \vert 111 \rangle

Wenn wir den obigen Zustand abtasten, sollten wir eine Reihe von Berechnungsbasiszuständen {∣000⟩\{\vert 000 \rangle, ∣111⟩}\vert 111 \rangle \} erhalten (andere Berechnungsbasiszustände haben im Grundzustand eine Amplitude von Null und erscheinen daher idealerweise während der Abtastung nicht).

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

In der Praxis ist es nicht notwendig, den exakten Grundzustand vorzubereiten, da die Probenahme vieler anderer Zustände denselben Satz von Vektoren ergeben kann. Zum Beispiel:

∣ψa⟩=0.8∣000⟩+0.6∣111⟩→Sampling{∣000⟩,∣111⟩}∣ψb⟩=12∣000⟩+32∣111⟩→Sampling{∣000⟩,∣111⟩}∣ψc⟩=12∣000⟩+12∣111⟩+12∣101⟩→Sampling{∣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}

Die Vorbereitung und Abtastung von jedem der oben genannten Zustände erzeugt Vektoren, deren Amplitude im Grundzustand nicht Null ist, und alle diese Vektoren gelten als grundzustandsfähig. Beachten Sie, dass die Abtastung ∣ψc⟩\vert \psi_c \rangle einen zusätzlichen Vektor ∣101⟩\vert 101 \rangle enthält, der im exakten Grundzustand die Amplitude 00 hat. Wir haben jedoch bereits gezeigt, dass die Aufnahme solcher Vektoren in den Unterraum nicht problematisch ist, da die Projektion und die Diagonalisierung die Amplitude der unerwünschten Vektoren auf 00 setzen, so dass wir den erwarteten Eigenwert erhalten und den richtigen Eigenzustand rekonstruieren können.

Abbildungen von korrekten und falschen Ansatzhaltungen. Ein guter Ansatz verfügt über einen Zustandsraum, der den Zustandsraum des Grundzustands vollständig enthält. Ein schlechter Ansatz enthält nur einen Teil oder gar keine Unterstützung des Grundzustands.

Daher ist es nicht notwendig, den exakten Grundzustand vorzubereiten und zu untersuchen. Tatsächlich kann dies schwierig sein, da der genaue Grundzustand nicht a priori bekannt ist und es oft von Vorteil ist, nicht den genauen Grundzustand vorzubereiten und abzutasten, insbesondere wenn die Wellenfunktion (der Zustand) verzerrt ist und einige Basiszustände sehr hohe Wahrscheinlichkeiten aufweisen. Betrachten Sie die folgende Wellenfunktion:

∣ψ⟩=0.7∣000⟩−0.7∣010⟩+0.1∣101⟩−0.01∣111⟩\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 schiefe Wellenfunktion, bei der die Basiszustände ∣000⟩\vert 000 \rangle und ∣010⟩\vert 010 \rangle im Vergleich zu ∣101⟩\vert 101 \rangle und ∣111⟩\vert 111 \rangle viel größere Amplituden haben. Bei einer Stichprobe erhalten wir ∣000⟩\vert 000 \rangle und ∣010⟩\vert 010 \rangle häufiger ( sampling probability=∣amplitude∣2\text{sampling probability} = \vert \text{amplitude} \vert^{2} ≈49%\approx 49\% jeweils für ∣000⟩\vert 000 \rangle und ∣010⟩\vert 010 \rangle, ≈1%\approx 1\% für ∣101⟩\vert 101 \rangle und ≈0.01%\approx 0.01\% für ∣111⟩\vert 111 \rangle ). Bei einem endlichen Stichprobenbudget (Schüsse ) 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 den wahren minimalen Eigenwert nicht finden, wenn wir den Unterraum mit einer solchen Menge mit fehlenden Vektoren aufspannen. Daher ist es vorteilhaft (und notwendig), eine Probe aus einem Zustand mit Grundzustandsunterstützung zu nehmen.

3.2 Ein Fall gegen einheitliche Stichproben

Es kann verlockend sein, Stichproben aus einer Gleichverteilung zu ziehen, um den Unterraum zu erfassen. Das mag zwar bei kleinen Problemen funktionieren, aber bei größeren und praktischeren Problemen wird es scheitern. Bei großen Problemen mit vielen Qubits kann der Hilbert-Raum unerschwinglich groß sein. Ein 32-Qubit-Hilbert-Raum 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 endlichen Stichprobenbudget (z. B. 1000010000 Vektoren, um den Diagonalisierungsprozess durchführbar zu halten) eine gleichmäßige Stichprobe ziehen, kann der Unterraum Vektoren mit Grundzustandsunterstützung häufiger ausschließen, da der Prozess zufällig sein wird. Deshalb brauchen wir eine systematische Methode, um mit Hilfe von Quantenschaltungen Proben aus dem Grundzustand zu entnehmen.


4. SQD und Sparsity der Wellenfunktion

Die Lücke zwischen den Dimensionen des vollständigen Hilbert-Raums und des machbaren Unterraums bringt einen weiteren wichtigen Aspekt der SQD mit sich, nämlich die Spärlichkeit der Wellenfunktion. Der SQD-Ansatz eignet sich gut für spärliche oder konzentrierte Wellenfunktionen, bei denen ein kleiner Teil der Basiszustände nicht vernachlässigbare Amplituden hat. 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 es versäumen, Vektoren mit Zielzustandsunterstützung in den Unterraum aufzunehmen, können wir falsche Eigenwerte und Eigenvektoren erhalten.
  2. Um das obige Problem zu vermeiden, müssen wir viele Vektoren in den Unterraum aufnehmen. Die Dimension des projizierten Hamiltonianers steht jedoch in direktem Zusammenhang mit der Dimension des Unterraums. Ein größerer Unterraum bedeutet einen größeren Hamiltonian, der sich möglicherweise nicht mehr diagonalisieren lässt.

Wir veranschaulichen das Problem anhand der folgenden Matrix ( HnewH_{new} ). Der niedrigste Eigenwert von HnewH_{new} ist −2.2081-2.2081, und die entsprechende Wellenfunktion (Eigenzustand) ist breit:

∣ψ⟩=∣000⟩+∣001⟩+∣010⟩+∣011⟩+∣100⟩+∣101⟩+∣110⟩+∣111⟩8|\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]

Angenommen, wir projizieren die 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.T @ H_new @ x1, x1.T @ H_new @ x2, x1.T @ H_new @ x3, x1.T @ H_new @ x4],
        [x2.T @ H_new @ x1, x2.T @ H_new @ x2, x2.T @ H_new @ x3, x2.T @ H_new @ x4],
        [x3.T @ H_new @ x1, x3.T @ H_new @ x2, x3.T @ H_new @ x3, x3.T @ H_new @ x4],
        [x4.T @ H_new @ x1, x4.T @ H_new @ x2, x4.T @ H_new @ x3, x4.T @ H_new @ x4],
    ]
)
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

Das obige Beispiel zeigt, dass die Eigenwertberechnung fehlerhaft wird, wenn die Wellenfunktion breit ist und wir keine Basiszustände in den Unterraum aufnehmen.


5. SQD vs. VQE

Wie bereits erwähnt, kann SQD eine Quantenvariationsschaltung und iterative Parameteraktualisierungen erfordern, um die Grundzustandsunterstützung vorzubereiten und Proben zu entnehmen. Da diese iterative Parameteraktualisierungsroutine der VQE ähnelt, kann man sich fragen, worin sich diese 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, das mit einem minimalen Basissatz (sto-3g) beschrieben wurde.

 
VQE
SQD
Gemeinkosten für MessungenViele Pauli-Terme, viele Messkreise: Der Hamiltonian für das Molekül hat 29512951 eindeutige Pauli-Terme. Da die Pauli-Terme die Terme XX und YY enthalten können und typische Quantenmessungen auf der ZZ -Basis durchgeführt werden, müssen wir die Messbasis ändern, um diese Terme auszuwerten. Bei der Optimierung für Messungen können die Terme von 29512951 in 11871187 Gruppen zusammengefasst werden, wobei jede Gruppe mit einer einzigen Schaltung ausgewertet werden kann. Wir benötigen also mindestens 11871187 eindeutige Schaltungen, um alle Pauli-Terme auszuwerten. Viele Schüsse pro Runde für eine geringere Varianz. Auch hier ist der ausgewertete Erwartungswert jedes Pauli-Terms mit einer Varianz verbunden, die umgekehrt von shots\sqrt{shots} abhängt. Um jeden Term genau zu schätzen, müssen wir daher viele Schüsse pro Schaltkreis zuweisen. Um z. B. chemische Genauigkeit zu erreichen ( 11 kcal/mol), benötigen wir in der Regel Aufnahmen in der Größenordnung von 10510^5 - 10710^7 pro Schaltkreis. Daher benötigt VQE viele Messkreise und jeder Kreis eine bestimmte Anzahl von Aufnahmen. In der Praxis kann dieser Mess-Overhead einschränkend sein.Bei der SQD brauchen wir nicht für jeden gruppierten Pauli-Term einen eigenen Messkreis. In der Regel wird ein einzelner Stromkreis für eine bestimmte Anzahl von Aufnahmen gemessen. Auch wenn wir die Anzahl der Schüsse je nach Problemstellung auf einen hohen Wert setzen, bleibt der Overhead viel geringer als bei VQE. Außerdem sind die Energieschätzungen unter Verwendung des Diagonalisierungsprozesses exakt, d. h. die berechneten Eigenwerte sind in diesem Unterraum exakt und haben keine Varianz wie bei VQE. (Im Falle des Krylov-Basis-State-Samplings (Lektion 5) müssen wir mehrere Schaltkreise messen, aber die Anzahl der Schaltkreise bleibt viel kleiner als bei VQE).
Geschätzte EnergiegrenzeBei VQE sind die Energieschätzungen nicht begrenzt und können aufgrund von Rauschen unter den tatsächlichen Mindestwerten liegen.Der Energieschätzungsprozess in SQD erzeugt immer eine obere Grenze für die Grundzustandsenergie, und die geschätzte Energie wird nie niedriger sein als die wahre Grundzustandsenergie.
LärmtoleranzDie VQE-Energieschätzung ist anfällig für das Rauschen von vorfehlertoleranten Quantencomputern.SQD hat eine inhärente Toleranz gegenüber Rauschen. Vorfehlertolerante Quantencomputer können verrauschte Proben erzeugen. Selbst wenn wir diese Proben in den Unterraum aufnehmen, kann die anschließende Diagonalisierung diese Proben unterdrücken, indem ihre Amplituden auf Null gesetzt werden. Außerdem werden wir eine Methode namens Konfigurationswiederherstellung im Zusammenhang mit SQD erörtern, die die SQD-Rauschtoleranz weiter verbessert.

6. Zusammenfassung

  1. Bei SQD erzeugt ein Quantencomputer Proben, und ein klassischer Computer projiziert einen Hamiltonian auf einen Unterraum, der von den Proben aufgespannt wird, und diagonalisiert ihn, um Eigenwerte und Eigenvektoren zu berechnen.
  2. Die erzeugten Proben sollten aus dem Zielzustand (Grundzustand) stammen.
  3. Je nach Problemstellung können die Quantenzustandsvorbereitung und die Probengenerierung iterativ oder nicht iterativ erfolgen.
  4. SQD funktioniert am besten bei spärlichen Wellenfunktionen. Eine breite Wellenfunktion erfordert einen großen Unterraum für genaue Lösungen, was klassische Projektions- und Diagonalisierungsoperationen kostspielig macht.
  5. SQD hat mehrere Vorteile gegenüber VQE, z. B. einen geringeren Messaufwand und eine Obergrenze für die geschätzte Grundzustandsenergie, wodurch es besser skalierbar ist.

Referenzen

[1] J. Robledo-Moreno et al, "Chemie jenseits exakter Lösungen auf einem quantenzentrierten Supercomputer" (2024). arXiv:quant-ph/2405.05068.

War diese Seite hilfreich?
Melden Sie auf GitHub einen Fehler, einen Tippfehler oder fordern Sie Inhalte an.