מהי למידת מכונה? מודיעין שמקורו בנתונים

למידת מכונה מוגדרת

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

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

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

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

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

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

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

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

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

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

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

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

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

אלגוריתמי סיווג

בעיית סיווג היא בעיית למידה מפוקחת המבקשת בחירה בין שניים או יותר שיעורים, לרוב מספקת הסתברויות לכל כיתה. השארת רשתות עצביות ולמידה עמוקה, הדורשות רמה גבוהה בהרבה של משאבי מחשוב, האלגוריתמים הנפוצים ביותר הם Naive Bayes, Tree Tree, רגרסיה לוגיסטית, K-Nearest Neighbors ו- Support Vector Machine (SVM). אתה יכול גם להשתמש בשיטות אנסמבל (שילובים של דגמים), כגון Random Forest, שיטות Bagging אחרות ושיטות הגברה כגון AdaBoost ו- XGBoost.

אלגוריתמי רגרסיה

בעיית רגרסיה היא בעיית למידה מפוקחת המבקשת מהמודל לחזות מספר. האלגוריתם הפשוט והמהיר ביותר הוא רגרסיה לינארית (הכי פחות ריבועים), אך לא כדאי לעצור שם, מכיוון שלעתים קרובות זה נותן לך תוצאה בינונית. אלגוריתמי רגרסיה נפוצים אחרים של למידת מכונה (חסרים רשתות עצביות) כוללים Naive Bayes, Tree Tree, K-Nearest Neighbors, LVQ (Learning Vector Quantization), LARS Lasso, Elastic Net, Forest Random, AdaBoost ו- XGBoost. תבחין שיש חפיפה כלשהי בין אלגוריתמים של למידת מכונה לצורך רגרסיה וסיווג.

אלגוריתמי אשכולות

בעיית אשכולות היא בעיית למידה ללא פיקוח המבקשת מהמודל למצוא קבוצות של נקודות נתונים דומות. האלגוריתם הפופולרי ביותר הוא אשכול K-Means; אחרים כוללים אשכולות ממוצעים משמרים, DBSCAN (אשכולות מרחביים מבוססי צפיפות של יישומים עם רעש), GMM (מודלים של תערובת גאוסית) ו- HAC (אשכולות אגרלומטיבים היררכיים).

אלגוריתמים להפחתת ממד

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

שיטות אופטימיזציה

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

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

רשתות עצביות ולמידה עמוקה

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

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

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

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

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

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

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

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

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

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

ככל שיש יותר שכבות ברשת עצבית עמוקה, כך לוקח יותר חישוב כדי לאמן את המודל על מעבד. מאיצי חומרה לרשתות עצביות כוללים GPUs, TPU ו- FPGA.

לימוד עם חיזוקים

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

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

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

כיצד להשתמש בלימוד מכונה

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

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

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

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

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

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

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

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