แมชชีนเลิร์นนิงใน Earth Engine

Machine Learning API

แมชชีนเลิร์นนิง (ML) เป็นเทคนิคที่มีประสิทธิภาพในการวิเคราะห์ข้อมูลการสังเกตการณ์โลก Earth Engine มีความสามารถในตัวที่ช่วยให้ผู้ใช้สร้างและใช้โมเดล ML สําหรับสถานการณ์ทั่วไปได้ด้วย API ที่ใช้งานง่าย

งาน ML ที่พบบ่อยคือการแยกประเภทพิกเซลในภาพถ่ายดาวเทียมออกเป็น 2 หมวดหมู่ขึ้นไป แนวทางนี้มีประโยชน์สำหรับการแมปการปกคลุมดินและการใช้ที่ดิน ตลอดจนแอปพลิเคชันยอดนิยมอื่นๆ

  • การแยกประเภทที่มีการควบคุมดูแล: เทคนิค ML อย่างหนึ่งในการแยกประเภทที่ดินคือการใช้ตัวอย่างข้อมูลที่ได้จากการสังเกตการณ์เพื่อสอนโมเดลให้แยกความแตกต่างระหว่างคลาส ตัวแยกประเภทที่มีการควบคุมในตัวของ Earth Engine รองรับกระบวนการนี้
  • การแยกประเภทที่ไม่มีการควบคุมดูแล: ในการแยกประเภทที่ไม่มีการควบคุมดูแล ระบบจะไม่แสดงตัวอย่างข้อมูลจากการสังเกตการณ์โดยตรงให้อัลกอริทึมการฝึก แต่อัลกอริทึมจะแบ่งข้อมูลที่พร้อมใช้งานออกเป็นคลัสเตอร์ตามความแตกต่างที่มีอยู่ ตัวแยกประเภทที่ไม่มีการควบคุมดูแลของ Earth Engine จะมีประโยชน์อย่างยิ่งเมื่อไม่มีข้อมูลที่เป็นความจริง เมื่อคุณไม่ทราบจํานวนคลาสสุดท้าย หรือเมื่อต้องการทําการทดสอบอย่างรวดเร็ว
  • การถดถอย: ในขณะที่โมเดลการจัดประเภทพยายามจัดกลุ่มอินพุตแต่ละรายการไว้ในคลาสแบบไม่ต่อเนื่อง โมเดลการถดถอยจะพยายามคาดการณ์ตัวแปรต่อเนื่องสําหรับอินพุตแต่ละรายการ เช่น โมเดลการถดถอยอาจคาดการณ์คุณภาพน้ำ เปอร์เซ็นต์พื้นที่ป่า เปอร์เซ็นต์ของเมฆ หรือผลผลิตพืช ดูข้อมูลเพิ่มเติมได้ที่ส่วนการหาค่าสัมประสิทธิ์การถดถอยเชิงเส้นของ ee.Reducers

การฝึกและคาดการณ์นอก Earth Engine

การเรียนรู้เชิงลึกและโครงข่ายประสาทเป็นเทคนิคแมชชีนเลิร์นนิงที่ทํางานได้ดีกับข้อมูลที่ซับซ้อน เช่น ภาพถ่ายจากดาวเทียม Machine Learning API ของ Earth Engine ไม่รองรับทั้งการเรียนรู้เชิงลึกและโครงข่ายประสาท แต่หากต้องการใช้ประโยชน์จากโมเดลเหล่านี้ คุณจะต้องใช้เฟรมเวิร์กอย่าง TensorFlow หรือ PyTorch และฝึกโมเดลนอก Earth Engine

นอกจากนี้ คุณอาจต้องการฝึกนอก Earth Engine หากคุ้นเคยกับเฟรมเวิร์กอย่าง scikit-learn สําหรับแมชชีนเลิร์นนิงแบบคลาสสิก หรือ XGBoost สําหรับต้นไม้การตัดสินใจแบบเพิ่มประสิทธิภาพด้วย Gradient

สุดท้าย คุณอาจต้องฝึกโมเดลนอก Earth Engine หากชุดข้อมูลมีขนาดใหญ่มากและเกินขีดจำกัดที่ระบุไว้ด้านล่าง

การส่งออกข้อมูลจาก Earth Engine เพื่อการฝึก

การคาดการณ์จากโมเดลภายนอก Earth Engine

หากฝึกโมเดลนอก Earth Engine คุณจะมีตัวเลือก 2-3 รายการในการรับการคาดการณ์จากโมเดลนั้น

เหตุผลอื่นๆ ที่ควรฝึกโมเดลนอก Earth Engine

นอกเหนือจากความคุ้นเคยและความต้องการแล้ว คุณอาจต้องการฝึกโมเดลนอก Earth Engine หากต้องการใช้สถาปัตยกรรมโมเดล (เช่น Convolutional Neural Network) ที่ Machine Learning API ของ Earth Engine ไม่รองรับ หากต้องการใช้ฟีเจอร์เพิ่มเติมของ Vertex AI หรือหากพบขีดจํากัดการปรับขนาดกับ Machine Learning API ของ Earth Engine

จำกัดชุดการฝึก

โดยทั่วไป การฝึกโดยใช้ ee.Classifier หรือ ee.Clusterer จะมีประสิทธิภาพกับชุดข้อมูลที่มีขนาดไม่เกิน 100 MB แนวทางคร่าวๆ ในกรณีที่ความแม่นยำเป็น 32 บิต (เช่น เลขทศนิยม) รูปแบบนี้จะรองรับชุดข้อมูลการฝึกที่ตรงตามเงื่อนไขต่อไปนี้ (โดยที่ n คือจํานวนตัวอย่าง และ b คือจํานวนแถบ)

nb ≤ (100 * 2 20) / 4

ตัวอย่างเช่น หากคุณฝึกโดยใช้ย่านความถี่ 100 ย่าน จำนวนตัวอย่างที่ใช้สำหรับการฝึกควรน้อยกว่า 200,000 รายการ

ขีดจํากัดการอนุมาน

เนื่องจาก Earth Engine ประมวลผลไทล์รูปภาพขนาด 256x256 คำขออนุมานเกี่ยวกับภาพต้องน้อยกว่า 400 ย่านความถี่ (อีกครั้ง สมมติว่าภาพมีความแม่นยำ 32 บิต)

คุณสามารถฝึกตัวแยกประเภทซ้ำได้มากกว่า 1 ครั้งเพื่อให้ชุดข้อมูลของการฝึกแต่ละครั้งอยู่ภายในขีดจํากัด

      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")
    

ขีดจํากัดของขนาดโมเดล

นอกจากนี้ โมเดลเองต้องมีขนาดไม่เกิน 100 MB เราสามารถกําหนดค่าตัวแยกประเภทจํานวนมากเพื่อจํากัดความซับซ้อนและขนาดของตัวแยกประเภทได้ เช่น

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