דלג לתוכן הראשי

אלכסון קוונטי מבוסס דגימה (SQD)

אלכסון קוונטי מבוסס דגימה (SQD) משלב אלגברה לינארית קלאסית עם עוצמת המחשוב הקוונטי כדי לאלכסן המילטוניאן (מטריצה) ולחשב את הערכים העצמיים ואת הווקטורים העצמיים שלו. אלכסון מטריצות הוא פעולה מתמטית חשובה, שכן בעיות רבות במדע, במחשוב ובאופטימיזציה משתמשות בה.

הסרטון הבא נותן סקירה של SQD, מה קובע את תועלתו, ומה הופך אותו למהיר יותר מגישות רבות אחרות. הטקסט שאחריו מפרט יותר.

1. מבוא ומוטיבציה

נשתמש במשוואת ערכי האנרגיה העצמיים שהפכה מפורסמת בזכות שרדינגר כדוגמה.

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

HH הוא ההמילטוניאן של מערכת, ψ|\psi\rangle היא פונקציית הגל (המוכרת גם כמצב עצמי), ו-EE הוא ערך עצמי. הערכים העצמיים של המטריצה HH מייצגים את רמות האנרגיה של המערכת. למשל, אם המערכת היא מולקולה, הערך העצמי הנמוך ביותר מייצג את אנרגיית המצב הבסיסי של המולקולה. בבעיות רבות אנו מתעניינים באמידת אנרגיית המצב הבסיסי.

על ידי שימוש בטכניקות אלכסון מדויק מאלגברה לינארית, נוכל לאלכסן את מטריצת HH המלאה. אולם גישה זו הופכת לכבדה חישובית (ואף בלתי אפשרית) ככל שהמטריצה גדלה. למשל, גם עבור מולקולות כימיות קטנות, HH יכולה להיות גדולה באופן בעייתי (לדוגמה, ההמילטוניאן של מולקולת N2N_2 עם בסיס cc-PVDZ הוא בעל ממד 65780×65780).65780 \times 65780).

למרבה המזל, לא תמיד נחוצים לנו כל הערכים העצמיים והווקטורים העצמיים של המילטוניאן HH, ולכן, במקרים מעשיים רבים אין צורך לאלכסן את המטריצה המלאה. לדוגמה, במקרה של אמידת מצב בסיסי, אנו מתעניינים בערך העצמי הנמוך ביותר ובווקטור העצמי המתאים. זה מאפשר לנו להשתמש במושג ההיטל על תת-מרחב (שימושי).

נשקול מטריצה N×NN \times N, HH, שבה למרחב הווקטורי המלא (מרחב הילברט) יש ממד NN (NN גדול). לאחר מכן נבחר תת-מרחב (S\mathcal{S}) — שהוא תת-קבוצה של מרחב הילברט המלא — בעל ממד MM, כאשר MM קטן מספיק. לאחר היטל HH על תת-מרחב זה, המטריצה המוטלת (נקרא לה HSH_\mathcal{S}) תהיה קטנה יותר (M×MM \times M). ניתן לאלכסן את HSH_\mathcal{S} הקטנה יותר בשיטה מספרית קלאסית מתאימה, ולהפיק ערכים עצמיים ווקטורים עצמיים עבור אותו תת-מרחב.

שים לב שתת-המרחב חייב להיות ב_תמיכה_ של המצב העצמי המטרה שלנו (לדוגמה, מצב בסיסי). במילים אחרות, ההמילטוניאן המוטל HSH_\mathcal{S} חייב להיות בתת-מרחב הכולל את הערך העצמי הנמוך ביותר.

2. היטל ואלכסון

נניח שאנו רוצים למצוא את הערך העצמי הנמוך ביותר ואת הווקטור העצמי המתאים עבור מטריצת ההמילטוניאן HH בגודל 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}

נאלכסן את המטריצה המלאה יחד עם גרסאות מוטלות שונות (HSH_\mathcal{S}) עבור תת-מרחבים שונים, כדי להדגים את מדרגיות השיטה ואת חשיבות בחירת תת-המרחב.

אנרגיית המצב הבסיסי (ערך עצמי מינימלי) של המטריצה HH היא 0.5357-0.5357 ופונקציית הגל של המצב הבסיסי ה_מדויקת_ (ווקטור עצמי) היא:

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

כלומר, המצב הבסיסי של המטריצה נפרש על ידי שני וקטורי בסיס חישוביים (ווקטורים) 011\vert 011 \rangle ו-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. ]

לאחר מכן, נטיל את המטריצה HH על תת-מרחבים שונים ונבדוק אם נוכל לקבל את המצב הבסיסי המדויק. בפרט, נטיל את המטריצה על תת-מרחב הנפרש על ידי:

  1. ווקטורי המצב הבסיסי המדויקים (011\vert 011 \rangle ו-101\vert 101 \rangle).
  2. ווקטורים שאינם כוללים חלק מווקטורי המצב הבסיסי המדויקים או את כולם (לדוגמה, 000\vert 000 \rangle, 011\vert 011 \rangle, ו-110\vert 110 \rangle).
  3. ווקטורים הכוללים גם ווקטורי מצב בסיסי מדויקים וגם ווקטורים שאינם שייכים למצב הבסיסי (אך לא את כל הווקטורים האפשריים במרחב הילברט).

2.1 מקרה 1: תת-המרחב כולל את המצב הבסיסי

נניח שאנו רוצים להטיל את HH על תת-מרחב (S\mathcal{S}) הנפרש על ידי שני ווקטורים x1=011x_1 = |011\rangle ו-x2=101x_2 = |101\rangle. ההמילטוניאן המוטל מוגדר על ידי:

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]

ניתן להסיק מכאן מספר תצפיות מפתח.

  • מאחר שפרסנו את תת-המרחב בשני ווקטורים, הממד של המטריצה המוטלת (HSH_\mathcal{S}) הוא 2×22 \times 2, שהוא קטן מהמטריצה המלאה HH (8×88 \times 8).
  • הערך העצמי המינימלי של המטריצה המוטלת תואם את ערך האנרגיה המדויק של המצב הבסיסי.
  • הערכים במשתנה eigvecs מציינים את האמפליטודה של ווקטורי הפרישה של תת-המרחב, ובעזרתם נוכל לשחזר את המצב העצמי (המצב הבסיסי). במקרה זה נגיע למצב הבסיסי המדויק (עד פאזה גלובלית):
ψ=(0.8011+0.6101)|\psi \rangle = - (0.8 |011\rangle + 0.6 |101\rangle)

2.2 מקרה 2: תת-המרחב לא כולל חלק מווקטורי המצב הבסיסי או את כולם

לאחר מכן, נטיל את HH על תת-מרחב הנפרש על ידי שלושה ווקטורים x1=000x_1 = |000\rangle, x2=011x_2 = |011\rangle, ו-x3=110x_3 = |110\rangle. אנחנו בוחרים בכוונה ווקטורים שאינם כוללים ווקטור מצב בסיסי (101\vert 101 \rangle). ההמילטוניאן המוטל מוגדר על ידי:

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

הערך העצמי 0.2111-0.2111 במקרה זה אינו תואם את הערך העצמי המינימלי 0.5357-0.5357 של ההמילטוניאן המלא. התצפית המרכזית כאן היא: אם נטיל על תת-מרחב שאינו כולל מצבי בסיס של המצב המטרה (הבסיסי) שלנו — בין אם חלקית ובין אם לחלוטין — אנרגיית המצב הבסיסי המשוערת תהיה שונה מהמדויקת.

2.3 מקרה 3: תת-המרחב כולל גם ווקטורי מצב בסיסי וגם ווקטורים שאינם שייכים למצב הבסיסי

לאחר מכן, נציג מקרה שבו תת-המרחב נפרש על ידי ווקטורים הכוללים ווקטורי מצב בסיסי מדויקים לצד ווקטורים בלתי רצויים. נניח שתת-המרחב שלנו נפרש על ידי x1=011x_1 = |011\rangle, x2=101x_2 = |101\rangle (קיימים במצב הבסיסי המדויק), ו-x3=111x_3 = |111\rangle (נעדר מהמצב הבסיסי המדויק).

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

במקרה זה, אנו מקבלים שוב 0.5357-0.5357 כערך עצמי מינימלי, התואם את המטריצה המלאה (כלומר, המצב הבסיסי המדויק). תוצאה מעניינת נוספת היא האמפליטודה של x3x_3 שמחזיר תהליך ההיטל והאלכסון. האמפליטודה היא 00, וכשאנו משחזרים את פונקציית הגל (המצב העצמי) עם האמפליטודות והווקטורים המחושבים, אנו מקבלים:

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

כך, גם אם תת-המרחב שלנו כולל ווקטורים שאינם ממטרה (לצד הקבוצה המלאה של ווקטורי המטרה), נוכל לחשב את הערך העצמי והמצב העצמי הנכונים, שכן תהליך ההיטל והאלכסון מסנן ווקטורים שאינם ממטרה על ידי הגדרת אמפליטודותיהם ל-00. תכונה זו של SQD מספקת סבילות רעש טבועה.

3. תפקיד המחשוב הקוונטי ב-SQD

הניתוחים שלעיל מבססים את החשיבות של וקטורי פריסת תת-המרחב, אשר חייבים להיות בתמיכה של המצב המטרה. זה מעלה שאלה חשובה: כיצד בוחרים וקטורים עם תמיכת מצב המטרה לבניית תת-המרחב?

כאן מחשבים קוונטיים נכנסים לתמונה. הסינרגיה הקוונטית-קלאסית פועלת כך בפרדיגמת SQD:

  1. באמצעות Circuit קוונטי מתאים, אנו מנסים להכין מצב במחשב קוונטי שייצר מצבי בסיס שבהם לפונקציית הגל המטרה (למשל, מצב היסוד) יש תמיכה משמעותית. מצבי הבסיס הנדגמים (ביטסטרינגים) יפרסו את תת-המרחב לטובת הטלת ה-Hamiltonian.
  2. מחשב קלאסי מטיל את ה-Hamiltonian על תת-המרחב (הנפרס על ידי דגימות/וקטורים מהמחשב הקוונטי) ומלכסן אותו כדי לחשב ערכי עצמי ווקטורי עצמי באמצעות שיטות נומריות מתאימות. תרשים של הרכיבים הקוונטיים והקלאסיים של SQD. בצד הקוונטי, מכינים ודוגמים מהתמיכה המטרה; בצד הקלאסי, מטילים את המטריצה על תת-המרחב הנדגם ומלכסנים את המטריצה המוטלת. יש כמה דרכים להכין מצב קוונטי כזה, והן יכולות להיות וריאציוניות או לא-וריאציוניות בהתאם לבעיה.

בשני השיעורים הבאים נציג שני דוגמאות ספציפיות להכנת מצבים ודגימה מהם.

  1. בשיעור 4, נשתמש ב-ansatz לוקאלי אוניטרי קשור ג'סטרו (LUCJ) עם פרמטרים כדי לייצר דגימות לבעיית כימיה (אומדן אנרגיית מצב יסוד של מולקולת N2N_2). נאתחל את ה-LUCJ ansatz עם פרמטרים מחישוב קלאסי של coupled cluster singles and doubles (CCSD).
  2. בשיעור 5, נדגום ממצבי בסיס של Krylov כדי לפרוס את תת-המרחב לבעיית פיזיקה של חומר מעובה. גישה זו אינה וריאציונית באופייה.

מעבר לגישות הספציפיות לבעיה לעיל, גישה גנרית להכנת מצב כוללת ansatz וריאציוני, שבו נעדכן פרמטרי ansatz בצורה איטרטיבית באמצעות מייעל קלאסי. תרשים זרימה מ-Circuit קוונטי וריאציוני דרך דגימה קוונטית ועד לחישוב קלאסי שבו המטריצה מוטלת ומלכסנת. התוצאות מוזנות למייעל קלאסי שבוחר פרמטרים וריאציוניים חדשים, ואנו חוזרים ל-Circuit הקוונטי הוריאציוני. דגימות ממחשבים קוונטיים לפני סבילות לתקלות עלולות להיות רועשות. SQD משתמש בתהליך שחזור תצורה עצמי-עקבי לתיקון דגימות רועשות [1]. נדון בתהליך שחזור התצורה בפירוט רב יותר ונישם אותו לתיקון דגימות רועשות בצורה איטרטיבית כדי לחדד את אומדן אנרגיית מצב היסוד לבעיית כימיה בשיעור 4.

3.1 הערות על תמיכת מצב היסוד

בואו נסביר את המושג תמיכת מצב היסוד ביתר פירוט. ניתן להגדיר תמיכת מצב יסוד כקבוצת מצבי הבסיס שבהם למצב היסוד יש משרעת שאינה אפס (עד לסף גזירה).

נניח שמצב היסוד המדויק של בעיית 33-Qubit הוא

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

אם נדגום את המצב לעיל, אנו אמורים לקבל קבוצה של מצבי בסיס חישובי {000\{\vert 000 \rangle, 111}\vert 111 \rangle \} (למצבי בסיס חישובי אחרים יש משרעת אפס במצב היסוד, ולכן, באופן אידיאלי, לא יופיעו בדגימה).

באופן אידיאלי, קבוצת וקטורי הבסיס למצב זה מורכבת מ-{000,111}\{ \vert 000 \rangle, \vert 111 \rangle \} (במילים אחרות, תת-המרחב של מצב זה נפרס על ידי שני וקטורי בסיס אלה).

בפועל, אין צורך להכין את מצב היסוד המדויק, שכן דגימה ממצבים רבים אחרים יכולה לתת לנו את אותה קבוצת וקטורים. לדוגמה:

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

הכנה ודגימה מכל אחד מהמצבים לעיל תייצר וקטורים בעלי משרעת שאינה אפס במצב היסוד, וכולם כשירים לכך שיש להם תמיכת מצב יסוד. שימו לב שדגימה מ-ψc\vert \psi_c \rangle כוללת וקטור נוסף אחד 101\vert 101 \rangle שיש לו משרעת 00 במצב היסוד המדויק. אולם, כפי שהראינו קודם, הכללת וקטורים כאלה בתת-המרחב אינה בעייתית שכן פעולת ההטלה והלכסון מציבה את המשרעת של הוקטורים הבלתי רצויים ל-00, וניתן לקבל את ערך העצמי הצפוי ולשחזר את מצב העצמי הנכון.

תרשימים של תמיכת ansatz טובה ורעה. ל-ansatz טוב יש תמיכה שמכילה לחלוטין את תמיכת מצב היסוד. ל-ansatz גרוע יש תמיכה שמכילה רק חלק מתמיכת מצב היסוד או לא מכילה אותה כלל.

לפיכך, הכנה ודגימה ממצב היסוד המדויק אינן הכרחיות. למעשה, עשות כן יכולה להיות קשה שכן מצב היסוד המדויק אינו ידוע מראש, ולעיתים קרובות מועיל לא להכין ולדגום ממצב היסוד המדויק, במיוחד אם פונקציית הגל (המצב) מוטה כאשר לחלק ממצבי הבסיס יש הסתברויות גבוהות מאוד. שקלו את פונקציית הגל הבאה:

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

זוהי פונקציית גל מוטה שבה למצבי הבסיס 000\vert 000 \rangle ו-010\vert 010 \rangle יש משרעות גדולות בהרבה בהשוואה ל-101\vert 101 \rangle ו-111\vert 111 \rangle. כאשר דוגמים, נקבל את 000\vert 000 \rangle ו-010\vert 010 \rangle לעיתים קרובות יותר (הסתברות דגימה=משרעת2\text{הסתברות דגימה} = \vert \text{משרעת} \vert^{2} 49%\approx 49\% עבור 000\vert 000 \rangle ו-010\vert 010 \rangle כל אחד, 1%\approx 1\% עבור 101\vert 101 \rangle, ו-0.01%\approx 0.01\% עבור 111\vert 111 \rangle). עם תקציב דגימה מוגבל (shots), סביר מאוד שהקבוצה הנדגמת שלנו תכיל רק את 000\vert 000 \rangle ו-010\vert 010 \rangle. כפי שהראינו קודם, אם נפרוס את תת-המרחב עם קבוצה כזו שחסרים בה וקטורים, לא נוכל למצוא את ערך העצמי המינימלי האמיתי. לכן, יהיה מועיל (ונחוץ) לדגום ממצב בעל תמיכת מצב יסוד.

3.2 טיעון נגד דגימה אחידה

עלול להיות מפתה לשאוב דגימות מהתפלגות אחידה כדי לפרוס את תת-המרחב. בעוד שזה עשוי לעבוד עבור בעיות קטנות, זה יתחיל להיכשל עבור בעיות גדולות ומעשיות יותר. לבעיות גדולות עם Qubits רבים, מרחב הילברט יכול להיות גדול בצורה שאינה ניתנת לטיפול. לדוגמה, מרחב הילברט של 32-Qubit מכיל יותר מ-44 מיליארד וקטורי בסיס אפשריים (232=4,294,967,2962^{32} = 4,294,967,296). אם נדגום באופן אחיד מאותו מרחב עם תקציב דגימה מוגבל (נניח 1000010000 וקטורים כדי לשמור על ישימות תהליך הלכסון), תת-המרחב עלול לא לכלול וקטורים עם תמיכת מצב יסוד לעיתים קרובות יותר שכן התהליך יהיה אקראי. לכן, אנחנו צריכים דרך שיטתית לדגום מתמיכת מצב היסוד תוך ניצול Circuit-ים קוונטיים.

4. SQD ודלילות פונקציית הגל

הפער בין מרחב הילברט המלא לממדי תת-המרחב הישימים מביא היבט חשוב נוסף של SQD, והוא דלילות פונקציית הגל. גישת SQD עובדת היטב עבור פונקציות גל דלילות או מרוכזות שבהן חלק קטן ממצבי הבסיס בעל משרעות שאינן זניחות. ישנן שתי סיבות לכך:

  1. אם פונקציית הגל רחבה (כלומר, למצבי בסיס רבים יש משרעות שאינן זניחות), ואנחנו מחמיצים וקטורים עם תמיכת מצב המטרה בתת-המרחב, אנחנו עלולים לקבל ערכי עצמי ווקטורי עצמי שגויים.
  2. כדי להימנע מהבעיה לעיל, צריך לכלול וקטורים רבים בתת-המרחב. אולם, הממד של ה-Hamiltonian המוטל קשור ישירות לממד תת-המרחב. תת-מרחב גדול יותר יאמר Hamiltonian גדול יותר, שעלול להפוך ללא ישים ללכסון.

אנחנו מדגימים את הבעיה עם המטריצה הבאה (HnewH_{new}). ערך העצמי הנמוך ביותר של HnewH_{new} הוא 2.2081-2.2081, ופונקציית הגל המתאימה (מצב עצמי) היא רחבה:

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

נניח שאנחנו מטילים את HnewH_{new} על תת-מרחב הנפרס על ידי ארבעה וקטורים: 000|000\rangle, 010|010\rangle, 101|101\rangle, ו-110|110\rangle ומחשבים את ערך העצמי.

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

הדוגמה לעיל מראה שכאשר פונקציית הגל רחבה ואנחנו לא כוללים מצבי בסיס בתת-המרחב, חישוב ערך העצמי הופך לשגוי.

5. SQD לעומת VQE

כפי שצוין קודם, SQD עשוי להזדקק ל-Circuit קוונטי וריאציוני ועדכוני פרמטרים איטרטיביים כדי להכין ולדגום מתמיכת מצב היסוד. מכיוון שנוהל עדכון הפרמטרים האיטרטיבי הזה דומה ל-VQE, אפשר לשאול כיצד שיטות אלה שונות, ומה היתרונות של SQD על VQE? בסעיף זה, אנחנו משווים את השיטות ודנים ביתרונות של SQD עם מולקולת N2N_2 המתוארת עם קבוצת בסיס מינימלית (sto-3g) כדוגמה.

 VQESQD
עלות מדידהמונחי Pauli רבים, Circuit-ים מדידה רבים: ל-Hamiltonian של המולקולה יש 29512951 מונחי Pauli ייחודיים. מאחר שמונחי Pauli יכולים להכיל מונחי XX ו-YY, ומדידות קוונטיות טיפוסיות נעשות בבסיס ZZ, אנחנו צריכים שינוי בסיס מדידה כדי להעריך מונחים אלה. כשמאופטם למדידות, ניתן לקבץ את 29512951 המונחים ל-11871187 קבוצות, כשכל קבוצה יכולה להיות מוערכת באמצעות Circuit בודד. כך, אנחנו צריכים לפחות 11871187 Circuit-ים ייחודיים להערכת כל מונחי Pauli. shots רבים לכל Circuit לשונות קטנה יותר. שוב, לערך הציפייה המוערך של כל מונח Pauli יש שונות הצמודה לו שתלויה ביחוס הפוך ב-shots\sqrt{shots}. לכן, כדי לאמוד בדיוק כל מונח, אנחנו צריכים להקצות shots רבים לכל Circuit. לדוגמה, כדי להשיג דיוק כימי (11 kcal/mol), בדרך כלל אנחנו צריכים shots בסדר גודל של 10510^5-10710^7 לכל Circuit. לפיכך, VQE צריך Circuit-ים מדידה רבים וכל Circuit עם מספר מסוים של shots. במקרים מעשיים, עלות מדידה זו יכולה להיות מגבילה.ב-SQD, איננו צריכים Circuit-ים מדידה שונים לכל מונחי Pauli המקובצים. בדרך כלל, אנחנו מודדים Circuit בודד עבור מספר קבוע של shots. בעוד שאנחנו עשויים להגדיר את מספר ה-shots לערך גדול בהתאם לבעיה, העלות נשארת קטנה בהרבה מ-VQE. כמו כן, אומדני האנרגיה באמצעות תהליך הלכסון הם מדויקים, כלומר ערכי העצמי המחושבים מדויקים בתת-המרחב הזה ואין להם שונות כמו ב-VQE. (במקרה של דגימת מצבי בסיס של Krylov (שיעור 5), אנחנו צריכים למדוד Circuit-ים מרובים, אך מספר ה-Circuit-ים נשאר קטן בהרבה מ-VQE).
חסם אנרגיה מוערכתב-VQE, אומדני אנרגיה אינם חסומים ועלולים להיות נמוכים מהערכים המינימליים האמיתיים עקב רעש.תהליך אומדן האנרגיה ב-SQD תמיד מייצר חסם עליון לאנרגיית מצב היסוד, והאנרגיה המוערכת לעולם לא תהיה נמוכה מאנרגיית מצב היסוד האמיתית.
סבילות לרעשאומדן אנרגיית VQE רגיש לרעש ממחשבים קוונטיים לפני סבילות לתקלות.ל-SQD יש סבילות מובנית לרעש. מחשבים קוונטיים לפני סבילות לתקלות יכולים לייצר דגימות רועשות. גם אם נכלול את הדגימות האלה בתת-המרחב, הלכסון הבא יכול לדכא דגימות אלה על ידי הצבת המשרעות שלהן לאפס. כמו כן, נדון בשיטה הנקראת שחזור תצורה בהקשר ל-SQD שמשפרת את סבילות SQD לרעש עוד יותר.

6. סיכום

  1. ב-SQD, מחשב קוונטי מייצר דגימות ומחשב קלאסי מטיל Hamiltonian על תת-מרחב הנפרס על ידי הדגימות ומלכסן אותו לחישוב ערכי עצמי ווקטורי עצמי.
  2. הדגימות שנוצרו צריכות להיות מתמיכת מצב המטרה (היסוד).
  3. בהתאם לבעיה, זרימת הכנת המצב הקוונטי וייצור הדגימות יכולה להיות איטרטיבית או לא-איטרטיבית.
  4. SQD עובד בצורה הטובה ביותר עבור פונקציות גל דלילות. פונקציית גל רחבה תדרוש תת-מרחב גדול לפתרונות מדויקים, מה שהופך את פעולת ההטלה והלכסון הקלאסית ליקרה.
  5. ל-SQD יש מספר יתרונות על VQE כגון עלות מדידה נמוכה יותר וחסם עליון לאנרגיית מצב היסוד המוערכת, מה שהופך אותו לניתן יותר לסקלאביליות.

מקורות

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