المرحلة الثانية: تعلم الآلة الكلاسيكي
مشروع تعليمي لتنفيذ نماذج وخوارزميات تعلم الآلة الأساسية من الصفر باستخدام Python، يغطي مجموعة متنوعة من الخوارزميات من الانحدار الخطي إلى التعلم العميق، مع التركيز على العرض الشفاف لآليات العمل الداخلية للخوارزميات.
تفاصيل مشروع ML-From-Scratch
نظرة عامة على المشروع
ML-From-Scratch هو مشروع يهدف إلى تنفيذ نماذج وخوارزميات التعلم الآلي الأساسية من الصفر باستخدام بايثون. لا يهدف هذا المشروع إلى إنتاج الخوارزميات الأكثر تحسينًا وكفاءة من الناحية الحسابية، بل إلى إظهار كيفية عمل الخوارزميات داخليًا بطريقة شفافة وسهلة الفهم.
مؤلف المشروع
مؤلف المشروع، إريك ليندر-نورين (Erik Linder-Norén)، هو مهندس تعلم آلي في شركة أبل، ولديه شغف بالتعلم الآلي وكرة السلة وبناء الأشياء.
مميزات المشروع
1. التوجه التعليمي
- يركز على العرض الشفاف لآلية العمل الداخلية للخوارزميات.
- تنفيذ الكود واضح وسهل الفهم، مما يسهل التعلم والاستيعاب.
- يوفر أمثلة غنية ونتائج مرئية.
2. المكدس التقني (Technology Stack)
- اللغة الرئيسية: بايثون (Python)
- الاعتماديات الأساسية: نامباي (NumPy) (للحسابات العددية)
- التصور: ماتبلوتليب (Matplotlib) (للعرض الرسومي)
3. تغطية واسعة النطاق
يغطي مختلف المجالات الهامة في التعلم الآلي، من الانحدار الخطي إلى التعلم العميق.
التثبيت والاستخدام
خطوات التثبيت
$ git clone https://github.com/eriklindernoren/ML-From-Scratch
$ cd ML-From-Scratch
$ python setup.py install
تشغيل الأمثلة
# مثال الانحدار متعدد الحدود
$ python mlfromscratch/examples/polynomial_regression.py
# مثال الشبكة العصبية الالتفافية
$ python mlfromscratch/examples/convolutional_neural_network.py
# مثال تجميع DBSCAN
$ python mlfromscratch/examples/dbscan.py
تصنيف الخوارزميات المنفذة
خوارزميات التعلم الخاضع للإشراف (Supervised Learning)
- Adaboost: خوارزمية التعزيز التكيفي (Adaptive Boosting)
- Bayesian Regression: الانحدار البايزي
- Decision Tree: شجرة القرار
- Elastic Net: الشبكة المرنة (Elastic Net Regression)
- Gradient Boosting: تعزيز التدرج (Gradient Boosting)
- K Nearest Neighbors: خوارزمية الجيران الأقرب K
- Lasso Regression: انحدار لاسو (Lasso Regression)
- Linear Discriminant Analysis: تحليل التمييز الخطي
- Linear Regression: الانحدار الخطي
- Logistic Regression: الانحدار اللوجستي
- Multi-class Linear Discriminant Analysis: تحليل التمييز الخطي متعدد الفئات
- Multilayer Perceptron: بيرسيبترون متعدد الطبقات
- Naive Bayes: بايز الساذج (Naive Bayes)
- Neuroevolution: التطور العصبي
- Particle Swarm Optimization of Neural Network: تحسين الشبكة العصبية بتحسين سرب الجسيمات
- Perceptron: بيرسيبترون
- Polynomial Regression: الانحدار متعدد الحدود
- Random Forest: الغابة العشوائية
- Ridge Regression: انحدار ريدج (Ridge Regression)
- Support Vector Machine: آلة المتجهات الداعمة
- XGBoost: تعزيز التدرج المتطرف (Extreme Gradient Boosting)
خوارزميات التعلم غير الخاضع للإشراف (Unsupervised Learning)
- Apriori: استخراج قواعد الارتباط (Association Rule Mining)
- Autoencoder: المشفر التلقائي (Autoencoder)
- DBSCAN: خوارزمية التجميع القائمة على الكثافة (Density-Based Clustering)
- FP-Growth: نمو الأنماط المتكررة (Frequent Pattern Growth)
- Gaussian Mixture Model: نموذج الخليط الغاوسي
- Generative Adversarial Network: الشبكة التوليدية التنافسية
- Genetic Algorithm: الخوارزمية الجينية
- K-Means: تجميع K-المتوسطات
- Partitioning Around Medoids: التقسيم حول المتوسطات
- Principal Component Analysis: تحليل المكونات الرئيسية
- Restricted Boltzmann Machine: آلة بولتزمان المقيدة
مكونات التعلم العميق (Deep Learning Components)
- Neural Network: إطار عمل الشبكة العصبية
- أنواع الطبقات المختلفة:
- Activation Layer (طبقة التنشيط)
- Average Pooling Layer (طبقة التجميع المتوسط)
- Batch Normalization Layer (طبقة تسوية الدفعة)
- Constant Padding Layer (طبقة الحشو الثابت)
- Convolutional Layer (طبقة الالتفاف)
- Dropout Layer (طبقة دروب آوت)
- Flatten Layer (طبقة التسطيح)
- Fully-Connected (Dense) Layer (طبقة متصلة بالكامل / كثيفة)
- Fully-Connected RNN Layer (طبقة RNN متصلة بالكامل)
- Max Pooling Layer (طبقة التجميع الأقصى)
- Reshape Layer (طبقة إعادة التشكيل)
- Up Sampling Layer (طبقة زيادة العينات)
- Zero Padding Layer (طبقة الحشو بالصفر)
نتائج تشغيل الأمثلة
1. مثال الشبكة العصبية الالتفافية (Convolutional Neural Network)
+---------+
| ConvNet |
+---------+
Input Shape: (1, 8, 8)
+----------------------+------------+--------------+
| Layer Type | Parameters | Output Shape |
+----------------------+------------+--------------+
| Conv2D | 160 | (16, 8, 8) |
| Activation (ReLU) | 0 | (16, 8, 8) |
| Dropout | 0 | (16, 8, 8) |
| BatchNormalization | 2048 | (16, 8, 8) |
| Conv2D | 4640 | (32, 8, 8) |
| Activation (ReLU) | 0 | (32, 8, 8) |
| Dropout | 0 | (32, 8, 8) |
| BatchNormalization | 4096 | (32, 8, 8) |
| Flatten | 0 | (2048,) |
| Dense | 524544 | (256,) |
| Activation (ReLU) | 0 | (256,) |
| Dropout | 0 | (256,) |
| BatchNormalization | 512 | (256,) |
| Dense | 2570 | (10,) |
| Activation (Softmax)| 0 | (10,) |
+----------------------+------------+--------------+
Total Parameters: 538570
Training: 100% [------------------------------------------------------------------------] Time: 0:01:55
Accuracy: 0.987465181058
2. مثال شبكة Q العميقة (Deep Q-Network)
+----------------+
| Deep Q-Network |
+----------------+
Input Shape: (4,)
+-------------------+------------+--------------+
| Layer Type | Parameters | Output Shape |
+-------------------+------------+--------------+
| Dense | 320 | (64,) |
| Activation (ReLU) | 0 | (64,) |
| Dense | 130 | (2,) |
+-------------------+------------+--------------+
Total Parameters: 450
3. مثال التطور العصبي (Neuroevolution)
+---------------+
| Model Summary |
+---------------+
Input Shape: (64,)
+----------------------+------------+--------------+
| Layer Type | Parameters | Output Shape |
+----------------------+------------+--------------+
| Dense | 1040 | (16,) |
| Activation (ReLU) | 0 | (16,) |
| Dense | 170 | (10,) |
| Activation (Softmax) | 0 | (10,) |
+----------------------+------------+--------------+
Total Parameters: 1210
Population Size: 100
Generations: 3000
Mutation Rate: 0.01
[0 Best Individual - Fitness: 3.08301, Accuracy: 10.5%]
[1 Best Individual - Fitness: 3.08746, Accuracy: 12.0%]
...
[2999 Best Individual - Fitness: 94.08513, Accuracy: 98.5%]
Test set accuracy: 96.7%
القيمة التعليمية
1. فهم عميق لمبادئ الخوارزميات
- من خلال التنفيذ من الصفر، يمكن فهم الفكرة الأساسية لكل خوارزمية بعمق.
- هيكل الكود واضح، مما يساعد على فهم تفاصيل التنفيذ المحددة للخوارزمية.
2. مهارات البرمجة العملية
- تحسين مهارات استخدام مكتبات الحساب العلمي مثل NumPy.
- تعلم كيفية تحويل النظريات الرياضية إلى تطبيقات برمجية.
3. أساس للبحث والتطوير
- يوفر أساسًا للبحث والتحسين المستقبلي للخوارزميات.
- يساعد على فهم التنفيذ الأساسي لأطر عمل التعلم الآلي الحالية.
الجمهور المستهدف
- المبتدئون والمتعلمون المتوسطون في التعلم الآلي.
- الباحثون الذين يرغبون في فهم آليات العمل الداخلية للخوارزميات بعمق.
- المطورون الذين يرغبون في تحسين قدراتهم على التنفيذ البرمجي.
- طلاب التخصصات المتعلقة بالتعلم الآلي.
مزايا المشروع
- تعليمي للغاية: الكود واضح وسهل الفهم، ويركز على القيمة التعليمية.
- تغطية واسعة: يشمل خوارزميات من الأساسية إلى المتقدمة.
- عملي للغاية: يوفر أمثلة كاملة وقابلة للتشغيل.
- تحديث مستمر: المشروع نشط ويتم إضافة تطبيقات خوارزميات جديدة باستمرار.
ملاحظات
- هذا المشروع مخصص بشكل أساسي للتعليم والدراسة، ولا يناسب الاستخدام في بيئات الإنتاج.
- يركز تنفيذ الخوارزميات على سهولة القراءة بدلاً من تحسين الأداء.
- يوصى باستخدامه بالاقتران مع الدراسة النظرية للحصول على أفضل النتائج.