1. מבוא

העדכון האחרון: 28 במרץ 2022
למידת מכונה
למידת מכונה היא תחום שמתפתח במהירות מסחררת. מדי יום מתפרסמים מחקרים חדשים ומתגלים אפשרויות חדשות, שמאפשרים תרחישי שימוש שלא היו אפשריים בעבר.
בדרך כלל, התוצאה של הגרסאות האלה היא מודל. אפשר להבין מודלים כמשוואות מתמטיות ארוכות מאוד, שבהינתן קלט (למשל: תמונה) מוציאות פלט (למשל: סיווג)
- מה קורה אם רוצים להשתמש באחד מהמודלים החדשים האלה עם נתונים משלכם?
- איך אפשר להפיק תועלת מהמודלים המתקדמים האלה בתרחיש השימוש שלכם או באפליקציה שלכם?
ב-Codelab הזה תלמדו איך להתאים אישית מודלים של למידת מכונה לנתונים שלכם בדרך הקלה.
יש הרבה אתגרים בבנייה ובאימון של מודלים של למידת מכונה:
- התהליך אורך זמן רב.
- שימוש בכמויות גדולות של נתונים.
- נדרשת מומחיות בתחומים כמו מתמטיקה וסטטיסטיקה.
- דורש הרבה משאבים: יכול להיות שיידרשו ימים לאימון של חלק מהמודלים.
בניית ארכיטקטורות של מודלים חדשים אורכת זמן רב, ועשויה לדרוש ניסויים רבים ושנים של ניסיון. אבל מה אם תוכלו להשתמש בכל הידע הזה וליישם אותו על הנתונים שלכם, פשוט על ידי התאמה אישית של מחקר מתקדם לבעיה שלכם? אפשר לעשות את זה באמצעות טכניקה שנקראת למידת העברה.
ב-codelab הזה נסביר איך לבצע העברת למידה, למה היא עובדת ומתי כדאי להשתמש בה.
מה תלמדו
- מהי למידת העברה ומתי כדאי להשתמש בה.
- איך משתמשים ב-Transfer Learning.
- איך משפרים את המודלים.
- איך משתמשים ב-TensorFlow Lite Model Maker.
- איך משתמשים ב-TensorFlow Hub.
מה תצטרכו
- כל הקוד מופעל באמצעות Google Colaboratory, כך שלא תצטרכו להתקין שום דבר במחשב. כדי להיכנס ל-Colab, צריך רק גישה לאינטרנט וחשבון Google.
- ידע בסיסי ב-TensorFlow וב-Keras API.
- ידע ב-Python.
גם אם אין לכם ידע בסיסי ב-TensorFlow או בלמידת מכונה, אתם יכולים ללמוד על העברת למידה. קראו את השלב הבא, 'מהי למידת העברה', כדי להבין את התיאוריה שמאחורי השיטה, ואז המשיכו אל 'למידת העברה באמצעות Model Maker'. אם רוצים להעמיק ולראות את התהליך בפירוט רב יותר, אפשר לעיין בקטעים על למידת העברה באמצעות TensorFlow Hub.
2. מהי למידת העברה?
מודל שעבר אימון מראש הוא רשת שמורה שאומנה בעבר על מערך נתונים גדול, בדרך כלל על משימה של סיווג תמונות בקנה מידה גדול. אפשר להשתמש במודל שאומן מראש כמו שהוא, או להשתמש בלמידת העברה כדי להתאים אישית את המודל למשימה מסוימת.
ההיגיון מאחורי למידת העברה לסיווג תמונות הוא שאם מאמנים מודל על מערך נתונים גדול וכללי מספיק, המודל הזה ישמש למעשה כמודל גנרי של העולם החזותי. לאחר מכן, תוכלו להשתמש במפות התכונות האלה בלי להתחיל מאפס, על ידי אימון מודל גדול על מערך נתונים גדול.
יש שתי דרכים להתאים אישית מודל של למידת מכונה
- חילוץ תכונות: שימוש בייצוגים שנלמדו על ידי רשת קודמת כדי לחלץ תכונות משמעותיות מדגימות חדשות. פשוט מוסיפים מסווג חדש, שעובר אימון מאפס, על גבי המודל שאומן מראש, כדי שאפשר יהיה להשתמש מחדש במפות התכונות שנלמדו קודם עבור מערך הנתונים. אין צורך לאמן מחדש את כל המודל. רשת קונבולוציה בסיסית כבר מכילה תכונות שימושיות באופן כללי לסיווג תמונות. עם זאת, החלק הסופי של הסיווג במודל שאומן מראש הוא ספציפי למשימת הסיווג המקורית, ולכן הוא ספציפי לקבוצת המחלקות שעליהן המודל אומן.
- כוונון עדין: ביטול ההקפאה של כמה מהשכבות העליונות של מודל בסיס מוקפא ואימון משותף של שכבות המסווג שנוספו לאחרונה ושל השכבות האחרונות של מודל הבסיס. כך אנחנו יכולים לבצע כוונון עדין של ייצוגי התכונות מסדר גבוה במודל הבסיסי, כדי שהם יהיו רלוונטיים יותר למשימה הספציפית.
אימון של תכונה להפקת נתונים מהיר יותר, אבל באמצעות כוונון עדין אפשר להשיג תוצאות טובות יותר.
תנסו את שתי הגישות (חילוץ תכונות ושינוי עדין) באמצעות שתי דרכים שונות לביצוע למידת העברה:
- ספריית TensorFlow Lite Model Maker מבצעת באופן אוטומטי את רוב הפעולות שקשורות לפייפליין הנתונים וליצירת המודל, וכך הופכת את התהליך להרבה יותר פשוט. בנוסף, אפשר לייצא בקלות את המודל שנוצר כדי להשתמש בו בנייד ובדפדפן.
- מודלים של TensorFlow Hub מתבססים על המאגר העצום של מודלים של למידת מכונה שזמינים ב-TensorFlow Hub. חוקרים וחברי הקהילה תורמים את המודלים האלה, וכך מאפשרים להשתמש במודלים מתקדמים הרבה יותר מהר ובמגוון רחב יותר.
3. העברת למידה באמצעות Model Maker
עכשיו, אחרי שהבנתם את הרעיון שעומד מאחורי למידת העברה, נתחיל להשתמש בספריית TensorFlow Lite Model Maker, כלי שיעזור לכם לעשות את זה בקלות.
ספריית TensorFlow Lite Model Maker היא ספרייה בקוד פתוח שמפשטת את תהליך למידת ההעברה, והופכת אותו לנגיש יותר למפתחים שאינם מפתחי ML, כמו מפתחי אפליקציות לנייד ומפתחי אתרים.
ב-notebook של Colab יש הוראות לשלבים הבאים:
- טוענים את הנתונים.
- פיצול הנתונים.
- יצירה ואימון של המודל
- הערכת המודל.
- מייצאים את המודל.
אחרי השלב הזה, תוכלו להתחיל להשתמש בשיטת Transfer Learning עם הנתונים שלכם, בדיוק באותו תהליך.
Colaboratory
עכשיו נעבור אל Google Colab כדי לאמן את המודל המותאם אישית.
הסבר על ה-notebook והבנת העקרונות הבסיסיים שלו אורכים כ-15 דקות.
יתרונות:
- דרך קלה להתאים אישית מודלים.
- אין צורך להבין את TensorFlow או את Keras API.
- כלי בקוד פתוח שאפשר לשנות אם המשתמש צריך משהו ספציפי שעדיין לא הוטמע.
- מייצא את המודל ישירות להרצה בנייד או בדפדפן.
חסרונות
- פחות אפשרויות הגדרה מאשר בבנייה של צינור מלא ומודל בעצמכם, כמו בשתי השיטות הקודמות
- גם כשבוחרים במודל בסיס, לא כל המודלים יכולים לשמש כבסיס.
- לא מתאים לכמויות גדולות של נתונים שבהן פייפליין הנתונים מורכב יותר.
4. חיפוש מודל ב-TensorFlow Hub
בסוף הקטע הזה, תוכלו:
- אפשר למצוא מודלים של למידת מכונה ב-TensorFlow Hub.
- מידע על אוספים
- להבין סוגים שונים של מודלים.
כדי לבצע העברת למידה, צריך להתחיל עם שני דברים:
- נתונים, למשל תמונות של הנושאים שרוצים לזהות.
- מודל בסיסי שאפשר להתאים אישית לנתונים שלכם.
החלק של הנתונים תלוי בדרך כלל בעסק, אבל הדרך הכי קלה היא לצלם הרבה תמונות של מה שרוצים לזהות. אבל מה לגבי מודל הבסיס? איפה אפשר למצוא כזה? כאן TensorFlow Hub יכול לעזור.
TensorFlow Hub הוא מאגר המודלים שבו אפשר למצוא מודלים של TensorFlow שמתאימים לצרכים שלכם.
אתם יכולים לחפש ולקרוא את התיעוד של אלפי מודלים שזמינים לשימוש, ורבים מהם מוכנים ללמידת העברה ולכוונון עדין.
חיפוש מודל
קודם נבצע חיפוש פשוט של מודלים ב-TensorFlow Hub שאפשר להשתמש בהם בקוד בהמשך.
שלב 1: בדפדפן, פותחים את האתר tfhub.dev.

כדי להשתמש ב-Transfer Learning בדומיין של תמונות, אנחנו צריכים Feature Vectors. וקטורים של מאפיינים דומים למודלים של סיווג, אבל בלי ראש הסיווג.
וקטורי תכונות יכולים להמיר תמונות לייצוג מספרי במרחב ה-N (כאשר N הוא מספר הממדים של שכבת הפלט של המודל).
ב-TFHub אפשר לחפש באופן ספציפי וקטורים של תכונות על ידי לחיצה על כרטיס מסוים.

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

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

גוללים למטה ובוחרים באפשרות MobileNet V3. כל אחד מהווקטורים של המאפיינים יתאים.

בדף הפרטים של המודל אפשר לקרוא את כל התיעוד של המודל, לראות קטעי קוד כדי לנסות את המודל או אפילו לנסות אותו ישירות ב-Colab Notebook.

בשלב הזה, כל מה שצריך הוא כתובת ה-URL שמופיעה למעלה. זהו ה-handle של המודל, והדרך שבה אפשר לגשת בקלות למודל מספריית TensorFlow Hub.
5. העברת למידה באמצעות TensorFlow Hub
אחרי שבחרתם מודל לשימוש, אפשר להתאים אותו אישית באמצעות הטעינה שלו עם השיטה KerasLayer מספריית TensorFlow Hub.
השיטה הזו טוענת מודל באופן שמאפשר להשתמש בו כשכבה במודל שלכם, וכך לבנות את המודל סביב השכבה הזו.
בעבר, כשלימדנו איך להשתמש ב-Model Maker, הסתרנו את כל הפרטים הפנימיים כדי שיהיה קל יותר להבין. לא, תוכלו לראות מה קורה מאחורי הקלעים ב-Model Maker.
Colaboratory
עכשיו נעבור אל Google Colab כדי לאמן את המודל המותאם אישית.
הסבר על ה-notebook והבנת היסודות שלו נמשכים כ-20 דקות.
יתרונות:
- אלפי מודלים זמינים שנוצרו על ידי חוקרים והקהילה, שאומנו על מגוון מערכי נתונים.
- מודלים לכל המשימות, כמו ראייה, טקסט ואודיו.
- קל להתנסות במודלים דומים שונים. יכול להיות ששינוי מודל הבסיס ידרוש שינוי של מחרוזת אחת בלבד.
חסרונות
- עדיין נדרשת מומחיות ב-TensorFlow/Keras כדי להשתמש במודלים.
אם אתם רוצים להעמיק עוד יותר, אתם יכולים גם לבצע העברת למידה באמצעות אפליקציית Keras. התהליך הזה דומה מאוד לשימוש ב-TensorFlow Hub, אבל הוא כולל רק ממשקי API של TensorFlow.
6. מזל טוב
סיימתם ללמוד מהי העברת למידה ואיך מיישמים אותה על הנתונים שלכם.
ב-Codelab הזה למדתם איך להתאים אישית מודלים של למידת מכונה לנתונים שלכם באמצעות טכניקה שנקראת 'למידת העברה' (Transfer Learning).
ניסיתם 2 סוגים של העברת למידה:
- שימוש בכלי כמו TensorFlow Lite Model Maker.
- שימוש בווקטור תכונות מ-TensorFlow Hub.
לשתי האפשרויות יש יתרונות וחסרונות, ויש הרבה אפשרויות הגדרה שמתאימות לצרכים הספציפיים שלכם.
למדתם גם שאפשר להמשיך ולכוונן את המודלים על ידי שינוי קל של המשקלים שלהם, כדי להתאים אותם טוב יותר לנתונים שלכם.
בשתי האפשרויות אפשר לבצע כוונון עדין של מודלים.
השיטות Transfer Learning ו-Fine Tuning לא מיועדות רק למודלים שקשורים לתמונות. מכיוון שהרעיון הוא להשתמש בייצוג נלמד של דומיין כדי לבצע התאמה לערכת הנתונים שלכם, אפשר להשתמש בו גם בדומיינים של טקסט ואודיו.
השלבים הבאים
- אתם יכולים לנסות את זה עם הנתונים שלכם.
- שתפו איתנו את מה שאתם יוצרים ותייגו את TensorFlow ברשתות החברתיות עם הפרויקטים שלכם.
מידע נוסף
- מידע נוסף על כוונון עדין של מודלים מתקדמים כמו BERT זמין במאמר בנושא כוונון עדין של מודל BERT.
- מידע נוסף על למידת העברה למודלים של אודיו זמין במאמר Transfer learning with YAMNet for environmental sound classification.