דלג לתוכן

הגדלת נתונים (Data Augmentation)

יסודות בינה מלאכותית

הגדרה

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

💡 דוגמה

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

אבל אם תסובבו את הספרה 6 בחצי סיבוב, היא תהפוך ל-9.

הרעיון: אותה דוגמה, בכמה גרסאות

מודל שלומד לזהות חתול מתוך מאה תמונות עלול ללמוד בטעות דברים שאין להם קשר לחתול: שהחתול תמיד במרכז התמונה, שהוא תמיד פונה שמאלה, שהתאורה תמיד חמימה. הגדלת נתונים (Data Augmentation, ובעגה המקצועית בעברית לעיתים "אוגמנטציה") היא דרך זולה להתמודד עם זה: לוקחים כל דוגמה קיימת ויוצרים ממנה גרסאות שונות מעט — מסובבת, חתוכה, בהירה יותר — שכולן עדיין מתארות את אותו הדבר.

לפי ויקיפדיה, המטרה העיקרית היא למנוע התאמת-יתר (Overfitting): כשהמודל רואה את אותו חתול בהרבה צורות, קשה לו יותר לשנן פרטים מקריים, והוא נאלץ ללמוד את מה שבאמת מאפיין חתול. לפי ויקיפדיה, הצורך התעורר באמצע שנות ה-90, כשרשתות הקונבולוציה גדלו ולא היו מספיק נתונים לאמן אותן, ובשנות ה-2010 השיטה כבר הייתה בשימוש נרחב.

AlexNet: הגדלה שהפכה לסטנדרט

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

החוקרים השתמשו בשתי שיטות. בראשונה, חתכו מכל תמונה בגודל 256×256 פיקסלים חלונות אקראיים בגודל 224×224, יחד עם תמונת המראה האופקית שלהם. לפי המאמר, זה הגדיל את מערך האימון פי 2,048 — אם כי הדוגמאות שנוצרו תלויות מאוד זו בזו — ובלי השיטה הזו הרשת סבלה מהתאמת-יתר משמעותית, שהייתה מאלצת אותם להשתמש ברשתות קטנות בהרבה. בשיטה השנייה שינו את עוצמות ערוצי הצבע של כל תמונה. שתי השיטות חושבו תוך כדי האימון, כך שלא היה צורך לשמור את התמונות החדשות, והכותבים מתארים אותן כ"חינמיות מבחינה חישובית".

תמונות: סיבוב, היפוך, צבע ורעש

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

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

קול וטקסט

הרעיון לא מוגבל לתמונות. באפריל 2019 הציגו חוקרי Google Brain, בהם דניאל פארק, את SpecAugment לזיהוי דיבור. במקום לשנות את ההקלטה עצמה, השיטה פועלת על הייצוג החזותי של הצליל (ספקטרוגרמה): היא מעוותת אותו מעט, ומסתירה פסים של תדרים ופסים של זמן — כמו מישהו שמדבר כשחלק מהמילים נבלעות ברעש. לפי המאמר, השיטה הביאה לתוצאות המובילות באותה עת על מערכי הדיבור LibriSpeech ו-Switchboard.

בטקסט, אחת הדוגמאות המוכרות היא "תרגום חוזר" (Back-translation). ריקו זנריך, בארי האדו ואלכסנדרה בירץ' מאוניברסיטת אדינבורו הראו במאמר שעלה ל-arXiv בנובמבר 2015 איך משתמשים בטקסט שקיים רק בשפת היעד: מתרגמים אותו אוטומטית בחזרה לשפת המקור, ומקבלים זוגות משפטים סינתטיים שעליהם אפשר לאמן מערכת תרגום מכונה. לפי המאמר, השיטה שיפרה את התוצאות בתרגום אנגלית-גרמנית ובתרגום טורקית-אנגלית, משימה שהכותבים מתארים כדלת משאבים.

הסכנה: שינוי שמחליף את התשובה

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

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

כשהמכונה בוחרת את ההגדלה

במשך שנים, מי שאימן מודל בחר ביד אילו שינויים להפעיל ובאיזו עוצמה. ב-2018 הציגו חוקרי Google Brain, בהם אקין צ'ובוק, בארט זוף וקוק לה, את AutoAugment, שמתחיל מהטענה ש"מימושי הגדלת הנתונים הנוכחיים מתוכננים ביד". השיטה מחפשת אוטומטית את "מדיניות ההגדלה" — אילו שינויים להפעיל, באיזו הסתברות ובאיזו עוצמה — שמשפרת את הדיוק הכי הרבה. לפי המאמר, המדיניות שנמצאה הביאה לתוצאות המובילות באותה עת על ImageNet, על CIFAR-10, על CIFAR-100 ועל SVHN, ומדיניות שנלמדה על ImageNet שיפרה משמעותית את התוצאות גם במערכי נתונים אחרים, כמו תמונות של פרחים, חיות מחמד ומטוסים.

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

📬 הגיליון השבועי של Wiki-AI

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

הגדלת נתונים בשלושה סוגי מידע
תמונהדיבורטקסט
דוגמה מוכרתחיתוך אקראי והיפוך אופקי ב-AlexNet (2012)SpecAugment של גוגל (2019)תרגום חוזר (Back-translation), זנריך ושותפיו (2015)
מה משתנהמיקום, כיוון, גודל וצבע של התמונההספקטרוגרמה: עיוות קל והסתרה של פסי תדר ופסי זמןנוצרים זוגות משפטים סינתטיים מתרגום אוטומטי של טקסט בשפה אחת
מה צריך להישאר זהההעצם שבתמונההמילים שנאמרוהמשמעות של המשפט

שאלות נפוצות ❓

למה לא פשוט לאסוף עוד נתונים?

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

האם הגדלת נתונים זה כמו נתונים סינתטיים?

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

מתי הגדלת נתונים מזיקה?

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

מי מחליט אילו שינויים להפעיל?

לרוב המפתח, לפי היכרות עם הנתונים. מאז AutoAugment של גוגל ב-2018 יש גם שיטות שמחפשות אוטומטית את צירוף השינויים שמשפר את המודל הכי הרבה.

שתפו:וואטסאפטלגרם

מצאתם טעות בערך, או שיש לכם מקור שכדאי להוסיף? כתבו לנו