تعلم الآلة Singularity - التصنيف: دالة Qiskit من Multiverse Computing
- دوال Qiskit ميزة تجريبية متاحة فقط لمستخدمي خطة IBM Quantum® Premium Plan وFlex Plan وOn-Prem (عبر IBM Quantum Platform API) Plan. هي في مرحلة إصدار معاينة وقابلة للتغيير.
نظرة عامة
بفضل دالة "تعلم الآلة Singularity - التصنيف"، يمكنك حل مشكلات تعلم الآلة الواقعية على أجهزة الكم دون الحاجة إلى خبرة كمية. هذه الدالة التطبيقية، المستندة إلى طرق التجميع، هي مصنِّف هجيني. تستغل الأساليب الكلاسيكية مثل التعزيز والتكييس والتجميع لتدريب التجميع الأولي. ثم تُستخدم الخوارزميات الكمية مثل المحلل الذاتي الكمي التنويعي (VQE) وخوارزمية التحسين الكمية التقريبية (QAOA) لتعزيز تنوع التجميع المُدرَّب وقدراته على التعميم وتعقيده الكلي.
على عكس حلول تعلم الآلة الكمية الأخرى، هذه الدالة قادرة على التعامل مع مجموعات بيانات واسعة النطاق بملايين الأمثلة والميزات دون أن تتقيد بعدد Qubits في وحدة المعالجة الكمية المستهدفة. عدد Qubits يحدد فقط حجم التجميع الذي يمكن تدريبه. كما أنها مرنة للغاية، وتُستخدم لحل مشكلات التصنيف في مجالات واسعة، تشمل التمويل والرعاية الصحية والأمن السيبراني.
وهي تحقق باستمرار دقة عالية في المشكلات الكلاسيكية الصعبة التي تتضمن مجموعات بيانات عالية الأبعاد وصاخبة وغير متوازنة.
وهي مصممة لـ:
- المهندسين وعلماء البيانات في الشركات الساعين إلى تعزيز منتجاتهم التقنية بدمج تعلم الآلة الكمي في منتجاتهم وخدماتهم،
- الباحثين في مختبرات البحث الكمي الذين يستكشفون تطبيقات تعلم الآلة الكمي ويتطلعون إلى الاستفادة من الحوسبة الكمية لمهام التصنيف، و
- الطلاب والمعلمين في المؤسسات التعليمية في مقررات مثل تعلم الآلة، ممن يسعون إلى إبراز مزايا الحوسبة الكمية.
يوضح المثال التالي وظائفها المختلفة، بما فيها create وlist وfit وpredict، ويبرهن على استخدامها في مشكلة اصطناعية تتكون من نصفَي دائرة متداخلَين، وهي مشكلة صعبة بطبيعتها بسبب حدودها القراري غير الخطي.
وصف الدالة
تتيح دالة Qiskit هذه للمستخدمين حل مشكلات التصنيف الثنائي باستخدام مصنِّف التجميع المعزَّز كمياً من Singularity. خلف الكواليس، تستخدم نهجاً هجينياً لتدريب مجموعة من المصنِّفات كلاسيكياً على مجموعة البيانات المُعلَّمة، ثم تُحسِّنها لتحقيق أقصى تنوع وتعميم باستخدام خوارزمية التحسين الكمية التقريبية (QAOA) على وحدات المعالجة الكمية IBM®. من خلال واجهة سهلة الاستخدام، يمكن للمستخدمين ضبط المصنِّف وفق متطلباتهم، وتدريبه على مجموعة البيانات التي يختارونها، وتوظيفه لعمل تنبؤات على مجموعة بيانات لم يسبق رؤيتها.
لحل مشكلة تصنيف عامة:
- قم بمعالجة مجموعة البيانات مسبقاً، وقسِّمها إلى مجموعات للتدريب والاختبار. يمكنك اختيارياً تقسيم مجموعة التدريب إلى مجموعتين للتدريب والتحقق. يمكن تحقيق ذلك باستخدام scikit-learn.
- إذا كانت مجموعة التدريب غير متوازنة، يمكنك إعادة أخذ عينات منها لتوازن الفئات باستخدام imbalanced-learn.
- قم برفع مجموعات التدريب والتحقق والاختبار بشكل منفصل إلى مساحة تخزين الدالة باستخدام أسلوب
file_uploadمن الكتالوج، مع تمرير المسار المناسب في كل مرة. - هيِّئ المصنِّف الكمي باستخدام إجراء
createالخاص بالدالة، الذي يقبل المعاملات الفائقة مثل عدد وأنواع المتعلمين، والتنظيم (قيمة lambda)، وخيارات التحسين بما فيها عدد الطبقات ونوع المُحسِّن الكلاسيكي والنظيرة الكمية الخلفية وغيرها. - دِرِّب المصنِّف الكمي على مجموعة التدريب باستخدام إجراء
fitالخاص بالدالة، مع تمرير مجموعة التدريب المُعلَّمة، ومجموعة التحقق إن وجدت. - اصنع تنبؤات على مجموعة الاختبار غير المسبوقة باستخدام إجراء
predictالخاص بالدالة.
النهج القائم على الإجراءات
تستخدم الدالة نهجاً قائماً على الإجراءات. يمكنك التفكير فيها كبيئة افتراضية تستخدم فيها الإجراءات لتنفيذ المهام أو تغيير حالتها. حالياً، تقدم الإجراءات التالية: list، وcreate، وdelete، وfit، وpredict، وfit_predict، وcreate_fit_predict. يوضح المثال التالي إجراء create_fit_predict.
# Added by doQumentation — required packages for this notebook
!pip install -q numpy qiskit-ibm-catalog scikit-learn
# Import QiskitFunctionsCatalog to load the
# "Singularity Machine Learning - Classification" function by Multiverse Computing
from qiskit_ibm_catalog import QiskitFunctionsCatalog
# Import the make_moons and the train_test_split functions from scikit-learn
# to create a synthetic dataset and split it into training and test datasets
from sklearn.datasets import make_moons
from sklearn.model_selection import train_test_split
# authentication
# If you have not previously saved your credentials, follow instructions at
# /docs/guides/functions
# to authenticate with your API key.
catalog = QiskitFunctionsCatalog(channel="ibm_quantum_platform")
# load "Singularity Machine Learning - Classification" function by Multiverse Computing
singularity = catalog.load("multiverse/singularity")
# generate the synthetic dataset
X, y = make_moons(n_samples=1000)
# split the data into training and test datasets
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2)
job = singularity.run(
action="create_fit_predict",
num_learners=10,
regularization=0.01,
optimizer_options={"simulator": True},
X_train=X_train,
y_train=y_train,
X_test=X_test,
options={"save": False},
)
# get job status and result
status = job.status()
result = job.result()
print("Job status: ", status)
print("Action result status: ", result["status"])
print("Action result message: ", result["message"])
print("Predictions (first five results): ", result["data"]["predictions"][:5])
print(
"Probabilities (first five results): ",
result["data"]["probabilities"][:5],
)
print("Usage metadata: ", result["metadata"]["resource_usage"])
Job status: QUEUED
Action result status: ok
Action result message: Classifier created, fitted, and predicted.
Predictions (first five results): [1, 0, 0, 1, 0]
Probabilities (first five results): [[0.16849563539001172, 0.8315043646099888], [0.8726393386620336, 0.12736066133796647], [0.795344837290717, 0.20465516270928288], [0.36822585748882725, 0.6317741425111725], [0.6656662698604361, 0.3343337301395641]]
Usage metadata: {'RUNNING: MAPPING': {'CPU_TIME': 7.945035696029663}, 'RUNNING: WAITING_QPU': {'CPU_TIME': 82.41029238700867}, 'RUNNING: POST_PROCESSING': {'CPU_TIME': 77.3459484577179}, 'RUNNING: EXECUTING_QPU': {'QPU_TIME': 71.27004957199097}}
1. List
يسترجع إجراء list جميع المصنِّفات المُخزَّنة بصيغة *.pkl.tar من مجلد البيانات المشترك. يمكنك أيضاً الوصول إلى محتويات هذا المجلد باستخدام أسلوب catalog.files(). بشكل عام، يبحث إجراء list عن ملفات بامتداد *.pkl.tar في مجلد البيانات المشترك ويعيدها بتنسيق قائمة.