מדריך למידת מכונה (Machine Learning)

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

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

הספריות הבסיסיות ללמידת מכונה

12 דברים שאתה חייב לדעת כשאתה עובד עם ספריית Numpy של Python

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

18 פעולות שאתה צריך להכיר כשאתה עובד עם Pandas של Python

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

Python pandas library

12 דברים שאתה חייב לדעת כשאתה מייצר תרשימים באמצעות matplotlib של python

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

python matplotlib logo

הכנת הנתונים ללמידת מכונה באמצעות SciKit-Learn

SciKit-Learn היא ספרייה פופולרית של Python במדריכים אילה אני משתמש בספרייה רק כדי לעבד את הנתונים הגולמיים לפני למידת מכונה שנעשה בפועל באמצעות TensorFlow

ספריית SciKit-Learn ללמידת מכונה באמצעות python

Keras - הממשק הידידותי ביותר ללמידת מכונה

* Keras הוא הממשק ברירת המחדל של TensorFlow 2.

רגרסיה קווית באמצעות TensorFlow 2

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

רגרסיה קווית באמצעות TensorFlow 2

חיזוי מחירי בתים באמצעות למידת מכונה ומודל לינארי מרובה משתנים

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

סיווג לקבוצות באמצעות למידת מכונה

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

סיווג לקבוצות באמצעות למידת מכונה

Confusion matrix ומדדים להערכת המודל

אחרי שסיימנו לפתח את המודל במדריך הקודם השאלה היא עד כמה הוא טוב. תשובה אחת שראינו משתמשת במדד "דיוק" (accuracy). הבעיה עם המדד accuracy שהוא יודע להעריך באופן כללי עד כמה המודל הוא מדויק אבל הוא לא יודע להגיד לנו אילו שגיאות המודל עשה. כדי לזהות את השגיאות משתמשים ב- Confusion matrix ומדדים להערכת המודל (model evaluation metrics).

האם נצליח ללמד את המחשב להבחין בין יינות משובחים ופשוטים?

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

האם נצליח ללמד את המחשב להבחין בין יינות משובחים ופשוטים?

זיהוי ספרות שכתב אדם על ידי בינה מלאכותית - פיתוח המודל

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

שמירת וטעינת מודל TensorFlow 2

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

כיצד להשתמש במודול קיים של Keras לסיווג תמונות?

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

מיני-פרוייקט סיווג תמונות באמצעות Keras

סיווג תמונות באמצעות מודל מאומן VGG16 על מסד נתונים שהורדנו מ-kaggle

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

סיווג תמונות באמצעות מודל מאומן VGG16 על מסד נתונים שהורדנו מ-kaggle

למידת מכונה: סיווג תמונות באמצעות מודל VGG16 (חלק ב) - הבניית התיקיות

במדריך השני בסדרת transfer learning כדי לעשות למידת מכונה נבנה את התיקיות שישמשו אותנו לאימון המודל להבחין בין תמונות כלבים וחתולים

למידת מכונה: סיווג תמונות באמצעות מודל VGG16 (חלק ג) למידת העברה ולמידה בפועל

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

למידת מכונה : סיווג תמונות באמצעות מודל VGG16 (חלק ד) - הערכת המודל

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

בחירת המודל המשמש ללמידת מכונה

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

פונקציות אופטימיזציה וכיצד לבחור את הפונקציה המתאימה ביותר למודל?

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

הגדלת כמות התמונות ללמידת מכונה באמצעות augmentation

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

הגדלת כמות התמונות ללמידת מכונה באמצעות augmentation

כיצד לחזור על אותם תוצאות בדיוק כשמשתמשים ב-Keras לצורך למידת מכונה

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

כיצד להתגבר על overfitting במודלים מבוססי Keras?

המדריך מסביר מהו overfitting במודלים של למידת מכונה וכיצד לגבור עליהם באמצעות מתודות של Keras.

YOLO - בינה מלאכותית שמזהה עצמים מרובים בתמונות

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

YOLO - בינה מלאכותית שמזהה עצמים מרובים בתמונות

למידת מכונה כשסדר הנתונים משנה RNN

ניתוח והצגת סדרות נתונים מבוססות זמן באמצעות pandas

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

ניתוח והצגת סדרות נתונים מבוססות זמן באמצעות pandas

חיזוי טמפרטורות באמצעות למידת מכונה

חיזוי של סדרות נתונים מציב אתגר גדול בפני למידת מכונה בגלל שהמחשב צריך לזכור את התוצאות שחושבו בשלבים הקודמים של תהליך הלמידה דבר שאינו אפשרי ברשת נוירונית רגילה (feed forward network). כדי לטפל בבעייה ניתן להשתמש בסוג מיוחד של למידת מכונה, RNN - Recurrent Neural Networks. המדריך מדגים חיזוי טמפרטורות שנתיים בעתיד באמצעות למידת מכונה באמצעות ספריית keras.

חיזוי טמפרטורות באמצעות למידת מכונה

ארכיטקטורות של מודל RNN

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

עיבוד שפה טבעית NLP

מבוא לעיבוד שפה באמצעות Gensim ו-Word2Vec

Gensim היא חבילה של פייתון לעיבוד שפה (Natural Language processing) באמצעות למידת מכונה. Word2Vec הם אלגוריתמים שמייצרים וקטורים ממילים כדי שהמחשב יוכל לבצע את הפעולות החשבוניות החיוניות ללמידת מכונה.

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

תקציר מאמר וויקיפדיה באמצעות פייתון

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

למידת מכונה - סיווג טקסטים באמצעות sklearn

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

למידת מכונה - סיווג טקסטים באמצעות sklearn

פיתוח מודל לאנליזת סנטימנט באמצעות למידת מכונה ו-TensorFlow

אנליזת סנטימנט (sentiment analysis) משתמשת במחשבים כדי ללמוד את דעת הקהל מטקסטים שהציבור מפרסם ברשתות חברתיות ובאזור תגובות הקהל בעיתונים. ניתן לבצע את האנליזה באמצעות למידת מכונה מטקסטים בגישה של עיבוד שפה טבעית (Natural Language Processing, NLP). במדריך זה נלמד את המחשב להבחין בין טקסטים המבטאים דעות חיוביות ושליליות באמצעות TensorFlow 2, הספרייה המשמשת את גוגל ללמידת מכונה.

פיתוח מודל לאנליזת סנטימנט באמצעות למידת מכונה ו-TensorFlow

שימוש ב-word embedding שאומן מראש במודל Keras לסיווג טקסטים

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

למידת מכונה בדפדפן

היכונו לעידן המכונות החושבות, למידת מכונה בדפדפן באמצעות ספריית TensorFlow.js

גוגל שיחררו את ספריית TensorFlow.js  שמאפשרת לעשות למידת מכונה (Machine Learning, ML)  בדפדפן. זה פותח עולם חדש ומלהיב של אפשרויות למתכנתי אינטרנט מפני שניתן מעכשיו לשלב יישומים של בינה מלאכותית שכתובים ב-JavaScript בתוך דפי האינטרנט שאנחנו כותבים.

דוגמה ללמידת מכונה בדפדפן באמצעות tensorflow.js

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

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

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

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

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

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

למידה בלתי מפוקחת

ניקוי תמונות מרעשים באמצעות למידת מכונה

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

ניקוי תמונות מרעשים באמצעות למידת מכונה

האצת למידת מכונה באמצעות שלב מקדים מבוסס טרנספורמציית PCA

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

השוואת למידת מכונה supervised / unsupervised  continuous / discrete

למידת מכונה אוטומטית - Automated machine learning

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

בחירת הרכב המודלים ללמידת מכונה באופן אוטומטי על ידי ספריית Auto Sklearn

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

בחירת הרכב המודלים ללמידת מכונה באופן אוטומטי על ידי ספריית Auto Sklearn

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

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

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

מדריכים קצרים וקטעי קוד

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

 

ואידך זיל גמור...

 

הוסף תגובה חדשה

 

= 4 + 2

תמונת המגיב

אבי ח בתאריך: 07.10.2019

כל הכבוד על ההשקה המדהימה
בתור אחד שעשה את הקורס בקורסרה
המדריכים שלך מתומצתים ומעשיים

תמונת המגיב

משה בתאריך: 01.03.2020

מרתק!

תמונת המגיב

המתכנת המשוגע בתאריך: 23.04.2020

כל הכבוד על ההשקעה, תוכל בבקשה לעשות מדריך על האלגוריתם הגנטי? תודה

תמונת המגיב

אנונימי בתאריך: 10.09.2020

אתה יכול לשלוח קישור לזיהוי מספרים?