0Pricing
Learn AI with Python · درس

المشفّرات التلقائية التغايرية (VAE)

خسارة ELBO، وحيلة إعادة المعلمة، واستكشاف الفضاء الكامن، وتوليد الصور باستخدام VAE

المشفّرات التلقائية التغايرية (VAE) درس مجاني في Learn AI with Python على CoddyKit. هذا هو الدرس 2 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Learn AI with Python، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Learn AI with Python 4 دروس في المجموع.

من المشفّر التلقائي إلى VAE

يتعلّم المشفّر التلقائي العادي نقاطًا متناثرة، ولذلك ينتج أخذ عينات جديدة منها بيانات عديمة الفائدة. يتعلّم المشفّر التلقائي التغايري (VAE) فضاءً كامنًا سلسًا ومستمرًا يمكنك أخذ عينات منه، فيتحول إلى نموذج توليدي حقيقي.

الترميز إلى توزيع

بدلًا من نقطة واحدة، يُخرج مرمّز VAE توزيعًا لكل إدخال: متوسطًا mu وتباينًا لوغاريتميًا log_var. ويُعيَّن كل إدخال إلى منطقة صغيرة ضبابية من الفضاء الكامن، لا إلى نقطة واحدة.

class Encoder(nn.Module):
    def __init__(self):
        super().__init__()
        self.fc = nn.Linear(784, 256)
        self.fc_mu = nn.Linear(256, 64)
        self.fc_logvar = nn.Linear(256, 64)

لماذا mu و log_var؟

نتنبأ بـ log_var بدلًا من التباين مباشرةً لأنه يمكن أن يأخذ أي قيمة حقيقية، فلا يفرض قيدًا بأن يكون موجبًا، كما أنه مستقر عدديًا. وتعيد عملية الأسّ التباين عند الحاجة.

    def forward(self, x):
        h = torch.relu(self.fc(x))
        return self.fc_mu(h), self.fc_logvar(h)

أخذ عينات من المتغير الكامن z

لفك الترميز، يجب أن نأخذ عينة من التوزيع المتنبَّأ به للمتغير z. لكن هذا السحب العشوائي لا يقبل الاشتقاق بطريقة مباشرة، ولذلك لا يمكننا إجراء الانتشار العكسي عبره. وتحل حيلة إعادة المعلمة هذه المشكلة.

حيلة إعادة المعلمة

أعد كتابة العينة على الصورة z = mu + eps * exp(0.5 * log_var)، حيث إن eps ضوضاء عشوائية. وهكذا تكمن العشوائية في eps، الذي لا يحتاج إلى تدرّج، بينما تمر التدرجات عبر mu وlog_var.

def reparameterize(mu, log_var):
    std = torch.exp(0.5 * log_var)
    eps = torch.randn_like(std)
    return mu + eps * std

مفكك الترميز

يأخذ مفكك الترميز z المأخوذ من العينة ويعيد بناء الصورة، تمامًا كما يفعل مفكك ترميز المشفّر التلقائي العادي، إذ يوسّع الأبعاد الـ64 إلى 784 بكسلًا مجددًا مع خرج Sigmoid.

decoder = nn.Sequential(
    nn.Linear(64, 256),
    nn.ReLU(),
    nn.Linear(256, 784),
    nn.Sigmoid()
)

حد خسارة إعادة البناء

النصف الأول من خسارة VAE هو إعادة البناء: مدى تطابق الصورة المفكوكة مع الإدخال. ويُستخدم الانتروبيا المتقاطعة الثنائية (أو MSE) على مستوى البكسلات.

recon_loss = nn.functional.binary_cross_entropy(
    recon, x, reduction="sum"
)

حد تباعد KL

النصف الثاني هو تباعد KL، الذي يسحب كل توزيع مُرمَّز نحو توزيع طبيعي معياري. وينظّم ذلك الفضاء الكامن ليصبح سلسًا ومستمرًا، مما يتيح التوليد.

kl = -0.5 * torch.sum(1 + log_var - mu.pow(2) - log_var.exp())

هدف ELBO

تعمل نماذج VAE على تعظيم ELBO (الحد السفلي للأدلة)، وهو مكافئ لتقليل reconstruction + KL. تجعل إعادة البناء المخرجات وفيةً للإدخال، بينما يحافظ KL على بنية الفضاء. وتحقيق التوازن بينهما هو جوهر العملية كلها.

loss = recon_loss + kl
loss.backward()

توليد صور جديدة

بما أن الفضاء الكامن يطابق توزيعًا طبيعيًا معياريًا، يمكنك توليد صور جديدة تمامًا من خلال أخذ عينة من z من N(0,1) ثم فك ترميزها، من دون الحاجة إلى صورة إدخال.

with torch.no_grad():
    z = torch.randn(16, 64)
    new_images = decoder(z)  # 16 generated samples

لماذا تهم نماذج VAE؟

توفّر نماذج VAE فضاءً كامنًا سلسًا ومؤسسًا على نحو سليم، يمكنك إجراء الاستيفاء وأخذ العينات منه. وهي أساس للكثير من التقنيات التوليدية، كما تعلّم الفكرة الأساسية المتمثلة في تعلّم التوزيعات لا النقاط فحسب.

اختبار سريع

اختبر فهمك لنماذج VAE.

مراجعة: المشفّرات التلقائية التغايرية

تعلّمت نموذج VAE: يُخرج المرمّز mu وlog_var، وتحافظ حيلة إعادة المعلمة z = mu + eps * exp(0.5 * log_var) على قابلية الاشتقاق أثناء أخذ العينات، وتكون الخسارة ELBO = reconstruction + KL. ويؤدي أخذ عينة من z من N(0,1) ثم فك ترميزها إلى توليد صور جديدة.

الأسئلة الشائعة

هل درس «المشفّرات التلقائية التغايرية (VAE)» مجاني؟

نعم — نص درس «المشفّرات التلقائية التغايرية (VAE)» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Learn AI with Python، انتقل إلى CoddyKit PRO. تتضمن دورة Learn AI with Python 4 دروس في المجموع.

ماذا ستتعلم في «المشفّرات التلقائية التغايرية (VAE)»؟

خسارة ELBO، وحيلة إعادة المعلمة، واستكشاف الفضاء الكامن، وتوليد الصور باستخدام VAE تتمرن على Learn AI with Python مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.

هل أحتاج إلى خبرة سابقة لأبدأ Learn AI with Python؟

لا تُشترط خبرة سابقة. Learn AI with Python على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 2 من أصل 4.

كم من الوقت يستغرق درس «المشفّرات التلقائية التغايرية (VAE)»؟

معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.

هل يمكنني كتابة وتشغيل أكواد في درس Learn AI with Python هذا؟

نعم. كل درس في Learn AI with Python يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.

جميع الدروس في هذه الدورة

  1. المشفّرات التلقائية لتعلّم التمثيلات
  2. المشفّرات التلقائية التغايرية (VAE)
  3. ‏GANs: المولّد والمميّز
  4. شبكات GAN الشرطية ونقل الأسلوب
← العودة إلى Learn AI with Python