למידת מכונה ב-Earth Engine

Machine Learning APIs

למידת מכונה (ML) היא טכניקה יעילה לניתוח נתונים של תצפיות על כדור הארץ. ‫Earth Engine כולל יכולות מובנות שמאפשרות למשתמשים ליצור מודלים של ML ולהשתמש בהם לתרחישים נפוצים באמצעות ממשקי API קלים לשימוש.

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

  • סיווג מבוקר: אחת הטכניקות של למידת מכונה לסיווג קרקע היא שימוש בדוגמאות של נתוני אמת כדי ללמד מודל להבחין בין סוגים שונים של קרקע. התהליך הזה נתמך על ידי מסווגים מפוקחים מובנים של Earth Engine.
  • סיווג לא מפוקח: בסיווג לא מפוקח, לא מסופקות דוגמאות של נתוני אמת לאלגוריתם האימון. במקום זאת, האלגוריתם מחלק את הנתונים הזמינים לקלאסטרים על סמך הבדלים מובנים. מסווגים לא מפוקחים של Earth Engine שימושיים במיוחד כשאין נתוני אמת, כשלא יודעים מה מספר הסיווגים הסופי או כשרוצים לבצע ניסוי מהיר.
  • רגרסיה: מודל סיווג מנסה לסווג כל קלט לקטגוריה נפרדת, ומודל רגרסיה מנסה לחזות משתנה רציף לכל קלט. לדוגמה, מודל רגרסיה יכול לחזות את איכות המים, את אחוז הכיסוי של היערות, את אחוז הכיסוי של העננים או את יבול הגידולים. מידע נוסף זמין בקטע Linear Regression of ee.Reducers.

אימון וחיזוי מחוץ ל-Earth Engine

למידה עמוקה ורשתות עצביות הן טכניקות של למידת מכונה שיכולות להתאים לנתונים מורכבים כמו תמונות לוויין. ‫Earth Engine API ללמידת מכונה לא תומך בלמידה עמוקה או ברשתות עצביות. במקום זאת, כדי להשתמש בהם, תצטרכו להשתמש במסגרת כמו TensorFlow או PyTorch ולאמן את המודל מחוץ ל-Earth Engine.

אפשר גם לאמן מחוץ ל-Earth Engine אם אתם כבר מכירים מסגרת כמו scikit-learn ללמידת מכונה קלאסית או XGBoost לעצי החלטה עם שיפור גרדיאנט.

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

ייצוא נתונים מ-Earth Engine לצורך אימון

קבלת חיזויים ממודל מחוץ ל-Earth Engine

אם מאמנים מודל מחוץ ל-Earth Engine, יש כמה אפשרויות לקבלת תחזיות מהמודל הזה.

סיבות נוספות לאימון מודלים מחוץ ל-Earth Engine

בנוסף לשיקולים של נוחות והעדפה, יכול להיות שתרצו לאמן מודל מחוץ ל-Earth Engine אם אתם רוצים להשתמש בארכיטקטורות של מודלים (למשל, רשתות עצביות קונבולוציוניות) שלא נתמכות על ידי ממשקי ה-API של למידת מכונה ב-Earth Engine, אם אתם רוצים להשתמש בתכונות נוספות של Vertex AI או אם אתם נתקלים במגבלות של שינוי קנה מידה עם ממשקי ה-API של למידת מכונה ב-Earth Engine.

הגבלות על קבוצת נתונים לאימון

בדרך כלל, אימון באמצעות ee.Classifier או ee.Clusterer יעיל עם מערכי נתונים של עד 100MB. ככלל, בהנחה של דיוק של 32 ביט (כלומר, float), אפשר להשתמש בנתונים האלה לאימון מערכי נתונים שעומדים בתנאי הבא (כאשר n הוא מספר הדוגמאות ו-b הוא מספר הפסים):

nb ≤ (100 * 2 20) / 4

לדוגמה, אם אתם מאמנים את המודל באמצעות 100 רצועות, מספר הדוגמאות שמשמשות לאימון צריך להיות קטן מ-200,000.

מגבלות על הסקת מסקנות

מערכת Earth Engine מעבדת משבצות תמונה בגודל 256x256, ולכן בקשות להסקת מסקנות לגבי תמונות צריכות לכלול פחות מ-400 רצועות (שוב, בהנחה של דיוק 32 ביט של התמונות).

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

      var trainings = ee.List.sequence(0, 3).map(function(cover) {
          return image.addBands(landcover.eq(cover).stratifiedSample()
      })

      var classifier = ee.Classifier.smileCart()
          .train(trainings.get(0), "cover")
          .train(trainings.get(1), "cover")
          .train(trainings.get(2), "cover")
          .train(trainings.get(3), "cover")
    

מגבלות על גודל המודל

בנוסף, גודל המודל עצמו צריך להיות פחות מ-100MB. אפשר להגדיר הרבה מהמסווגים שלנו כך שהמורכבות שלהם תהיה מוגבלת, וכך גם הגודל שלהם. לדוגמה:

      var classifier = ee.Classifier.smileRandomForest({
          numberOfTrees: 10,
          minLeafPopulation: 10,
          maxNodes: 10000
      })