מודל גנרטיבי

מודל גנרטיבי (באנגלית: Generative Model) או מודל מחולל, הוא סוג של מודל ממוחשב המסוגל לייצר תוכן חדש, כמו טקסט, תמונות או אודיו, באופן אוטונומי.

המודלים הגנרטיביים לומדים ממאגר נתוני אימון גדול, ואז יוצרים תוצאות חדשות המבוססות על הדפוסים וההקשרים שלמדו. לדוגמה:
* מודלים גנרטיביים לטקסט (כמו GPT) מאומנים על מאגר עצום של טקסטים, והם מסוגלים לייצר טקסט חדש הנשמע טבעי ומתאים להקשר.
* מודלים גנרטיביים לתמונות (כמו Midjourney) מאומנים על אוסף גדול מאוד של תמונות עם תיאורים טקסטואליים, והם מסוגלים ליצור תמונות חדשות על פי תיאור טקסטואלי.
* מודלים גנרטיביים לאודיו (כמו ) לומדים ומאומנים על קטעי קול, והם מסוגלים לדבר בקולות עליהם אומנו.

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

בסיווג סטטיסטי יש שתי גישות עיקריות:

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

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

== הגדרה ==
* מודל ג'נרטיבי מנסה לאמוד את ההתפלגות המשותפת p(x,y) של הנתונים x והתוויות y. כלומר, מהי ההסתברות לקבל את הנתונים והתווית ביחד. מיוצג כ:<math>P(X\mid Y = y)</math>לדוגמה, אם x הוא תמונה ו-y היא התווית "כלב" או "חתול", המודל ינסה לאמוד p(x,y=כלב) ו-p(x,y=חתול). בשלב הבא המודל משתמש בהתפלגות הזו כדי לייצר נתונים חדשים על ידי דגימה מההתפלגות המשותפת.<ref name="mitchell2015generative">: "We can use Bayes rule as the basis for designing learning algorithms (function approximators), as follows: Given that we wish to learn some target function <math>f\colon X \to Y</math>, or equivalently, <math>P(Y\mid X)</math>, we use the training data to learn estimates of <math>P(X\mid Y)</math> and <math>P(Y)</math>. New X examples can then be classified using these estimated probability distributions, plus Bayes rule. This type of classifier is called a generative classifier, because we can view the distribution <math>P(X\mid Y)</math> as describing how to generate random instances X conditioned on the target attribute Y.</ref>
* מודל מפלה: המודל מנסה ישירות לאמוד את ההתפלגות המותנית p(y|x) - ההסתברות לקבל תווית y עבור נתונים נתונים x. מיוצג כ: <math>P(Y\mid X = x)</math> לדוגמה, המודל יאמוד ישירות את ההסתברות p(y=כלב|x) ו-p(y=חתול|x) בלי לנסות לדמות את תהליך יצירת התמונות. בשלב הבא המודל משתמש בהתפלגות המותנית כדי לסווג נתונים חדשים לתוויות. כלומר, הגישה הגנרטיבית מנסה לחקות את תהליך יצירת הנתונים, ואילו הגישה המפלה הולכת ישירות מהנתונים לחיזוי התוויות.<ref name="mitchell2015discriminative">: "Logistic Regression is a function approximation algorithm that uses training data to directly estimate <math>P(Y\mid X)</math>, in contrast to Naive Bayes. In this sense, Logistic Regression is often referred to as a discriminative classifier because we can view the distribution <math>P(Y\mid X)</math> as directly discriminating the value of the target value Y for any given instance X</ref>

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

=== יחסים בין דגמים ===
ביישומי סיווג, ה-X הנצפה הוא בדרך כלל משתנה רציף, היעד Y הוא בדרך כלל משתנה בדיד המורכב מקבוצה סופית של תוויות, וההסתברות המותנית P(Y|X) ניתן לפרש גם כפונקציית היעד (לא דטרמיניסטית) f: X → Y, בהתחשב ב-X כקלטים וב-Y כפלטים.

בהינתן קבוצה סופית של תוויות, שתי ההגדרות של "מודל ג'נרטיבי" קשורות קשר הדוק. מודל של ההתפלגות המותנית P(X|Y=y) הוא מודל של התפלגות של כל תווית, ומודל של התפלגות משותפת שווה ערך למודל של התפלגות ערכי התווית P(Y), יחד עם התפלגות התצפיות שקיבלה תווית, P(X|Y); באופן סמלי, P(X,Y) = P(X|Y)P(Y). לפיכך, בעוד שמודל של התפלגות ההסתברות המשותפת הוא אינפורמטיבי יותר ממודל של התפלגות התווית (אך ללא התדירויות היחסיות שלהם), זהו צעד קטן יחסית, ומכאן שלא תמיד ניתן להבחין ביניהם.

בהינתן מודל של החלוקה המשותפת, P(X,Y), ניתן לחשב את התפלגות המשתנים הבודדים כהתפלגויות השוליות P(X) = ∑y P(X,Y=y) ו- P(Y) = ∫x P(Y,X=x) (צריך להתחשב ב-X כרציף, ומכאן משתלב מעליו, ו-Y כבדיד), וניתן לחשב כל התפלגות מותנית מתוך ההגדרה של הסתברות מותנית: P(X|Y) = P(X,Y)/P(Y) ו- P(Y|X) = P(X,Y)/P(X).

נתון מודל של הסתברות מותנית אחת, והתפלגויות הסתברות משוערות עבור המשתנים X ו-Y, המסומנים P(X) ו-P(Y), ניתן להעריך את ההסתברות המותנית ההפוכה באמצעות כלל בייס:

: <math>P(X\mid Y)P(Y) = P(Y\mid X)P(X).</math>

לדוגמה, נתון מודל ג'נרטיבי עבור P(X|Y), אפשר להעריך:

: <math>P(Y\mid X) = P(X\mid Y)P(Y)/P(X),</math>

וניתן מודל מפלה עבור <math>P(Y\mid X)</math>, אפשר להעריך:

: <math>P(X\mid Y) = P(Y\mid X)P(X)/P(Y).</math>

שימו לב שהכלל של בייס (חישוב הסתברות מותנית אחת במונחים של האחרת) וההגדרה של הסתברות מותנית (חישוב הסתברות מותנית במונחים של ההתפלגות המשותפת) מתערבבים לעיתים קרובות גם כן.

== ניגוד למסווגים מפלים ==
אלגוריתם מחולל מדגים כיצד נוצרו הנתונים כדי לסווג אות. היא שואלת את השאלה: בהתבסס על הנחות הדור שלי, איזו קטגוריה צפויה לייצר את האות הזה? לאלגוריתם מפלה לא אכפת מהאופן שבו הנתונים נוצרו, הוא פשוט מסווג אות נתון. אז אלגוריתמים מפלים מנסים ללמוד <math>p(y|x)</math> ישירות מהנתונים ולאחר מכן נסה לסווג נתונים. מצד שני, אלגוריתמים גנרטיביים מנסים ללמוד <math>p(x,y)</math> שאפשר להפוך ל <math>p(y|x)</math> מאוחר יותר כדי לסווג את הנתונים. אחד היתרונות של אלגוריתמים גנרטיביים הוא שאתה יכול להשתמש בהם <math>p(x,y)</math> ליצור נתונים חדשים הדומים לנתונים קיימים. מצד שני, הוכח שחלק מהאלגוריתמים המפלים נותנים ביצועים טובים יותר מאלגוריתמים מחוללים במשימות סיווג. <ref></ref>

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

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

DGMs פופולריים כוללים מקודדים אוטומטיים וריאציות (VAEs), רשתות יריבות (GANs) ומודלים אוטומטיים רגרסיביים. לאחרונה, יש מגמה לבנות מודלים גנרטיביים עמוקים מאוד. לדוגמה, GPT-3, והמבשר שלו GPT-2, <ref></ref> הם מודלים של שפה עצבית אוטומטית רגרסיבית המכילים מיליארדי פרמטרים, BigGAN ו-VQ-VAE המשמשים ליצירת תמונות שיכולות להיות מאות מיליוני פרמטרים, ו-Jukebox הוא מודל מחולל גדול מאוד לאודיו מוזיקלי המכיל מיליארדי פרמטרים. <ref></ref>

== סוגים ==
=== מודלים ג'נרטיביים ===
סוגי מודלים גנרטיביים הם:
* דגם תערובת גאוס (וסוגים אחרים של מודל תערובת )
* דגם מרקוב נסתר
* דקדוק הסתברותי נטול הקשר
* רשת בייסיאנית (למשל bayes נאיבי, דגם אוטורגרסיב )
* אומדים ממוצעים של תלות אחת
* הקצאת דיריכלת סמויה
* מכונת בולצמן (למשל מכונת בולצמן מוגבלת, רשת אמונה עמוקה )
* מקודד אוטומטי וריאציוני
* רשת יריבות יצירתית
* מודל מחולל מבוסס זרימה
* מודל מבוסס אנרגיה
* מודל דיפוזיה

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

=== מודלים מפלים ===
* אלגוריתם ה-k-השכנים הקרובים ביותר
* רגרסיה לוגיסטית
* תמיכה במכונות וקטור
* למידת עץ החלטות
* יער אקראי
* דגמי מרקוב עם אנטרופיה מרבית
* שדות אקראיים מותנים

== דוגמאות ==
=== דוגמה פשוטה ===
נניח שנתוני הקלט הם <math>x \in \{1, 2\}</math>, סט התוויות עבור <math>x</math> הוא <math>y \in \{0, 1\}</math>, ויש את 4 נקודות הנתונים הבאות: <math>(x,y) = \{(1,0), (1,1), (2,0), (2,0)\}</math>

עבור הנתונים לעיל, אומדן התפלגות ההסתברות המשותפת <math>p(x,y)</math> מהמדד האמפירי יהיו הדברים הבאים:
{| class="wikitable"
!
!<math>y=0
</math>
!<math>y=1
</math>
|-
|<math>x=1
</math>
|<math>1/4
</math>
|<math>1/4
</math>
|-
|<math>x=2
</math>
|<math>2/4
</math>
|<math>0
</math>
|}
בזמן <math>p(y|x)</math> יהיה הבא:
{| class="wikitable"
!
!<math>y=0
</math>
!<math>y=1
</math>
|-
|<math>x=1
</math>
|<math>1/2

</math>
|<math>1/2
</math>
|-
|<math>x=2
</math>
|<math>1
</math>
|<math>0
</math>
|}

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