انتقل إلى المحتوى الرئيسي

المحسِّنات الكلاسيكية

ما هو المحسِّن؟

تشرح لنا فيكتوريا ليبينسكا المحسِّنات الكلاسيكية وكيف تعمل كجزء من خوارزمية VQE.

ستتعرّف على عدد من المحسِّنات ومدى أدائها في وجود الضوضاء وفي غيابها.

المراجع

المقالات التالية مُشار إليها في الفيديو أعلاه:

برمجة محسِّن كلاسيكي

في الدروس السابقة، تعلّمت كيفية بناء هاميلتونيان مناسب للاستخدام على حاسوب كمومي وكيفية إنشاء دائرة متغيّرة. كما تعلّمت أن الدائرة المتغيّرة (أو الـ ansatz) تحتوي على معاملات قابلة للتغيير، وأن الاختيار الأمثل للمعاملات هو ما يُنتج أقل قيمة ممكنة لدالة التكلفة أو الطاقة. وبذلك يُختزل مشكلتنا في البحث عن المجموعة المثلى من المعاملات في فضاء المعاملات. معظم العمل في المحسِّنات الكلاسيكية تمّ بالفعل، إذ تتوفر محسِّنات ممتازة من عدة مصادر.

في هذا الدرس ستتعلّم:

  • كيف تندرج المحسِّنات الكلاسيكية في حساب VQE
  • ما هي المحسِّنات الكلاسيكية المتاحة من SciPy
  • ما المحسِّنات غير المتاحة بعد عبر SciPy وكيف تستكمل الناقص في الوقت الراهن باستخدام qiskit.algorithms
  • ما هي الخيارات المتاحة لهذه المحسِّنات وأهميتها في الحوسبة الكمومية

SciPy هي مكتبة Python مجانية ومفتوحة المصدر تحتوي على حزم تتعلق بمجالات عديدة في الحوسبة العلمية، بما فيها التحسين. وبالتحديد تمتلك SciPy حزمة تحسين تتضمن دالة minimize:

from scipy.optimize import minimize تمتلك دالة minimize عدة وسائط، لكن أهمها في الكيمياء الكمومية هي:

  • دالة التكلفة (cost_func). وهي مرتبطة بالهاميلتوني، لكنها تتضمن أيضاً بعض التعقيدات، مثل تحديد قيمة التوقع باستخدام Estimator، وفي حالة حسابات الحالات المثارة قد تشمل شروط التعامد.
  • حالة ابتدائية (x0) للنظام، وغالباً ما تكون حالة هارتري-فوك
  • وسائط أخرى، بما فيها وسائط دالة التكلفة ذاتها
  • الطريقة المحددة للمحسِّن الكلاسيكي الذي تختاره
  • خيارات المحسِّن الكلاسيكي (لا تخلط بينها وبين خيارات الجلسة التي سنناقشها في القسم التالي)

فيما يلي مثال على الكود. سنقتصر في مناقشتنا هنا على الوسيطين الأخيرين.

    cost_func,
x0,
args=(ansatz, hamiltonian, estimator),
method="cobyla",
options={"maxiter": 200})

توفر SciPy توثيقًا لجميع طرق minimize المتاحة. إليك بعض الأمثلة البارزة، وكلها طرق لتصغير دالة قياسية لمتغير واحد أو أكثر:

  • cobyla: خوارزمية COBYLA للتحسين عبر التقريب الخطي.
  • slsqp: برمجة المربعات الصغرى المتسلسلة (SLSQP).
  • nelder-mead: خوارزمية Nelder-Mead.

معظم خوارزميات التحسين الكلاسيكي المتاحة هي مُصغِّرات محلية، بمعنى أنها تستخدم طرقًا مختلفة للعثور على الحدود الدنيا المحلية، لكنها لا تضمن إيجاد الحد الأدنى الكلي. بعض المحسِّنات الكلاسيكية تُقدِّر التدرجات صراحةً وتستخدمها للعثور على الحدود الدنيا المحلية، بينما قد تستخدم أخرى تقريبات خطية أو تربيعية متتالية لدالة الهدف للعثور على الحدود الدنيا.

تشترك هذه الخوارزميات في عدة خيارات مع وجود فروق دقيقة بينها. على سبيل المثال، تتيح جميعها تحديد الحد الأقصى لعدد التكرارات باستخدام الصيغة 'maxiter': 200 الواردة أعلاه. وجميعها لديها خيار لتحديد معيار توقف مختلف يستند إلى قيم الدالة أو المتغيرات، وإن تفاوتت هذه المعايير بين خوارزمية وأخرى. تتيح COBYLA مثلًا تحديد تسامح (مثلًا 'tol': 0.0001) يُمثّل الحد الأدنى لـ "منطقة الثقة". في المقابل، تتيح SLSQP تحديد هدف في دقة الدالة المستخدمة في معيار التوقف ('ftol'). أما Nelder-Mead فتتيح تحديد تسامح في الفرق بين التخمينات المتتالية للمعامل (xx) (xatol) أو تسامح في الفرق بين القيم المتتالية لدالة التكلفة f(x)f(x) (fatol) أو كليهما معًا.

للاطلاع على قائمة كاملة بالخوارزميات والخيارات المتاحة، راجع توثيق minimize في SciPy.