GAN (למידה חישובית)

תמונה שנוצרה על ידי GAN. בתמונה ניתן לראות אדם שלא קיים במציאות, אך נראה מציאותי.
GAN (ראשי תיבות של: Generative Adversarial Network) הוא סוג של מודל גנרטיבי ללמידת מכונה שתוכנן על ידי איאן גודפלו ועמיתיו בשנת 2014.<ref name=":0"></ref>

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

== ארכיטקטורה ==
GAN מורכבת משני חלקים מרכזיים: רשת discriminator (מאבחן) ורשת generator (מחולל). המחולל יוצר דגימות מזויפות והמאבחן מסווג האם הן מזויפות או אמתיות.
=== Discriminator ===
המאבחן הוא מסווג (classifier), ומטרתו להבחין בין דוגמאות אמיתיות, שנדגמו מההתפלגות של מדגם האימון, לבין דוגמאות מזויפות שנוצרו על ידי רשת נוירונים עצבית.

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

ניתן להשתמש בפונקציות הפסד שונות למדידת המרחק בין ההתפלגות של המידע הנכון למידע שהמחולל מייצר כגון מרחק וסרשטיין 1 , דיברגנץ קולבק-ליבלר ודיבגרנץ ינסן-שאנון.<ref></ref> מטרת המאבחן היא להגדיל ככל הניתן את ההפרש בין הערך הניתן לדוגמאות האמיתיות לבין זה הניתן לדוגמאות המזויפות, (כלומר להגדיל ככל הניתן את המרחק בין התפלגות המידע האמיתי להתפלגות של הדוגמאות שנוצרו על ידי המחולל).

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

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

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

כאמור, הרשת הגנרטיבית מייצרת דגימות חדשות בעוד שהרשת הדיסקרימינטיבית מותאמת להבדלה בין דגימות אמיתיות לבין דוגמאות שהגיעו מהרשת הגנרטיבית.<ref name=":0" /> מכיוון שיצירת דוגמאות מהתפלגות נתונה עשויה להיות בעיה קשה, GAN בדרך כלל משתמשים בהתפלגות שקל לדגום – כמו התפלגות נורמלית, והרשת הגנרטיבית לומדת למפות וקטור מ שמתפלג נורמלית לוקטור מההתפלגות הרצויה. מטרת האימון של הרשת הגנרטיבית היא להגדיל את שיעור השגיאות ברשת הדיסקרימינטיבית, כלומר, "להטעות" את הרשת הדיסקרימינטיבית על ידי הפקת דגימות חדשות שהיא תטעה לחשוב שהגיעו מההתפלגות האמיתית.<ref name=":0" />

== בעיות אפשריות ב-GAN ==
GAN עשויים לסבול מ"קריסה למצב" (mode collapse), בעיה שבה הרשת הגנרטיבית מנצלת חולשות שהיא מזהה ברשת הדיסקרימינטיבית, ומייצרת דוגמאות רק מסוג יחיד. במצב כזה הרשת הגנרטיבית מצליחה להערים על הרשת הדיסקרימינטיבית, אך כתוצאה מכך היא לא מצליחה להכליל את התפלגות הנתונים כראוי, וחסרים חלקים שלמים מהתפלגות הקלט. לדוגמה, GAN שאומן על המאגר MNIST שמכיל דוגמאות רבות של כל הספרות כתובות בכתב יד, עשוי להשמיט ספרות מסוימות מהפלט שלו. GAN כזה יכול ללמוד לייצר בצורה טובה רק את הספרות שלוש וארבע, ובכך להערים על הרשת הדיסקרימינטיבית, אך הוא לא ילמד למדל נכונה את מאגר הספרות המלא. ניתנו כמה הסברים לבעיה, בין היתר: אימון יתר של הרשת הגנרטיבית בכל שלב ובחירה בפונקציית הפסד בעייתית.<ref></ref><ref></ref> לבעיה הוצעו מספר פתרונות.<ref></ref><ref></ref>

== שימושים ==
ל-Generative adversarial network יש שימושים רבים.<ref></ref>

=== במדע ===
GAN נמצאים בשימוש בשיפור תמונות אסטרונומיות<ref></ref> וכן ניתן לדמות באמצעותם עדשות כובד לצורך מחקר חומר אפל.<ref></ref> בשנת 2019 השתמשו ברשת כזו בהצלחה למידול התפלגות החומר האפל באזור מסוים בחלל, כדי לחזות את העידוש הכבידתי שיתרחש.<ref></ref>

GAN הוצעו כדרך מהירה ומדויקת למדל היווצרות של סילונים באנרגיה גבוהה<ref></ref> והשתמשו בהם בשביל למדל מקלחות חלקיקים באמצעות קלורימטרים של ניסויים בפיזיקת חלקיקים.<ref></ref> GANs הוכשרו גם ליצירת קירוב מדויק של צווארי בקבוק בסימולציות יקרות חישובית של ניסויים בפיזיקת חלקיקים. במאיץ החלקיקים CERN השתמשו ברשתות גנרטיביות בשביל להוכיח את הפוטנציאל של שיטות אלה להאצת סימולציות או לשיפור מהימנות ההדמיה.<ref></ref>

=== באמנות ===
ניתן להשתמש ב-GAN ליצירת אמנות ולשחזור של תמונות. בתעשיית האופנה ניתן להשתמש ברשתות הללו ליצירת תמונות של דוגמניות אופנה דמיוניות, ללא צורך לשכור מודל, צלמת או מאפרת, או לשלם עבור אולפן.<ref></ref>

=== שימושים נוספים ===
* זיהוי תמונות גלאוקומטיות המסייעות לאבחון מוקדם, אשר חיוני כדי למנוע אובדן חלקי או מוחלט של הראייה<ref></ref>
* הזקנת צילומי פנים כדי להראות כיצד המראה של אדם עשוי להשתנות עם הגיל<ref></ref>
* העברת סגנונות מפה בקרטוגרפיה<ref></ref> והגדלת תמונות תצוגת רחוב<ref></ref>
* יצירת תמונות על פי טקסט, יכולת שיכולה לייתר שימוש במערכות חיפוש תמונות<ref></ref>
* יצירת סימולציות שמדגימות כיצד שינויי האקלים ישפיעו על בתים ספציפיים<ref></ref>
* מודל GAN בשם Speech2Face יכול ליצור תמונה של פניו של אדם לאחר האזנה לקולו.<ref></ref>
* בשנת 2016 נעשה שימוש ב-GAN ליצירת מולקולות חדשות עבור מגוון חלבונים הקשורים בסרטן, דלקות ופיברוזיס. בשנת 2019 מולקולות שנוצרו על ידי GAN אושרו בניסוי שבוצע על עכברים.<ref></ref><ref></ref>

== בעיות אתיות ==
ניתן לבצע שימוש זדוני בתמונות אנושיות שנוצרו באמצעות סינתזה על ידי GAN. שימוש אפשרי כזה כולל הפקת תצלומים וסרטונים מזויפים לצורך הפללה.<ref></ref> כמו כן, ניתן להשתמש ב-GAN ליצירת תמונות פרופיל ייחודיות ומציאותיות של אנשים שאינם קיימים, על מנת לאפשר יצירת פרופילים מזויפים ברשתות החברתיות בצורה אוטומטית.<ref></ref>

בשנת 2019 מדינת קליפורניה העבירה את הצעת החוק AB-602, האוסרת על שימוש בטכנולוגיות של סינתזת תמונות אנושיות ליצירת פורנוגרפיה מזויפת ללא הסכמת האנשים המתוארים.<ref></ref><ref></ref> באותה השנה עברה הצעת חוק נוספת - AB-730, האוסרת הפצה של סרטונים של מועמד פוליטי שעברו מניפולציות, בתוך 60 יום ממועד הבחירות.<ref></ref><ref></ref> שתי הצעות החוק נחתמו על ידי המושל גווין ניוסם. החוקים נכנסו לתוקף בשנת 2020.

== קישורים חיצוניים ==

* [https://github.com/nightrome/really-awesome-gan רשימת פרויקטים ומאמרים שמשתמשים ב-GAN], באתר GitHub
*[https://jonathan-hui.medium.com/gan-whats-generative-adversarial-networks-and-its-application-f39ed278ef09 מה הוא GAN?] באתר Medium 

== הערות שוליים ==

קטגוריה:למידת מכונה
קטגוריה:מדעים קוגניטיביים