ממקודד-דוחס למודל גנרטיבי
מקודד אוטומטי רגיל לומד לדחוס קלט לייצוג צר ואז לשחזר אותו בחזרה — אבל הייצוג הדחוס שהוא לומד הוא נקודה בודדת וקבועה במרחב, בלי מבנה שמאפשר לדגום ממנו דוגמאות חדשות באופן מבוקר. מקודד אוטומטי וריאציוני (VAE) משנה את זה מהיסוד: במקום שהמקודד יפיק וקטור קבוע אחד לכל קלט, הוא מפיק שני וקטורים — ממוצע ושונות — שמגדירים יחד התפלגות-הסתברות (בדרך-כלל גאוסיאנית) סביב אותו קלט במרחב החבוי. הפלט בפועל נדגם מתוך ההתפלגות הזו, לא נלקח ישירות ממנה. ההבדל הזה, שנשמע טכני, הוא בדיוק מה שהופך VAE לכלי גנרטיבי אמיתי: אחרי האימון אפשר לדגום נקודה כלשהי מהמרחב החבוי — גם כזו שלא הגיעה מקלט ספציפי — ולהעביר אותה דרך המפענח כדי לקבל דוגמה חדשה ומקורית.
המקור: קינגמה ולינג, 2013
VAE הוצג בדצמבר 2013 במאמר "Auto-Encoding Variational Bayes" של דידריק קינגמה ומקס וולינג (arXiv:1312.6114), שעסק במקורו בבעיה כללית יותר מתחום ההסקה הבייסיאנית — איך ללמוד ולהסיק ביעילות במודלים הסתברותיים עם משתנים חבויים רציפים, כשהפילוג-האחורי שלהם בלתי-נסבל לחישוב ישיר. הפתרון שהם הציעו, המכונה אלגוריתם Auto-Encoding VB, מבוסס על מה שנקרא "תעלול הפרמטריזציה-מחדש" (reparameterization trick): דרך לדגום מהתפלגות באופן שעדיין מאפשר להעביר דרכו גרדיאנטים באימון רגיל בשיטת ירידת-גרדיאנט. כשמיישמים את הרעיון הזה תוך שימוש ברשתות-נוירונים כמקודד וכמפענח — התוצאה היא בדיוק ארכיטקטורת ה-VAE המוכרת כיום.
פונקציית-האימון: שני יעדים במקביל
אימון VAE מאזן בין שני מרכיבים בפונקציית-מטרה אחת, המכונה "הגבול-התחתון על העדות" (ELBO — Evidence Lower Bound). המרכיב הראשון הוא שגיאת-שחזור רגילה — כמה קרוב הפלט המשוחזר לקלט המקורי, בדיוק כמו במקודד אוטומטי רגיל. המרכיב השני הוא מרחק קולבק-לייבלר (KL divergence) בין ההתפלגות שהמקודד למד לבין התפלגות-מוצא פשוטה וקבועה מראש, לרוב גאוסיאנית סטנדרטית. המרכיב השני הזה הוא שמכריח את כל ההתפלגויות הנלמדות להתקבץ סביב מבנה משותף וחלק במרחב החבוי, במקום להתפזר באופן שרירותי — ובזכות זה אפשר לדגום ממנו נקודה חדשה כלשהי ולקבל תוצאה סבירה, לא רעש חסר-משמעות.
לעומת מקודד אוטומטי רגיל ומכווץ-רעש
שלוש הגרסאות חולקות את אותה ארכיטקטורת בסיס — מקודד שמכווץ ומפענח שמרחיב — אך נבדלות במה שהן בעצם לומדות לעשות. מקודד אוטומטי רגיל לומד לדחוס ולשחזר קלט נתון, בלי כל אילוץ על מבנה המרחב החבוי. מקודד אוטומטי מכווץ-רעש לומד לשחזר גרסה נקייה מתוך קלט שפגמו בו במכוון, מה שמכריח אותו ללמוד תכונות עמידות יותר. VAE הולך צעד נוסף: הוא לא רק דוחס ומשחזר, אלא מעצב את המרחב החבוי כולו כהתפלגות רציפה שאפשר לדגום ממנה. התוצאה היא שדווקא VAE, ולא שתי הגרסאות האחרות, מתפקד כמודל גנרטיבי במובן המלא של המילה.
שימושים בפועל
VAE משמש ליצירת דוגמאות חדשות בתחומים שבהם חשוב שהמרחב החבוי יהיה חלק ומתמשך — למשל אינטרפולציה בין שתי דוגמאות קיימות (כמו מעבר הדרגתי בין שני פרצופים), עיצוב מולקולות חדשות בכימיה חישובית, ודחיסת-נתונים עם יכולת דגימה נלווית. הוא משמש גם לגילוי-חריגות באופן דומה למקודד אוטומטי רגיל — קלט שרחוק מהתפלגות-האימון משוחזר בצורה גרועה יחסית — ולפעמים כרכיב-קידום-אימון (pretraining) ברשתות גדולות יותר, בזכות המרחב החבוי המסודר שהוא מייצר.
מגבלה מוכרת: פלט מטושטש יחסית
החיסרון המוכר ביותר של VAE הוא איכות-פלט: תמונות שהוא יוצר נוטות להיראות מטושטשות יותר בהשוואה לרשת יריבה גנרטיבית (GAN) או למודל דיפוזיה, תופעה שקשורה לאופן שבו איבר הגבול-התחתון מעניש חריגה מההתפלגות הממוצעת. מצד שני, אימון VAE יציב באופן ניכר יותר מאימון GAN, שסובל לעיתים קרובות מקשיי-התכנסות ומ"קריסת-מצב" (mode collapse). בגלל הפשרה הזו, VAE נותר שימושי היום בעיקר כשהיציבות וה"מרחב חבוי שימושי" חשובים יותר מאיכות-תמונה מירבית, בעוד שיצירת-תמונות ברזולוציה גבוהה עברה ברובה למודלי-דיפוזיה.