יום ראשון, 5 ביולי 2020

ולסיכום, קצת הומור




כישורים נחוצים ומסלול לימוד מומלץ ללמידת מכונה



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

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

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

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


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

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


למידה סטטית לעומת זמן אמת


אפשר לחלק אלגוריתמים של למידת מכונה לשני סוגים:

למידה סטטית:

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


למידה בזמן אמת:

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