הסבירו אלגוריתמים של למידת מכונה

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

מהם אלגוריתמים של למידת מכונה?

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

איך עובדת למידת מכונה

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

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

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

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

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

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

למידה מפוקחת לעומת למידה ללא פיקוח

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

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

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

ניקוי נתונים ללימוד מכונה

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

  1. בדוק את הנתונים והכלל את כל העמודות שיש בהן הרבה נתונים חסרים.
  2. התבונן שוב בנתונים ובחר את העמודות בהן תרצה להשתמש לחיזוי שלך. (זה משהו שאולי תרצה לשנות כאשר אתה חוזר.)
  3. אל תכלול שורות שעדיין חסרות נתונים בעמודות הנותרות.
  4. תקנו שגיאות הקלדה ברורות והתמזגו תשובות שוות ערך. לדוגמה, יש למזג את ארה"ב, ארה"ב, ארה"ב ואמריקה לקטגוריה אחת.
  5. אל תכלול שורות שיש בהן נתונים מחוץ לטווח. לדוגמא, אם אתה מנתח נסיעות במוניות בעיר ניו יורק, תרצה לסנן שורות עם קווי אורך וקו רוחב איסוף או ירידה מחוץ לתיבת הגבול של המטרופולין.

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

קידוד נתונים ונורמליזציה ללימוד מכונה

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

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

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

מהן תכונות למידת מכונה?

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

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

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

אלגוריתמים נפוצים ללימוד מכונה

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

  • רגרסיה ליניארית, גם רגרסיה קטנה בריבועים (לנתונים מספריים)
  • רגרסיה לוגיסטית (לסיווג בינארי)
  • ניתוח מפלה לינארי (לסיווג רב-קטגוריות)
  • עצי החלטה (הן לסיווג והן לרגרסיה)
  • נאיב בייס (הן לסיווג והן לרגרסיה)
  • שכנים K הקרובים ביותר, המכונים גם KNN (הן לסיווג והן לרגרסיה)
  • לימוד כימות וקטורי, המכונה גם LVQ (לסיווג וגם לרגרסיה)
  • תמיכה במכונות וקטוריות, המכונות גם SVM (לסיווג בינארי)
  • יערות אקראיים, סוג של אלגוריתם אנסמבל של "שקיות" (הן לסיווג והן לרגרסיה)
  • שיטות חיזוק, כולל AdaBoost ו- XGBoost, הן אלגוריתמי אנסמבל היוצרים סדרת מודלים שבהם כל דגם חדש מנסה לתקן שגיאות מהמודל הקודם (הן לסיווג והן לרגרסיה).

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

למידע נוסף על רשתות עצביות ולמידה עמוקה, ראה "מה המשמעות של למידה עמוקה באמת".

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

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

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

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

כוונון היפרפרמטר

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

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

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

למידת מכונה אוטומטית

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

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

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

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