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

מצבי ייחוס

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

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

מצב ברירת המחדל

מצב ייחוס מתייחס לנקודת ההתחלה הקבועה של הבעיה שלנו. כדי להכין מצב ייחוס, עלינו להחיל את האוניטרי המתאים, הבלתי-פרמטרי URU_R בתחילת מעגל הקוונטי שלנו, כך ש-ρ=UR0|\rho\rangle = U_R |0\rangle. אם יש לכם השערה מושכלת או נקודת נתונים מפתרון אופטימלי קיים, סביר שהאלגוריתם הוריאציוני יתכנס מהר יותר אם תשתמשו בה כנקודת מוצא.

מצב ייחוס הפשוט ביותר הוא מצב ברירת המחדל, שבו אנו משתמשים במצב ההתחלתי של מעגל קוונטי בן nn קיוביטים: 0n|0\rangle^{\otimes n}. עבור מצב ברירת המחדל, האופרטור האוניטרי שלנו URIU_R \equiv I. בזכות פשטותו, מצב ברירת המחדל הוא מצב ייחוס תקף שנפוץ בשימוש בתרחישים רבים.

מצב ייחוס קלאסי

נניח שיש לכם מערכת של שלושה קיוביטים ואתם רוצים להתחיל במצב 001|001\rangle במקום במצב ברירת המחדל 000|000\rangle. זהו דוגמה למצב ייחוס קלאסי טהור, וכדי לבנות אותו, פשוט מחילים שער X על הקיוביט 00 (לפי סדר הקיוביטים של Qiskit), שכן 001=X0000|001\rangle = X_0 |000\rangle.

במקרה זה, האופרטור האוניטרי שלנו הוא URX0U_R \equiv X_0, שמוביל למצב ייחוס ρ001|\rho\rangle \equiv |001\rangle.

# 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")

פלט של תא הקוד הקודם

מצב ייחוס קוונטי

נניח שאתם רוצים להתחיל במצב מורכב יותר הכולל סופרפוזיציה ו/או שזירה, כגון 12(100+111)\frac{1}{\sqrt{2}}(|100\rangle+|111\rangle).

כדי להגיע למצב זה מ-000|000\rangle, אחת הגישות היא להשתמש ב-שער Hadamard על קיוביט 00 (H0H_0), בשער CNOT (CX) כאשר קיוביט 00 הוא קיוביט הבקרה וקיוביט 11 הוא קיוביט המטרה (CNOT01CNOT_{01}), ולבסוף שער XX המוחל על קיוביט 22 (X2X_2).

בתרחיש זה, האופרטור האוניטרי שלנו הוא URX2CNOT01H0000U_{R} \equiv X_2CNOT_{01}H_0|000\rangle, ומצב הייחוס שלנו הוא ρ12(100+111)|\rho\rangle \equiv \frac{1}{\sqrt{2}}(|100\rangle+|111\rangle).

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 הוא סוג של מעגל פרמטרי שניתן להשתמש בו כדי להעביר את נקודות הנתונים שלנו (xx) למפת המאפיינים.

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")

פלט של תא הקוד הקודם

סיכום

בשיעור זה למדתם כיצד לאתחל את המערכת שלכם באמצעות:

  • מצב ייחוס ברירת מחדל
  • מצבי ייחוס קלאסיים
  • מצבי ייחוס קוונטיים
  • מצבי ייחוס ספציפיים לאפליקציה

עומס העבודה הוריאציוני ברמה גבוהה שלנו נראה כך:

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

בעוד שמצבי הייחוס הם נקודות התחלה קבועות, נוכל להשתמש בצורה וריאציונית כדי להגדיר אנזאץ' המייצג אוסף של מצבים פרמטריים שהאלגוריתם הוריאציוני שלנו יחקור.