אופטימיזטורים קלאסיים
מה זה אופטימיזטור?
ויקטוריה ליפינסקה מסבירה לנו על אופטימיזטורים קלאסיים וכיצד הם פועלים כחלק מ-VQE.
תשמעו על כמה אופטימיזטורים לדוגמה וכיצד הם מתפקדים עם רעש ובלעדיו.
מקורות
המאמרים הבאים מוזכרים בסרטון למעלה.
- A Comparison of Various Classical Optimizers for a Variational Quantum Linear Solver, Pellow-Jarman, et al.
- The Variational Quantum Eigensolver: A review of methods and best practices, Tilly, et al.
- Quantum computational chemistry, McArdle, et al.
- Barren plateaus in quantum neural network training landscapes, McClean, et al.
- Connecting Ansatz Expressibility to Gradient Magnitudes and Barren Plateaus, Holmes, et al.
- Effect of barren plateaus on gradient-free optimization, Arrasmith, et al.
קידוד אופטימיזטור קלאסי
בשיעורים הקודמים למדתם איך לבנות המילטוניאן המתאים לשימוש במחשב קוונטי וכיצד ליצור מעגל וריאציוני. למדתם גם שהמעגל הוריאציוני (או ה-ansatz) מכיל פרמטרים שיש לשנות, והבחירה האופטימלית של הפרמטרים היא זו שמניבה את פונקציית העלות או האנרגיה הנמוכה ביותר האפשרית. לכן, הבעיה שלנו מצטמצמת לחיפוש במרחב הפרמטרים אחרי הקבוצה האופטימלית. רוב העבודה על אופטימיזטורים קלאסיים כבר נעשתה עבורנו, שכן אופטימיזטורים מצוינים זמינים ממספר מקורות.
בשיעור זה תלמדו:
- כיצד אופטימיזטורים קלאסיים משתלבים בחישוב VQE
- אילו אופטימיזטורים קלאסיים זמינים מ-SciPy
- אילו אופטימיזטורים עדיין אינם זמינים דרך SciPy וכיצד להשלים בינתיים באמצעות
qiskit.algorithms - אילו אפשרויות קיימות לאופטימיזטורים אלה ומה המשמעות עבור מחשוב קוונטי
SciPy היא ספריית Python חינמית בקוד פתוח עם חבילות הרלוונטיות לתחומים רבים של מחשוב מדעי, כולל אופטימיזציה. בפרט, ל-SciPy יש חבילת אופטימיזציה הכוללת את minimize:
from scipy.optimize import minimize
This minimize function has several arguments, but the most relevant arguments for quantum chemistry are:
- The cost function (
cost_func). This is related to the Hamiltonian, but also includes some complexities, such as determining the expectation value by using Estimator, and in the case of excited state calculations, might include orthogonality conditions. - An initial state (x0) for the system, often the Hartree Fock state
- Other arguments, including arguments of the cost function itself
- The method set to the classical optimizer you select
- Options for the classical optimizer (not to be confused with Session options discussed in the next section)
קוד לדוגמה מוצג למטה. אנחנו מגבילים את הדיון כאן לשני הארגומנטים האחרונים.
cost_func,
x0,
args=(ansatz, hamiltonian, estimator),
method="cobyla",
options={"maxiter": 200})
ל-SciPy יש תיעוד על כל שיטות ה-minimize הזמינות. הנה כמה דוגמאות ראויות לציון, שכולן שיטות למזעור פונקציה סקלרית של משתנה אחד או יותר:
- cobyla: אלגוריתם Optimization BY Linear Approximation (COBYLA).
- slsqp: Sequential Least Squares Programming (SLSQP).
- nelder-mead אלגוריתם Nelder-Mead.
רוב אלגוריתמי האופטימיזציה הקלאסיים הזמינים הם ממזערים מקומיים (local minimizers), במובן שהם משתמשים בשיטות שונות למציאת מינימומים מקומיים, אך אין הבטחה שהם ימצאו מינימומים גלובליים. חלק מהאופטימיזטורים הקלאסיים מעריכים במפורש גרדיאנטים ומשתמשים בהם כדי למצוא מינימומים מקומיים. אחרים עשויים להשתמש בקירובים ליניאריים או ריבועיים עוקבים של פונקציית המטרה כדי למצוא מינימומים.
לאלגוריתמים אלה יש כמה אפשרויות משותפות, אך עם הבדלים עדינים. לדוגמה, לכולם יש את האפשרות לציין מספר מקסימלי של איטרציות באמצעות התחביר 'maxiter': 200 מלמעלה. לכולם יש איזושהי אפשרות המציינת קריטריון עצירה שונה המבוסס על ערכי פונקציה או משתנה, אם כי קריטריונים אלה שונים במעט בין האלגוריתמים השונים. COBYLA, לדוגמה, מאפשר לכם לציין סבילות (לדוגמה, 'tol': 0.0001) שהיא הגבול התחתון על "אזור אמון" (trust region). לעומת זאת, SLSQP מאפשר לכם לציין יעד בדיוק של הפונקציה המשמשת בקריטריון העצירה ('ftol'). Nelder-Mead מאפשר לכם לציין סבילות בהפרש בין ניחושי פרמטרים () עוקבים (xatol) או סבילות בהפרש בין ערכים עוקבים שהתקבלו עבור פונקציית העלות (fatol) (או שניהם).
לרשימה מלאה של אלגוריתמים ואפשרויות זמינים, בקרו בתיעוד ה-minimize של SciPy.