סקירה כללית על כוונון היפר-פרמטרים

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

מה זה היפר-פרמטר?

היפרפרמטרים מכילים את הנתונים ששולטים בתהליך האימון עצמו.

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

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

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

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

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

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

איך פועל כוונון של היפר-פרמטרים

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

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

מידע נוסף על אופטימיזציה בייסיאנית להתאמת היפרפרמטרים

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

מהי האופטימיזציה של כוונון היפרפרמטרים

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

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

איך Vertex AI מקבל את המדדים

משתמשים בחבילת Python‏ cloudml-hypertune כדי להעביר מדדים ל-Vertex AI. הספרייה הזו מספקת פונקציות עזר לדיווח על מדדים ל-Vertex AI.

מידע נוסף על דיווח על מדדי היפרפרמטרים

הזרימה של ערכי ההיפר-פרמטרים

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

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

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

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

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

מידע נוסף על הדרישות לניתוח ארגומנטים בשורת הפקודה

בחירת היפרפרמטרים לכוונון

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

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

סוגי נתונים של היפר-פרמטרים

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

סוג סוג נתונים טווחי ערכים נתוני ערך
DoubleValueSpec DOUBLE minValue ו-maxValue ערכים של נקודה צפה
IntegerValueSpec INTEGER minValue ו-maxValue ערכים של מספרים שלמים
CategoricalValueSpec CATEGORICAL categoricalValues רשימה של מחרוזות קטגוריות
DiscreteValueSpec DISCRETE discreteValues רשימת ערכים בסדר עולה

היפר-פרמטרים של קנה מידה

באובייקט ParameterSpec, אפשר לציין שצריך לבצע שינוי קנה מידה בהיפרפרמטר הזה. מומלץ להשתמש בהרחבה לסוגי הנתונים DOUBLE ו-INTEGER. סוגי ההתאמה לגודל הזמינים הם:

  • SCALE_TYPE_UNSPECIFIED: לא מוחל שינוי קנה מידה על ההיפר-פרמטר הזה.
  • UNIT_LINEAR_SCALE: משנה את קנה המידה של האזור האפשרי באופן ליניארי מ-0 עד 1.
  • UNIT_LOG_SCALE: משנה את קנה המידה של המרחב האפשרי באופן לוגריתמי מ-0 עד 1. כל האזור האפשרי חייב להיות חיובי לחלוטין.
  • UNIT_REVERSE_LOG_SCALE: שינוי קנה המידה של המרחב האפשרי 'הפוך' באופן לוגריתמי 0 עד 1. התוצאה היא שערכים שקרובים לחלק העליון של המרחב האפשרי מפוזרים יותר מאשר נקודות שקרובות לחלק התחתון. כל האזור האפשרי חייב להיות חיובי לחלוטין.

היפר-פרמטרים מותנים

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

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

מכיוון שמספר השכבות המוסתרות רלוונטי רק כשערך המאפיין training_method של הניסוי הוא DNN, מגדירים פרמטר מותנה שמוסיף היפר-פרמטר בשם num_hidden_layers כשערך המאפיין training_method הוא DNN.

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

  • היפר-פרמטר בשם learning_rate שנוסף כש-training_method הוא LINEAR_REGRESSION.
  • היפר-פרמטר בשם learning_rate שנוסף כש-training_method הוא DNN.

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

אלגוריתמים של חיפוש

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

הערכים הזמינים:

  • ALGORITHM_UNSPECIFIED: זהה למצב שבו לא מציינים אלגוריתם. ‫Vertex AI בוחר את אלגוריתם החיפוש הטוב ביותר מבין אלגוריתמי Gaussian process bandits, חיפוש שילוב לינארי או וריאציות שלהם.

  • GRID_SEARCH: חיפוש Grid בתוך המרחב האפשרי. האפשרות הזו שימושית במיוחד אם רוצים לציין כמות של ניסויים שגדולה ממספר הנקודות במרחב האפשרי. במקרים כאלה, אם לא מציינים חיפוש Grid, יכול להיות שהאלגוריתם שמוגדר כברירת מחדל ב-Vertex AI ייצור הצעות כפולות. כדי להשתמש בחיפוש Grid, כל הפרמטרים צריכים להיות מסוג INTEGER,‏ CATEGORICAL או DISCRETE.

  • RANDOM_SEARCH: חיפוש אקראי במרחב האפשרי.

המאמרים הבאים