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

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

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

ייצוא מודל Keras ל-tensorflowjs לצורך שימוש באפליקציה בדפדפן

 

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

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

רשת נאורונית שכוללת שכבה חבויה

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

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

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

 

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

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

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

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

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

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

 

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

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

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

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

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

 

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

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

Numpy - היא ספרייה של פייתון שמאפשרת לעבוד עם מערכים ובפרט מערכים רב-מימדיים.

Pandas - תלויה ב-Numpy ומאפשרת לעבוד עם מידע שניתן לסדר בטבלה. הספרייה מאפשרת לסקור את המידע, לחלק לקבוצות, להוסיף ולהוריד עמודות, לבחור טווח של נתונים, ועוד.

Matplotlib - היא הספרייה עיקרית שבה נשתמש להצגת מידע באמצעות גרפים ותרשימים.

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

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

הבעיה של Tensorflow שקשה ללמוד אותו ולכן המהנדסים של גוגל פתחו את Kerasשהוא api עם ממשק נוח וקל בהרבה שמשתמש ב-Tensorflow מאחורי הקלעים.

אחרי שפתחנו את המודלים שלנו באמצעות Tensorflow ו-Keras אנחנו רוצים לאפשר לאנשים להשתמש בהם בעזרת ממשק נוח וידידותי. עדיף בדפדפן. במדריך "ייצוא מודל בינה מלאכותית לשימוש בדפדפן" נלמד כיצד לייצא מודל של למידת מכונה לשימוש בדפדפן באמצעות ספריית tensorflow.js.

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

 

מהי סביבת העבודה ואיך אני יכול להשיג את כל החבילות?

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

 

איך ללמוד למידת מכונה?

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

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

 

אהבתם? לא אהבתם? דרגו!

0 הצבעות, ממוצע 0 מתוך 5 כוכבים

 

 

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

 

= 6 + 4