פותר הערכים העצמיים הקוונטי הווריאציוני (VQE)
שיעור זה יציג את פותר הערכים העצמיים הקוונטי הווריאציוני, יסביר את חשיבותו כאלגוריתם יסודי בחישוב קוונטי, וגם יסקור את חוזקותיו וחולשותיו. VQE כשלעצמו, ללא שיטות משלימות, כנראה לא יספיק לחישובים קוונטיים בקנה מידה של שירות מודרני. עם זאת, הוא חשוב כשיטה היברידית-קלאסית-קוונטית מייצגת, וכבסיס חשוב עליו בנויים אלגוריתמים מתקדמים רבים יותר.
הסרטון הזה נותן סקירה של VQE ושל הגורמים המשפיעים על יעילותו. הטקסט שלהלן מוסיף פרטים נוספים ומממש VQE באמצעות Qiskit.
1. מהו VQE?
פותר הערכים העצמיים הקוונטי הווריאציוני הוא אלגוריתם המשתמש בחישוב קלאסי וקוונטי יחד כדי לבצע משימה. ל-VQE ארבעה רכיבים עיקריים:
- אופרטור: לעיתים קרובות Hamiltonian, שנקרא לו , המתאר תכונה של המערכת שלך שברצונך לייעל. דרך אחרת לומר זאת היא שאתה מחפש את הוקטור העצמי של האופרטור הזה המתאים לערך העצמי המינימלי. לעיתים קרובות נקרא לוקטור העצמי הזה "מצב היסוד".
- "ansatz" (מילה גרמנית שמשמ עותה "גישה"): זהו Circuit קוונטי המכין מצב קוונטי המקרב את הוקטור העצמי שאתה מחפש. למעשה, ה-ansatz הוא משפחה של Circuits קוונטיים, כי חלק מה-Gates ב-ansatz הם פרמטריים, כלומר, הם מקבלים פרמטר שניתן לשנות. משפחת Circuits קוונטיים זו יכולה להכין משפחה של מצבים קוונטיים המקרבים את מצב היסוד.
- Estimator: אמצעי להערכת ערך הציפייה של האופרטור על המצב הקוונטי הווריאציוני הנוכחי. לפעמים מה שמעניין אותנו הוא פשוט ערך הציפייה הזה, שנקרא לו פונקציית עלות. לפעמים, אנחנו מתעניינים בפונקציה מסובכת יותר שעדיין ניתן לכתוב החל מערך ציפייה אחד או יותר.
- מייעל קלאסי: אלגוריתם המשנה פרמטרים בניסיון למזער את פונקציית העלות.
בואו נסתכל על כל אחד מהרכיבים הללו ביתר עומק.
1.1 האופרטור (Hamiltonian)
בלב בעיית VQE נמצא אופרטור המתאר מערכת מעניינת. נניח כאן שהערך העצמי הנמוך ביותר והוקטור העצמי המתאים לו שימושיים למטרה מדעית או עסקית כלשהי. דוגמאות עשויות לכלול Hamiltonian כימי המתאר מולקולה, כך שהערך העצמי הנמוך ביותר של האופרטור מתאים לאנרגיית מצב היסוד של המולקולה, והמצב העצמי המתאים מתאר את הגיאומטריה או תצורת האלקטרונים של המולקולה. או שהאופרטור יכול לתאר עלות של תהליך מסוים שיש לייעל, והמצבים העצמיים יכולים להתאים למסלולים או נוהלים. בתחומים מסוימים, כמו פיזיקה, "Hamiltonian" כמעט תמיד מתייחס לאופרטור המתאר את אנרגיית מערכת פיזית. אבל בחישוב קוונטי, נפוץ לראות אופרטורים קוונטיים המתארים בעיה עסקית או לוגיסטית שמכנים אותם גם "Hamiltonian". נאמץ מוסכמה זו כאן.

מיפוי בעיה פיזית או בעיית אופטימיזציה ל-Qubits הוא בדרך כלל משימה לא טריוויאלית, אך הפרטים הללו אינם מוקד הקורס הזה. דיון כללי על מיפוי בעיה לאופרטור קוונטי ניתן למצוא ב-חישוב קוונטי בפרקטיקה. מבט מפורט יותר על מיפוי בעיות כימיה לאופרטורים קוונטיים ניתן למצוא ב-כימיה קוונטית עם VQE.
לצורך קורס זה, נניח שצורת ה-Hamiltonian ידועה. לדוגמה, Hamiltonian עבור מולקולת מימן פשוטה (תחת הנחות מסוימות של מרחב פעיל, ובשימוש ב-Jordan-Wigner mapper) הוא:
# Added by doQumentation — required packages for this notebook
!pip install -q matplotlib numpy qiskit qiskit-ibm-runtime scipy
from qiskit.quantum_info import SparsePauliOp
hamiltonian = SparsePauliOp(
[
"IIII",
"IIIZ",
"IZII",
"IIZI",
"ZIII",
"IZIZ",
"IIZZ",
"ZIIZ",
"IZZI",
"ZZII",
"ZIZI",
"YYYY",
"XXYY",
"YYXX",
"XXXX",
],
coeffs=[
-0.09820182 + 0.0j,
-0.1740751 + 0.0j,
-0.1740751 + 0.0j,
0.2242933 + 0.0j,
0.2242933 + 0.0j,
0.16891402 + 0.0j,
0.1210099 + 0.0j,
0.16631441 + 0.0j,
0.16631441 + 0.0j,
0.1210099 + 0.0j,
0.17504456 + 0.0j,
0.04530451 + 0.0j,
0.04530451 + 0.0j,
0.04530451 + 0.0j,
0.04530451 + 0.0j,
],
)
שים לב שב-Hamiltonian לעיל, יש איברים כמו ZZII ו-YYYY שאינם מתחלפים זה עם זה. כלומר, כדי להעריך את ZZII, נצטרך למדוד את אופרטור פאולי Z על Qubit 3 (בין מדידות אחרות). אבל כדי להעריך את YYYY, נצטרך למדוד את אופרטור פאולי Y על אותו Qubit, Qubit 3. קיים יחס אי-וודאות בין אופרטורי Y ו-Z על אותו Qubit; איננו יכולים למדוד את שני האופרטורים הללו בו-זמנית. נחזור לנקודה זו להלן, ולאורך הקורס.
ה-Hamiltonian לעיל הוא אופרטור מטריצה . אלכסון האופרטור כדי למצוא את ערך האנרגיה העצמי הנמוך ביותר שלו אינו קשה.
import numpy as np
A = np.array(hamiltonian)
eigenvalues, eigenvectors = np.linalg.eigh(A)
print("The ground state energy is ", min(eigenvalues), "hartrees")
The ground state energy is -1.1459778447627311 hartrees
פותרי ערכים עצמיים קלאסיים בגסות לא יכולים לאפיין את האנרגיות או הגיאומטריות של מערכות אטומים גדולות מאוד, כמו תרופות או חלבונים. VQE הוא אחד הניסיונות הראשונים למנף חישוב קוונטי בבעיה זו.
נתקל ב-Hamiltonians גדולים בהרבה בשיעור זה מזה שלעיל. אבל יהיה זה בזבזני לדחוף את גבולות מה ש-VQE יכול לעשות, לפני שנציג כמה מהכלים המתקדמים יותר שיכולים להשלים או להחליף את VQE, בהמשך הקורס הזה.
1.2 Ansatz
המילה "ansatz" היא גרמנית ל"גישה". הרבים הנכון בגרמנית הוא "ansätze", אם כי לעיתים קרובות רואים "ansatzes" או "ansatze". בהקשר של VQE, ansatz הוא ה-Circuit הקוונטי שבו אתה משתמש כדי ליצור פונקציית גל של Qubits מרובים שמקרבת בצורה הטובה ביותר את מצב היסוד של המערכת שאתה חוקר, ואשר מפיקה כך את ערך הציפייה הנמוך ביותר של האופרטור שלך. Circuit קוונטי זה יכיל פרמטרים ווריאציוניים (המאוגדים לעיתים קרובות יחד בוקטור המשתנים ).

נבחר ערכים התחלתיים של הפרמטרים הווריאציוניים. נקרא לפעולה האוניטרית של ה-ansatz על ה-Circuit . כברירת מחדל, כל ה-Qubits במחשבי הקוונטום של IBM® מאותחלים למצב . כאשר מריצים את ה-Circuit, מצב ה-Qubits יהיה
אם כל מה שהיינו צריכים הוא האנרגיה הנמוכה ביותר (בשפה של מ ערכות פיזיות), יכולנו להעריך זאת פשוט על ידי מדידת האנרגיה פעמים רבות ולקחת את הנמוכה ביותר. אבל בדרך כלל אנחנו גם רוצים את התצורה שמניבה את האנרגיה הנמוכה ביותר או הערך העצמי. אז השלב הבא הוא אומדן ערך הציפייה של ה-Hamiltonian, המושג באמצעות מדידות קוונטיות. יש הרבה מה שנכנס לכך. אבל אנחנו יכולים להבין את התהליך הזה איכותית על ידי ציון שהסתברות למדידת אנרגיה (שוב בשפה של מערכות פיזיות) קשורה לערך הציפייה לפי:
הסתברות קשורה גם לחפיפה בין המצב העצמי למצב הנוכחי של המערכת :
אז על ידי ביצוע מדידות רבות של אופרטורי פאולי המרכיבים את ה-Hamiltonian שלנו, אנחנו יכולים להעריך את ערך הציפייה של ה-Hamiltonian במצב הנוכחי של המערכת . השלב הבא הוא לשנות את הפרמטרים ולנסות להתקרב יותר למצב הנמוך-אנרגיה (היסוד) של המערכת. בגלל הפרמטרים הווריאציוניים ב-ansatz, לעיתים קרובות מכנים אותו הצורה הווריאציונית.
לפני שנעבור לתהליך הווריאציוני הזה, שים לב שלעיתים קרובות שימושי להתחיל את המצב שלך ממצב "ניחוש טוב". אולי אתה יודע מספיק על המערכת שלך כדי לעשות ניחוש התחלתי טוב יותר מ-. לדוגמה, נפוץ לאתחל Qubits למצב Hartree-Fock ביישומים כימיים. ניחוש התחלתי זה שאינו מכיל פרמטרים ווריאציוניים נקרא מצב הייחוס. נקרא ל-Circuit הקוונטי המשמש ליצירת מצב הייחוס . בכל פעם שיש חשיבות להבחין בין מצב הייחוס לשאר ה-ansatz, השתמש ב: בשקילות
1.3 Estimator
אנחנו צריכים דרך להעריך את ערך הציפייה של ה-Hamiltonian שלנו במצב ווריאציוני מסוים . אם יכולנו למדוד ישירות את האופרטור כולו , זה היה פשוט כמו ביצוע מדידות רבות (נניח ) וממוצע הערכים הנמדדים:
כאן, סימן מזכיר לנו שערך הציפייה הזה יהיה מדויק רק בגבול כש-. אבל עם אלפי מדידות שמבוצעות על Circuit, שגיאת הדגימה של ערך הציפייה נמוכה למדי. קיימים שיקולים נוספים כמו רעש שהופכים לבעיה עבור חישובים מדויקים מאוד.
עם זאת, בדרך כלל לא ניתן למדוד את בבת אחת. עשוי להכיל אופרטורי פאולי X, Y ו-Z מרובים שאינם מתחלפים. לכן יש לפרק את ה-Hamiltonian לקבוצות של אופרטורים שניתן למדוד בו-זמנית, ויש להעריך כל קבוצה כזו בנפרד, ולשלב את התוצאות כדי לקבל ערך ציפייה. נחזור לכך ביתר פירוט בשיעור הבא, כאשר נדון בהתרחבות של גישות קלאסיות וקוונטיות. מו רכבות המדידה הזו היא אחד הסיבות לכך שאנחנו צריכים קוד יעיל ביותר לביצוע הערכה כזו. בשיעור זה ובהמשך, נשתמש ב-Qiskit Runtime primitive Estimator למטרה זו.
1.4 מייעלים קלאסיים
מייעל קלאסי הוא כל אלגוריתם קלאסי שנועד למצוא קיצוניות של פונקציית יעד (בדרך כלל מינימום). הם מחפשים במרחב הפרמטרים האפשריים אחר קבוצה שממזערת פונקציית עניין כלשהי. ניתן לסווגם באופן כללי לשיטות מבוססות-גרדיאנט, המשתמשות במידע גרדיאנט, ולשיטות ללא-גרדיאנט, הפועלות כמייעלות קופסה שחורה. בחירת המייעל הקלאסי יכולה להשפיע משמעותית על ביצועי האלגוריתם, במיוחד בנוכחות רעש בחומרה קוונטית. מייעלים פופולריים בתחום זה כוללים Adam, AMSGrad ו-SPSA, שהראו תוצאות מבטיחות בסביבות רועשות. מייעלים מסורתיים יותר כוללים COBYLA ו-SLSQP.
תזרים עבודה נפוץ (מוצג בסעיף 3.3) הוא להשתמש באחד מהאלגוריתמים הללו כשיטה בתוך מייעל כמו פונקציית minimize של scipy. זו מקבלת כארגומנטים שלה:
- פונקציה כלשהי שיש למזער. זהו לעיתים קרובות ערך ציפייה האנרגיה. אבל אלה נקראים בדרך כלל "פונקציות עלות".
- קבוצת פרמטרים ממנה להתחיל את החיפוש. לעיתים קרובות נקרא או .
- ארגומנטים, כולל ארגומנטים ש ל פונקציית העלות. בחישוב קוונטי עם Qiskit, ארגומנטים אלה יכללו את ה-ansatz, את ה-Hamiltonian ואת ה-Estimator, שנדון בו יותר בתת-הסעיף הבא.
- 'שיטה' של מיזעור. זה מתייחס לאלגוריתם הספציפי המשמש לחיפוש במרחב הפרמטרים. כאן נציין לדוגמה COBYLA או SLSQP.
- אפשרויות. האפשרויות הזמינות עשויות להשתנות לפי שיטה. אבל דוגמה שכמעט כל השיטות יכללו היא מספר האיטרציות המקסימלי של המייעל לפני סיום החיפוש: 'maxiter'.

בכל שלב איטרטיבי, ערך הציפייה של ה-Hamiltonian מוערך על ידי ביצוע מדידות רבות. אנרגיה מוערכת זו מוחזרת על ידי פונקציית העלות, והמייעל מעדכן את המידע שיש לו על נוף האנרגיה. מה בדיוק עושה המייעל כדי לבחור את השלב הבא משתנה משיטה לשיטה. חלקם משתמשים בגרדיאנטים ובוחרים בכיוון הירידה התלולה ביותר. אחרים עשויים לקחת בחשבון רעש ועשויים לדרוש שהעלות תקטן בפער גדול לפני קבלת הנחה שהאנרגיה האמיתית פוחתת לאורך אותו כיוון.
# Example syntax for minimization
# from scipy.optimize import minimize
# res = minimize(cost_func, x0, args=(ansatz, hamiltonian, estimator), method="cobyla", options={'maxiter': 200})
1.5 העיקרון הווריאציוני
בהקשר זה, העיקרון הווריאציוני חשוב מאוד; הוא קובע שאף פונקציית גל ווריאציונית לא יכולה להניב ערך ציפייה של אנרגיה (או עלות) נמוך מזה שמניבה פונקציית גל מצב היסוד. מתמטית,
קל לאמת זאת אם נשים לב שקבוצת כל המצבים העצמיים של יוצרת בסיס שלם למרחב הילברט. במילים אחרות, כל מצב ובפרט ניתן לכתוב כסכום ממושקל (מנורמל) של המצבים העצמיים הללו של :
כאשר הם קבועים לקביעה, ו-. נשאיר זאת כתרגיל לקורא. אבל שים לב להשלכה: המצב הווריאציוני המניב את ערך ציפייה האנרגיה הנמוך ביותר הוא האומדן הטוב ביותר של מצב היסוד האמיתי.
בדוק את הבנתך
קרא את השאלה למטה, חשוב על תשובתך, ואז לחץ על המשולש כדי לגלות את הפתרון.
אמת מתמטית ש- עבור כל מצב ווריאציוני .
תשובה:
בשימוש בפיתוח הנתון של המצב הווריאציוני במונחי המצבים העצמיים של האנרגיה,
אנחנו יכולים לכתוב את ערך ציפייה האנרגיה הווריאציונית בתור
עבור כל המקדמים . אז נוכל לכתוב