التعلم العميق (Deep Learning) — مقدمة في الذكاء الاصطناعي
التعلم العميق (Deep Learning)
التعلم العميق هو فرع من ML يستخدم الشبكات العصبية متعددة الطبقات.
ما هي الشبكة العصبية؟
الشبكة العصبية مستوحاة من دماغ الإنسان:
- الخلايا العصبية (Neurons) تستقبل وترسل إشارات
- الوصلات (Weights) تُحدد قوة الإشارة
- الطبقات (Layers) تُعالج المعلومات تدريجياً
Input Layer → Hidden Layers → Output Layer
(X) (معالجة) (y)المكونات الأساسية
1. الخلية العصبية (Neuron)
# المعادلة البسيطة
output = activation(sum(inputs * weights) + bias)2. دوال التنشيط (Activation Functions)
# ReLU (الأكثر استخداماً)
def relu(x):
return max(0, x)
# Sigmoid (للتصنيف الثنائي)
def sigmoid(x):
return 1 / (1 + exp(-x))
# Softmax (للتصنيف المتعدد)
# يُحول لاحتمالات3. دالة الخسارة (Loss Function)
# للتصنيف
# Cross-Entropy Loss
# للانحدار
# Mean Squared Error (MSE)بناء شبكة عصبية مع Keras
import tensorflow as tf
from tensorflow import keras
from tensorflow.keras import layers
# بناء النموذج
model = keras.Sequential([
# طبقة الإدخال
layers.Dense(128, activation='relu', input_shape=(784,)),
# طبقات مخفية
layers.Dropout(0.2), # لمنع Overfitting
layers.Dense(64, activation='relu'),
layers.Dropout(0.2),
# طبقة الإخراج
layers.Dense(10, activation='softmax')
])
# تجميع النموذج
model.compile(
optimizer='adam',
loss='sparse_categorical_crossentropy',
metrics=['accuracy']
)
# ملخص النموذج
model.summary()تدريب النموذج
# تدريب
history = model.fit(
X_train, y_train,
epochs=10,
batch_size=32,
validation_split=0.2,
callbacks=[
keras.callbacks.EarlyStopping(patience=3)
]
)
# التقييم
test_loss, test_acc = model.evaluate(X_test, y_test)
print(f"دقة الاختبار: {test_acc:.2%}")
# التنبؤ
predictions = model.predict(X_new)أنواع الشبكات العصبية
1. CNN - للصور
model = keras.Sequential([
# Convolutional Layers
layers.Conv2D(32, (3,3), activation='relu', input_shape=(28,28,1)),
layers.MaxPooling2D((2,2)),
layers.Conv2D(64, (3,3), activation='relu'),
layers.MaxPooling2D((2,2)),
# Flatten and Dense
layers.Flatten(),
layers.Dense(64, activation='relu'),
layers.Dense(10, activation='softmax')
])2. RNN/LSTM - للتسلسلات
model = keras.Sequential([
layers.Embedding(vocab_size, 64),
layers.LSTM(128, return_sequences=True),
layers.LSTM(64),
layers.Dense(1, activation='sigmoid')
])3. Transformer - للNLP الحديث
# استخدام Hugging Face
from transformers import AutoModel, AutoTokenizer
model = AutoModel.from_pretrained("bert-base-uncased")
tokenizer = AutoTokenizer.from_pretrained("bert-base-uncased")مشروع: تصنيف صور MNIST
import tensorflow as tf
from tensorflow import keras
# تحميل البيانات
(X_train, y_train), (X_test, y_test) = keras.datasets.mnist.load_data()
# تطبيع البيانات
X_train = X_train / 255.0
X_test = X_test / 255.0
# إضافة بُعد للقناة
X_train = X_train[..., tf.newaxis]
X_test = X_test[..., tf.newaxis]
# بناء النموذج
model = keras.Sequential([
keras.layers.Conv2D(32, (3,3), activation='relu', input_shape=(28,28,1)),
keras.layers.MaxPooling2D((2,2)),
keras.layers.Conv2D(64, (3,3), activation='relu'),
keras.layers.MaxPooling2D((2,2)),
keras.layers.Flatten(),
keras.layers.Dense(64, activation='relu'),
keras.layers.Dense(10, activation='softmax')
])
model.compile(
optimizer='adam',
loss='sparse_categorical_crossentropy',
metrics=['accuracy']
)
# التدريب
model.fit(X_train, y_train, epochs=5, validation_split=0.1)
# التقييم
model.evaluate(X_test, y_test)نصائح للتعلم العميق
1. ابدأ بسيطاً - لا تُعقد النموذج من البداية
2. راقب Overfitting - استخدم Dropout و Early Stopping
3. استخدم GPU - التدريب أسرع بكثير
4. جرب Transfer Learning - نماذج مُدربة مسبقاً
5. وثّق تجاربك - TensorBoard, Weights & Biases
import tensorflow as tf
from tensorflow import keras
from tensorflow.keras import layers
# تحميل بيانات MNIST
(X_train, y_train), (X_test, y_test) = keras.datasets.mnist.load_data()
# التطبيع
X_train = X_train.reshape(-1, 28*28) / 255.0
X_test = X_test.reshape(-1, 28*28) / 255.0
# بناء شبكة عصبية بسيطة
model = keras.Sequential([
layers.Dense(128, activation='relu', input_shape=(784,)),
layers.Dropout(0.2),
layers.Dense(64, activation='relu'),
layers.Dense(10, activation='softmax')
])
model.compile(
optimizer='adam',
loss='sparse_categorical_crossentropy',
metrics=['accuracy']
)
# التدريب
print("جارٍ التدريب...")
history = model.fit(
X_train, y_train,
epochs=5,
batch_size=32,
validation_split=0.1,
verbose=1
)
# التقييم
loss, accuracy = model.evaluate(X_test, y_test)
print(f"\nدقة الاختبار: {accuracy:.2%}")اختبر فهمك