المزيد من مقالات التعلم العميق......المزيد من مقالات تعلم الآلة.....مقالات التعلم العميقمقالات تعلم الآلة

دروس التعلم الآلي الكمي للمبتدئين

يعد التعلم الآلي الكمي (الكمومي) Quantum machine learning مجالًا مثيرًا وسريع النمو يجمع بين قوة الحوسبة الكمومية quantum computing وتقنيات التعلم الآلي machine learning. في هذا البرنامج التعليمي، سنغطي أساسيات التعلم الآلي الكمومي ونوضح كيفية تنفيذ خوارزمية بسيطة للتعلم الآلي الكمومي باستخدام بايثون.

قبل الغوص في التعلم الآلي الكمومي، من المهم أن يكون لديك فهم أساسي للحوسبة الكمومية. تعتمد الحوسبة الكمومية على مبادئ ميكانيكا الكم quantum mechanics التي تحكم سلوك الجسيمات على مستوى الكم. على عكس أجهزة الكمبيوتر الكلاسيكية، التي تستخدم وحدات البت لتخزين المعلومات ومعالجتها، تستخدم أجهزة الكمبيوتر الكمومية الكيوبتات qubits، والتي يمكن أن توجد في حالات متعددة في وقت واحد. يسمح هذا لأجهزة الكمبيوتر الكمومية بإجراء عمليات حسابية معينة بشكل أسرع بكثير من أجهزة الكمبيوتر التقليدية.

الآن، دعنا ننتقل إلى التعلم الآلي. التعلم الآلي هو مجال دراسة يستخدم الخوارزميات لتحليل البيانات واتخاذ تنبؤات أو قرارات. هناك ثلاثة أنواع رئيسية من التعلم الآلي: التعلم الخاضع للإشراف supervised learning والتعلم غير الخاضع للإشراف unsupervised learning والتعلم المعزز reinforcement learning. في هذا البرنامج التعليمي، سوف نركز على التعلم تحت الإشراف.

يتضمن التعلم الخاضع للإشراف تدريب نموذج لعمل تنبؤات بناءً على البيانات المصنفة labeled data. يتعلم النموذج من البيانات المصنفة ويمكنه بعد ذلك إجراء تنبؤات بشأن بيانات جديدة غير مصنفة unlabeled data. لتوضيح ذلك، سنستخدم مجموعة بيانات بسيطة من الأرقام المكتوبة بخط اليد تسمى مجموعة بيانات MNIST. تتكون مجموعة البيانات هذه من 70000 صورة من الأرقام المكتوبة بخط اليد، كل منها مُسمى بالرقم المقابل.

للبدء، دعنا نستورد المكتبات الضرورية في بايثون:

import numpy as np
import tensorflow as tf
import tensorflow_quantum as tfq
import cirq

بعد ذلك، سنقوم بتحميل مجموعة بيانات MNIST باستخدام TensorFlow

mnist = tf.keras.datasets.mnist
(x_train, y_train), (x_test, y_test) = mnist.load_data()

يمكننا رسم الصورة الأولى في مجموعة البيانات باستخدام matplotlib:

import matplotlib.pyplot as plt
plt.imshow(x_train[0], cmap=plt.cm.binary)
plt.show()

الآن بعد أن قمنا بتحميل مجموعة البيانات، يمكننا البدء في بناء نموذج التعلم الآلي الكمي الخاص بنا. سنستخدم دائرة كمومية quantum circuit لترميز صورة الإدخال إلى حالة كمومية quantum state، ثم نستخدم شبكة عصبية كلاسيكية لعمل تنبؤات بناءً على تلك الحالة.

أولاً، سوف نحدد الدائرة الكمومية. في هذا المثال، سنستخدم دائرة بسيطة تتكون من اثنين من وحدات الكيوبت:

q0 = cirq.GridQubit(0, 0)
q1 = cirq.GridQubit(1, 0)

بعد ذلك، سنحدد عمليات البوابة الكمومية quantum gate التي سنستخدمها لترميز صورة الإدخال إلى الحالة الكمومية:

def encode(inputs):
    circuit = cirq.Circuit()
    for i, row in enumerate(inputs):
        for j, pixel in enumerate(row):
            if pixel > 0:
                circuit.append(cirq.X(q0 ** i))
                circuit.append(cirq.X(q1 ** j))
    return circuit

تأخذ هذه الدالة صورة إدخال كمصفوفة من البكسلات وترميزها في الحالة الكمومية باستخدام بوابة X.

الآن بعد أن حددنا الدائرة الكمومية، يمكننا استخدام TensorFlow Quantum (TFQ) لدمجها مع الشبكة العصبية الكلاسيكية. سنستخدم شبكة عصبية بسيطة من طبقتين مع طبقة مخفية واحدة:

model = tf.keras.Sequential([
    tf.keras.layers.Input(shape=(), dtype=tf.string),
    tfq.layers.PQC(encode, cirq.Simulator()),
    tf.keras.layers.Dense(10, activation='softmax')
])

تأخذ طبقة tfq.layers.PQC الدائرة الكمية المحددة في دالة الترميز encode وتطبقها على بيانات الإدخال. طبقة tf.keras.layers.Dense هي طبقة قياسية متصلة بالكامل ترسم الحالة الكمية لتنبؤات المخرجات.

أخيرًا، يمكننا تجميع compile النموذج وتدريبه train باستخدام بيانات التدريب من مجموعة بيانات MNIST:

model.compile(optimizer=tf.keras.optimizers.Adam(lr=0.01),
              loss=tf.keras.losses.SparseCategoricalCrossentropy(),
              metrics=['accuracy'])

history = model.fit(x_train, y_train, epochs=10, validation_data=(x_test, y_test))

نحن نستخدم مُحسِّن آدم Adam optimizer، وخطأ الانتروبيا المتقاطعة المتناثرة sparse categorical cross-entropy، والدقة accuracy كمقياس لدينا. نحن ندرب النموذج لمدة 10 فترات ونتحقق من صحته على بيانات الاختبار.

بمجرد تدريب النموذج، يمكننا استخدامه لعمل تنبؤات بشأن بيانات جديدة غير مصنفة:

predictions = model.predict(x_test)

يمكننا بعد ذلك تقييم دقة نموذجنا في بيانات الاختبار:

test_loss, test_acc = model.evaluate(x_test, y_test)
print('Test accuracy:', test_acc)

هذا كل شيء! لقد نجحنا في تنفيذ نموذج التعلم الآلي الكمي باستخدام بايثون و TensorFlow Quantum.

في حين أن هذا المثال بسيط، إلا أنه يوضح قوة وإمكانات التعلم الآلي الكمومي. آمل أن يكون هذا البرنامج التعليمي قد زودك بأساس متين لمزيد من الاستكشاف لهذا المجال الرائع.

بواسطة
SPX
المصدر
medium

د. علاء طعيمة

كلية علوم الحاسوب وتكنولوجيا المعلومات / جامعة القادسية / العراق

مقالات ذات صلة

اترك تعليقاً

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها بـ *

زر الذهاب إلى الأعلى