المحسِّنات الكلاسيكية
ما هو المحسِّن؟
تشرح لنا فيكتوريا ليبينسكا المحسِّنات الكلاسيكية وكيف تعمل كجزء من خوارزمية 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: خوارزمية التحسين بالتقريب الخطي (COBYLA).
- slsqp: البرمجة المتسلسلة بطريقة المربعات الصغرى (SLSQP).
- nelder-mead خوارزمية نيلدر-ميد.
معظم خوارزميات التحسين الكلاسيكية المتاحة هي مُصغِّرات محلية، بمعنى أنها تستخدم طرقًا مختلفة لإيجاد نقاط الحد الأدنى المحلية، لكنها لا تضمن إيجاد نقاط الحد الأدنى العالمية. بعض المُحسِّنات الكلاسيكية تقدّر التدرجات بشكل صريح وتستخدمها لإيجاد نقاط الحد الأدنى المحلية. بينما قد يستخدم البعض الآخر تقريبات خطية أو تربيعية متتالية لدالة الهدف لإيجاد نقاط الحد الأدنى.
تشترك هذه الخوارزميات في عدة خيارات، لكن مع اختلافات دقيقة. على سبيل المثال، جميعها تمتلك خيار تحديد عدد أقصى من التكرارات باستخدام تدوين 'maxiter': 200 الموضح أعلاه. جميعها لديها خيار ما يحدد معيار توقف مختلف بناءً على قيم الدالة أو المتغيرات، رغم أن هذه المعايير تختلف قليلًا بين الخوارزميات. تسمح لك COBYLA، على سبيل المثال، بتحديد تفاوت (مثلاً، 'tol': 0.0001) وهو الحد الأدنى لـ"منطقة الثقة". بالمقارنة، تتيح لك SLSQP تحديد الدقة المطلوبة لقيمة الدالة في معيار التوقف ('ftol'). تتيح لك نيلدر-ميد تحديد تفاوت في الفرق بين تخمينات المعاملات () المتتالية (xatol) أو تفاوت في الفرق بين القيم المتتالية التي تم الحصول عليها لدالة التكلفة (fatol) (أو كليهما).
للحصول على قائمة كاملة بالخوارزميات والخيارات المتاحة، تفضل بزيارة وثائق minimize الخاصة بـ SciPy.