AI กับงานโดรน
UAT 306 ปัญญาประดิษฐ์สำหรับระบบอากาศยานไร้คนขับ
บทเรียน
เมื่อเรียนจบโมดูลนี้ ผู้เรียนจะสามารถ
- กำหนดปัญหา AI ของงานโดรนให้วัดผลได้ และระบุค่าใช้จ่ายของความผิดพลาดแต่ละแบบ
- คำนวณค่าทำนายผลบวก (precision) เมื่อสิ่งที่ตรวจหาพบได้ยาก
- เลือกค่าขีดแบ่ง (threshold) จากค่าใช้จ่ายของการพลาดและการแจ้งเตือนผิด
- อธิบายขอบเขตที่ AI ช่วยตัดสินใจได้และส่วนที่คนต้องตรวจ
ทำไมต้องรู้
UAT 315 ปูพื้นฐาน AI และการมองเห็นด้วยคอมพิวเตอร์ไปแล้ว วิชานี้ลงลึกถึงการสร้าง ระบบ AI ที่ใช้งานจริง กับข้อมูลจากโดรน ขั้นแรกที่มักถูกข้ามคือการกำหนดปัญหาให้ชัด: ตรวจอะไร ผลใช้ตัดสินใจอะไร และความผิดพลาดแบบใดแพงกว่ากัน หน่วยความรู้เรื่อง AI และโดรนของคลังความรู้โดรนพาทำโครงงานตรวจจับวัตถุหนึ่งเรื่อง ตั้งแต่สิทธิ์ข้อมูล การแบ่งชุดฝึก การประเมิน จนถึง benchmark บน PC ตลอดวิชาใช้กรณี ตรวจรอยร้าวบนผิวคอนกรีตของสะพานจากภาพโดรน ตัวเลขเป็นข้อมูลสมมติ
กำหนดปัญหาให้วัดได้
ปัญหาเดียวกันเขียนได้หลายแบบ เช่น จำแนกภาพทั้งภาพว่ามีรอยร้าวหรือไม่ ตรวจจับตำแหน่งรอยร้าวเป็นกรอบ หรือแบ่งพิกเซลที่เป็นรอยร้าว แต่ละแบบต้องการ label ต่างกัน และวัดผลต่างกัน ก่อนเลือก ให้ถามว่าผู้ใช้จะทำอะไรกับผล ถ้าผลใช้คัดภาพให้วิศวกรดูต่อ การพลาดรอยร้าว (false negative) แพงกว่าการแจ้งผิด (false positive) มาก เพราะรอยร้าวที่พลาดอาจไม่มีใครเห็นอีก ส่วนภาพที่แจ้งผิดเสียแค่เวลาวิศวกรดูไม่กี่วินาที
เมื่อสิ่งที่หาพบได้ยาก
ความไว (sensitivity) และความจำเพาะ (specificity) ของตัวตรวจจับไม่ได้บอกว่า “ถ้าแจ้งว่ามี จะมีจริงกี่เปอร์เซ็นต์” ค่านั้นคือ ค่าทำนายผลบวก (PPV หรือ precision) ซึ่งขึ้นกับ ความชุก ของสิ่งที่หา ตามคำอธิบายของ Altman และ Bland (1994) ในบริบทการตรวจทางการแพทย์ ซึ่งใช้หลักเดียวกัน
ตัวอย่างที่ 1 ตัวตรวจจับที่ดีแต่ precision ต่ำ
ตัวตรวจจับมีความไว 0.95 และความจำเพาะ 0.98 ใช้กับภาพ 1,000 ภาพ
SE, SP, N = 0.95, 0.98, 1000
for prevalence in (0.20, 0.05, 0.01):
tp = SE * prevalence * N
fp = (1 - SP) * (1 - prevalence) * N
ppv = tp / (tp + fp)
print(f"crack in {prevalence:4.0%} of images: {tp:5.1f} true alarms, {fp:4.1f} false alarms, precision {ppv:.2f}")
crack in 20% of images: 190.0 true alarms, 16.0 false alarms, precision 0.92
crack in 5% of images: 47.5 true alarms, 19.0 false alarms, precision 0.71
crack in 1% of images: 9.5 true alarms, 19.8 false alarms, precision 0.32
ตัวตรวจจับตัวเดียวกันให้ precision สูงเมื่อรอยร้าวพบบ่อย แต่เมื่อรอยร้าวพบในภาพเพียง 1% การแจ้งเตือนส่วนใหญ่กลับเป็นการแจ้งผิด ตัวเลขความแม่นยำที่ผู้ขายโฆษณาจึงต้องถามว่าวัดจากชุดข้อมูลที่มีความชุกเท่าใด และต้องประเมินกับความชุกของงานจริง
เลือกขีดแบ่งจากค่าใช้จ่าย
ตัวตรวจจับส่วนใหญ่ให้ คะแนนความมั่นใจ แล้วเราเลือกขีดแบ่งเอง ขีดแบ่งต่ำจับรอยร้าวได้ครบแต่แจ้งผิดมาก ขีดแบ่งสูงแจ้งผิดน้อยแต่พลาดมาก ขีดแบ่งที่ดีที่สุดขึ้นกับค่าใช้จ่ายของความผิดพลาดแต่ละแบบ ไม่ใช่ค่า 0.5 ตามค่าเริ่มต้นของโปรแกรม
ตัวอย่างที่ 2 ขีดแบ่งที่ค่าใช้จ่ายรวมต่ำสุด
ชุดตรวจสอบ 1,000 ภาพ มีรอยร้าว 60 ภาพ ทีมประเมินว่าการพลาดรอยร้าวหนึ่งภาพมีค่าใช้จ่ายเท่ากับการตรวจภาพที่แจ้งผิด 50 ภาพ (คะแนนจำลอง)
import numpy as np
rng = np.random.default_rng(11)
pos = rng.normal(0.72, 0.12, 60).clip(0, 1) # คะแนนของภาพที่มีรอยร้าว
neg = rng.normal(0.35, 0.15, 940).clip(0, 1) # คะแนนของภาพปกติ
C_FN, C_FP = 50, 1
for t in (0.3, 0.4, 0.5, 0.6, 0.7):
fn, fp = int((pos < t).sum()), int((neg >= t).sum())
tp = len(pos) - fn
cost = C_FN * fn + C_FP * fp
print(f"threshold {t}: missed {fn:>2}, false alarms {fp:>3}, recall {tp / len(pos):.2f}, "
f"precision {tp / max(tp + fp, 1):.2f}, cost {cost}")
threshold 0.3: missed 0, false alarms 607, recall 1.00, precision 0.09, cost 607
threshold 0.4: missed 0, false alarms 363, recall 1.00, precision 0.14, cost 363
threshold 0.5: missed 2, false alarms 155, recall 0.97, precision 0.27, cost 255
threshold 0.6: missed 9, false alarms 45, recall 0.85, precision 0.53, cost 495
threshold 0.7: missed 26, false alarms 11, recall 0.57, precision 0.76, cost 1311
ขีดแบ่ง 0.5 ให้ค่าใช้จ่ายรวมต่ำสุดในชุดค่าที่ลอง แม้ precision จะต่ำ เพราะการพลาดรอยร้าวแพงกว่ามาก ถ้าเปลี่ยนสัดส่วนค่าใช้จ่าย ขีดแบ่งที่ดีที่สุดก็เปลี่ยน ทีมจึงต้องตกลงค่าใช้จ่ายกับผู้ใช้ก่อน แล้วเลือกขีดแบ่งจากชุดตรวจสอบ ไม่ใช่จากชุดทดสอบ
AI ช่วยตัดสินใจ ไม่ใช่ตัดสินใจแทน
ในงานตรวจโครงสร้าง AI เหมาะเป็น ตัวคัดกรอง ที่ลดจำนวนภาพที่คนต้องดู ส่วนการตัดสินว่าโครงสร้างปลอดภัยหรือไม่ยังเป็นหน้าที่ของวิศวกรผู้มีคุณสมบัติ ระบบที่ดีบอกความมั่นใจ แสดงตำแหน่งในภาพให้ตรวจได้ และบันทึกรุ่นโมเดลที่ใช้ เพื่อให้ตรวจย้อนได้เมื่อมีคำถาม
ปฏิบัติการประจำโมดูล
ปฏิบัติการ: กำหนดปัญหา AI ของงานจริง
- เลือกงานตรวจหนึ่งงาน เขียนว่าผู้ใช้จะทำอะไรกับผลของ AI
- เลือกรูปแบบปัญหา (จำแนก ตรวจจับ หรือแบ่งพิกเซล) พร้อมเหตุผล
- ประมาณความชุกของสิ่งที่หาในงานจริง คำนวณ precision ที่คาดได้ด้วยตัวอย่างที่ 1
- ตกลงสัดส่วนค่าใช้จ่ายของการพลาดกับการแจ้งผิดกับผู้ใช้ แล้วใช้ตัวอย่างที่ 2 เลือกขีดแบ่ง
- เขียนขอบเขตว่า AI ตัดสินใจอะไรได้ และอะไรต้องให้คนตรวจ
ข้อผิดพลาดที่พบบ่อย
ระวัง
- เริ่มเก็บข้อมูลก่อนกำหนดว่าผลใช้ทำอะไร
- ใช้ความแม่นยำ (accuracy) กับข้อมูลไม่สมดุล ซึ่งดูดีเกินจริง
- เชื่อ precision จากชุดข้อมูลที่ความชุกต่างจากงานจริง
- ใช้ขีดแบ่ง 0.5 ตามค่าเริ่มต้น โดยไม่คิดค่าใช้จ่าย
- ให้ AI ตัดสินความปลอดภัยแทนผู้เชี่ยวชาญ
สรุป
- กำหนดปัญหาจากสิ่งที่ผู้ใช้จะทำกับผล และระบุค่าใช้จ่ายของความผิดพลาดแต่ละแบบ
- precision ขึ้นกับความชุก ตัวตรวจจับที่ดีอาจแจ้งผิดเป็นส่วนใหญ่เมื่อสิ่งที่หาพบยาก
- เลือกขีดแบ่งที่ทำให้ค่าใช้จ่ายรวมต่ำสุด จากชุดตรวจสอบ
- AI เป็นตัวคัดกรองและผู้ช่วย การตัดสินสุดท้ายเป็นของผู้เชี่ยวชาญ
แบบฝึกตรวจความเข้าใจ
- ความไว 0.9 ความจำเพาะ 0.95 ความชุก 10% precision เท่าใด
- ทำไมความแม่นยำ (accuracy) จึงหลอกได้เมื่อข้อมูลไม่สมดุล
- ขีดแบ่งต่ำลง recall และ precision เปลี่ยนอย่างไรโดยทั่วไป
- ถ้าการพลาดแพงกว่าการแจ้งผิดมาก ควรเลื่อนขีดแบ่งไปทางใด
- ทำไมต้องเลือกขีดแบ่งจากชุดตรวจสอบ ไม่ใช่ชุดทดสอบ
เฉลย
- ถ้ารอยร้าวพบ 1% โมเดลที่ตอบว่า “ไม่มี” ทุกภาพก็ได้ความแม่นยำ 99%
- recall เพิ่มขึ้น precision มักลดลง
- ต่ำลง เพื่อจับให้ได้มากขึ้น
- ชุดทดสอบต้องเก็บไว้ประเมินครั้งสุดท้าย ถ้าใช้เลือกค่า ผลประเมินจะดีเกินจริง
สรุปสูตรสำคัญ
| ค่าทำนายผลบวก (precision) จากความชุก | |
| ค่าใช้จ่ายรวมที่ขีดแบ่ง t |
แหล่งอ้างอิงหลัก
อ่านเพิ่มเติม
ศึกษาหน่วยความรู้ที่กำหนดล่วงหน้า ดูสื่อประกอบ และทำ quiz ประจำโมดูล
ในชั้นเรียน / ภาคสนาม
ปฏิบัติการในห้องแล็บหรือภาคสนามตามใบงาน พร้อม checklist ความปลอดภัย
หลักฐานการเรียนรู้: ใบงานที่ผ่านการตรวจและผล quiz