שיעור #5 – InfoGAN המלל

בשיעור זה נדבר על עוד נגזרת נחמדה של GAN שנקראת Info Gan.

מאמר זה שיצא ב 2017 שבשמו המלא נקרא: “Interpretable Representation Learning by Information Maximizing Generative Adversarial Nets”

ז”א ייצוג שניתן לפירוש של רשתות GAN באמצעות מקסום אינפורמציה. שיטה זו מנסה לתת פרשנות שניתנת לשליטה על המשתנים הנסתרים (Latent variables) שיש ב GAN (ז”א אותו קלט של מספרים אקראיים שסומן כ z) במבוא של ה Generator.

ראשית ניזכר או נכיר מושג מפתח בו משתמשים, שלקוח מתורת האינפורמציה והינו אינפורמציה הדדית Mutual Information בין שני משתנים אקראיים. זהו מדד (המסומן ב I) המתאר עד כמה המשתנים תלויים זה בזה או במילים אחרות זהו מדד המציין עד כמה מידע ממשתנה אקראי אחד ניתן להשיג ממידע ממשתנה אקראי השני:

הרעיון הוא להוסיף לאותו קלט של משתנים נסתרים z עוד אוסף משתנים שיסומנו ב- c שלמבנה שלהם יש קשר לאופי ה DB. ולהוסיף עוד מרכיב למשוואת המינימקס הסטנדרטית של ה GAN:

שבנוסף ימקסם את האינפורמציה ההדדית.

אם V(D,G) הינו הביטוי המוכר לנו מ GAN אותו נרצה למזער כשמאמנים את ה Generator ולמקסם כשמאמנים את ה Discriminator אזי נחסיר ממנו מרכיב עם משקל λ שהינו האינפורמציה ההדדית בין משתנה c לבין המוצא של רשת ה Generator. ז”א נרצה לקבל רשת Generator לא רק כזו שתדע לזייף ולרמות את רשת Discriminator אלא גם תוציא פלט שקשור באופן ישיר למשתנה c. וזאת להבדיל ה GAN הסטנדרטי בו הקשר בין הקלט z לבין המוצא G(z) מקרי בהחלט.

כעת נראה מה יוצא מהאילוץ הנוסף הזה.

בתמונה מימין ניתן לראות מה קורה כשמשנים קלות את משתני הקלט ב GAN רגיל – רואים את אותה הספרה עם שינויים עדינים וחסרי משמעות. בתמונה משמאל ניתן לראות מה קורה כשמשנים את משתני הקלט c בגישת ה InfoGan  שהוא מוגדר כמשתנה קטגורי (ז”א בדיד) בין 0 ל 9 – מה שרואים זה שהספרה עצמה משתנה.

שימו לב שזה עדיין אימון Unsupervised ז”א לא מתייגים את ה DB (למשל אם זה MNIST לא משתמשים במידע של מהי כל ספרה) על אף שיצא שה InfoGan כאילו למד לבד לייצר תמונה של ספרה בהינתן משתנה בדיד c ביום 0 ל 9 המייצג ספרה. וזו תוצאה מדהימה!

כל מה שדאגנו זה המבנה של משתנה c (בדיד בין 0 ל 9) שיתאים למבנה הDB  שמקרה של  MNISTמכיל עשר סוגי תמונות.

דוגמא נוספת כשהגדירו את משתנה c כוקטור עם שני ערכים רציפים בין -2 ל 2, ניתן לראות ששינוי עדיין של c1 מביא לסיבוב הספרה ושינוי עדין של c2 מביא לעיבוי הספרה.

התוצאות המדהימות האלו חזרו באימון על מאגרי תמונות אחרים למשל של ריהוט שם שוב שתי ערכי c לקחו תפקידים של סיבוב ורוחב, וב DB של פנים תלת מימדיות (ז”א בזוויות צילום שונות) שם שוב על ערך של c לקח תפקיד של azimuth, elevation, lightning, wide-narrow שאלו מאפיינים של ה DB.

ודוגמא אחרונה במאגר תמונות פנים, ערכי c שוב קיבלו תפקידים של מאפייני ה DB כמו azimuth, משקפיים\ללא משקפיים, סגנון שיער והבעות פנים.

כאמור אף אחד לא הגדיר לאלגוריתם מה יש ב DB ומה הם מאפייניו, הדבר היחיד זה ההגדרה של משתנה c ככזה התואם את מאפייני ה DB וכמובן האילוץ למקסם את האינפורמציה ההדדית בין משתני c למוצא ה Generator. מה שמקבלים זה יכולת לחולל\לג’נרט תמונות עם שליטה על מה יהיה בתמונה. (בהתאם לקלט c)

חזור לוידאו