Přeskočit na hlavní obsah

Vzorkováním založená kvantová diagonalizace (SQD)

Vzorkováním založená kvantová diagonalizace (SQD) kombinuje klasickou lineární algebru a sílu kvantových výpočtů pro diagonalizaci Hamiltoniánu (matice) a výpočet jeho vlastních hodnot a vlastních vektorů. Diagonalizace matic je důležitá matematická operace, protože tuto metodu využívá mnoho problémů ve vědě, výpočtech a optimalizaci.

Následující video poskytuje přehled SQD, čím je jeho užitečnost dána a co ho dělá rychlejším než mnoho jiných přístupů. Následující text uvádí další podrobnosti.

1. Úvod a motivace

Jako příklad uvažujme rovnici pro vlastní hodnoty energie, kterou proslavil Schrödinger.

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

HH je Hamiltonián systému, ψ|\psi\rangle je vlnová funkce (známá také jako vlastní stav) a EE je vlastní hodnota. Vlastní hodnoty matice HH reprezentují energetické hladiny systému. Pokud je například systém molekulou, nejnižší vlastní hodnota reprezentuje energii základního stavu molekuly. V mnoha úlohách nás zajímá odhad energie základního stavu.

Aplikací technik přesné diagonalizace z lineární algebry můžeme diagonalizovat celou matici HH. Tento přístup se však stává výpočetně náročným (a dokonce nemožným), jak se matice zvětšuje. Například i pro malé chemické molekuly může být HH prohibitivně velká (například Hamiltonián pro molekulu N2N_2 s bází cc-PVDZ má rozměr 65780×65780).65780 \times 65780).

Naštěstí ne vždy potřebujeme všechny vlastní hodnoty a vlastní vektory Hamiltoniánu HH, a proto v mnoha praktických případech není diagonalizace celé matice nutná. Například v případě odhadu základního stavu nás zajímá nejnižší vlastní hodnota a odpovídající vlastní vektor. To nám umožňuje uplatnit koncept projekce na (užitečný) podprostor.

Uvažujme matici HH o rozměrech N×NN \times N, kde úplný vektorový prostor (Hilbertův prostor) má dimenzi NN (NN je velké). Dále zvolíme podprostor (S\mathcal{S}) — což je podmnožina celého Hilbertova prostoru — o dimenzi MM, kde MM je dostatečně malé. Po projekci HH na tento podprostor bude projektovaná matice (řekněme HSH_\mathcal{S}) menší (M×MM \times M). Menší HSH_\mathcal{S} lze diagonalizovat vhodnou klasickou numerickou metodou a získat vlastní hodnoty a vlastní vektory pro tento podprostor.

Je třeba poznamenat, že podprostor musí být v nosiči našeho cílového (například základního) vlastního stavu. Jinými slovy, projektovaný Hamiltonián HSH_\mathcal{S} musí být v podprostoru, který zahrnuje nejnižší vlastní hodnotu.

2. Projekce a diagonalizace

Předpokládejme, že chceme najít nejnižší vlastní hodnotu a odpovídající vlastní vektor pro následující Hamiltonián HH o rozměrech 8×88 \times 8.

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}

Pro demonstraci škálovatelnosti a důležitosti volby podprostoru budeme diagonalizovat celou matici spolu s různými projektovanými verzemi (HSH_\mathcal{S}) pro různé podprostory.

Energie základního stavu (minimální vlastní hodnota) matice HH je 0.5357-0.5357 a přesná vlnová funkce základního stavu (vlastní vektor) je:

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

tedy základní stav matice je generován dvěma výpočetními bázovými stavy (vektory) 011\vert 011 \rangle a 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. ]

Dále budeme matici HH projektovat na různé podprostory a ověříme, zda dokážeme získat přesný základní stav. Konkrétně projektujeme matici na podprostor generovaný:

  1. přesnými vektory základního stavu (011\vert 011 \rangle a 101\vert 101 \rangle).
  2. vektory, které vylučují některé nebo všechny přesné vektory základního stavu (například 000\vert 000 \rangle, 011\vert 011 \rangle a 110\vert 110 \rangle).
  3. vektory, které zahrnují jak přesný základní stav, tak stavy mimo základní stav (ale ne všechny možné vektory v Hilbertově prostoru).

2.1 Případ 1: Podprostor obsahuje základní stav

Předpokládejme, že chceme promítnout HH do podprostoru (S\mathcal{S}), který je rozpětím dvou vektorů x1=011x_1 = |011\rangle a x2=101x_2 = |101\rangle. Promítnutý Hamiltonián je definován takto:

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]

Zde můžeme učinit několik klíčových pozorování.

  • Protože jsme podprostor vytvořili rozpětím dvou vektorů, dimenze promítnuté matice (HSH_\mathcal{S}) je 2×22 \times 2, což je menší než plná matice HH (8×88 \times 8).
  • Minimální vlastní hodnota promítnuté matice odpovídá přesné vlastní hodnotě základního stavu.
  • Hodnoty v proměnné eigvecs označují amplitudy vektorů rozpínajících podprostor a pomocí nich dokážeme zrekonstruovat vlastní stav (základní stav). V tomto případě získáme přesný základní stav (až na globální fázi):
ψ=(0.8011+0.6101)|\psi \rangle = - (0.8 |011\rangle + 0.6 |101\rangle)

2.2 Případ 2: Podprostor vylučuje některé nebo všechny vektory základního stavu

Dále promítneme HH na podprostor vytvořený rozpětím tří vektorů x1=000x_1 = |000\rangle, x2=011x_2 = |011\rangle a x3=110x_3 = |110\rangle. Vektory záměrně volíme tak, aby vylučovaly jeden vektor základního stavu (101\vert 101 \rangle). Promítnutý Hamiltonián je definován takto:

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

Vlastní hodnota 0.2111-0.2111 v tomto případě neodpovídá minimální vlastní hodnotě 0.5357-0.5357 plného Hamiltoniánu. Klíčové pozorování zde je: pokud promítáme na podprostor, který vylučuje bázové stavy našeho cílového (základního) stavu – ať už částečně, nebo úplně – odhadnutý základní stav se bude lišit od přesného.

2.3 Případ 3: Podprostor obsahuje jak základní stav, tak vektory mimo základní stav

Dále ukážeme případ, kdy je podprostor generován vektory zahrnujícími jak vektory přesného základního stavu, tak nežádoucí vektory. Předpokládejme, že náš podprostor je generován vektory x1=011x_1 = |011\rangle, x2=101x_2 = |101\rangle (přítomné v přesném základním stavu) a x3=111x_3 = |111\rangle (v přesném základním stavu nepřítomný).

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

V tomto případě opět dostáváme jako minimální vlastní číslo 0.5357-0.5357, což odpovídá úplné matici (tedy přesnému základnímu stavu). Dalším zajímavým výsledkem je amplituda x3x_3 vrácená procesem projekce a diagonalizace. Amplituda je 00, a když zrekonstruujeme vlnovou funkci (vlastní stav) pomocí vypočtených amplitud a vektorů, dostáváme:

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

I když tedy náš podprostor obsahuje některé necílové vektory (spolu s úplnou sadou cílových vektorů), můžeme správně spočítat vlastní číslo i vlastní stav, protože proces projekce a diagonalizace odfiltruje necílové vektory tím, že jejich amplitudy nastaví na 00. Tato vlastnost SQD poskytuje vrozenou toleranci vůči šumu.

3. Role kvantové části v SQD

Výše uvedené analýzy ukazují důležitost vektorů generujících podprostor, které musejí být v pokrytí cílového stavu. To vyvolává důležitou otázku: Jak zvolit vektory s pokrytím cílového stavu pro konstrukci podprostoru?

Zde vstupují do hry kvantové počítače. Kvantově-klasická synergie funguje v paradigmatu SQD takto:

  1. Pomocí vhodného kvantového obvodu se snažíme na kvantovém počítači připravit stav, který generuje bázové stavy, na kterých má cílová vlnová funkce (například základní stav) významné pokrytí. Navzorkované bázové stavy (bitstringy) budou generovat podprostor pro projekci Hamiltoniánu.
  2. Klasický počítač projikuje Hamiltonián do podprostoru (generovaného vzorky/vektory z kvantového počítače) a diagonalizuje ho, aby pomocí vhodných numerických metod vypočítal vlastní čísla a vlastní vektory. A diagram of quantum and classical components of SQD. In quantum, you prepare and sample from your target support, you classically project your matrix onto the sampled subspace and diagonalize your projected matrix. Způsobů, jak takový kvantový stav připravit, může být několik a mohou být variační nebo nevariační v závislosti na úloze.

V následujících dvou lekcích si ukážeme dva konkrétní příklady přípravy stavů a vzorkování z nich.

  1. V lekci 4 použijeme parametrizovaný ansatz LUCJ (local unitary coupled Jastrow) ke generování vzorků pro chemickou úlohu (odhad energie základního stavu molekuly N2N_2). LUCJ ansatz inicializujeme parametry z klasického výpočtu CCSD (coupled cluster singles and doubles).
  2. V lekci 5 budeme vzorkovat z Krylovových bázových stavů, abychom generovali podprostor pro úlohu z fyziky kondenzovaných látek. Tento přístup je svou povahou nevariační.

Kromě výše uvedených problémově specifických přístupů existuje obecný přístup k přípravě stavu založený na variačním ansatzu, kde iterativně aktualizujeme parametry ansatzu pomocí klasického optimalizátoru. A flow chart from a variational quantum circuit through quantum sampling over to classical computing in which the matrix is projected and diagonalized. Then the results are fed into a classical optimizer which selects new variational parameters, and we return to the variational quantum circuit. Vzorky z pre-fault-tolerantních kvantových počítačů mohou být zašuměné. SQD využívá samokonzistentní proces obnovy konfigurací k opravě zašuměných vzorků [1]. Proces obnovy konfigurací probereme podrobněji a iterativně jej použijeme k opravě zašuměných vzorků za účelem zpřesnění odhadu energie základního stavu pro chemickou úlohu v lekci 4.

3.1 Poznámky k pokrytí základního stavu

Pojďme si koncept pokrytí základního stavu vysvětlit podrobněji. Pokrytí základního stavu lze definovat jako množinu bázových stavů, ve kterých má základní stav nenulovou amplitudu (až po prahovou hodnotu).

Předpokládejme, že přesný základní stav 33-qubitové úlohy je

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

Pokud výše uvedený stav navzorkujeme, měli bychom získat množinu výpočetních bázových stavů {000\{\vert 000 \rangle, 111}\vert 111 \rangle \} (ostatní výpočetní bázové stavy mají v základním stavu nulovou amplitudu, a proto se při vzorkování v ideálním případě neobjeví).

V ideálním případě se množina bázových vektorů tohoto stavu skládá z {000,111}\{ \vert 000 \rangle, \vert 111 \rangle \} (jinými slovy, podprostor tohoto stavu je generován těmito dvěma bázovými vektory).

V praxi nemusíme připravovat přesný základní stav, protože vzorkování z mnoha jiných stavů nám může poskytnout stejnou množinu vektorů. Například:

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

Příprava a vzorkování z kteréhokoli z výše uvedených stavů vygeneruje vektory, které mají v základním stavu nenulovou amplitudu, a všechny se kvalifikují jako stavy mající pokrytí základního stavu. Všimni si, že vzorkování ψc\vert \psi_c \rangle zahrnuje jeden vektor navíc, 101\vert 101 \rangle, který má v přesném základním stavu amplitudu 00. Dříve jsme však ukázali, že zahrnutí takových vektorů do podprostoru není problematické, protože operace projekce a diagonalizace nastaví amplitudu nežádoucích vektorů na 00, a tak můžeme získat očekávané vlastní číslo a zrekonstruovat správný vlastní stav.

Diagrams of good and bad ansatz supports. A good ansatz has support that completely contains the ground state support. A poor ansatz contains only part or none of the ground state support.

Příprava a vzorkování z přesného základního stavu tedy není nutná. Ve skutečnosti to může být obtížné, protože přesný základní stav není a priori znám, a často je výhodné přesný základní stav nepřipravovat a z něj nevzorkovat, zejména pokud je vlnová funkce (stav) zešikmená tak, že některé bázové stavy mají velmi vysoké pravděpodobnosti. Uvažuj následující vlnovou funkci:

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

Toto je zešikmená vlnová funkce, kde bázové stavy 000\vert 000 \rangle a 010\vert 010 \rangle mají mnohem větší amplitudy ve srovnání s 101\vert 101 \rangle a 111\vert 111 \rangle. Při vzorkování budeme 000\vert 000 \rangle a 010\vert 010 \rangle dostávat mnohem častěji (sampling probability=amplitude2\text{sampling probability} = \vert \text{amplitude} \vert^{2} 49%\approx 49\% pro 000\vert 000 \rangle a 010\vert 010 \rangle každý, 1%\approx 1\% pro 101\vert 101 \rangle a 0.01%\approx 0.01\% pro 111\vert 111 \rangle). Při omezeném rozpočtu vzorkování (shots) je velmi pravděpodobné, že naše navzorkovaná množina bude obsahovat pouze 000\vert 000 \rangle a 010\vert 010 \rangle. Jak bylo ukázáno dříve, pokud podprostor generujeme takovou množinou s chybějícími vektory, nebudeme schopni najít skutečné minimální vlastní číslo. Proto bude výhodné (a nezbytné) vzorkovat ze stavu s pokrytím základního stavu.

3.2 Případ proti uniformnímu vzorkování

Může být lákavé odebírat vzorky z uniformního rozdělení za účelem rozpětí podprostoru. Pro malé problémy to sice může fungovat, ale pro větší a praktičtější problémy to začne selhávat. Pro velké problémy s mnoha qubity může být Hilbertův prostor neúnosně velký. Například 32qubitový Hilbertův prostor má více než 44 miliardy možných bázových vektorů (232=42949672962^{32} = 4\,294\,967\,296). Pokud z tohoto prostoru uniformně vzorkujeme s konečným rozpočtem vzorků (řekněme 1000010000 vektorů, aby byl proces diagonalizace proveditelný), může podprostor častěji vynechat vektory s podporou základního stavu, protože proces bude náhodný. Potřebujeme tedy systematický způsob vzorkování z podpory základního stavu s využitím kvantových obvodů.

4. SQD a řídkost vlnové funkce

Rozdíl mezi plnou dimenzí Hilbertova prostoru a proveditelnou dimenzí podprostoru přináší další důležitý aspekt SQD, a tím je řídkost vlnové funkce. Přístup SQD funguje dobře pro řídké nebo koncentrované vlnové funkce, kde malá část bázových stavů má nezanedbatelné amplitudy. Jsou za tím dva důvody:

  1. Pokud je vlnová funkce široká (tedy mnoho bázových stavů má nezanedbatelné amplitudy) a vynecháme zahrnutí vektorů s podporou cílového stavu v podprostoru, můžeme skončit s nesprávnými vlastními hodnotami a vlastními vektory.
  2. Abychom se vyhnuli výše uvedenému problému, musíme do podprostoru zahrnout mnoho vektorů. Dimenze projektovaného Hamiltoniánu je však přímo spojena s dimenzí podprostoru. Větší podprostor znamená větší Hamiltonián, který může být neproveditelné diagonalizovat.

Tento problém si ukážeme na následující matici (HnewH_{new}). Nejnižší vlastní hodnota HnewH_{new} je 2.2081-2.2081 a odpovídající vlnová funkce (vlastní stav) je široká:

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

Předpokládejme, že HnewH_{new} projektujeme na podprostor rozepnutý čtyřmi vektory: 000|000\rangle, 010|010\rangle, 101|101\rangle a 110|110\rangle, a spočítáme vlastní hodnotu.

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

Výše uvedený příklad ukazuje, že když je vlnová funkce široká a nezahrneme bázové stavy do podprostoru, výpočet vlastních hodnot bude nesprávný.

5. SQD vs. VQE

Jak bylo uvedeno dříve, SQD může potřebovat variační kvantový obvod a iterativní aktualizace parametrů pro přípravu a vzorkování z podpory základního stavu. Protože tato iterativní rutina aktualizace parametrů je podobná VQE, lze se ptát, jak se tyto metody liší a jaké jsou výhody SQD oproti VQE? V této sekci porovnáme tyto metody a probereme výhody SQD na příkladu molekuly N2N_2 popsané minimální bázovou sadou (sto-3g).

 VQESQD
Režie měřeníMnoho Pauliho členů, mnoho měřicích obvodů: Hamiltonián pro molekulu má 29512951 unikátních Pauliho členů. Protože Pauliho členy mohou obsahovat členy XX a YY a typická kvantová měření se provádějí v ZZ-bázi, potřebujeme pro vyhodnocení těchto členů změnu měřicí báze. Po optimalizaci pro měření lze 29512951 členů seskupit do 11871187 skupin, kde každou skupinu lze vyhodnotit pomocí jediného obvodu. K vyhodnocení všech Pauliho členů tedy potřebujeme alespoň 11871187 unikátních obvodů. Mnoho střel (shots) na obvod pro menší rozptyl. Vyhodnocená střední hodnota každého Pauliho členu má k sobě přiřazený rozptyl, který závisí nepřímo úměrně na shots\sqrt{shots}. Abychom tedy mohli přesně odhadnout každý člen, musíme přidělit mnoho střel na obvod. Například pro dosažení chemické přesnosti (11 kcal/mol) typicky potřebujeme počty střel v řádu 10510^5-10710^7 na obvod. VQE tak potřebuje mnoho měřicích obvodů, přičemž každý obvod potřebuje určitý počet střel. Pro praktické případy může být tato režie měření omezující.V SQD nepotřebujeme pro každou skupinu Pauliho členů různé měřicí obvody. Typicky měříme jediný obvod s pevným počtem střel. Ačkoli můžeme v závislosti na problému nastavit počet střel na velkou hodnotu, režie zůstává mnohem menší než u VQE. Odhady energie pomocí diagonalizačního procesu jsou navíc přesné, což znamená, že spočítané vlastní hodnoty jsou v daném podprostoru přesné a nemají k sobě přiřazený rozptyl jako u VQE. (V případě vzorkování bázových stavů Krylovova prostoru (Lekce 5) musíme měřit více obvodů, ale počet obvodů zůstává mnohem menší než u VQE.)
Odhadovaná mez energieVe VQE nejsou odhady energie omezené a mohou být nižší než skutečné minimální hodnoty kvůli šumu.Proces odhadu energie v SQD vždy produkuje horní mez energie základního stavu a odhadovaná energie nikdy nebude nižší než skutečná energie základního stavu.
Tolerance k šumuOdhad energie ve VQE je náchylný k šumu z kvantových počítačů před érou odolnou vůči chybám (pre-fault-tolerant).SQD má vůči šumu inherentní toleranci. Kvantové počítače před érou odolnou vůči chybám mohou produkovat zašuměné vzorky. I když takové vzorky zahrneme do podprostoru, následná diagonalizace může tyto vzorky potlačit nastavením jejich amplitud na nulu. V souvislosti se SQD také probereme metodu zvanou configuration recovery (obnova konfigurace), která toleranci SQD k šumu dále zlepšuje.

6. Shrnutí

  1. V SQD kvantový počítač generuje vzorky a klasický počítač projektuje Hamiltonián na podprostor rozepnutý vzorky a diagonalizuje jej za účelem výpočtu vlastních hodnot a vlastních vektorů.
  2. Vygenerované vzorky by měly pocházet z podpory cílového (základního) stavu.
  3. V závislosti na problému může být průběh přípravy kvantového stavu a generování vzorků iterativní nebo neiterativní.
  4. SQD funguje nejlépe pro řídké vlnové funkce. Široká vlnová funkce bude pro přesná řešení vyžadovat velký podprostor, což činí operace klasické projekce a diagonalizace nákladnými.
  5. SQD má oproti VQE několik výhod, jako je nižší režie měření a horní mez odhadované energie základního stavu, což jej činí škálovatelnějším.

Reference

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