مكتبتك الأولى للتعلم العميق تفعل أكثر من مجرد تشغيل نموذج ما؛ فهي تشكل طريقة تفكيرك في التدرجات (gradients)، والطبقات (layers)، وتدفق البيانات (data flow). إذا اخترت المكتبة الخاطئة، فستقضي أسابيع في صراع مع الأكواد الروتينية (boilerplate) بدلاً من تعلم كيفية سلوك الشبكات العصبية فعلياً. أما إذا اخترت المكتبة الصحيحة، فستترسخ المفاهيم في ذهنك لأن الكود لن يقف عائقاً أمامك.
يحصر معظم المبتدئين خياراتهم في ثلاث مكتبات: Keras و PyTorch و TensorFlow. هناك أيضاً JAX، ولكن يجب عليك تجاهلها حتى تعرف ما هو الـ Jacobian.
ماذا يعني مصطلح "صديق للمبتدئين" حقاً
لا تُعد المكتبة "صديقة" لمجرد أن وثائقها (documentation) ضخمة. بل تكون صديقة عندما يقرأ الكود وكأنه الرياضيات التي رأيتها في الدرس التعليمي، وعندما تشير رسالة الخطأ إلى خطئك بدلاً من إلقاء تتبع للمكدس (stack trace) من خلفية برمجية بلغة C++. أنت تريد التفكير في معدلات التعلم (learning rates) ودوال التنشيط (activation functions)، وليس في عدم تطابق أشكال التنسورات (tensor shape mismatches) المدفونة في أعماق البنية الداخلية للإطار البرمجي.
Keras: ابدأ من هنا لرؤية النتائج
بُنيت Keras على فكرة بسيطة: يجب أن تكون قادراً على الانتقال من الفكرة إلى النموذج المدرب في الوقت الذي يستغرقه شرب كوب من القهوة. فهي تغلف تعقيدات الانتشار العكسي (backpropagation) وتحسين الرسم البياني (graph optimization) خلف واجهة برمجة تطبيقات (API) نظيفة، لذا فإن مصنف صور يعمل بالكامل غالباً ما يتسع في حوالي اثني عشر سطراً من لغة Python.
تقوم بتعريف النموذج عن طريق تكديس الطبقات داخل كائن Sequential ، ثم تستدعي model.compile() لربط المحسن (optimizer) ودالة الخسارة (loss function)، وبعد ذلك تستدعي model.fit() للتدريب. تبدو الصيغة البرمجية وكأنها قائمة مهام؛ شكل المدخلات؟ تم. طبقة كثيفة (Dense layer)؟ تم. حلقة التدريب؟ تمت معالجتها. يتيح لك هذا التجربة مع ما يهم حقاً في وقت مبكر. هل يساعد إضافة طبقة أخرى؟ هل يجب استبدال ReLU بـ sigmoid؟ ماذا يحدث عندما تغير حجم الدفعة (batch size)؟
إذا كان هدفك هو تعلم ما تفعله الطبقات والمحسنات دون الغرق في ملفات الإعدادات، فإن Keras تزيل هذا العائق. يمكنك تشغيل شبكة تلافيفية (convolutional network) على صور حقيقية في غضون ساعة من تثبيت الحزمة. ولأن Keras تعمل فوق TensorFlow بشكل افتراضي، فستحصل أيضاً على إمكانية الوصول إلى خطوط أنابيب بيانات (data pipelines) جاهزة للإنتاج دون مغادرة واجهة برمجة التطبيقات عالية المستوى.
يظهر المقابل (trade-off) عندما تخرج عن المسار الممهد. إذا كنت بحاجة إلى كتابة دالة خسارة مخصصة تعتمد على التنشيطات الوسيطة (intermediate activations)، أو إذا كنت تريد تغيير التمرير العكسي (backward pass) أثناء التدريب، فقد تشعر أن Keras مقيدة. لديها مخارج للطوارئ، ولكن استخدامها يعني غالباً النزول إلى الكود الخام للإطار البرمجي. بالنسبة لمنطق البحث المخصص، فإن هذا الحاجز حقيقي.
PyTorch: تعلم من خلال رؤية التفاصيل الداخلية
تعامل PyTorch الشبكة العصبية كبرنامج Python عادي. تقوم بتعريف النموذج عن طريق إنشاء فئة فرعية من torch.nn.Module. التمرير الأمامي (forward pass) هو مجرد دالة (method) في Python تصف كيف تتحول المدخلات إلى مخرجات. تستدعي loss.backward()، وتقوم PyTorch بحساب التدرجات فوراً.
يحدث هذا لأن PyTorch تبني رسمها البياني الحسابي (computation graph) بشكل ديناميكي. تتطلب بعض الأطر البرمجية منك تحديد هيكل النموذج بالكامل مسبقاً قبل أن تلمسه أي بيانات. أما PyTorch فتنتظر حتى تمرر دفعة (batch) فعلياً عبر الشبكة. إذا تغير حجم مدخلاتك بين الدفعات، أو إذا كنت تريد طباعة تنسور (tensor) في منتصف التمرير الأمامي لتصحيح خطأ في تطابق الأشكال، فإن الإطار البرمجي لن يعترض. يمكنك استخدام مصحح أخطاء (debugger) قياسي، أو وضع جمل print() داخل فئة النموذج الخاصة بك. هذه البساطة مهمة عندما يبدو كل بُعد للتنسور وكأنه لغز، لأنها تجعل تصحيح الأخطاء يبدو وكأنه برمجة عادية.
إذا كنت تريد فهم كيفية عمل التدريب فعلياً — كيف ينتج التمرير الأمامي التوقعات، وكيف يوزع التمرير العكسي الخطأ، وكيف يقوم المحسن بتحديث الأوزان — فإن PyTorch تجبرك على النظر إلى ما وراء الكواليس. هذه الشفافية هي السبب في كونها الرائدة حالياً في مجال الأبحاث وتظهر في معظم إعلانات وظائف الذكاء الاصطناعي الجديدة. عندما تقرأ ورقة بحثية على arXiv، فمن المرجح جداً أن يكون التنفيذ الرسمي مكتوباً بلغة PyTorch.
TensorFlow: فكر في المكان الذي سيعمل فيه النموذج
كانت سمعة TensorFlow تتمثل في أنها كانت مطولة وصعبة التعلم. تغير الكثير من ذلك عندما أصبحت Keras واجهة برمجة التطبيقات الرسمية عالية المستوى الخاصة بها. في الإصدارات الحديثة، عندما تستورد Keras، فأنت عادةً ما تعمل على TensorFlow سواء لاحظت ذلك أم لا. ولكن TensorFlow لا تزال مهمة كخيار متميز بسبب ما يحدث بعد تدريب النموذج.
صُمم هذا النظام البيئي لعمليات النشر. يقوم TensorFlow Lite بضغط النماذج لتعمل على الهواتف، والمتحكمات الدقيقة، والمستشعرات الصناعية ذات حدود الذاكرة الضيقة. يقوم TensorFlow.js بتشغيل الاستدلال مباشرة داخل المتصفح دون إرسال البيانات إلى خادم. يتولى TensorFlow Serving إدارة إصدارات النماذج والتنبؤات بالدفعات في بيئات الإنتاج الضخمة.
اختر TensorFlow عندما يكون لمشروعك قيود مادية صعبة
