הסבר על למידת מכונה אוטומטית או AutoML

שני החסמים הגדולים ביותר לשימוש בלימוד מכונה (הן למידת מכונה קלאסית והן למידה עמוקה) הם מיומנויות ומשאבי מחשוב. אתה יכול לפתור את הבעיה השנייה על ידי השלכת כסף עליה, או לרכישת חומרה מואצת (כגון מחשבים עם גרפי GPU מתקדמים) או להשכרת משאבי חישוב בענן (כגון מקרים עם GPUs צמודים, TPU ו- FPGA).

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

מה זה AutoML?

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

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

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

מהי אופטימיזציה של היפר-פרמטר?

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

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

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

מהי הנדסת תכונות?

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

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

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

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

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

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

מהי למידת העברה?

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

זהו תהליך שונה ממה שמכוון בדרך כלל AutoML, והוא אינו מכסה כמה שיותר מקרי שימוש. מצד שני, אם אתה זקוק למודל למידה עמוקה בהתאמה אישית באזור נתמך, למידת העברה תייצר לרוב מודל מעולה.

יישומי AutoML

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

שירותי AutoML

לכל שלושת שירותי הענן הגדולים יש סוג של AutoML. Amazon SageMaker מכוונת היפר-פרמטר אך אינה מנסה אוטומטית מספר דגמים או מבצעת הנדסת תכונות. ל- Machine Machine Learning יש גם AutoML, שעובר בתכונות ואלגוריתמים, וגם כוונון של היפר-פרמטר, שבדרך כלל אתה מפעיל על האלגוריתם הטוב ביותר שנבחר על ידי AutoML. כפי שדברתי קודם לכן, Google Cloud AutoML הוא למידת העברה עמוקה לתרגום זוגי שפות, סיווג שפות טבעיות וסיווג תמונות.

מספר חברות קטנות יותר מציעות גם שירותי AutoML. לדוגמא, ל- DataRobot, שלטענתה המציא את AutoML, יש מוניטין חזק בשוק. ולמרות ש- dotData יש נתח שוק זעיר וממשק משתמש בינוני, יש לה יכולות הנדסיות תכונות חזקות ומכסה מקרי שימוש רבים בארגונים. H2O.ai AI ללא נהג, אשר סקרתי בשנת 2017, יכול לסייע למדעני נתונים בהצגת מודלים כמו מאסטר Kaggle, תוך ביצוע הנדסת תכונות, מטאטא אלגוריתמים, ואופטימיזציה של היפר-פרמטר בצורה מאוחדת.

מסגרות AutoML

AdaNet היא מסגרת מבוססת TensorFlow קלת משקל ללימוד אוטומטית של מודלים באיכות גבוהה עם התערבות מומחים מינימלית. Auto-Keras היא ספריית תוכנת קוד פתוח ללימוד מכונה אוטומטית, שפותחה בטקסס A&M, ומספקת פונקציות לחיפוש אוטומטי של ארכיטקטורה והיפרפרמטרים של מודלים למידה עמוקה. NNI (Neural Network Intelligence) הוא ערכת כלים של מיקרוסופט המסייעת למשתמשים לתכנן ולכוונן מודלים של למידת מכונה (למשל, היפרפרמטרים), ארכיטקטורות רשת עצביות או פרמטרים של מערכת מורכבת בצורה יעילה ואוטומטית.

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