בעת אימון רשתות CNN, אחת הבעיות היא הצורך בכמות גדולה של נתונים מתויגים. במקרה של סיווג תמונות, יש להפריד את התמונות לקבוצות שונות, מה שדורש מאמץ ידני.
עם זאת, ייתכן שנרצה להשתמש בנתונים גולמיים (לא מתויגים) כדי לאמן את רשתות ה-CNN לחילוץ מאפיינים, מה שנקרא למידה עצמית-מונחית. במקום תוויות, נשתמש בתמונות האימון גם כקלט וגם כפלט של הרשת. הרעיון המרכזי של אוטואנקודר הוא שיהיה לנו רשת מקודדת שממירה תמונת קלט למרחב לטנטי (בדרך כלל וקטור בגודל קטן יותר), ואז רשת מפענחת, שמטרתה לשחזר את התמונה המקורית.
✅ אוטואנקודר הוא "סוג של רשת עצבית מלאכותית המשמשת ללמידת קידודים יעילים של נתונים לא מתויגים."
מכיוון שאנו מאמנים אוטואנקודר כדי ללכוד כמה שיותר מידע מהתמונה המקורית לצורך שחזור מדויק, הרשת מנסה למצוא את ההטמעה הטובה ביותר של תמונות הקלט כדי ללכוד את המשמעות.
תמונה מתוך בלוג Keras
למרות ששחזור תמונות מקוריות לא נראה שימושי בפני עצמו, ישנם כמה תרחישים שבהם אוטואנקודרים מועילים במיוחד:
- הורדת ממדיות של תמונות לצורך ויזואליזציה או אימון הטמעות תמונה. בדרך כלל אוטואנקודרים נותנים תוצאות טובות יותר מ-PCA, מכיוון שהם מתחשבים בטבע המרחבי של תמונות ובמאפיינים היררכיים.
- הסרת רעשים, כלומר הסרת רעש מהתמונה. מכיוון שרעש נושא מידע חסר תועלת רב, האוטואנקודר אינו יכול להתאים את כולו למרחב לטנטי קטן יחסית, ולכן הוא לוכד רק את החלק החשוב של התמונה. בעת אימון מסירי רעשים, מתחילים עם תמונות מקוריות ומשתמשים בתמונות עם רעש מלאכותי כתמונות קלט לאוטואנקודר.
- שיפור רזולוציה, הגדלת רזולוציית תמונה. מתחילים עם תמונות ברזולוציה גבוהה ומשתמשים בתמונה ברזולוציה נמוכה כקלט לאוטואנקודר.
- מודלים גנרטיביים. לאחר אימון האוטואנקודר, ניתן להשתמש בחלק המפענח כדי ליצור אובייקטים חדשים החל מוקטורים לטנטיים אקראיים.
אוטואנקודרים מסורתיים מפחיתים את ממדי נתוני הקלט בצורה כלשהי, ומגלים את המאפיינים החשובים של תמונות הקלט. עם זאת, וקטורים לטנטיים לעיתים קרובות אינם מובנים. במילים אחרות, אם ניקח את מאגר הנתונים MNIST כדוגמה, קשה להבין אילו ספרות תואמות לוקטורים לטנטיים שונים, מכיוון שוקטורים לטנטיים קרובים לא בהכרח תואמים לאותן ספרות.
לעומת זאת, כדי לאמן מודלים גנרטיביים עדיף שיהיה לנו הבנה כלשהי של המרחב הלטנטי. רעיון זה מוביל אותנו לאוטואנקודר וריאציוני (VAE).
VAE הוא אוטואנקודר שלומד לחזות התפלגות סטטיסטית של הפרמטרים הלטנטיים, מה שנקרא התפלגות לטנטית. לדוגמה, ייתכן שנרצה שוקטורים לטנטיים יהיו מופצים נורמלית עם ממוצע zmean וסטיית תקן zsigma (גם הממוצע וגם סטיית התקן הם וקטורים בעלי ממדיות מסוימת d). המקודד ב-VAE לומד לחזות את הפרמטרים הללו, ואז המפענח לוקח וקטור אקראי מההתפלגות הזו כדי לשחזר את האובייקט.
לסיכום:
- מתוך וקטור הקלט, אנו חוזים
z_meanו-z_log_sigma(במקום לחזות את סטיית התקן עצמה, אנו חוזים את הלוגריתם שלה) - אנו דוגמים וקטור
sampleמההתפלגות N(zmean,exp(zlog_sigma)) - המפענח מנסה לפענח את התמונה המקורית באמצעות
sampleכוקטור קלט
תמונה מתוך פוסט בבלוג מאת Isaak Dykeman
אוטואנקודרים וריאציוניים משתמשים בפונקציית הפסד מורכבת שמורכבת משני חלקים:
- הפסד שחזור הוא פונקציית הפסד שמראה עד כמה התמונה המשוחזרת קרובה ליעד (זה יכול להיות Mean Squared Error, או MSE). זו אותה פונקציית הפסד כמו באוטואנקודרים רגילים.
- KL loss, שמבטיח שהתפלגות המשתנים הלטנטיים תישאר קרובה להתפלגות נורמלית. זה מבוסס על מושג סטיית קולבק-לייבלר - מדד להערכת הדמיון בין שתי התפלגויות סטטיסטיות.
יתרון חשוב של VAEs הוא שהם מאפשרים לנו ליצור תמונות חדשות יחסית בקלות, מכיוון שאנו יודעים מאיזו התפלגות לדגום וקטורים לטנטיים. לדוגמה, אם נאמן VAE עם וקטור לטנטי דו-ממדי על MNIST, נוכל לשנות את רכיבי הוקטור הלטנטי כדי לקבל ספרות שונות:
תמונה מאת Dmitry Soshnikov
שימו לב כיצד התמונות מתמזגות זו בזו, כאשר אנו מתחילים לקבל וקטורים לטנטיים מחלקים שונים של מרחב הפרמטרים הלטנטיים. ניתן גם להמחיש את המרחב הזה ב-2D:
תמונה מאת Dmitry Soshnikov
למדו עוד על אוטואנקודרים במחברות הבאות:
- ספציפיים לנתונים - הם עובדים היטב רק עם סוג התמונות שעליהן אומנו. לדוגמה, אם נאמן רשת לשיפור רזולוציה על תמונות פרחים, היא לא תעבוד היטב על דיוקנאות. זאת מכיוון שהרשת יכולה ליצור תמונה ברזולוציה גבוהה על ידי לקיחת פרטים עדינים ממאפיינים שנלמדו ממאגר הנתונים.
- מאבדים מידע - התמונה המשוחזרת אינה זהה לתמונה המקורית. אופי האובדן מוגדר על ידי פונקציית הפסד שנעשה בה שימוש במהלך האימון.
- עובדים עם נתונים לא מתויגים
בשיעור זה, למדתם על סוגים שונים של אוטואנקודרים הזמינים למדען AI. למדתם כיצד לבנות אותם וכיצד להשתמש בהם לשחזור תמונות. כמו כן, למדתם על VAE וכיצד להשתמש בו ליצירת תמונות חדשות.
בשיעור זה, למדתם על שימוש באוטואנקודרים לתמונות. אך ניתן להשתמש בהם גם למוזיקה! בדקו את פרויקט MusicVAE של פרויקט Magenta, שמשתמש באוטואנקודרים כדי ללמוד לשחזר מוזיקה. ערכו ניסויים עם הספרייה הזו כדי לראות מה תוכלו ליצור.
לקריאה נוספת, עיינו במשאבים הבאים על אוטואנקודרים:
- בניית אוטואנקודרים ב-Keras
- פוסט בבלוג NeuroHive
- הסבר על אוטואנקודרים וריאציוניים
- אוטואנקודרים וריאציוניים מותנים
בסוף המחברת הזו ב-TensorFlow, תמצאו 'משימה' - השתמשו בה כמשימה שלכם.



