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

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

אם לא חיית בשנים האחרונות במערה ודאי שמעת על יכולות הבינה המלאכותית שמקנים למחשבים את היכולת להביס מומחים אנושיים בשחמט, במשחקי מחשב ואפילו בזיהוי מחלות. בסדרה זו נלמד את הבסיס ללמידת מכונה שמאפשרת למחשב ללמוד בעצמו מסדרות של נתונים. נעשה זאת באמצעות פייתון וספריות קוד מודרניות דוגמת Keras ו-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

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

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

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

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

הבחנה בין קבוצות באמצעות למידת מכונה

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

הצגת מסד הנתונים באופן השוואתי באמצעות seaborn

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

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

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

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

שמירת וטעינת מודל Keras

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

כיצד להשתמש במודול קיים של 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 על אותם הנתונים אתם מקבלים תוצאות שונות. השונות הזו מובנית במערכת אבל לפעמים אנחנו מעוניינים לקבל תוצאות עקביות אז במדריך זה נלמד כיצד לאלץ את המערכת להנפיק את אותם התוצאות בכל פעם ובתנאי שמשתמשים באותו המודל ובאותם הנתונים.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

ניתוח סנטימנט של טקסט בעברית

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

ניתוח סנטימנט של טקסט בעברית

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

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

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

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

במדריך זה נראה כיצד ללמד מכונה להבחין בין טקסטים המבטאים דעות חיוביות ושליליות (sentiment analysis) באמצעות python ו-Keras.

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

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

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

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

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

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

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

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

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

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

 

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

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

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

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

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

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

Supervised Unsupervised
Discrete Classsification Clustering
Continuous Regression Dimensionality
reduction

 

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

 

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

 

= 6 + 3

תמונת המגיב

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

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