סקירה כללית על כוונון היפר-פרמטרים
בלמידת מכונה, כוונון היפר-פרמטרים מזהה קבוצה של היפר-פרמטרים אופטימליים לאלגוריתם למידה. היפרפרמטר הוא ארגומנט של מודל שהערך שלו מוגדר לפני תחילת תהליך הלמידה. לעומת זאת, הערכים של פרמטרים אחרים, כמו מקדמים של מודל לינארי, נלמדים.
התאמה אופטימלית של היפר-פרמטרים מאפשרת לכם להשקיע פחות זמן בחזרה ידנית על היפר-פרמטרים, ויותר זמן בהתמקדות בתובנות מנתונים.
אפשר לציין אפשרויות לכוונון היפר-פרמטרים לסוגי המודלים הבאים:
- רגרסיה לינארית ולוגיסטית
- K-means
- פירוק מטריצות
- Autoencoder
- Boosted trees
- יער אקראי
- רשת נוירונים עמוקה (DNN)
- רשת רחבה ועמוקה
במודלים מהסוגים האלה, כוונון היפרפרמטרים מופעל כשמציינים ערך לאפשרות NUM_TRIALS בהצהרת CREATE MODEL.
כדי לנסות להריץ כוונון היפר-פרמטרים במודל רגרסיה לינארית, אפשר לעיין במאמר שימוש בכוונון היפר-פרמטרים ב-BigQuery ML כדי לשפר את ביצועי המודל.
המודלים הבאים תומכים גם בכוונון היפר-פרמטרים, אבל לא מאפשרים לציין ערכים מסוימים:
- מודלים של AutoML Tables כוללים כוונון אוטומטי של היפר-פרמטרים שמוטמע באימון המודל כברירת מחדל.
- מודלים של ARIMA_PLUS
מאפשרים להגדיר את
הארגומנט
AUTO_ARIMAכדי לבצע כוונון היפר-פרמטרים באמצעות אלגוריתם auto.ARIMA. האלגוריתם הזה מבצע כוונון של היפר-פרמטרים עבור מודול המגמה. אין תמיכה באופטימיזציה של היפרפרמטרים עבור צינור המודלים כולו.
מיקומים
למידע על המיקומים שתומכים בכוונון היפר-פרמטרים, ראו מיקומים ב-BigQuery ML.
הגדרת היפר-פרמטרים
כדי לכוונן היפר-פרמטר, צריך לציין טווח ערכים להיפר-פרמטר הזה, שהמודל יכול להשתמש בו עבור סדרת ניסויים. כדי לעשות זאת, משתמשים באחת ממילות המפתח הבאות כשמגדירים את ההיפר-פרמטר בהצהרה CREATE MODEL, במקום לספק ערך יחיד:
HPARAM_RANGE: ערךARRAY(FLOAT64)עם שני רכיבים שמגדיר את הגבולות המינימליים והמקסימליים של מרחב החיפוש של ערכים רציפים עבור היפרפרמטר. משתמשים באפשרות הזו כדי לציין טווח ערכים להיפר-פרמטר, למשלLEARN_RATE = HPARAM_RANGE(0.0001, 1.0).
HPARAM_CANDIDATES: ערךARRAY(STRUCT)שמציין את קבוצת הערכים הנפרדים של ההיפר-פרמטר. משתמשים באפשרות הזו כדי לציין קבוצה של ערכים להיפר-פרמטר, לדוגמהOPTIMIZER = HPARAM_CANDIDATES(['ADAGRAD', 'SGD', 'FTRL']).
היפרפרמטרים ומטרות
בטבלה הבאה מפורטים ההיפרפרמטרים והיעדים הנתמכים לכל סוג מודל שתומך בכוונון היפרפרמטרים:
| סוג המודל | יעדים של היפר-פרמטרים | היפר-פרמטר | טווח תקין | טווח ברירת מחדל | סוג המשקל |
|---|---|---|---|---|---|
LINEAR_REG
|
MEAN_ABSOLUTE_ERROR
MEAN_SQUARED_ERROR
MEAN_SQUARED_LOG_ERROR
MEDIAN_ABSOLUTE_ERROR
R2_SCORE (ברירת מחדל)
EXPLAINED_VARIANCE
|
L1_REG
L2_REG
|
(0, ∞]
(0, ∞]
|
(0, 10]
(0, 10]
|
LOG
LOG
|
LOGISTIC_REG
|
PRECISION
RECALL
ACCURACY
F1_SCORE
LOG_LOSS
ROC_AUC (ברירת מחדל)
|
L1_REG
L2_REG
|
(0, ∞]
(0, ∞]
|
(0, 10]
(0, 10]
|
LOG
LOG
|
KMEANS
|
DAVIES_BOULDIN_INDEX
|
NUM_CLUSTERS
|
[2, 100]
|
[2, 10]
|
LINEAR
|
MATRIX_ (explicit)
|
MEAN_SQUARED_ERROR
|
NUM_FACTORS
L2_REG
|
[2, 200]
(0, ∞)
|
[2, 20]
(0, 10]
|
LINEAR
LOG
|
MATRIX_ (משתמע)
|
MEAN_AVERAGE_PRECISION (ברירת מחדל)
MEAN_SQUARED_ERROR
NORMALIZED_DISCOUNTED_CUMULATIVE_GAIN
AVERAGE_RANK
|
NUM_FACTORS
L2_REG
WALS_ALPHA
|
[2, 200]
(0, ∞)
[0, ∞)
|
[2, 20]
(0, 10]
[0, 100]
|
LINEAR
LOG
LINEAR
|
AUTOENCODER
|
MEAN_ABSOLUTE_ERROR
MEAN_SQUARED_ERROR (ברירת מחדל)
MEAN_SQUARED_LOG_ERROR
|
LEARN_RATE
BATCH_SIZE
L1_REG
L2_REG
L1_REG_ACTIVATION
DROPOUT
HIDDEN_UNITS
OPTIMIZER
ACTIVATION_FN
|
[0, 1]
(0, ∞)
(0, ∞)
(0, ∞)
(0, ∞)
[0, 1)
מערך של [1, ∞)
{ ADAM, ADAGRAD, FTRL, RMSPROP, SGD}
{ RELU, RELU6, CRELU, ELU, SELU, SIGMOID, TANH}
|
[0, 1]
[16, 1024]
(0, 10]
(0, 10]
(0, 10]
[0, 0.8]
N/A { ADAM, ADAGRAD, FTRL, RMSPROP, SGD}
N/A |
LOG
LOG
LOG
LOG
LOG
LINEAR
לא רלוונטי לא רלוונטי לא רלוונטי |
DNN_CLASSIFIER
|
PRECISION
RECALL
ACCURACY
F1_SCORE
LOG_LOSS
ROC_AUC (ברירת מחדל)
|
BATCH_SIZE
DROPOUT
HIDDEN_UNITS
LEARN_RATE
OPTIMIZER
L1_REG
L2_REG
ACTIVATION_FN
|
(0, ∞)
[0, 1)
מערך של [1, ∞)
[0, 1]
{ ADAM, ADAGRAD, FTRL, RMSPROP, SGD}
(0, ∞)
(0, ∞)
{ RELU, RELU6, CRELU, ELU, SELU, SIGMOID, TANH}
|
[16, 1024]
[0, 0.8]
לא רלוונטי [0, 1]
{ ADAM, ADAGRAD, FTRL, RMSPROP, SGD}
(0, 10]
(0, 10]
לא רלוונטי |
LOG
LINEAR
לא רלוונטי LINEAR
לא רלוונטי LOG
LOG
לא רלוונטי |
DNN_REGRESSOR
|
MEAN_ABSOLUTE_ERROR
MEAN_SQUARED_ERROR
MEAN_SQUARED_LOG_ERROR
MEDIAN_ABSOLUTE_ERROR
R2_SCORE (ברירת מחדל)
EXPLAINED_VARIANCE
|
||||
DNN_LINEAR_
|
PRECISION
RECALL
ACCURACY
F1_SCORE
LOG_LOSS
ROC_AUC (ברירת מחדל)
|
BATCH_SIZE
DROPOUT
HIDDEN_UNITS
L1_REG
L2_REG
ACTIVATION_FN
|
(0, ∞)
[0, 1)
מערך של [1, ∞)
(0, ∞)
(0, ∞)
{ RELU, RELU6, CRELU, ELU, SELU, SIGMOID, TANH}
|
[16, 1024]
[0, 0.8]
לא רלוונטי (0, 10]
(0, 10]
לא רלוונטי |
LOG
LINEAR
לא רלוונטי LOG
LOG
לא רלוונטי |
DNN_LINEAR_
|
MEAN_ABSOLUTE_ERROR
MEAN_SQUARED_ERROR
MEAN_SQUARED_LOG_ERROR
MEDIAN_ABSOLUTE_ERROR
R2_SCORE (ברירת מחדל)
EXPLAINED_VARIANCE
|
||||
BOOSTED_TREE_
|
PRECISION
RECALL
ACCURACY
F1_SCORE
LOG_LOSS
ROC_AUC (ברירת מחדל)
|
LEARN_RATE
L1_REG
L2_REG
DROPOUT
MAX_TREE_DEPTHMAX_TREE_DEPTH
SUBSAMPLE
MIN_SPLIT_LOSS
NUM_PARALLEL_TREE
MIN_TREE_CHILD_WEIGHT
COLSAMPLE_BYTREE
COLSAMPLE_BYLEVEL
COLSAMPLE_BYNODE
BOOSTER_TYPE
DART_NORMALIZE_TYPE
TREE_METHOD
|
[0, ∞)
(0, ∞)
(0, ∞)
[0, 1]
[1, 20]
(0, 1]
[0, ∞)
[1, ∞)
[0, ∞)
[0, 1]
[0, 1]
[0, 1]
{ GBTREE, DART}
{ TREE, FOREST}
{ AUTO, EXACT, APPROX, HIST}
|
[0, 1]
(0, 10]
(0, 10]
לא רלוונטי [1, 10]
(0, 1]
לא רלוונטי לא רלוונטי לא רלוונטי לא רלוונטי לא רלוונטי לא רלוונטי לא רלוונטי לא רלוונטי לא רלוונטי |
LINEAR
LOG
LOG
LINEAR
LINEAR
LINEAR
LINEAR
LINEAR
LINEAR
LINEAR
LINEAR
LINEAR
לא רלוונטי לא רלוונטי לא רלוונטי |
BOOSTED_TREE_ |
MEAN_ABSOLUTE_ERROR
MEAN_SQUARED_ERROR
MEAN_SQUARED_LOG_ERROR
MEDIAN_ABSOLUTE_ERROR
R2_SCORE (ברירת מחדל)
EXPLAINED_VARIANCE
|
||||
RANDOM_FOREST_
|
PRECISION
RECALL
ACCURACY
F1_SCORE
LOG_LOSS
ROC_AUC (ברירת מחדל)
|
L1_REG
L2_REG
MAX_TREE_DEPTH
SUBSAMPLE
MIN_SPLIT_LOSS
NUM_PARALLEL_TREE
MIN_TREE_CHILD_WEIGHT
COLSAMPLE_BYTREE
COLSAMPLE_BYLEVEL
COLSAMPLE_BYNODE
TREE_METHOD
|
(0, ∞)
(0, ∞)
[1, 20]
(0, 1)
[0, ∞)
[2, ∞)
[0, ∞)
[0, 1]
[0, 1]
[0, 1]
{ AUTO, EXACT, APPROX, HIST}
|
(0, 10]
(0, 10]
[1, 20]
(0, 1)
לא רלוונטי [2, 200]
לא רלוונטי לא רלוונטי לא רלוונטי לא רלוונטי לא רלוונטי |
LOG
LOG
LINEAR
LINEAR
LINEAR
LINEAR
LINEAR
LINEAR
LINEAR
LINEAR
לא רלוונטי |
RANDOM_FOREST_ |
MEAN_ABSOLUTE_ERROR
MEAN_SQUARED_ERROR
MEAN_SQUARED_LOG_ERROR
MEDIAN_ABSOLUTE_ERROR
R2_SCORE (ברירת מחדל)
EXPLAINED_VARIANCE
|
רוב ההיפרפרמטרים של קנה המידה LOG משתמשים בגבול התחתון הפתוח של 0. עדיין אפשר להגדיר את 0 כגבול התחתון באמצעות מילת המפתח HPARAM_RANGE כדי להגדיר את טווח ההיפרפרמטרים. לדוגמה, במודל של מסווג עצים מחוזק, אפשר להגדיר את הטווח של היפר-פרמטר L1_REG כ-L1_REG = HPARAM_RANGE(0, 5). הערך 0 מומר ל-1e-14.
יש תמיכה בהיפר-פרמטרים מותנים. לדוגמה, במודל רגרסיה של עץ מחוזק, אפשר לכוונן רק את ההיפר-פרמטר DART_NORMALIZE_TYPE אם הערך של ההיפר-פרמטר BOOSTER_TYPE הוא DART. במקרה כזה, מציינים את שני מרחבי החיפוש והתנאים מטופלים באופן אוטומטי, כמו בדוגמה הבאה:
BOOSTER_TYPE = HPARAM_CANDIDATES(['DART', 'GBTREE'])
DART_NORMALIZE_TYPE = HPARAM_CANDIDATES(['TREE', 'FOREST'])
דוגמה נוספת היא האינטראקציה בין BOOSTER_TYPE לבין DROPOUT במודלים של עצים מחוזקים. אפשר לשנות את הפרמטר DROPOUT רק אם BOOSTER_TYPE כולל את 'DART' כמועמד. אם מגדירים מרחב חיפוש ל-DROPOUT אבל מגבילים את BOOSTER_TYPE רק ל-HPARAM_CANDIDATES(['GBTREE']), משימת ההתאמה תיכשל.
חיפוש נקודת התחלה
אם לא מציינים מרחב חיפוש להיפרפרמטר באמצעות HPARAM_RANGE או HPARAM_CANDIDATES, החיפוש מתחיל מערך ברירת המחדל של ההיפרפרמטר הזה, כפי שמתואר בנושא CREATE MODEL עבור סוג המודל הזה. לדוגמה, אם מריצים אופטימיזציה של היפרפרמטרים עבור מודל של עץ מחוזק, ולא מציינים ערך להיפרפרמטר L1_REG, החיפוש יתחיל מ-0, שהוא ערך ברירת המחדל.
אם מציינים מרחב חיפוש להיפרפרמטר באמצעות HPARAM_RANGE או HPARAM_CANDIDATES, נקודות ההתחלה של החיפוש תלויות בשאלה אם מרחב החיפוש שצוין כולל את ערך ברירת המחדל של ההיפרפרמטר הזה, כפי שמתואר בנושא CREATE MODEL עבור סוג המודל הזה:
- אם הטווח שצוין מכיל את ערך ברירת המחדל, החיפוש מתחיל שם. לדוגמה, אם אתם מריצים כוונון של היפרפרמטרים עבור מודל של פירוק מטריצות מרומז, ומציינים את הערך
[20, 30, 40, 50]עבור ההיפרפרמטרWALS_ALPHA, החיפוש יתחיל בערך ברירת המחדל40. - אם הטווח שצוין לא מכיל את ערך ברירת המחדל, החיפוש מתחיל מהנקודה בטווח שצוין שהכי קרובה לערך ברירת המחדל.
לדוגמה,אם מציינים את הערך
[10, 20, 30]להיפר-פרמטרWALS_ALPHA, החיפוש מתחיל מ-30, שהוא הערך הכי קרוב לערך ברירת המחדל40.
פיצול נתונים
כשמציינים ערך לאפשרות NUM_TRIALS, השירות מזהה שאתם מבצעים כוונון היפר-פרמטרים ומבצע באופן אוטומטי פיצול תלת-כיווני של נתוני הקלט כדי לחלק אותם לקבוצות אימון, הערכה וקבוצת נתונים לבדיקה.
כברירת מחדל, נתוני הקלט עוברים רנדומיזציה ואז מחולקים ל-80% לאימון, 10% להערכה ו-10% לבדיקה.
קבוצות האימון וההערכה משמשות בכל אימון ניסיוני, בדיוק כמו במודלים שלא משתמשים באופטימיזציה של היפרפרמטרים. ההצעות להיפר-פרמטרים לניסיון מחושבות על סמך מדדי הערכת המודל עבור סוג המודל הזה. בסיום כל אימון ניסיון, קבוצת נתונים לבדיקה משמשת לבדיקת הניסיון ולתיעוד המדדים שלו במודל. כך אפשר להבטיח את האובייקטיביות של מדדי ההערכה הסופיים בדוחות, כי המודל לא ניתח את הנתונים האלה. נתוני ההערכה משמשים לחישוב המדדים הביניים להצעת היפר-פרמטרים, ונתוני הבדיקה משמשים לחישוב המדדים הסופיים והאובייקטיביים של המודל.
אם רוצים להשתמש רק בקבוצת נתונים לאימון, מציינים NO_SPLIT
for the
DATA_SPLIT_METHOD option
of the CREATE MODEL statement.
אם רוצים להשתמש רק במערכי אימון ובמערכי הערכה, צריך לציין 0 באפשרות DATA_SPLIT_TEST_FRACTION של ההצהרה CREATE MODEL. אם קבוצת נתונים לבדיקה ריקה, קבוצת ההערכה משמשת כקבוצת נתונים לבדיקה לדיווח על מדדי ההערכה הסופיים.
אפשר להשוות בין המדדים ממודלים שנוצרו ממשימת אימון רגילה לבין המדדים ממודלים שנוצרו ממשימת אימון של כוונון היפר-פרמטרים רק אם חלקי הנתונים שמופרדים זהים. לדוגמה, המודלים הבאים ניתנים להשוואה:
- כוונון שאינו היפר-פרמטר:
DATA_SPLIT_METHOD='RANDOM', DATA_SPLIT_EVAL_FRACTION=0.2 - כוונון היפר-פרמטרים:
DATA_SPLIT_METHOD='RANDOM', DATA_SPLIT_EVAL_FRACTION=0.2, DATA_SPLIT_TEST_FRACTION=0
ביצועים
בדרך כלל, ביצועי המודל כשמשתמשים בכוונון היפר-פרמטרים לא פחות טובים מביצועי המודל כשמשתמשים במרחב החיפוש שמוגדר כברירת מחדל ולא משתמשים בכוונון היפר-פרמטרים. מודל שמשתמש במרחב החיפוש שמוגדר כברירת מחדל ולא משתמש בכוונון היפרפרמטרים, תמיד משתמש בהיפרפרמטרים שמוגדרים כברירת מחדל בניסיון הראשון.
כדי לאשר את השיפורים בביצועי המודל שמתקבלים מכוונון היפר-פרמטרים, צריך להשוות בין הניסוי האופטימלי של המודל עם כוונון היפר-פרמטרים לבין הניסוי הראשון של המודל ללא כוונון היפר-פרמטרים.
למידה בהעברה
העברת למידה מופעלת כברירת מחדל כאשר מגדירים את האפשרות HPARAM_TUNING_ALGORITHM בהצהרה CREATE MODEL לערך VIZIER_DEFAULT. כוונון ההיפר-פרמטרים של מודל מסוים יכול להפיק תועלת מלמידה ממודלים שכוונו בעבר, אם מתקיימות הדרישות הבאות:
- הוא כולל את אותו סוג מודל כמו מודלים שעברו כוונון בעבר.
- הוא נמצא באותו פרויקט כמו מודלים שכבר בוצע בהם שיפור.
- הוא משתמש באותו מרחב חיפוש של היפר-פרמטרים או בקבוצת משנה של מרחב החיפוש של היפר-פרמטרים של מודלים שכוונו בעבר. קבוצת משנה משתמשת באותם שמות וסוגים של היפרפרמטרים, אבל לא חייבת להשתמש באותם טווחים.
לדוגמה,
(a:[0, 10])נחשבת קבוצת משנה של(a:[-1, 1], b:[0, 1]).
בלמידה העברתית לא נדרש שנתוני הקלט יהיו זהים.
העברת ידע עוזרת לפתור את בעיית ההפעלה במצב התחלתי (cold start), שבה המערכת מבצעת חיפוש אקראי במהלך קבוצת הניסויים הראשונה. למידה בהעברה מספקת למערכת ידע ראשוני על היפר-פרמטרים ועל היעדים שלהם. כדי לשפר באופן מתמיד את איכות המודל, תמיד כדאי לאמן מודל חדש של כוונון היפר-פרמטרים עם אותם היפר-פרמטרים או עם קבוצת משנה שלהם.
למידה בהעברה עוזרת לכוונון של היפרפרמטרים להתכנס מהר יותר, במקום לעזור למודלים משניים להתכנס.
טיפול בשגיאות
התאמה אופטימלית של היפרפרמטרים מטפלת בשגיאות בדרכים הבאות:
ביטול: אם עבודת אימון מבוטלת בזמן שהיא פועלת, כל הניסויים שהצליחו עדיין ניתנים לשימוש.
קלט לא תקין: אם קלט של משתמשים לא תקין, השירות מחזיר שגיאת משתמש.
היפרפרמטרים לא תקינים: אם ההיפרפרמטרים לא תקינים לניסיון, הניסיון מדלג ומסומן כ-
INFEASIBLEבפלט מהפונקציהML.TRIAL_INFO.שגיאה פנימית בניסיון: אם יותר מ-10% מהערך
NUM_TRIALSנכשלים בגללINTERNAL_ERROR, משימת האימון נעצרת ומוחזרת שגיאת משתמש.אם פחות מ-10% מהערך של
NUM_TRIALSנכשלים בגללINTERNAL_ERROR, האימון נמשך עם הניסיונות שנכשלו שמסומנים כ-FAILEDבפלט מהפונקציהML.TRIAL_INFO.
פונקציות של פרסום מודלים
אפשר להשתמש במודלים של פלט מכוונון היפר-פרמטרים עם מספר פונקציות קיימות של הגשת מודלים. כדי להשתמש בפונקציות האלה, צריך לפעול לפי הכללים הבאים:
אם הפונקציה מקבלת נתוני קלט, רק התוצאה של ניסיון אחד מוחזרת. כברירת מחדל, זו הגרסה האופטימלית של הניסיון, אבל אפשר גם לבחור גרסה ספציפית של הניסיון על ידי ציון
TRIAL_IDכארגומנט לפונקציה הנתונה. אפשר לקבל אתTRIAL_IDמהפלט של הפונקציהML.TRIAL_INFO. יש תמיכה בפונקציות הבאות:אם הפונקציה לא מקבלת נתוני קלט, כל התוצאות של תקופת הניסיון מוחזרות, ועמודת הפלט הראשונה היא
TRIAL_ID. הפונקציות הבאות נתמכות:
הפלט של
ML.FEATURE_INFO
לא משתנה, כי כל הניסויים משתמשים באותם נתוני קלט.
יכול להיות שיהיו הבדלים בין מדדי ההערכה של ML.EVALUATE ושל ML.TRIAL_INFO בגלל האופן שבו נתוני הקלט מחולקים. כברירת מחדל, הפונקציה ML.EVALUATE פועלת על נתוני הבדיקה, ואילו הפונקציה ML.TRIAL_INFO פועלת על נתוני ההערכה. מידע נוסף זמין במאמר בנושא פיצול נתונים.
פונקציות שלא נתמכות
הפונקציה ML.TRAINING_INFO מחזירה מידע על כל איטרציה, והתוצאות של האיטרציות לא נשמרות במודלים של כוונון היפר-פרמטרים. במקום זאת, נשמרות תוצאות הניסוי. אפשר להשתמש בפונקציה ML.TRIAL_INFO כדי לקבל מידע על תוצאות של ניסוי.
ייצוא מודלים
אפשר לייצא מודלים שנוצרו באמצעות כוונון היפרפרמטרים למיקומים ב-Cloud Storage באמצעות ההצהרה EXPORT MODEL.
אפשר לייצא את תקופת הניסיון האופטימלית שמוגדרת כברירת מחדל או כל תקופת ניסיון ספציפית.
תמחור
העלות של אימון כוונון היפר-פרמטרים היא סכום העלויות של כל הניסויים שהורצו. התמחור של תקופת הניסיון זהה למודל התמחור הקיים של BigQuery ML.
שאלות נפוצות
בקטע הזה ריכזנו תשובות לכמה שאלות נפוצות בנושא כוונון היפרפרמטרים.
כמה ניסיונות צריך כדי לכוונן מודל?
מומלץ להשתמש ב-10 ניסויים לפחות לכל היפרפרמטר, כך שמספר הניסויים הכולל צריך להיות לפחות 10 * num_hyperparameters. אם אתם משתמשים במרחב החיפוש שמוגדר כברירת מחדל, תוכלו לעיין בעמודה Hyperparameters בטבלה Hyperparameters and objectives כדי לראות את מספר ההיפרפרמטרים שמכווננים כברירת מחדל עבור סוג מודל נתון.
מה קורה אם לא רואים שיפורים בביצועים אחרי שימוש באופטימיזציה של היפרפרמטרים?
כדי שההשוואה תהיה הוגנת, חשוב לפעול לפי ההנחיות שמפורטות במסמך הזה. אם עדיין לא רואים שיפורים בביצועים, יכול להיות שהיפרפרמטרים שמוגדרים כברירת מחדל כבר מתאימים לכם. אפשר להתמקד בהנדסת פיצ'רים (feature engineering) או לנסות סוגים אחרים של מודלים לפני שמנסים עוד סבב של כוונון היפר-פרמטרים.
מה קורה אם רוצים להמשיך לכוונן מודל?
מאמנים מודל חדש של אופטימיזציה של היפר-פרמטרים עם אותו מרחב חיפוש. הלמידה ההעברתית המובנית עוזרת להמשיך לכוונן את המודלים על סמך המודלים שכבר כוונו.
האם צריך לאמן מחדש את המודל עם כל הנתונים וההיפרפרמטרים האופטימליים?
זה תלוי בגורמים הבאים:
מודלים של K-means כבר משתמשים בכל הנתונים כנתוני אימון, ולכן אין צורך לאמן מחדש את המודל.
במודלים של פירוק מטריצות, אפשר לאמן מחדש את המודל עם ההיפרפרמטרים שנבחרו וכל נתוני הקלט כדי לשפר את הכיסוי של המשתמשים והפריטים.
בכל שאר סוגי המודלים, בדרך כלל אין צורך באימון מחדש. השירות כבר שומר 80% מנתוני הקלט לצורך אימון במהלך פיצול הנתונים האקראי שמוגדר כברירת מחדל. אם מערך הנתונים קטן, עדיין אפשר לאמן מחדש את המודל עם יותר נתוני אימון והיפרפרמטרים נבחרים, אבל השארת כמות קטנה של נתוני הערכה להפסקת אימון מוקדמת עלולה להחמיר את התאמת היתר.
המאמרים הבאים
- כדי לנסות להריץ כוונון היפר-פרמטרים, אפשר לעיין במאמר בנושא שימוש בכוונון היפר-פרמטרים ב-BigQuery ML כדי לשפר את ביצועי המודל.
- מידע נוסף על פונקציות והצהרות SQL נתמכות למודלים של ML זמין במאמר מסלולי משתמשים מקצה לקצה למודלים של ML.