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

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

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

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

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

المراجع

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

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

في الدروس السابقة، تعلّمت كيفية بناء هاميلتونيان مناسب للاستخدام على حاسوب كمومي وكيفية إنشاء دائرة متغيّرة. كما تعلّمت أن الدائرة المتغيّرة (أو الـ 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)

Some example code is shown below. We restrict our discussion here to the last two arguments.

    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.