תחי ישראל - אין לנו ארץ אחרת

תחי ישראל -אין לנו ארץ אחרת

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

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

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

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

 

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

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

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

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

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

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

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

 

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

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

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

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

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

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

 

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

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

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

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

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

 

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

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

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

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

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

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

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

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

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

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

 

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

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

 

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

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

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

 

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

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

 

 

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

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

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

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

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

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

 

 

ענה על השאלה הפשוטה הבאה כתנאי להוספת תגובה:

איך אומרים בעברית אינטרנט?

 

תמונת המגיב

קרן בתאריך: 02.10.2021

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