تصميم TensorFlow Quantum

تم تصميم TensorFlow Quantum (TFQ) لمشاكل التعلم الآلي الكمومي في عصر NISQ. إنه يجلب بدائل الحوسبة الكمومية - مثل بناء الدوائر الكمومية - إلى نظام TensorFlow البيئي. تستخدم النماذج والعمليات التي تم إنشاؤها باستخدام TensorFlow هذه العناصر الأولية لإنشاء أنظمة هجينة كلاسيكية كمومية قوية.

باستخدام TFQ ، يمكن للباحثين إنشاء رسم بياني TensorFlow باستخدام مجموعة البيانات الكمومية ، ونموذج الكم ، ومعلمات التحكم الكلاسيكية. يتم تمثيل هذه كلها كموترات في رسم بياني حسابي واحد. يتم الحصول على نتيجة القياسات الكمومية - التي تؤدي إلى أحداث احتمالية كلاسيكية - بواسطة عمليات TensorFlow. يتم التدريب باستخدام Keras API القياسي. تسمح وحدة tfq.datasets للباحثين بتجربة مجموعات بيانات كمومية جديدة ومثيرة للاهتمام.

سيرك

Cirq هو إطار عمل برمجة كمومية من Google. يوفر جميع العمليات الأساسية - مثل الكيوبتات والبوابات والدوائر والقياس - لإنشاء الدوائر الكمية وتعديلها واستدعاءها على كمبيوتر كمي أو كمبيوتر كمومي محاكى. يستخدم TensorFlow Quantum بدائل Cirq هذه لتوسيع TensorFlow لحساب الدُفعات وبناء النماذج وحساب التدرج. لتكون فعالًا مع TensorFlow Quantum ، من الجيد أن تكون فعالًا مع Cirq.

بدائل TensorFlow الكم

تنفذ TensorFlow Quantum المكونات اللازمة لدمج TensorFlow مع أجهزة الحوسبة الكمومية. تحقيقا لهذه الغاية ، يقدم TFQ اثنين من أساسيات نوع البيانات:

  • الدائرة الكمومية : تمثل الدوائر الكمية المحددة باستخدام Cirq ( cirq.Circuit ) داخل TensorFlow. أنشئ دفعات من الدوائر ذات الأحجام المتفاوتة ، على غرار مجموعات من نقاط بيانات ذات قيمة حقيقية مختلفة.
  • مجموع باولي : يمثل مجموعات خطية من منتجات موتر لمشغلي باولي المحددة في Cirq ( cirq.PauliSum ). مثل الدوائر ، قم بإنشاء مجموعات من المشغلين بأحجام مختلفة.

العمليات الأساسية

باستخدام بدائيات الدائرة الكمومية داخل tf.Tensor ، ينفذ TensorFlow Quantum العمليات التي تعالج هذه الدوائر وتنتج مخرجات ذات مغزى.

عمليات TensorFlow مكتوبة بلغة C ++ المحسنة. عينة العمليات هذه من الدوائر ، وتحسب قيم التوقعات ، وتخرج الحالة التي تنتجها الدوائر المعينة. هناك بعض التحديات في كتابة العمليات المرنة والأداء:

  1. الدوائر ليست بنفس الحجم. بالنسبة للدارات المحاكاة ، لا يمكنك إنشاء عمليات ثابتة (مثل tf.matmul أو tf.add ) ثم استبدال أرقام مختلفة للدوائر ذات الأحجام المختلفة. يجب أن تسمح عمليات التشغيل هذه بالأحجام الديناميكية التي لا يسمح بها الرسم البياني لحساب TensorFlow ذي الحجم الثابت.
  2. يمكن للبيانات الكمومية أن تحفز بنية دائرة مختلفة تمامًا. هذا سبب آخر لدعم الأحجام الديناميكية في TFQ ops. يمكن أن تمثل البيانات الكمية تغييرًا هيكليًا في الحالة الكمومية الأساسية التي يتم تمثيلها من خلال تعديلات على الدائرة الأصلية. نظرًا لأن نقاط البيانات الجديدة يتم تبديلها وإخراجها في وقت التشغيل ، لا يمكن تعديل الرسم البياني لحساب TensorFlow بعد إنشائه ، لذا يلزم دعم هذه الهياكل المتنوعة.
  3. cirq.Circuits . تشبه الدوائر الرسوم البيانية الحسابية من حيث أنها سلسلة من العمليات - وقد يحتوي بعضها على رموز / عناصر نائبة. من المهم جعل هذا متوافقًا مع TensorFlow قدر الإمكان.

لأسباب تتعلق بالأداء ، فإن Eigen (مكتبة C ++ المستخدمة في العديد من عمليات TensorFlow) ليست مناسبة تمامًا لمحاكاة الدوائر الكمومية. بدلاً من ذلك ، تُستخدم محاكيات الدائرة المستخدمة في التجربة الكمومية غير التقليدية كمحققين وتم توسيعها كأساس لعمليات TFQ (كُتبت جميعها باستخدام تعليمات AVX2 و SSE). تم إنشاء العمليات ذات التوقيعات الوظيفية المتطابقة التي تستخدم جهاز كمبيوتر كمومي فعلي. يعد التبديل بين جهاز كمبيوتر كمي محاكى ومادي سهل مثل تغيير سطر واحد من التعليمات البرمجية. تقع هذه العمليات circuit_execution_ops.py .

طبقات

تعرض طبقات TensorFlow الكمومية أخذ العينات والتوقع وحساب الحالة للمطورين باستخدام واجهة tf.keras.layers.Layer . من الملائم إنشاء طبقة دائرة لمعلمات التحكم الكلاسيكية أو لعمليات القراءة. بالإضافة إلى ذلك ، يمكنك إنشاء طبقة بدرجة عالية من التعقيد تدعم دائرة الدُفعات ، وقيمة معلمة التحكم في الدُفعات ، وتنفيذ عمليات قراءة الدُفعات. راجع tfq.layers.Sample للحصول على مثال.

مفرقون

على عكس العديد من عمليات TensorFlow ، لا تحتوي الملاحظات في الدوائر الكمية على صيغ للتدرجات التي يسهل حسابها نسبيًا. وذلك لأن الكمبيوتر الكلاسيكي يمكنه فقط قراءة عينات من الدوائر التي يتم تشغيلها على جهاز كمبيوتر كمي.

لحل هذه المشكلة ، توفر الوحدة النمطية tfq.differentiators العديد من تقنيات التمايز المعيارية. يمكن للمستخدمين أيضًا تحديد طريقتهم الخاصة لحساب التدرجات - في كل من إعداد "العالم الحقيقي" لحساب التوقع المستند إلى العينة ، والعالم الدقيق التحليلي. غالبًا ما تكون طرق مثل الفروق المحدودة هي الأسرع (وقت ساعة الحائط) في بيئة تحليلية / دقيقة. بينما تكون أبطأ (وقت ساعة الحائط) ، غالبًا ما تكون الأساليب العملية مثل تغيير المعلمات أو الأساليب العشوائية أكثر فاعلية. يتم إنشاء مثيل لـ tfq.differentiators.Differentiator وإرفاقه بعملية فعلية موجودة باستخدام generate_differentiable_op ، أو يتم تمريره إلى مُنشئ tfq.layers.Expectation أو tfq.layers.SampledExpectation . لتنفيذ أداة تمييز مخصصة ، ورث من فئة tfq.differentiators.Differentiator . لتحديد عملية التدرج لأخذ العينات أو حساب متجه الحالة ، استخدم tf.custom_gradient .

مجموعات البيانات

مع نمو مجال الحوسبة الكمومية ، ستظهر المزيد من البيانات الكمية ومجموعات النماذج ، مما يجعل المقارنة المنظمة أكثر صعوبة. تُستخدم الوحدة النمطية tfq.datasets كمصدر بيانات لمهام التعلم الآلي الكمي. يضمن مقارنات منظمة للنموذج والأداء.

من المأمول أنه بفضل المساهمات المجتمعية الكبيرة ، ستنمو وحدة مجموعات البيانات tfq.datasets لتمكين البحث الذي يكون أكثر شفافية وقابلية للتكرار. تعتبر المشكلات المنسقة بعناية في: التحكم الكمي ، والمحاكاة الفرميونية ، والتصنيف بالقرب من انتقالات الطور القريب ، والاستشعار الكمي ، وما إلى ذلك كلها مرشحات رائعة لإضافة tfq.datasets . لاقتراح مجموعة بيانات جديدة ، افتح إصدار GitHub .