Variational Autoencoder (VAE) for Handwritten Digit Generation
Project Overview
هذا المشروع عبارة عن تنفيذ عملي لنموذج Variational Autoencoder (VAE) باستخدام مكتبة Keras مع Backend من TensorFlow.
النموذج تم تدريبه على بيانات الأرقام المكتوبة يدويًا من قاعدة بيانات MNIST، بهدف تعلم تمثيل كامن (Latent Representation) ثنائي الأبعاد يمكن من خلاله توليد أرقام جديدة لم تكن موجودة في البيانات الأصلية.
Architecture Details
Encoder
Convolutional Neural Network (CNN)
يقوم بتحويل الصورة (28×28) إلى:
z_mean
z_log_var
استخدام Reparameterization Trick عبر طبقة Sampling
Latent Space
أبعاد الـ Latent Space = 2
يسمح بتصور التمثيل الكامن بصريًا وفهم كيفية توزيع الأرقام
? Decoder
يستخدم Dense + Conv2DTranspose
يعيد بناء الصورة من المتجه الكامن
Activation: Sigmoid لإخراج صورة بقيم بين 0 و1
Loss Function
تم استخدام:
Reconstruction Loss (Binary Crossentropy)
KL Divergence Loss
المعادلة النهائية:
Total Loss = Reconstruction Loss + KL Divergence
وده بيخلي النموذج:
يعيد بناء الصورة بدقة
ويجبر التوزيع الكامن يكون قريب من التوزيع الطبيعي Gaussian
Results
النموذج تعلم توزيع الأرقام بنجاح
يمكن توليد أرقام جديدة عبر التحرك داخل الـ Latent Space
تم عمل:
Visualization لشبكة التوليد
رسم توزيع الأرقام داخل الـ Latent Space
Skills Demonstrated
Deep Learning
Generative Models
CNN Architecture
Custom Training Loop في Keras
KL Divergence Implementation
Latent Space Visualization