הגנרטור

החלק של הגנרטור ב-GAN לומד ליצור נתונים מזויפים על ידי שילוב משוב מהמייחד. הוא לומד לגרום למבדל לסווג את הפלט שלו כ'אמיתי'.

אימון הגנרטור דורש שילוב הדוק יותר בין הגנרטור לבין הדיסקרימינטור מאשר אימון הדיסקרימינטור. החלק של ה-GAN שמאמן את הגנרטור כולל:

  • קלט אקראי
  • רשת הגנרטורים, שממירה את הקלט האקראי למופעי נתונים
  • רשת מבדילה, שמסווגת את הנתונים שנוצרו
  • פלט הדיסקרימינטור
  • אובדן של המחולל, שמעניש את המחולל על כך שלא הצליח להטעות את המבדיל

דיאגרמה של רשת למידה חישובית גנרטיבית (GAN). באמצע התרשים מופיעה תיבה עם הכיתוב 'discriminator'. שני ענפים נכנסים לתיבה הזו מימין.  ההסתעפות העליונה מתחילה בפינה הימנית העליונה של התרשים, בתיבה עם הכיתוב 'תמונות מהעולם האמיתי'. חץ מוביל מהצינור הזה לתיבת 'דוגמה'. חץ מהתיבה שמוכתרת בתווית 'דוגמה' מגיע לתיבת 'מאפיין מבדיל'. ההסתעפות התחתונה מובילה לתיבת 'מאפיין מבדיל', דרך התיבה 'קלט אקראי'. חץ מוביל מהתיבה 'קלט אקראי' לתיבה עם התווית 'מחולל'. חץ מוביל מהתיבה 'מחולל' לתיבה שנייה של 'דוגמה'. חץ מוביל מהתיבה 'דוגמה' אל התיבה 'מאפיין מבדיל'. בצד שמאל של התיבה 'מייחד', שני חצים מובילים לשתי תיבות בצד שמאל של התרשים. חץ אחד מוביל לתיבת
          הכותרת 'Discriminator loss'. החץ השני מוביל לתיבת 'Generator loss'. תיבת צהובה עם חץ שמצביע שמאלה והמילה 'Backpropagation' (התפשטות לאחור) מצויר סביב התיבה 'Random Input' (קלט אקראי), התיבה 'Generator' (גנרטור), התיבה 'Sample' (דגימה) התחתונה, התיבה 'Discriminator' (מייחד), התיבה עם התוויות 'Real' (אמיתי) ו-'Fake' (מזויף) והתיבה 'Generator loss' (אובדן של הגנרטור) כדי לציין שהתפשטות לאחור פועלת בחלק של המערכת שמוקף בתיבה הצהובה.

איור 1: חזרה לאחור באימון הגנרטורים.

קלט אקראי

רשתות נוירונליות זקוקות לאינטראקציה כלשהי. בדרך כלל אנחנו מזינים נתונים שאנחנו רוצים לבצע איתם פעולה כלשהי, כמו מופע שאנחנו רוצים לסווג או לבצע לגביו חיזוי. אבל מה אנחנו משתמשים כקלט ברשת שמפיקה מופע נתונים חדש לגמרי?

בצורתה הבסיסית ביותר, GAN מקבלת רעש אקראי כקלט. לאחר מכן, המחולל ממיר את הרעש הזה לפלט בעל משמעות. הוספת רעש מאפשרת ל-GAN ליצור מגוון רחב של נתונים, על ידי דגימה ממקומות שונים בחלוקת היעד.

ניסויים מראים שההפצה של הרעש לא חשובה במיוחד, ולכן אפשר לבחור משהו שקל לדגום ממנו, כמו חלוקה אחידה. מטעמי נוחות, המרחב שממנו מתבצע דגימת הרעשים הוא בדרך כלל בעל מאפיינים קטנים יותר מאשר המאפיינים של מרחב הפלט.

שימוש במזהה כדי לאמן את המחולל

כדי לאמן רשת עצבית, אנחנו משנים את המשקלים של הרשת כדי לצמצם את השגיאה או את האובדן של הפלט שלה. עם זאת, ב-GAN שלנו, הגנרטור לא מחובר ישירות לירידה שאנחנו מנסים להשפיע עליה. הגנרטור מזין את רשת המבדיל, והמבדיל יוצר את הפלט שאנחנו מנסים להשפיע עליו. אובדן ה-generator מעניש את ה-generator על יצירת דגימה שרשת המזהה מסווגת כמזויפת.

צריך לכלול את החלק הנוסף הזה של הרשת בהתפשטות לאחור. כדי לשנות כל משקל בכיוון הנכון, המערכת מבצעת חישוב של ההשפעה של המשקל על הפלט – איך הפלט ישתנה אם משנים את המשקל. עם זאת, ההשפעה של משקל הגנרטור תלויה בהשפעה של משקלי המזהה שהוא מזין. כך, התפשטות לאחור מתחילה בפלט וחוזרת דרך המזהה אל המחולל.

עם זאת, אנחנו לא רוצים שהמייחד ישתנה במהלך אימון הגנרטור. ניסיון לפגוע ביעד נע יהפוך את הבעיה הקשה עוד יותר קשה עבור הגנרטור.

לכן אנחנו מארגנים את האימון של הגנרטורים לפי התהליך הבא:

  1. דגימה של רעש אקראי.
  2. יצירת פלט של מחולל מרעשי אקראיים שנדגמו.
  3. קבלת סיווג 'אמיתי' או 'מזויף' מהמייחד (discriminator) של הפלט של הגנרטור.
  4. חישוב אובדן מסיווג של מבדיל.
  5. מבצעים חזרה לאחור (backpropagation) גם בדיסקרימינטור וגם במחולל כדי לקבל שיפועים.
  6. שימוש בגרדיאנטים כדי לשנות רק את משקלי הגנרטורים.

זוהי חזרה אחת של אימון הגנרטורים. בקטע הבא נסביר איך לאמן גם את הגנרטור וגם את המזהה.