ข้ามไปยังเนื้อหา

ค่าอนุพัทธ์และการจำแนกด้วยกฎ: dew point, heat index และบันไดกฎ

โมดูล 3 — ประมวลผลด้วยคณิตศาสตร์และฟิสิกส์ · สไลด์: slides.md · ภาพรวมโมดูล · หน้าหลักสูตร

เขียน classifier ตัวแรกของหลักสูตรโดยยังไม่ใช้ ML แปลงอุณหภูมิกับความชื้นเป็นค่าอนุพัทธ์ dew point และ heat index แล้วตัดสินเป็นคลาสด้วยเส้นแบ่งและบันไดกฎที่ลำดับชั้นถูกต้อง

เมื่อจบบทเรียนนี้ คุณจะ:

  1. อธิบายได้ว่า classifier คือกล่องที่รับตัวเลขแล้วคืนคลาส และเปรียบเทียบการหาเส้นแบ่งด้วยกฎมือกับด้วย ML ได้อย่างน้อยสองมิติ (ข้อมูลฝึก ความอธิบายได้ หรือความซับซ้อนของ pattern)
  2. เรียก dsp.dew_point และ dsp.heat_index แล้วอธิบายได้ว่าทำไมค่าอนุพัทธ์ช่วยให้กฎตัดสินได้ดีกว่าค่าดิบ เช่น 32°C ที่ความชื้น 40% กับ 80% ให้ heat index ต่างกันราว 12 องศา
  3. เรียงบันไดกฎหลายชั้นให้เงื่อนไขที่เฉพาะหรือรุนแรงกว่าอยู่บน และหา dead branch ในบันไดที่เรียงผิดได้

ผ่านชุดบทเรียน 3.1–3.2 มาแล้ว เข้าใจรูปแบบ raw → derived → viz เปิด REPL ไว้ลอง dsp.dew_point, dsp.heat_index และ dsp.comfort_zone ด้วยค่าที่คุณเลือกเอง

รันกฎสำเร็จรูป dsp.comfort_zone(t, rh) ที่เฟิร์มแวร์มีให้ก่อน มันตอบ comfortable, hot, humid ฯลฯ ได้เลย แล้วค่อยถามว่า “มันรู้ได้ยังไงว่าตอนนี้ร้อน” ซึ่งคำตอบคือ if ไม่กี่บรรทัดในภาษา C ไม่มี AI สักนิด

Classifier คือฟังก์ชันที่รับตัวเลขแล้วคืน “คลาส” หนึ่งป้ายจากชุดที่กำหนด โมเดล Motion ในโมดูล 1 ก็เป็น classifier เพียงแต่ข้างในเป็น neural network ส่วนวันนี้ข้างในคือ กฎที่เราตั้งเอง รูปเข้าออกเหมือนกัน ต่างที่วิธีหาเส้นแบ่ง: กฎมือไม่ต้องมีข้อมูลฝึก รันได้ทันที และอธิบายได้ทุกคำตัดสิน แต่จะบานเมื่อเงื่อนไขเยอะและไม่เก่งกับ pattern ซับซ้อน ส่วน ML เรียนเส้นแบ่งจากข้อมูลและจับ pattern หลายมิติได้ แต่ต้องมีข้อมูล ต้องฝึก และอธิบาย “ทำไม” ได้ยากกว่า ในงานจริงหลายอย่างกฎ threshold ง่าย ๆ ชนะ ML

ค่าดิบบางทีตัดสินยาก 32°C ตอนแห้งกับตอนชื้นจัดรู้สึกต่างกันมาก ค่าอนุพัทธ์ (derived metric) รวมหลายค่าดิบเป็นตัวเดียวที่ตัดสินง่ายขึ้น ซึ่งในโลก ML เรียกว่า feature engineering dsp.dew_point(t, rh) ใช้สูตร Magnus–Tetens คืนจุดน้ำค้าง (dew point ยิ่งเข้าใกล้อุณหภูมิ อากาศยิ่งอิ่มตัว) dsp.heat_index(t, rh) ใช้ Rothfusz regression คืน “อุณหภูมิที่รู้สึก” เช่น 32°C ที่ 40% ได้ราว 32°C แต่ที่ 80% ได้ราว 44°C ทั้งสองคำนวณบน CM33 ไม่ใช้ NPU และ dsp.comfort_zone คือ classifier สำเร็จรูปที่ตัดสินจากค่าดิบ t กับ rh ด้วยบันได if

หน่วยย่อยที่สุดของกฎคือ เส้นแบ่งเดียว ที่แบ่งโลกเป็นสองคลาส ตำแหน่งของเส้น (เช่น heat index 32) คือ hyperparameter ของกฎที่เราเลือกเอง จากความรู้หรือมาตรฐาน พอต้องการหลายคลาสเราเรียง if เป็น บันไดกฎ ไล่จากบนลงล่าง ขั้นแรกที่เป็นจริงชนะแล้ว return จบทันที กฎเหล็กคือ เงื่อนไขที่เฉพาะหรือรุนแรงกว่าต้องอยู่บน ถ้าวาง hi >= 32 ไว้เหนือ hi >= 41 ค่า 43 จะได้ hot และชั้น danger ไม่มีวันถูกเรียก เป็น dead branch ที่ compiler ไม่เตือน ต้องจับด้วยการทดสอบ

08_environment_dashboard.py เป็นแดชบอร์ดสามการ์ด (อุณหภูมิ ความชื้น ความดัน) ที่อ่านเซนเซอร์ชุดเดียวกับบทเรียนนี้ รันดูค่าดิบก่อน แล้วลองคิดว่าถ้าจะให้การ์ดบอก “สบายหรือไม่” ต้องเพิ่มค่าอนุพัทธ์ตัวไหน

ไฟล์ ไฟล์นี้สอน
examples/08_environment_dashboard.py Environment Dashboard: 3 การ์ด (อุณหภูมิ / ความชื้น / ความดัน)

คำถามชุดเดียวกันอยู่ใน quiz.yaml สำหรับระบบที่ตรวจอัตโนมัติ

  1. ข้อใดเป็นจุดแข็งของกฎมือเมื่อเทียบกับ ML (เลือกทุกข้อที่ถูก) (เลือกได้หลายข้อ · เป้าหมายข้อ 1)

    • ก) ไม่ต้องมีข้อมูลฝึก รันได้ทันที
    • ข) อธิบายได้ว่าคำตัดสินมาจากเงื่อนไขใด
    • ค) จับ pattern ซับซ้อนหลายสิบมิติได้ดี
    • ง) ปรับเส้นแบ่งตามข้อมูลใหม่ได้เอง
    เฉลย

    ก, ข — สองข้อหลังเป็นจุดแข็งของ ML ที่เรียนเส้นแบ่งจากข้อมูล ส่วนกฎมือเบา อธิบายได้ และไม่ต้องมีข้อมูลฝึก

  2. ทำไมบันไดกฎของบทเรียนนี้ตัดสิน hot และ danger จาก heat index แทนอุณหภูมิดิบ (เลือกหนึ่งข้อ · เป้าหมายข้อ 2)

    • ก) เพราะ heat index อ่านได้เร็วกว่า
    • ข) เพราะอุณหภูมิเท่ากันแต่ความชื้นต่างกันทำให้ร่างกายรู้สึกต่างกันมาก heat index รวมผลนั้นไว้แล้ว
    • ค) เพราะเซนเซอร์อุณหภูมิไม่แม่น
    • ง) เพราะ heat index เป็นจำนวนเต็มเสมอ
    เฉลย

    ข — 32°C ที่ความชื้น 80% รู้สึกเหมือนราว 44°C ถ้าตัดสินจากอุณหภูมิดิบจะพลาดภาวะร้อนอบอ้าวที่อันตรายจริง

  3. dew point เข้าใกล้อุณหภูมิอากาศมาก หมายความว่าอะไร (เลือกหนึ่งข้อ · เป้าหมายข้อ 2)

    • ก) อากาศแห้งมาก
    • ข) อากาศใกล้อิ่มตัว ชื้นมาก ไอน้ำใกล้จะกลั่นเป็นหยดน้ำ
    • ค) เซนเซอร์เสีย
    • ง) อุณหภูมิกำลังลดลงเร็ว
    เฉลย

    ข — เมื่อ RH เข้าใกล้ 100% ค่า ln(RH/100) เข้าใกล้ 0 ทำให้ dew point เข้าใกล้อุณหภูมิจริง ระยะห่าง t − Td จึงเป็นสัญญาณความชื้นที่ดี

  4. บันไดเขียนว่า if hi >= 32: return “hot” ไว้ก่อน if hi >= 41: return “danger” อินพุต hi = 43 จะได้อะไร (เลือกหนึ่งข้อ · เป้าหมายข้อ 3)

    • ก) danger
    • ข) hot และชั้น danger กลายเป็น dead branch ที่ไม่มีวันถูกเรียก
    • ค) error เพราะเงื่อนไขซ้อนกัน
    • ง) comfortable
    เฉลย

    ข — บันได return ขั้นแรกที่จริง 43 ≥ 32 จึงตอบ hot ก่อนถึงชั้น danger เงื่อนไขที่รุนแรงกว่าต้องอยู่บนเสมอ

  • ใน REPL เรียก dsp.heat_index(32, 40) และ dsp.heat_index(32, 80) จดผลลงบันทึกการเรียน
  • เรียก dsp.comfort_zone ด้วยค่าสามชุดที่ได้คลาสต่างกัน แล้วเขียนว่าค่าชุดไหนตกชั้นไหนของบันได
  • เขียนบันไดกฎ 6 ชั้นลงกระดาษ แล้วสลับสองชั้นบนเพื่อหาอินพุตที่ทำให้เกิด dead branch

บทเรียน 3.4 เราจะเขียน classify() ของตัวเองในไฟล์ s07_rule_classifier.py แล้วเทียบกับกฎสำเร็จรูปของเฟิร์มแวร์

บทเรียนถัดไป: บทเรียน 3.4 — ลงมือทำ: ตัวจำแนกความสบายด้วยกฎ

  • มีงานไหนที่คุณคิดว่าควรใช้กฎมากกว่า ML เพราะต้องอธิบายคำตัดสินได้หรือมีเกณฑ์กฎหมายกำหนดไว้แล้ว
  • ถ้าเซนเซอร์ของคุณมี 50 ค่า การเขียนบันไดกฎจะยากขึ้นตรงไหน

คำถามทบทวน

ลองตอบเองก่อน แล้วค่อยเปิดดูเฉลย

  1. ข้อใดเป็นจุดแข็งของกฎมือเมื่อเทียบกับ ML (เลือกทุกข้อที่ถูก) (เป้าหมายข้อ 1)

    1. ไม่ต้องมีข้อมูลฝึก รันได้ทันที
    2. อธิบายได้ว่าคำตัดสินมาจากเงื่อนไขใด
    3. จับ pattern ซับซ้อนหลายสิบมิติได้ดี
    4. ปรับเส้นแบ่งตามข้อมูลใหม่ได้เอง
    ดูเฉลย

    คำตอบ: A. ไม่ต้องมีข้อมูลฝึก รันได้ทันที · B. อธิบายได้ว่าคำตัดสินมาจากเงื่อนไขใด

    สองข้อหลังเป็นจุดแข็งของ ML ที่เรียนเส้นแบ่งจากข้อมูล ส่วนกฎมือเบา อธิบายได้ และไม่ต้องมีข้อมูลฝึก

  2. ทำไมบันไดกฎของบทเรียนนี้ตัดสิน hot และ danger จาก heat index แทนอุณหภูมิดิบ (เป้าหมายข้อ 2)

    1. เพราะ heat index อ่านได้เร็วกว่า
    2. เพราะอุณหภูมิเท่ากันแต่ความชื้นต่างกันทำให้ร่างกายรู้สึกต่างกันมาก heat index รวมผลนั้นไว้แล้ว
    3. เพราะเซนเซอร์อุณหภูมิไม่แม่น
    4. เพราะ heat index เป็นจำนวนเต็มเสมอ
    ดูเฉลย

    คำตอบ: B. เพราะอุณหภูมิเท่ากันแต่ความชื้นต่างกันทำให้ร่างกายรู้สึกต่างกันมาก heat index รวมผลนั้นไว้แล้ว

    32°C ที่ความชื้น 80% รู้สึกเหมือนราว 44°C ถ้าตัดสินจากอุณหภูมิดิบจะพลาดภาวะร้อนอบอ้าวที่อันตรายจริง

  3. dew point เข้าใกล้อุณหภูมิอากาศมาก หมายความว่าอะไร (เป้าหมายข้อ 2)

    1. อากาศแห้งมาก
    2. อากาศใกล้อิ่มตัว ชื้นมาก ไอน้ำใกล้จะกลั่นเป็นหยดน้ำ
    3. เซนเซอร์เสีย
    4. อุณหภูมิกำลังลดลงเร็ว
    ดูเฉลย

    คำตอบ: B. อากาศใกล้อิ่มตัว ชื้นมาก ไอน้ำใกล้จะกลั่นเป็นหยดน้ำ

    เมื่อ RH เข้าใกล้ 100% ค่า ln(RH/100) เข้าใกล้ 0 ทำให้ dew point เข้าใกล้อุณหภูมิจริง ระยะห่าง t − Td จึงเป็นสัญญาณความชื้นที่ดี

  4. บันไดเขียนว่า if hi >= 32: return "hot" ไว้ก่อน if hi >= 41: return "danger" อินพุต hi = 43 จะได้อะไร (เป้าหมายข้อ 3)

    1. danger
    2. hot และชั้น danger กลายเป็น dead branch ที่ไม่มีวันถูกเรียก
    3. error เพราะเงื่อนไขซ้อนกัน
    4. comfortable
    ดูเฉลย

    คำตอบ: B. hot และชั้น danger กลายเป็น dead branch ที่ไม่มีวันถูกเรียก

    บันได return ขั้นแรกที่จริง 43 ≥ 32 จึงตอบ hot ก่อนถึงชั้น danger เงื่อนไขที่รุนแรงกว่าต้องอยู่บนเสมอ

อ้างอิงบทเรียนนี้

ถ้านำบทเรียนนี้ไปสอน ทำสไลด์ หรือทำเอกสารต่อ ให้อ้างอิงด้วยข้อความนี้ ถ้าดัดแปลงเนื้อหา ให้เติม (ดัดแปลง)ต่อท้ายชื่อบทเรียน

"ค่าอนุพัทธ์และการจำแนกด้วยกฎ: dew point, heat index และบันไดกฎ" จาก TESA Open Knowledge โดยสมาคมสมองกลฝังตัวไทย (Thai Embedded Systems Association: TESA) https://github.com/tesaiot/tesa-qualification-program สัญญาอนุญาต CC BY-NC 4.0

ข้อความอ้างอิงภาษาอังกฤษ: "Derived metrics and rule-based classification: dew point, heat index and the rule ladder" from TESA Open Knowledge by the Thai Embedded Systems Association (TESA), https://github.com/tesaiot/tesa-qualification-program, licensed under CC BY-NC 4.0

ลิงก์บทเรียน: https://tesaiot.github.io/tesa-qualification-program/courses/edge-ai-developer/m03-processing/l03-rules-before-ml/

วิธีอ้างอิง TESA ฉบับเต็ม

TESA Open Knowledge · © 2026 สมาคมสมองกลฝังตัวไทย (TESA) · CC BY-NC 4.0

เนื้อหาเผยแพร่ภายใต้ CC BY-NC 4.0 นำไปใช้ต่อในงานที่ไม่ใช่เพื่อการค้าได้ โปรดอ้างอิงสมาคมสมองกลฝังตัวไทย (TESA) ทุกครั้ง · วิธีอ้างอิง TESA