close menu

יצירת דאטה סינטטי טבלאי ריאליסטי במיוחד עם GPT

מאמר יצירת הנתונים האיכותי ביותר עד היום

לכולנו היה את הרעיון הזה: "לבעיה הלא קשורה שאני עובד עליה.. אפשר ליצור עוד דאטה ככה שהמודל שלי ישתפר?"

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

כשמדובר בטקסט

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

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

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

אבל מה עם תמונות?

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

בעצם..

מודל. לא מודלי דיפוזיה.

מודל דיפוזיה. ביחיד.

זו אחת הבעיות העיקריות לפי דעתי: אין לנו אף מודל בסיס (Foundation Model) ליצירת תמונות חוץ מStable Diffusion אז אמנם שיפצורי Stable Diffusion הולכים ומשתפרים להם אבל היה קל יותר לעבוד ולהתקדם אם היו מודלים גדולים יותר משוחררים.

ומה עם טבלאות?

בתקופה הפרההיסטורית של תחילת 2022 המודל הטוב ביותר ליצירת טבלאות שעמד לרשותינו היה CTGAN.

מאמר CTGAN

המודל הראשון ליצירת טבלאות שהיה "בסדר" – CTGAN

מאמר: https://arxiv.org/pdf/1907.00503.pdf

קוד: https://github.com/sdv-dev/CTGAN

הרעיונות העיקריים בCTGAN:

  • רשת אדברסריאלית גנרטיבית (GAN) עם "רגל" קלט נוספת המקבלת את תיוג הדגימה בטבלה כדי ללמד את הרשת לייצר דוגמאות לפי "התיוג שנבחר"
  • רשתות גרועות בטבלאות כשהדאטה מולטימודאלי: לכן, קליסטור הדוגמאות ומציאת מספר הmixtures שיוצרים את הדאטה ואז נירמול הדוגמאות ביחס לאשכול הקרוב ביותר לכל דוגמה "מתקן" בעיה זו.
  • שימוש בOne Hot לכל המשתנים הקטגוריאלים
  • שימוש בטריק Gumble Softmax הגזיר לאימון מקצה לקצה עבור יצירת המשתנים הקטגוריאלים.
  • דגימה לא אחידה של הדאטה לפי המחלקות השונות של משתני המשתנים הקטגוריאלים על מנת להראות לרשת מספיק דוגמאות מכל מחלקה קטגוריאלית.

שיפור לCTGAN: שימוש בAuto Encoder – במודל TVAE.

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

מאמר CTABGAN+

מודל משופר ליצירת טבלאות – CTABGAN+

מאמר: https://arxiv.org/pdf/2204.00401.pdf

קוד: https://github.com/Team-TUD/CTAB-GAN

מודל זה הוא המשך ישיר של CTGAN הקודם בו הוכנסו משפר שיפורים על מנת להגיע לתוצאה טובה יותר:

  • שימוש בGradient Penalty ולוס ווסרשטיין (Improved WGAN GP)
  • הוספת לוס קלסיפיקציה \ רגרסיה לעמודת המטרה האמיתית של המשימה גם לרשת שיוצרת את הדאטה.
  • זיהוי אוטומטי של עמודות שהן גם מספריות וגם קטגוריאליות ופירוק וטיפול בהן כשתי התפלגויות שונות לפני הכניסה אל הרשת.

ועוד כל מיני טריקים שקשורים לפרטיות וכבר ממש מחוץ לדיון שלנו כרגע..

כן אבל אין כזה דבר יותר GANים בכלל..

מודל הדיפוזיה הראשון לטבלאות: Tab-DDPM

מאמר: https://arxiv.org/pdf/2209.15421.pdf

קוד: https://github.com/rotot0/tab-ddpm

במאמר מתואר מודל דיפוזציה ליצירת דאטה טבלאי.

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

אפשר לסכם את כל המאמר בשורה אחת: "כן. ניסינו. זה עובד יותר טוב מGAN".

העיבוד המקדים שמבצעים במאמר זה פשוט במיוחד וכולל סתם Quantile Transformer לעמודות המספריות וOne-hot לקטגוריאליות.

כן אבל GPT-3

מאמר: https://arxiv.org/pdf/2210.06280.pdf

קוד: https://github.com/kathrinse/be_great

כמו כל דבר בחיים: בסוף סתם לזרוק הכל לGPT-3 איכשהו עובד יותר טוב תמיד גם ככה.

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

כן אבל אם רק יכלנו לאמן את GPT..

מאמר: https://arxiv.org/pdf/2302.02041.pdf

קוד: https://github.com/avsolatorio/REaLTabFormer

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

במאמר הכותבים משתמשים בשני מודלי GPT-2 האחד מקודד והשני מפענח (סוף סוף!) וכך יכולים ליצור דאטהבייס שלם המורכב מכמה טבלאות התלויות אחת בשניה.

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

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

איך בכלל מודדים אם דאטה סינטטי "טוב?"

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

מספרית: למשל עד כמה הAUC קרוב ל0.5 ("המודל רנדומלי"). בונוס: להשתמש במודל מורכב במיוחד כדי להיות בטוחים שהוא באמת לא מצליח וזה לא סתם underfitting (max_depth ו num_leaves גבוהים).

אין הרבה מה להוסיף, אתם יכולים להשתמש במודל המאומן בעצמכם על ידי: pip install realtabformer

 

עוד בנושא: