تصميم TensorFlow Quantum

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

باستخدام TFQ، يمكن للباحثين إنشاء رسم بياني TensorFlow باستخدام مجموعة بيانات كمومية ونموذج كمي ومعلمات تحكم كلاسيكية. يتم تمثيل كل هذه كموترات في رسم بياني حسابي واحد. يتم الحصول على نتائج القياسات الكمومية - التي تؤدي إلى أحداث احتمالية كلاسيكية - بواسطة TensorFlow ops. يتم التدريب باستخدام 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. يمكن أن تمثل البيانات الكمومية تغيرًا هيكليًا في الحالة الكمومية الأساسية التي يتم تمثيلها من خلال تعديلات على الدائرة الأصلية. نظرًا لأنه يتم تبديل نقاط البيانات الجديدة داخل وخارج وقت التشغيل، لا يمكن تعديل الرسم البياني الحسابي لـ TensorFlow بعد إنشائه، لذا يلزم دعم هذه الهياكل المتنوعة.
  3. تشبه cirq.Circuits الرسوم البيانية الحسابية من حيث أنها عبارة عن سلسلة من العمليات، وقد يحتوي بعضها على رموز/عناصر نائبة. من المهم جعل هذا متوافقًا مع TensorFlow قدر الإمكان.

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

طبقات

تعرض طبقات TensorFlow Quantum أخذ العينات والتوقعات وحساب الحالة للمطورين الذين يستخدمون واجهة 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 .