בשנה האחרונה היינו עדים לשינוי גדול בתחום העיצוב הגרפי, בעקבות פיתוחן של אפליקציות הנעזרות ב"למידה עמוקה" [1] ליצירת תמונות ואיורים בהתאם לטקסט שהוזן להן. האפליקציות הידועות בקטגוריה זו כוללות את DALL-E2 ,ו-Midjourney, שבהן השתמשנו לאחרונה לעיצוב כמה תמונות לפוסטים, ותוכנת Stable Diffusion, הפתוחה לשימוש חופשי. נספר על הטכנולוגיה שמאחורי תוכנות אלה.
האפליקציות החדשות כוללות מחולל תמונות, המייצר תמונה אקראית מתוך תמונה התחלתית המורכבת מפיקסלים שנבחרו באופן אקראי ("רעש"), ורכיב המשתמש בטקסט שהוזן כדי להשפיע על התכנים בתמונה. השיטה שנתאר נקראת 'מודל דיפוזיה', ומשתמשים בה באפליקציות ציור כגון stable-diffusion. (הסבר מעולה תמצאו בסרטון [2] מסדרת computerphile). נתאר את פעולת האפליקציה באמצעות אנלוגיה לפיסול, כאשר פסל מיומן שעבר הכשרה יוצר פסלים חדשים: הבה ניתן לו גוש אבן לא מסותת (באנלוגיה: תמונה עם פיקסלים אקראיים), והוא יתחיל לסתת קצת. הוא לא יודע מה ליצור, אז הוא חותך כמה בליטות שכנראה לא ישמשו לשום פסל. לאחר זמן קצוב הוא עוצר, מתבונן, ושם לב שהאבן שהתחיל לסתת מזכירה הרבה סוגים של פסלים שהוא מכיר מניסיונו הרב. הוא בוחר אקראית כיוון אחד, שיכול להוביל למגוון אפשרויות, ומתחיל לסתת. לאחר זמן קצוב הוא עוצר שוב, ומבחין שיש אפשרות ליצור מהאבן סוגים ספציפיים יותר של פסלים שהוא זוכר. הוא בוחר אקראית כיוון, מסתת קצת, מסתכל, בוחר אקראית כיוון, וחוזר חלילה. בסוף הפסל יקבל צורה וייעשה למשהו הדומה לאחד הפסלים החקוקים בזיכרונו של הפסל, דומה אך לא זהה. היצירה ההדרגתית והבחירה האקראית בכל שלב מובילים לתוצאה אקראית, אבל איכותית.
ויש עוד תוספת חשובה: נדמיין שבכל שלב בבנייה, בת קול לוחשת לפסל הנחיה, כמו למשל "עשה לנו פסל של מלאך" (מה שאנלוגי לבחירת נושא התמונה באמצעות הזנת טקסט). עתה הפסל עושה אותו תהליך, אבל בכל שלב הוא משחזר בדמיונו רק פסלים של מלאכים, ובכך הוא מתכוונן בהדרגה ליצירת פסל אקראי של מלאך.
באופן דומה, באפליקציה ליצירת תמונות שמשתמשת ברשת נוירונים לשם "למידה עמוקה" [1], הרשת מתחילה בתמונה שמכילה פיקסלים אקראיים ("גוש אבן לא מסותת"), ויוצרת תמונה איכותית בהתאם לטקסט על ידי שינויי הדרגתי של הפיקסלים. לשם כך צריך לאמן לפני כן את הרשת על ידי שימוש בתמונות אמיתיות. לתוכנת stable diffusion יש מאגר של 2.3 מיליארד תמונות, שיכולות לשמש לצורך זה. בתהליך האימון ניקח תמונות מהמאגר, נוסיף לכל ערך של פיקסל מספר אקראי, חיובי או שלילי, המייצג רעש המתפלג נורמלית (מה שקרוי "רעש גאוסי") ונקבל תמונות רועשות. עבור כל תמונה רועשת, ננסה ללמד את הרשת לאתר את הרעש שהתווסף לכל פיקסל, ולזהות את התמונה המקורית, שאותה ניתן לשחזר על ידי חיסור מרכיב הרעש מהתמונה הרועשת.
באנלוגיה שלנו: מדריך נותן לפַּסָּל טירון אבן שבה כבר יש התחלת סיתות של פֶּסֶל ידוע, אבל מעל עדיין יש שכבות אבן עודפות ("רעשים"), והטירון צריך ללמוד איך להמשיך. על פי אמרה מפורסמת המיוחסת לפסל מיכאלאנג'לו "הפֶּסֶל נמצא בתוך האבן, ומטרת הפַּסָּל להסיר את האבן העודפת". אכן, המפתחים גילו שלעיתים קל יותר לשערך את מרכיב הרעש תחילה, ואז למצוא תמונה מתאימה. למשל, אם בתמונה רועשת יש אזור בצבע שחור ובתוכו פיקסל אחד לבן, סביר להניח שפיקסל זה הוא רעש שצריך לנקות.
אלגוריתם הלמידה מבוצע בהרבה שלבים קטנים, נניח אלף צעדים. עבור כל תמונה במאגר, מתחילים בתהליך כשהיא נקייה, מוסיפים לה בכל שלב רעש אקראי, מספרים לרשת מהי כמות הרעש הכוללת (בלשון המתמטיקאים: הממוצע והשונות של ההתפלגות הגאוסיאנית) ומאמנים אותה ליצור תמונה דומה יותר לתמונה המקורית. בשלבים הראשונים, כשהרעש נמוך, הרשת מצליחה, אולם בשלבים מתקדמים, כאשר התמונות נעשות לרעש אקראי כמעט, הביצועים שלה נמוכים והיא מתקשה. ובכל זאת התהליך עובד! כיצד?
תיארנו את תהליך האימון, ועתה נתאר את שלב הביצוע (inference). הבה ניצור תמונה מפיקסלים אקראיים, ניתן אותה לרשת, ונודיע לרשת שאנחנו בשלב האחרון, עם עוצמת רעש המתאימה לשלב זה. הרשת תעשה ככל יכולתה, כפי שאומנה, לשערך את הרעש ועל סמך זאת ליצור שיערוך של תמונה מקורית (שאינה קיימת באמת…). השיערוך עלוב למדי, אבל ככל הנראה התמונה המשוערכת 'חלקה' קצת יותר, וזו רק ההתחלה. כעת נוסיף לתמונה המשוערכת רעש גאוסי בעוצמה המתאימה לשלב שלפני האחרון ונזין אותה שוב לרשת, שתנסה לשערך מנסיונה את הרעש עבור שלב זה כדי ליצור תמונה קצת פחות רועשת. כך ממשיך התהליך, הרעש הולך וקטן, עד שבאופן מופלא נקבל תמונה אקראית המבוססת על אחת התמונות שבמאגר.
נשמע מקסים, אולם החלק החשוב והמורכב יותר הוא היכולת לשלב טקסט בתהליך זה. כאמור, המשתמש יכול לכוון את יצירת התמונה באמצעות כתיבת משפט. תחילה התוכנה מנסה להבין את המשמעות הסמנטית של המשפט. האלגוריתמים שמשתמשים בהם כיום לצורך זה נקראים Transformers. (כתבנו על אלגוריתם כזה [3] בשם BERT, וכולנו מכירים את chatGPT.) תוצאת שלב זה היא ייצוג מספרי של המשמעות הסמנטית של המשפט. גם לכל תמונה במאגר העצום של התוכנה, שנוצר מאיסוף תמונות ברשת, קיים טקסט המתאר אותה. לפיכך, הרשת יכולה לכוון את יצירת התמונה לתמונות המתאימות לטקסט שכתבנו. בכל שלב ביצירה, האפליקציה נותנת לרשת הוראה: "נסי לנקות את הרעש כך שהתמונה תתאים לסט תמונות המתאימות לטקסט". כיוון שהתהליך כולל שלבים רבים, הרשת מצליחה להסתנכרן בהדרגה ולהשתמש רק בתמונות הרצויות, והתוצר הסופי הוא תמונה המורכבת משילוב אקראי של תמונות הקשורות לטקסט. המשתמש יכול להפעיל את האפליקציה מספר רב של פעמים עם אותו טקסט, לקבל תמונות שונות, ולבחור את התמונה שנראית לו הכי טובה.
מאז שהאפליקציות הגיעו לעולם, נוצר סביבן באז תקשורתי עצום, עם שלל מתלהבים ומתנגדים. שאלנו את מירי, אומנית ומעצבת שהכינה לנו לאחרונה כמה תמונות לפוסטים בעזרת Midjourney, כיצד אומנים יכולים להוסיף מגע אישי, לדעתה. היא סיפרה שהיא אוהבת להשתמש באופציה מתקדמת הנקראת "image to image": כדי לכוון את האפליקציה, היא מזינה אותה בסקיצה שיצרה בעצמה או בתמונות שצילמה. לאיור שיצרה לפוסט זה, מירי השתמשה בסקיצה זריזה שהכינה, וכאשר קיבלה דימוי שחיבבה, היא ציירה אותו מחדש בשפה האיורית שלה. השוו את תמונת הנושא של הפוסט לתמונה שהתקבלה מהאפליקציה:
עריכה: סמדר רבן
מקורות והרחבות
[1] למידה עמוקה