מצבי ייחוס
בשיעור זה נחקור כיצד אפשר לאתחל את המערכת שלנו עם מצב ייחוס כדי לעזור לאלגוריתם הוריאציוני שלנו להתכנס מהר יותר. ראשית, נלמד כיצד לבנות מצב ייחוס באופן ידני, ולאחר מכן נחקור מספר אפשרויות סטנדרטיות שניתן להשתמש בהן באלגוריתם וריאציוני.
מצב ברירת המחדל
מצב ייחוס מתייחס לנקודת ההתחלה הקבועה של הבעיה שלנו. כדי להכין מצב ייחוס, עלינו להחיל את האוניטרי המתאים, הבלתי-פרמטרי בתחילת מעגל הקוונטי שלנו, כך ש-. אם יש לכם השערה מושכלת או נקודת נתונים מפתרון אופטימלי קיים, סביר שהאלגוריתם הוריאציוני יתכנס מהר יותר אם תשתמשו בה כנקודת מוצא.
מצב ייחוס הפשוט ביותר הוא מצב ברירת המחדל, שבו אנו משתמשים במצב ההתחלתי של מעגל קוונטי בן קיוביטים: . עבור מצב ברירת המחדל, האופרטור האוניטרי שלנו . בזכות פשטותו, מצב ברירת המחדל הוא מצב ייחוס תקף שנפוץ בשימוש בתרחישים רבים.
מצב ייחוס קלאסי
נניח שיש לכם מערכת של שלושה קיוביטים ואתם רוצים להתחיל במצב במקום במצב ברירת המחדל . זהו דוגמה למצב ייחוס קלאסי טהור, וכדי לבנות אותו, פשוט מחילים שער X על הקיוביט (לפי סדר הקיוביטים של Qiskit), שכן .
במקרה זה, האופרטור האוניטרי שלנו הוא , שמוביל למצב ייחוס .
# Added by doQumentation — required packages for this notebook
!pip install -q qiskit
from qiskit import QuantumCircuit
qc = QuantumCircuit(3)
qc.x(0)
qc.draw("mpl")
מצב ייחוס קוונטי
נניח שאתם רוצים להתחיל במצב מורכב יותר הכולל סופרפוזיציה ו/או שזירה, כגון .
כדי להגיע למצב זה מ-, אחת הגישות היא להשתמש ב-שער Hadamard על קיוביט (), בשער CNOT (CX) כאשר קיוביט הוא קיוביט הבקרה וקיוביט הוא קיוביט המטרה (), ולבסוף שער המוחל על קיוביט ().
בתרחיש זה, האופרטור האוניטרי שלנו הוא , ומצב הייחוס שלנו הוא .
qc = QuantumCircuit(3)
qc.h(0)
qc.cx(0, 1)
qc.x(2)
qc.draw("mpl")
בניית מצבי ייחוס באמצעות מעגלי תבנית
ניתן גם להשתמש במגוון מעגלי תבנית, כגון TwoLocal, המאפשר לבטא פרמטרים מכווננים ושזירות בקלות. נעמיק במעגלי תבנית אלה בשיעור הבא, אך ניתן להשתמש בהם למצבי הייחוס שלנו בתנאי שכובלים את הפרמטרים:
from qiskit.circuit.library import TwoLocal
from math import pi
reference_circuit = TwoLocal(2, "rx", "cz", entanglement="linear", reps=1)
theta_list = [pi / 2, pi / 3, pi / 3, pi / 2]
reference_circuit = reference_circuit.assign_parameters(theta_list)
reference_circuit.decompose().draw("mpl")
מצבי ייחוס ספציפיים לאפליקציה
למידת מכונה קוונטית
בהקשר של מסווג קוונטי וריאציוני (VQC), נתוני האימון מקודדים למצב קוונטי באמצעות מעגל פרמטרי הידוע בשם מפת מאפיינים, שבו כל ערך פרמטר מייצג נקודת נתונים מסט האימון. ה-zz_feature_map הוא סוג של מעגל פרמטרי שניתן להשתמש בו כדי להעביר את נקודות הנתונים שלנו () למפת המאפיינים.
from qiskit.circuit.library import zz_feature_map
data = [0.1, 0.2]
zz_feature_map_reference = zz_feature_map(feature_dimension=2, reps=2)
zz_feature_map_reference = zz_feature_map_reference.assign_parameters(data)
zz_feature_map_reference.decompose().draw("mpl")
סיכום
בשיעור זה למדתם כיצד לאתחל את המערכת שלכם באמצעות:
- מצב ייחוס ברירת מחדל
- מצבי ייחוס קלאסיים
- מצבי ייחוס קוונטיים
- מצבי ייחוס ספציפיים לאפליקציה
עומס העבודה הוריאציוני ברמה גבוהה שלנו נראה כך:
בעוד שמצבי הייחוס הם נקודות התחלה קבועות, נוכל להשתמש בצורה וריאציונית כדי להגדיר אנזאץ' המייצג אוסף של מצבים פרמטריים שהאלגוריתם הוריאציוני שלנו יחקור.