คำตอบสั้นๆ: การประมวลผลล่วงหน้าของ AI คือชุดขั้นตอนที่ทำซ้ำได้ ซึ่งเปลี่ยนข้อมูลดิบที่มีความแปรปรวนสูงให้เป็นข้อมูลป้อนเข้าโมเดลที่สม่ำเสมอ รวมถึงการทำความสะอาด การเข้ารหัส การปรับขนาด การแบ่งคำ และการแปลงภาพ ขั้นตอนนี้มีความสำคัญ เพราะหากข้อมูลป้อนเข้าสำหรับการฝึกอบรมและข้อมูลป้อนเข้าสำหรับการใช้งานจริงแตกต่างกัน โมเดลอาจล้มเหลวโดยไม่มีการแจ้งเตือน หากขั้นตอนใด "เรียนรู้" พารามิเตอร์ ควรใช้กับข้อมูลฝึกอบรมเท่านั้นเพื่อหลีกเลี่ยงการรั่วไหล
การประมวลผลล่วงหน้าของ AI คือทุกสิ่งที่คุณทำกับข้อมูลดิบก่อน (และบางครั้งระหว่าง) การฝึกอบรมหรือการอนุมาน เพื่อให้โมเดลสามารถเรียนรู้จากข้อมูลนั้นได้ ไม่ใช่แค่ "การทำความสะอาด" เท่านั้น มันคือการทำความสะอาด การจัดรูปแบบ การปรับขนาด การเข้ารหัส การเพิ่มประสิทธิภาพ และการบรรจุข้อมูลให้เป็นรูปแบบที่สอดคล้องกัน ซึ่งจะไม่ทำให้โมเดลของคุณทำงานผิดพลาดในภายหลัง [1]
ประเด็นสำคัญ:
คำจำกัดความ: การประมวลผลล่วงหน้าจะแปลงตารางข้อมูลดิบ ข้อความ รูปภาพ และบันทึกต่างๆ ให้เป็นคุณลักษณะที่พร้อมใช้งานสำหรับแบบจำลอง
ความสม่ำเสมอ: ใช้การแปลงข้อมูลแบบเดียวกันทั้งในระหว่างการฝึกฝนและการอนุมานเพื่อป้องกันข้อผิดพลาดที่เกิดจากความไม่ตรงกัน
การรั่วไหล: ปรับใช้ตัวปรับขนาด ตัวเข้ารหัส และตัวแยกโทเค็นกับข้อมูลฝึกฝนเท่านั้น
ความสามารถในการทำซ้ำ: สร้างไปป์ไลน์ที่มีสถิติที่ตรวจสอบได้ ไม่ใช่ลำดับเซลล์ในสมุดบันทึกแบบเฉพาะกิจ
การตรวจสอบการผลิต: ติดตามความคลาดเคลื่อนและการเบี่ยงเบน เพื่อป้องกันไม่ให้ปัจจัยนำเข้าค่อยๆกัดกร่อนประสิทธิภาพ
บทความที่คุณอาจสนใจอ่านต่อหลังจากบทความนี้:
🔗 วิธีทดสอบโมเดล AI เพื่อประสิทธิภาพในโลกแห่งความเป็นจริง
วิธีการเชิงปฏิบัติเพื่อประเมินความถูกต้อง ความทนทาน และอคติได้อย่างรวดเร็ว.
🔗 การแปลงข้อความเป็นเสียงพูดเป็น AI คืออะไร และทำงานอย่างไร
อธิบายพื้นฐานของ TTS การใช้งานหลัก และข้อจำกัดทั่วไปในปัจจุบัน.
🔗 ปัจจุบัน AI สามารถอ่านลายมือเขียนหวัดได้อย่างแม่นยำหรือไม่
ครอบคลุมถึงความท้าทายในการจดจำ เครื่องมือที่ดีที่สุด และเคล็ดลับด้านความแม่นยำ.
🔗 AI มีความแม่นยำแค่ไหนในการทำภารกิจทั่วไป
วิเคราะห์ปัจจัยด้านความแม่นยำ เกณฑ์มาตรฐาน และความน่าเชื่อถือในโลกแห่งความเป็นจริง.
การประมวลผลข้อมูลเบื้องต้นของ AI ในภาษาที่เข้าใจง่าย (และสิ่งที่ไม่ใช่) 🤝
การประมวลผลข้อมูลเบื้องต้นสำหรับ AI คือการแปลงข้อมูลดิบ (ตาราง ข้อความ รูปภาพ บันทึก) ให้เป็นคุณลักษณะที่พร้อมใช้งานสำหรับโมเดล หากเปรียบเทียบข้อมูลดิบกับโรงรถที่รก การประมวลผลข้อมูลเบื้องต้นก็เหมือนกับการที่คุณติดป้ายกำกับกล่อง คัดแยกสิ่งของที่ชำรุด และจัดเรียงสิ่งต่างๆ ให้เป็นระเบียบ เพื่อให้คุณสามารถเดินผ่านได้อย่างปลอดภัย
ไม่ใช่ตัวแบบจำลองเอง แต่เป็นสิ่งต่างๆ ที่ทำให้แบบจำลองนั้นเป็นไปได้:
-
การแปลงหมวดหมู่ให้เป็นตัวเลข (หนึ่งร้อน, ลำดับ, เป็นต้น) [1]
-
การปรับขนาดช่วงตัวเลขขนาดใหญ่ให้เป็นช่วงที่เหมาะสม (การกำหนดมาตรฐาน ค่าต่ำสุด-สูงสุด ฯลฯ) [1]
-
การแยกข้อความออกเป็นรหัสอินพุต (และโดยปกติจะเป็นหน้ากากความสนใจ) [3]
-
การปรับขนาด/ครอบตัดภาพและการใช้การแปลงแบบกำหนดหรือแบบสุ่มอย่างเหมาะสม [4]
-
สร้างไปป์ไลน์ที่ทำซ้ำได้เพื่อให้การฝึกอบรมและอินพุต "ในชีวิตจริง" ไม่แตกต่างกันในลักษณะที่แนบเนียน [2]
ข้อควรจำเล็กน้อย: “การประมวลผลล่วงหน้า” รวมถึง ทุกสิ่งที่เกิดขึ้นอย่างสม่ำเสมอก่อนที่โมเดลจะเห็นข้อมูลป้อนเข้าทีมบางทีมแบ่งขั้นตอนนี้ออกเป็น “การสร้างคุณลักษณะ” กับ “การทำความสะอาดข้อมูล” แต่ในความเป็นจริง เส้นแบ่งเหล่านั้นไม่ชัดเจน

เหตุใดการประมวลผลล่วงหน้าด้วย AI จึงมีความสำคัญมากกว่าที่หลายคนยอมรับ 😬
โมเดลคือเครื่องมือจับคู่รูปแบบ ไม่ใช่เครื่องมืออ่านใจ ถ้าข้อมูลป้อนเข้าไม่สอดคล้องกัน โมเดลก็จะเรียนรู้กฎที่ไม่สอดคล้องกัน นี่ไม่ใช่เชิงปรัชญา แต่เป็นความจริงที่เจ็บปวด.
การประมวลผลล่วงหน้าช่วยคุณได้ดังนี้:
-
ปรับปรุงเสถียรภาพการเรียนรู้ โดยการใส่คุณลักษณะลงในการแสดงผลที่ผู้ประมาณค่าสามารถใช้งานได้อย่างน่าเชื่อถือ (โดยเฉพาะอย่างยิ่งเมื่อมีการปรับขนาด/การเข้ารหัส) [1]
-
ลดสัญญาณรบกวน โดยทำให้ความเป็นจริงที่ยุ่งเหยิงดูเหมือนสิ่งที่แบบจำลองสามารถนำไปใช้สรุปได้ (แทนที่จะจดจำสิ่งผิดปกติเหล่านั้น)
-
ป้องกันโหมดความล้มเหลวเงียบๆ เช่น การรั่วไหลและความไม่ตรงกันระหว่างการฝึกอบรม/การให้บริการ (ประเภทที่ดู “ยอดเยี่ยม” ในการตรวจสอบ แต่กลับล้มเหลวอย่างสิ้นเชิงในการใช้งานจริง) [2]
-
เร่งความเร็วในการทำซ้ำ เพราะการแปลงที่ทำซ้ำได้นั้นดีกว่าการเขียนโค้ดแบบยุ่งเหยิงในสมุดบันทึกทุกวัน
นอกจากนี้ ประสิทธิภาพของโมเดลส่วนใหญ่ก็มาจากตรงนี้ด้วย มากจริงๆ บางครั้งก็รู้สึกไม่ยุติธรรม แต่ก็เป็นความจริง 🙃
อะไรคือสิ่งที่ทำให้ไปป์ไลน์การประมวลผลล่วงหน้า AI ที่ดี ✅
โดยทั่วไปแล้ว “การประมวลผลเบื้องต้นที่ดี” มักมีคุณสมบัติดังต่อไปนี้:
-
สามารถทำซ้ำได้: ข้อมูลนำเข้าเหมือนกัน → ผลลัพธ์เหมือนกัน (ไม่มีความสุ่มแบบไม่ทราบสาเหตุ เว้นแต่จะเป็นการเพิ่มจำนวนโดยเจตนา)
-
ความสอดคล้องระหว่างการฝึกฝนและการให้บริการ: สิ่งที่คุณทำในระหว่างการฝึกฝนจะถูกนำไปใช้ในลักษณะเดียวกันในระหว่างการอนุมาน (พารามิเตอร์ที่ปรับให้เหมาะสมเหมือนกัน แผนที่หมวดหมู่เหมือนกัน การกำหนดค่าโทเคไนเซอร์เหมือนกัน ฯลฯ) [2]
-
ปลอดภัยจากการรั่วไหล: ไม่มีสิ่งใดในการประเมิน/ทดสอบที่มีผลต่อ
การติดตั้ง(จะกล่าวถึงกับดักนี้เพิ่มเติมในภายหลัง) [2] -
สังเกตได้: คุณสามารถตรวจสอบสิ่งที่เปลี่ยนแปลงไปได้ (สถิติของฟีเจอร์ จำนวนข้อมูลที่หายไป จำนวนหมวดหมู่) ดังนั้นการแก้ไขข้อผิดพลาดจึงไม่ใช่แค่การคาดเดาอีกต่อไป
ถ้าการประมวลผลล่วงหน้าของคุณคือกลุ่มเซลล์ในสมุดบันทึกที่ชื่อว่า final_v7_really_final_ok… คุณก็คงเข้าใจดี มันใช้งานได้จนกระทั่งมันใช้งานไม่ได้ 😬
องค์ประกอบหลักของการประมวลผลล่วงหน้าของ AI 🧱
ลองนึกถึงขั้นตอนการเตรียมข้อมูลเบื้องต้นว่าเป็นชุดของส่วนประกอบพื้นฐานที่คุณนำมาประกอบกันเป็นกระบวนการทำงาน.
1) การทำความสะอาดและการตรวจสอบความถูกต้อง 🧼
งานที่ต้องทำโดยทั่วไป:
-
ลบรายการที่ซ้ำกัน
-
จัดการกับค่าที่หายไป (ตัดทิ้ง เติมค่าที่หายไป หรือแสดงค่าที่หายไปอย่างชัดเจน)
-
บังคับใช้ประเภท หน่วย และช่วง
-
ตรวจจับข้อมูลป้อนเข้าที่ผิดรูปแบบ
-
กำหนดรูปแบบข้อความให้เป็นมาตรฐาน (ช่องว่าง, กฎการใช้ตัวพิมพ์ใหญ่-เล็ก, ข้อกำหนดเฉพาะของยูนิโค้ด)
ส่วนนี้อาจไม่ดูหรูหรา แต่ช่วยป้องกันความผิดพลาดโง่ๆ ได้อย่างแน่นอน ผมพูดด้วยความหวังดี.
2) การเข้ารหัสข้อมูลเชิงหมวดหมู่ 🔤
โมเดลส่วนใหญ่ไม่สามารถใช้สตริงดิบๆ เช่น "red" หรือ "premium_user"ได้
แนวทางทั่วไป:
-
การเข้ารหัสแบบวันฮอต (หมวดหมู่ → คอลัมน์ไบนารี) [1]
-
การเข้ารหัสลำดับ (หมวดหมู่ → รหัสจำนวนเต็ม) [1]
สิ่งสำคัญไม่ใช่ว่า ตัวไหน แต่เป็นการที่การแมปยังคงสม่ำเสมอและไม่ “เปลี่ยนรูปร่าง” ระหว่างการฝึกและการอนุมาน นั่นคือวิธีที่คุณจะได้โมเดลที่ดูดีแบบออฟไลน์และทำงานผิดปกติแบบออนไลน์ [2]
3) การปรับขนาดและการทำให้เป็นมาตรฐานของฟีเจอร์ 📏
การปรับขนาดมีความสำคัญเมื่อฟีเจอร์ต่างๆ อยู่ในช่วงที่แตกต่างกันอย่างมาก.
สองผลงานคลาสสิก:
-
การทำให้เป็นมาตรฐาน: ลบค่าเฉลี่ยและปรับขนาดให้มีความแปรปรวนเป็นหนึ่ง [1]
-
การปรับขนาดแบบ Min-max: ปรับขนาดคุณลักษณะแต่ละอย่างให้อยู่ในช่วงที่กำหนด [1]
แม้ว่าคุณจะใช้โมเดลที่ "รับมือได้ในระดับหนึ่ง" ก็ตาม การปรับขนาดมักจะทำให้กระบวนการทำงานเข้าใจง่ายขึ้น และยากที่จะเกิดข้อผิดพลาดโดยไม่ตั้งใจ.
4) การสร้างฟีเจอร์ (หรือเรียกอีกอย่างว่า การโกงอย่างมีประโยชน์) 🧪
ตรงนี้คุณจะช่วยให้โมเดลทำงานได้ง่ายขึ้นโดยการสร้างสัญญาณที่ดีขึ้น:
-
อัตราส่วน (จำนวนคลิก / จำนวนการแสดงผล)
-
ช่วงเวลาการเลื่อน (N วันที่ผ่านมา)
-
จำนวน (เหตุการณ์ต่อผู้ใช้)
-
การแปลงลอการิทึมสำหรับการกระจายแบบหางหนา
การสร้างฟีเจอร์นั้นมีศิลปะอยู่ บางครั้งคุณอาจสร้างฟีเจอร์ขึ้นมา รู้สึกภูมิใจ...แต่สุดท้ายมันไม่ได้ผลอะไรเลย หรือแย่กว่านั้นคือมันกลับทำให้ผิดหวัง นั่นเป็นเรื่องปกติ อย่าไปผูกพันกับฟีเจอร์มากเกินไป เพราะมันไม่ได้รักคุณกลับหรอกนะ 😅
5) การแบ่งข้อมูลอย่างถูกวิธี ✂️
ฟังดูเหมือนเรื่องพื้นฐาน จนกระทั่งมันไม่ใช่เช่นนั้น:
-
การแบ่งแบบสุ่มสำหรับข้อมูล iid
-
การแบ่งตามเวลาสำหรับอนุกรมเวลา
-
การแบ่งกลุ่มเกิดขึ้นเมื่อเอนทิตีซ้ำกัน (ผู้ใช้ อุปกรณ์ ผู้ป่วย)
และที่สำคัญ: แบ่งก่อนปรับการประมวลผลล่วงหน้าที่เรียนรู้จากข้อมูลหากขั้นตอนการประมวลผลล่วงหน้าของคุณ "เรียนรู้" พารามิเตอร์ (เช่น ค่าเฉลี่ย คำศัพท์ แผนที่หมวดหมู่) จะต้องเรียนรู้จากข้อมูลการฝึกอบรมเท่านั้น [2]
การประมวลผลข้อมูลเบื้องต้นด้วย AI ตามประเภทข้อมูล: ตาราง ข้อความ รูปภาพ 🎛️
การประมวลผลล่วงหน้าจะเปลี่ยนแปลงรูปร่างไปตามข้อมูลที่คุณป้อนให้กับโมเดล.
ข้อมูลในรูปแบบตาราง (สเปรดชีต บันทึกข้อมูล ฐานข้อมูล) 📊
ขั้นตอนทั่วไป:
-
กลยุทธ์ค่าที่หายไป
-
การเข้ารหัสเชิงหมวดหมู่ [1]
-
การปรับขนาดคอลัมน์ตัวเลข [1]
-
การจัดการค่าผิดปกติ (กฎของโดเมนดีกว่าการ "ตัดค่าแบบสุ่ม" ในกรณีส่วนใหญ่)
-
คุณลักษณะที่ได้มา (การรวมกลุ่ม, ความล่าช้า, สถิติแบบหมุนเวียน)
คำแนะนำที่เป็นประโยชน์: กำหนดกลุ่มคอลัมน์ให้ชัดเจน (ตัวเลข เทียบกับ หมวดหมู่ เทียบกับ ตัวระบุ) ตัวคุณในอนาคตจะขอบคุณคุณแน่นอน.
ข้อมูลข้อความ (NLP) 📝
การประมวลผลข้อความเบื้องต้นมักประกอบด้วย:
-
การแยกคำออกเป็นโทเค็น/คำย่อย
-
การแปลงเป็น รหัสอินพุต
-
การเติม/การตัดทอน
-
การสร้าง หน้ากากความสนใจ สำหรับการจัดกลุ่ม [3]
กฎเล็กๆ ที่ช่วยลดความยุ่งยาก: สำหรับการตั้งค่าแบบ Transformer ให้ปฏิบัติตามการตั้งค่าโทเคไนเซอร์ที่โมเดลกำหนดไว้ และอย่าปรับเปลี่ยนเองโดยไม่มีเหตุผล การปรับเปลี่ยนเองจะทำให้คุณได้ผลลัพธ์ที่ว่า "มันฝึกได้แต่แปลกๆ"
ภาพ (คอมพิวเตอร์วิชั่น) 🖼️
ขั้นตอนการประมวลผลเบื้องต้นโดยทั่วไป:
-
ปรับขนาด/ตัดขอบให้ได้รูปทรงที่สม่ำเสมอ
-
การแปลงเชิงกำหนดสำหรับการประเมินผล
-
การแปลงแบบสุ่มสำหรับการเพิ่มประสิทธิภาพการฝึกอบรม (เช่น การตัดแบบสุ่ม) [4]
รายละเอียดหนึ่งที่คนมักมองข้าม: “การแปลงแบบสุ่ม” ไม่ใช่แค่ความรู้สึก แต่เป็นการสุ่มตัวอย่างพารามิเตอร์ทุกครั้งที่มีการเรียกใช้ เหมาะสำหรับการฝึกฝนที่หลากหลาย แต่แย่มากสำหรับการประเมินผลหากคุณลืมปิดการสุ่ม [4]
กับดักที่ทุกคนตกหลุมพราง: การรั่วไหลของข้อมูล 🕳️🐍
การรั่วไหลเกิดขึ้นเมื่อข้อมูลจากข้อมูลการประเมินผลแอบเข้าไปในข้อมูลการฝึกฝน ซึ่งมักเกิดขึ้นผ่านขั้นตอนการประมวลผลล่วงหน้า สิ่งนี้อาจทำให้โมเดลของคุณดูดีเยี่ยมในระหว่างการตรวจสอบความถูกต้อง แต่กลับทำให้คุณผิดหวังในโลกแห่งความเป็นจริง.
รูปแบบการรั่วไหลที่พบได้ทั่วไป:
-
การปรับขนาดโดยใช้สถิติชุดข้อมูลทั้งหมด (แทนที่จะใช้เฉพาะการฝึกอบรม) [2]
-
การสร้างแผนที่หมวดหมู่โดยใช้การฝึกฝนและการทดสอบร่วมกัน [2]
-
ขั้นตอน
fit()หรือfit_transform()ใดๆ ที่ “มองเห็น” ชุดทดสอบ [2]
หลักการง่ายๆ (ตรงไปตรงมา แต่ได้ผล):
-
อุปกรณ์ใดๆ ที่มี สำหรับฝึกความกระชับ ควรใช้สำหรับการฝึกซ้อมเท่านั้น
-
จากนั้นคุณ แปลง การตรวจสอบ/ทดสอบโดยใช้ตัวแปลงที่เหมาะสมนั้น [2]
และหากคุณต้องการตรวจสอบแบบคร่าวๆ ว่า “มันจะแย่แค่ไหนกันเชียว?” เอกสารของ scikit-learn เองก็แสดงตัวอย่างการรั่วไหลที่ลำดับการประมวลผลล่วงหน้าที่ไม่ถูกต้องทำให้ความแม่นยำอยู่ที่ประมาณ 0.76 บนเป้าหมายแบบสุ่ม จากนั้นลดลงเหลือประมาณ0.5 เมื่อแก้ไขการรั่วไหลแล้ว นั่นแสดงให้เห็นว่าการรั่วไหลที่ผิดพลาดนั้นดูน่าเชื่อถือเพียงใด [2]
นำขั้นตอนการประมวลผลเบื้องต้นเข้าสู่กระบวนการผลิตได้อย่างราบรื่นโดยไม่เกิดความวุ่นวาย 🏗️
โมเดลจำนวนมากไม่ประสบความสำเร็จในการใช้งานจริง ไม่ใช่เพราะโมเดลนั้น "ไม่ดี" แต่เป็นเพราะ ความเป็นจริงของข้อมูลป้อนเข้า เปลี่ยนแปลงไป หรือกระบวนการทำงานของคุณเปลี่ยนไป
การประมวลผลข้อมูลเบื้องต้นที่มุ่งเน้นการผลิตมักประกอบด้วย:
-
บันทึกอาร์ติแฟกต์ (การแมปตัวเข้ารหัส พารามิเตอร์สเกลเลอร์ การกำหนดค่าโทเคไนเซอร์) เพื่อให้การอนุมานใช้การแปลงที่เรียนรู้แบบเดียวกันเป๊ะ [2]
-
ข้อกำหนดการรับข้อมูลที่เข้มงวด (คอลัมน์/ประเภท/ช่วงที่คาดหวัง)
-
การตรวจสอบความเบี่ยงเบนและการเคลื่อนตัวเนื่องจากข้อมูลการผลิต จะ มีการเปลี่ยนแปลง [5]
หากคุณต้องการคำจำกัดความที่ชัดเจน: การตรวจสอบโมเดล Vertex AI ของ Google แยกความแตกต่างระหว่าง ความเบี่ยงเบนในการให้บริการการฝึกอบรม (การกระจายการผลิตเบี่ยงเบนจากการฝึกอบรม) และ การเคลื่อนตัวของการอนุมาน (การกระจายการผลิตเปลี่ยนแปลงไปตามเวลา) และรองรับการตรวจสอบทั้งคุณลักษณะเชิงหมวดหมู่และเชิงตัวเลข [5]
เพราะเรื่องเซอร์ไพรส์นั้นมีราคาแพง และไม่ใช่เรื่องเซอร์ไพรส์ที่สนุกสนานด้วย.
ตารางเปรียบเทียบ: เครื่องมือประมวลผลล่วงหน้าและการตรวจสอบทั่วไป (และเหมาะสำหรับใคร) 🧰
| เครื่องมือ / ไลบรารี | เหมาะที่สุดสำหรับ | ราคา | เหตุผลที่มันได้ผล (และความซื่อสัตย์เล็กน้อย) |
|---|---|---|---|
| การประมวลผลล่วงหน้าของ scikit-learn | ไปป์ไลน์ ML แบบตาราง | ฟรี | ตัวเข้ารหัสแบบแข็ง + ตัวปรับขนาด (OneHotEncoder, StandardScaler เป็นต้น) และพฤติกรรมที่คาดเดาได้ [1] |
| ตัวสร้างโทเค็นรูปหน้ากอด | การเตรียมข้อมูลป้อนเข้าสำหรับ NLP | ฟรี | สร้างรหัสอินพุต + หน้ากากความสนใจอย่างสม่ำเสมอในทุกรอบ/โมเดล [3] |
| torchvision เปลี่ยนแปลง | การมองเห็นเปลี่ยนแปลง + เสริมประสิทธิภาพ | ฟรี | วิธีที่เรียบร้อยในการผสมการแปลงแบบกำหนดและแบบสุ่มในไปป์ไลน์เดียว [4] |
| การตรวจสอบโมเดล AI ของ Vertex | การตรวจจับการเบี่ยงเบน/การคลาดเคลื่อนในสภาพแวดล้อมการผลิต | ชำระเงิน (ระบบคลาวด์) | มอนิเตอร์มีคุณสมบัติการเบี่ยงเบน/การเลื่อน และแจ้งเตือนเมื่อเกินเกณฑ์ [5] |
(ใช่แล้ว โต๊ะนี้ก็ยังมีความคิดเห็นอยู่ แต่เป็นความคิดเห็นที่ตรงไปตรงมานะ 😅)
รายการตรวจสอบการเตรียมข้อมูลที่ใช้งานได้จริง 📌
ก่อนการฝึกซ้อม
-
กำหนดรูปแบบข้อมูลขาเข้า (ประเภท หน่วย ช่วงที่อนุญาต)
-
ตรวจสอบค่าที่หายไปและข้อมูลซ้ำซ้อน
-
แบ่งข้อมูลอย่างถูกวิธี (แบบสุ่ม / ตามเวลา / ตามกลุ่ม)
-
การประมวลผลล่วงหน้าที่เหมาะสมกับ การฝึกอบรมเท่านั้น (
fit/fit_transformยังคงอยู่กับการฝึกอบรม) [2] -
บันทึกสิ่งประดิษฐ์การประมวลผลล่วงหน้าเพื่อให้การอนุมานสามารถนำกลับมาใช้ใหม่ได้ [2]
ระหว่างการฝึกอบรม
-
ใช้การเพิ่มประสิทธิภาพแบบสุ่มเฉพาะเมื่อเหมาะสม (โดยปกติจะใช้เฉพาะการแบ่งการฝึกอบรมเท่านั้น) [4]
-
รักษาการประมวลผลล่วงหน้าของการประเมินให้เป็นแบบกำหนด [4]
-
ติดตามการเปลี่ยนแปลงการประมวลผลล่วงหน้า เช่น การเปลี่ยนแปลงโมเดล (เพราะมันเป็นเช่นนั้นจริงๆ)
ก่อนการใช้งานจริง
-
ตรวจสอบให้แน่ใจว่าการอนุมานใช้เส้นทางการประมวลผลล่วงหน้าและสิ่งประดิษฐ์ที่เหมือนกัน [2]
-
ตั้งค่าการตรวจสอบการเบี่ยงเบน/ความเอียง (แม้แต่การตรวจสอบการกระจายคุณลักษณะพื้นฐานก็มีประโยชน์มาก) [5]
เจาะลึก: ข้อผิดพลาดทั่วไปในการประมวลผลข้อมูลเบื้องต้น (และวิธีหลีกเลี่ยง) 🧯
ความผิดพลาดข้อที่ 1: “เดี๋ยวฉันก็จะทำให้ทุกอย่างกลับสู่สภาวะปกติได้อย่างรวดเร็ว” 😵
หากคุณคำนวณพารามิเตอร์การปรับขนาดบนชุดข้อมูลทั้งหมด คุณกำลังเปิดเผยข้อมูลการประเมิน ฝึกฝนบนชุดข้อมูลฝึกฝน แล้วแปลงส่วนที่เหลือ [2]
ข้อผิดพลาดที่ 2: การจัดหมวดหมู่ที่สับสนวุ่นวาย 🧩
หากการแมปหมวดหมู่ของคุณเปลี่ยนไประหว่างการฝึกอบรมและการอนุมาน โมเดลของคุณอาจอ่านโลกผิดพลาดโดยไม่รู้ตัว รักษาการแมปให้คงที่ผ่านอาร์ติแฟกต์ที่บันทึกไว้ [2]
ข้อผิดพลาดที่ 3: การสุ่มเพิ่มข้อมูลเข้าไปในการประเมินผล 🎲
การแปลงแบบสุ่มนั้นยอดเยี่ยมในการฝึกอบรม แต่ไม่ควรเปิดใช้งานแบบลับๆ เมื่อคุณพยายามวัดประสิทธิภาพ (สุ่มก็คือสุ่ม) [4]
ข้อคิดส่งท้าย 🧠✨
การประมวลผลล่วงหน้าสำหรับ AI คือศิลปะอันมีระเบียบวินัยในการเปลี่ยนความเป็นจริงที่ยุ่งเหยิงให้กลายเป็นข้อมูลป้อนเข้าโมเดลที่สอดคล้องกัน ครอบคลุมถึงการทำความสะอาด การเข้ารหัส การปรับขนาด การแบ่งคำ การแปลงภาพ และที่สำคัญที่สุดคือไปป์ไลน์และผลลัพธ์ที่ทำซ้ำได้
-
ดำเนินการประมวลผลล่วงหน้าอย่างรอบคอบ ไม่ใช่ทำแบบสุ่ม [2]
-
แยกก่อน ปรับให้เข้ากับการฝึกเท่านั้น หลีกเลี่ยงการรั่วไหล [2]
-
ใช้การประมวลผลล่วงหน้าที่เหมาะสมกับรูปแบบ (โทเคไนเซอร์สำหรับข้อความ การแปลงสำหรับรูปภาพ) [3][4]
-
ตรวจสอบความเบี่ยงเบน/การเคลื่อนตัวของการผลิตเพื่อไม่ให้โมเดลของคุณค่อยๆ เคลื่อนตัวไปสู่ความไร้สาระ [5]
และถ้าคุณติดขัด ให้ถามตัวเองว่า
“ขั้นตอนการประมวลผลล่วงหน้านี้จะยังคงเหมาะสมอยู่ไหม ถ้าฉันนำไปใช้กับข้อมูลใหม่ในวันพรุ่งนี้?”
ถ้าคำตอบคือ “อืม… อาจจะ?” นั่นแหละคือเบาะแสของคุณ 😬
ตัวอย่างในโลกแห่งความเป็นจริง: การสร้างไปป์ไลน์การประมวลผลล่วงหน้าที่ปลอดภัยจากการรั่วไหลสำหรับการคาดการณ์การเลิกใช้บริการ
สถานการณ์
ลองนึกภาพทีมพัฒนาซอฟต์แวร์แบบ SaaS ขนาดเล็กที่พยายามคาดการณ์ว่าลูกค้ารายใดมีแนวโน้มที่จะยกเลิกบริการในอีก 30 วันข้างหน้า ข้อมูลดิบของพวกเขาอยู่ในสามที่ ได้แก่ ข้อมูลการเรียกเก็บเงิน บันทึกการใช้งานผลิตภัณฑ์ และตั๋วแจ้งปัญหาจากฝ่ายสนับสนุน.
โมเดลเวอร์ชันแรกดูดีเยี่ยมในขั้นตอนการตรวจสอบความถูกต้อง แต่กลับทำงานได้ไม่ดีเมื่อทดสอบกับลูกค้ากลุ่มใหม่ในเดือนถัดไป ปัญหาไม่ได้อยู่ที่โครงสร้างของโมเดล แต่เป็นขั้นตอนการประมวลผลล่วงหน้า.
ทีมงานปรับขนาดคุณลักษณะเชิงตัวเลขโดยไม่ได้ตั้งใจโดยใช้ชุดข้อมูลทั้งหมด สร้างแผนที่หมวดหมู่จากข้อมูลฝึกฝนและข้อมูลทดสอบเข้าด้วยกัน และรวมแท็กตั๋วสนับสนุนที่เพิ่มเข้ามาหลังจากยกเลิกเท่านั้น การรั่วไหลแบบคลาสสิก เจ็บปวด แต่แก้ไขได้ [2]
สิ่งที่ท่อส่งต้องการ
การจัดเตรียมที่ใช้งานได้จริงจะประกอบด้วย:
-
โครงสร้างข้อมูลขาเข้าคงที่: customer_id, plan_type, account_age_days, logins_30d, tickets_30d, last_payment_status, region
-
การแบ่งช่วงเวลาฝึกซ้อม เช่น ฝึกซ้อมในช่วงเดือนมกราคม-กันยายน และทดสอบในเดือนตุลาคม
-
การปรับขนาดเชิงตัวเลขใช้เฉพาะกับชุดข้อมูลฝึกฝนเท่านั้น
-
ตัวเข้ารหัสเชิงหมวดหมู่ถูกปรับให้เหมาะสมเฉพาะกับชุดข้อมูลฝึกฝนเท่านั้น
-
มีการบันทึกไปป์ไลน์การประมวลผลล่วงหน้าไว้ เพื่อให้การผลิตใช้การแมปและค่าสเกลเลอร์เดียวกัน
-
การตรวจสอบเบื้องต้นเพื่อตรวจสอบว่าคอลัมน์ใดหายไป หมวดหมู่ใดไม่เคยพบ และการเปลี่ยนแปลงการกระจายข้อมูลหลังจากปรับใช้แล้ว
กฎหลักนั้นง่าย: แบ่งก่อน แล้วค่อยปรับการประมวลผลล่วงหน้าทีหลัง สิ่งใดก็ตามที่เรียนรู้จากข้อมูลควรเรียนรู้จากช่วงเวลาการฝึกอบรมเท่านั้น [2]
ตัวอย่างคำแนะนำ
ใช้เอกสารนี้เป็นแนวทางในการทำงานสำหรับขั้นตอนการประมวลผลเบื้องต้น:
สร้างไปป์ไลน์การประมวลผลล่วงหน้าสำหรับโมเดลการทำนายการเลิกใช้บริการโดยใช้ข้อมูลการเรียกเก็บเงิน การใช้งาน และการสนับสนุนลูกค้า แบ่งข้อมูลตามช่วงเวลาก่อนที่จะทำการปรับโมเดลใดๆ ปรับโมเดลปรับขนาดเชิงตัวเลขและโมเดลเข้ารหัสเชิงหมวดหมู่บนข้อมูลฝึกฝนเท่านั้น จากนั้นจึงนำโมเดลที่ปรับแล้วไปใช้กับข้อมูลตรวจสอบและข้อมูลทดสอบ บันทึกผลลัพธ์การประมวลผลล่วงหน้าทั้งหมดเพื่อให้โมเดลที่ใช้งานจริงใช้โครงสร้างข้อมูล การแมปหมวดหมู่ และพารามิเตอร์การปรับขนาดเดียวกัน ทำเครื่องหมายคอลัมน์ที่หายไป ประเภทข้อมูลที่ไม่คาดคิด หมวดหมู่ที่ไม่เคยเห็นมาก่อน และการเปลี่ยนแปลงการกระจายตัวที่สำคัญก่อนทำการทำนาย.
วิธีการทดสอบ
ก่อนที่จะเชื่อถือโมเดลนี้ ให้ทดสอบขั้นตอนการประมวลผลล่วงหน้าด้วยข้อมูลที่ซับซ้อนบางส่วนโดยเจตนา:
-
ลูกค้าที่ใช้แผนบริการประเภทที่ไม่ได้เข้าร่วมการฝึกอบรม
-
แถวที่ไม่มีข้อมูลภูมิภาคหรือสถานะการชำระเงินครั้งล่าสุด
-
ลูกค้าที่มีการใช้งานสูงผิดปกติ เช่น เข้าสู่ระบบ 10,000 ครั้งใน 30 วัน
-
ไฟล์รูปแบบการผลิตที่มีคอลัมน์เรียงลำดับผิด
-
ชุดทดสอบสำหรับเดือนถัดไปที่ไม่เคยถูกนำมาใช้ระหว่างการติดตั้ง
จากนั้นตรวจสอบสามสิ่งต่อไปนี้:
-
กระบวนการทำงานจะดำเนินการได้โดยไม่ต้องเปลี่ยนลำดับของฟีเจอร์หรือไม่?
-
มีการจัดการกับหมวดหมู่ที่ไม่รู้จักอย่างสม่ำเสมอหรือไม่?
-
ประสิทธิภาพการตรวจสอบความถูกต้องลดลงจนอยู่ในระดับที่น่าเชื่อถือมากขึ้นหรือไม่ หลังจากกำจัดช่องโหว่แล้ว?
ประเด็นสุดท้ายนี้สำคัญมาก คะแนนการตรวจสอบความถูกต้องที่สูงผิดปกติมักเป็นสัญญาณของการประมวลผลเบื้องต้นที่ไม่ถูกต้อง ไม่ใช่เรื่องมหัศจรรย์.
ผลลัพธ์
ผลลัพธ์ที่แสดงให้เห็นภาพ โดยอิงจากการจับเวลาการทำงานของการประมวลผลล่วงหน้า 5 ครั้ง ก่อนและหลังการแปลงขั้นตอนในสมุดบันทึกให้เป็นไปป์ไลน์ที่บันทึกไว้:
-
เวลาในการประมวลผลล่วงหน้าด้วยตนเองลดลงจาก 55 นาทีต่อการอัปเดตชุดข้อมูล เหลือเพียง 8 นาที.
-
ข้อผิดพลาดเกี่ยวกับลำดับของฟีเจอร์ลดลงจาก 3 ข้อผิดพลาดในการทดสอบรีเฟรช 5 ครั้ง เหลือ 0 ข้อผิดพลาดในการทดสอบรีเฟรช 5 ครั้ง.
-
ความแม่นยำในการตรวจสอบลดลงจาก 91% เหลือ 74% หลังจากกำจัดการรั่วไหลแล้ว แต่ความแม่นยำในการทดสอบเดือนใหม่ดีขึ้นจาก 62% เป็น 71%.
-
ทีมงานได้เพิ่มการตรวจสอบอัตโนมัติ 6 รายการ ได้แก่ คอลัมน์ที่หายไป ประเภทที่ไม่ถูกต้อง หมวดหมู่ที่ไม่เคยพบ การเปลี่ยนแปลงอัตราค่าว่าง การเปลี่ยนแปลงช่วงตัวเลข และความไม่ตรงกันของสคีมาที่ใช้กับข้อมูลฝึกฝน.
ตัวเลขเหล่านี้ไม่ใช่เกณฑ์มาตรฐานสากล แต่เป็นเพียงการวัดผลก่อนและหลังอย่างง่ายๆ ที่ทีมสามารถทำซ้ำได้โดยการจับเวลาการรีเฟรช นับจำนวนครั้งที่ล้มเหลว และเปรียบเทียบผลการตรวจสอบกับเดือนถัดไปที่ไม่ได้นำมาเปรียบเทียบ.
อะไรบ้างที่อาจผิดพลาดได้
ความเสี่ยงที่ใหญ่ที่สุดคือการทำให้กระบวนการดูเรียบร้อยในขณะที่ยังคงมีการรั่วไหลอยู่เงียบๆ ตัวอย่างเช่น "จำนวนวันนับตั้งแต่ได้รับอีเมลแจ้งเตือนการยกเลิกครั้งล่าสุด" อาจดูมีประโยชน์ แต่หากอีเมลนั้นถูกส่งหลังจากตรวจสอบการเปลี่ยนแปลงสมาชิกภายในองค์กรแล้ว อาจทำให้ข้อมูลในอนาคตรั่วไหลได้.
กับดักอื่นๆ ที่พบได้บ่อย:
-
การปรับแต่งตัวเข้ารหัสใหม่ในระหว่างการผลิต แทนการโหลดการแมปที่บันทึกไว้
-
การปล่อยให้หมวดหมู่ใหม่ ๆ เปลี่ยนแปลงตำแหน่งของฟีเจอร์โดยไม่แจ้งให้ทราบล่วงหน้า
-
การทดสอบโดยแบ่งกลุ่มแบบสุ่ม ในขณะที่งานที่แท้จริงนั้นขึ้นอยู่กับเวลา
-
การตัดแถวที่มีค่าว่างออกในขั้นตอนการฝึกฝน แต่ไม่จัดการกับค่าเหล่านั้นในขั้นตอนการอนุมาน
-
การตรวจสอบความแม่นยำของแบบจำลองโดยไม่สนใจการเปลี่ยนแปลงของข้อมูลป้อนเข้า
ข้อคิดที่นำไปใช้ได้จริง
กระบวนการประมวลผลข้อมูลเบื้องต้นที่ดีนั้นทำมากกว่าแค่จัดระเบียบข้อมูลดิบ มันยังช่วยปกป้องโมเดลจากการประเมินที่ไม่ดี ข้อมูลป้อนเข้าที่ผิดพลาด และการเปลี่ยนแปลงอย่างเงียบๆ ที่ค่อยเป็นค่อยไป สำหรับโมเดลการวิเคราะห์การเลิกใช้บริการ ความแตกต่างระหว่างการประมวลผลข้อมูลเบื้องต้นที่ชาญฉลาดกับการประมวลผลข้อมูลเบื้องต้นที่เชื่อถือได้ มักอยู่ที่ว่ามีการนำการแปลงข้อมูลที่ปรับให้เหมาะสมแล้วมาใช้ซ้ำทุกครั้งหรือไม่ โดยเฉพาะอย่างยิ่งเมื่อข้อมูลมาจากเดือนที่โมเดลไม่เคยเห็นมาก่อน.
คำถามที่พบบ่อย
อธิบายง่ายๆ คือ การประมวลผลล่วงหน้าด้วย AI คืออะไร?
การประมวลผลล่วงหน้าของ AI คือชุดขั้นตอนที่ทำซ้ำได้ ซึ่งเปลี่ยนข้อมูลดิบที่มีสัญญาณรบกวนและมีความแปรปรวนสูงให้เป็นข้อมูลป้อนเข้าที่สม่ำเสมอซึ่งแบบจำลองสามารถเรียนรู้ได้ ขั้นตอนนี้อาจรวมถึงการทำความสะอาด การตรวจสอบความถูกต้อง การเข้ารหัสหมวดหมู่ การปรับขนาดค่าตัวเลข การแยกคำในข้อความ และการแปลงภาพ เป้าหมายคือเพื่อให้แน่ใจว่าการฝึกฝนและการอนุมานในขั้นตอนการผลิตเห็นข้อมูลป้อนเข้า "ประเภทเดียวกัน" เพื่อป้องกันไม่ให้แบบจำลองแสดงพฤติกรรมที่ไม่สามารถคาดเดาได้ในภายหลัง.
เหตุใดการประมวลผลล่วงหน้าด้วย AI จึงมีความสำคัญอย่างยิ่งในขั้นตอนการผลิต?
การประมวลผลล่วงหน้ามีความสำคัญ เพราะโมเดลมีความไวต่อรูปแบบการนำเสนอข้อมูล หากข้อมูลฝึกฝนถูกปรับขนาด เข้ารหัส แยกเป็นโทเค็น หรือแปลงแตกต่างจากข้อมูลใช้งานจริง คุณอาจพบข้อผิดพลาดที่ไม่ตรงกันระหว่างการฝึกฝนและการใช้งาน ซึ่งดูเหมือนจะปกติดีในแบบออฟไลน์ แต่กลับล้มเหลวอย่างเงียบๆ ในแบบออนไลน์ กระบวนการประมวลผลล่วงหน้าที่แข็งแกร่งยังช่วยลดสัญญาณรบกวน ปรับปรุงเสถียรภาพการเรียนรู้ และเร่งความเร็วในการทำซ้ำ เนื่องจากคุณไม่ต้องเสียเวลาไปกับการแก้ปัญหาโค้ดที่ซับซ้อนในโน้ตบุ๊ก.
ฉันจะป้องกันการรั่วไหลของข้อมูลระหว่างการประมวลผลล่วงหน้าได้อย่างไร?
กฎง่ายๆ ข้อหนึ่งคือ: ทุกอย่างที่มี ปรับให้เหมาะสม (fit step) จะต้องปรับให้เหมาะสมกับข้อมูลฝึกฝนเท่านั้น ซึ่งรวมถึงตัวปรับขนาด (scalers), ตัวเข้ารหัส (encoders) และตัวแยกคำ (tokenisers) ที่เรียนรู้พารามิเตอร์ต่างๆ เช่น ค่าเฉลี่ย แผนที่หมวดหมู่ หรือคำศัพท์ คุณต้องแบ่งข้อมูลก่อน ปรับให้เหมาะสมกับข้อมูลฝึกฝน จากนั้นแปลงข้อมูลตรวจสอบ/ทดสอบโดยใช้ตัวแปลงที่ปรับให้เหมาะสมแล้ว การรั่วไหลของข้อมูลอาจทำให้ข้อมูลตรวจสอบดูดีอย่างน่าอัศจรรย์ แต่กลับล้มเหลวในการใช้งานจริง
ขั้นตอนการประมวลผลล่วงหน้าที่พบบ่อยที่สุดสำหรับข้อมูลในรูปแบบตารางมีอะไรบ้าง?
สำหรับข้อมูลในรูปแบบตาราง กระบวนการประมวลผลทั่วไปจะรวมถึงการทำความสะอาดและตรวจสอบความถูกต้อง (ประเภท ช่วง ค่าที่หายไป) การเข้ารหัสข้อมูลเชิงหมวดหมู่ (one-hot หรือ ordinal) และการปรับขนาดข้อมูลเชิงตัวเลข (การทำให้เป็นมาตรฐานหรือ min-max) หลายกระบวนการจะเพิ่มการสร้างคุณลักษณะเฉพาะด้าน เช่น อัตราส่วน หน้าต่างเลื่อน หรือจำนวนนับ วิธีปฏิบัติที่ดีคือการกำหนดกลุ่มคอลัมน์อย่างชัดเจน (ตัวเลข เทียบกับเชิงหมวดหมู่ เทียบกับตัวระบุ) เพื่อให้การแปลงข้อมูลมีความสอดคล้องกัน.
กระบวนการเตรียมข้อมูลเบื้องต้นสำหรับโมเดลข้อความทำงานอย่างไร?
การประมวลผลข้อความเบื้องต้นโดยทั่วไปหมายถึงการแบ่งข้อความออกเป็นโทเค็น/คำย่อย การแปลงโทเค็นเหล่านั้นเป็นรหัสประจำตัวอินพุต และการจัดการการเติม/ตัดคำเพื่อการประมวลผลแบบกลุ่ม เวิร์กโฟลว์ของ Transformer หลายๆ แบบยังสร้างมาสก์ความสนใจควบคู่ไปกับรหัสประจำตัวด้วย แนวทางทั่วไปคือการใช้การกำหนดค่าตัวแบ่งโทเค็นที่คาดหวังของโมเดลแทนที่จะปรับแต่งเอง เพราะความแตกต่างเล็กน้อยในการตั้งค่าตัวแบ่งโทเค็นอาจนำไปสู่ผลลัพธ์ที่ว่า “ฝึกฝนได้ แต่พฤติกรรมไม่แน่นอน”.
การประมวลผลภาพเบื้องต้นสำหรับแมชชีนเลิร์นนิงแตกต่างจากการประมวลผลภาพทั่วไปอย่างไร?
การประมวลผลภาพเบื้องต้นมักจะช่วยให้รูปร่างและการจัดการพิกเซลมีความสม่ำเสมอ เช่น การปรับขนาด/การตัดภาพ การทำให้เป็นมาตรฐาน และการแบ่งแยกที่ชัดเจนระหว่างการแปลงแบบกำหนดและแบบสุ่ม สำหรับการประเมินผล การแปลงควรเป็นแบบกำหนดเพื่อให้สามารถเปรียบเทียบตัวชี้วัดได้ สำหรับการฝึกฝน การเพิ่มข้อมูลแบบสุ่ม (เช่น การตัดภาพแบบสุ่ม) สามารถเพิ่มความทนทานได้ แต่ความสุ่มนั้นจะต้องจำกัดไว้เฉพาะการฝึกฝนเท่านั้น ไม่ควรเปิดใช้งานโดยไม่ได้ตั้งใจในระหว่างการประเมินผล.
อะไรทำให้ไปป์ไลน์การประมวลผลล่วงหน้า "ดี" แทนที่จะเปราะบาง?
ไปป์ไลน์การประมวลผลล่วงหน้าของ AI ที่ดีนั้นต้องสามารถทำซ้ำได้ ปลอดภัยจากการรั่วไหล และตรวจสอบได้ การทำซ้ำได้หมายความว่าข้อมูลป้อนเข้าเดียวกันจะให้ผลลัพธ์เดียวกัน เว้นแต่ว่ามีการสุ่มเพื่อเพิ่มข้อมูลโดยเจตนา ปลอดภัยจากการรั่วไหลหมายความว่าขั้นตอนการปรับให้เหมาะสมจะไม่แตะต้องขั้นตอนการตรวจสอบ/ทดสอบ ตรวจสอบได้หมายความว่าคุณสามารถตรวจสอบสถิติต่างๆ เช่น ข้อมูลที่หายไป จำนวนหมวดหมู่ และการกระจายของคุณลักษณะ เพื่อให้การแก้ไขข้อผิดพลาดอยู่บนพื้นฐานของหลักฐาน ไม่ใช่ความรู้สึก ไปป์ไลน์ดีกว่าลำดับการเขียนโน้ตบุ๊กแบบเฉพาะกิจทุกครั้ง.
ฉันจะรักษาความสอดคล้องของกระบวนการฝึกฝนและการประมวลผลล่วงหน้าสำหรับการอนุมานได้อย่างไร?
หัวใจสำคัญคือการนำสิ่งที่เรียนรู้มาแล้วกลับมาใช้ซ้ำในขั้นตอนการอนุมานอย่างแม่นยำ เช่น พารามิเตอร์ของตัวปรับขนาด การแมปของตัวเข้ารหัส และการกำหนดค่าของตัวแยกคำ นอกจากนี้ คุณยังต้องการข้อตกลงอินพุต (คอลัมน์ ประเภท และช่วงที่คาดหวัง) เพื่อป้องกันไม่ให้ข้อมูลจริงเปลี่ยนแปลงไปเป็นรูปร่างที่ไม่ถูกต้องโดยไม่รู้ตัว ความสม่ำเสมอไม่ได้หมายถึงแค่ "ทำตามขั้นตอนเดิม" แต่หมายถึง "ทำตามขั้นตอนเดิมด้วยพารามิเตอร์และการแมปที่ปรับให้เหมาะสมแล้วเหมือนเดิม"
ฉันจะตรวจสอบปัญหาการประมวลผลล่วงหน้า เช่น การเบี่ยงเบนและการบิดเบี้ยวเมื่อเวลาผ่านไปได้อย่างไร?
แม้จะมีระบบประมวลผลข้อมูลที่แข็งแกร่ง ข้อมูลการผลิตก็ยังเปลี่ยนแปลงได้ วิธีการทั่วไปคือการตรวจสอบการเปลี่ยนแปลงการกระจายคุณลักษณะ และแจ้งเตือนเมื่อเกิดความเบี่ยงเบนระหว่างข้อมูลฝึกฝนและข้อมูลใช้งาน (ข้อมูลการผลิตแตกต่างจากข้อมูลฝึกฝน) และการเบี่ยงเบนของการอนุมาน (ข้อมูลการผลิตเปลี่ยนแปลงไปตามเวลา) การตรวจสอบอาจทำได้ง่าย (เช่น การตรวจสอบการกระจายขั้นพื้นฐาน) หรือจัดการอย่างเป็นระบบ (เช่น Vertex AI Model Monitoring) เป้าหมายคือการตรวจจับการเปลี่ยนแปลงของข้อมูลป้อนเข้าตั้งแต่เนิ่นๆ ก่อนที่มันจะค่อยๆ บั่นทอนประสิทธิภาพของโมเดล.
เอกสารอ้างอิง
[1] API ของ scikit-learn: sklearn.preprocessing (encoders, scalers, normalization)
[2] scikit-learn: ข้อผิดพลาดทั่วไป - การรั่วไหลของข้อมูลและวิธีหลีกเลี่ยง
[3] เอกสาร Hugging Face Transformers: Tokenizers (รหัสอินพุต, หน้ากากความสนใจ)
[4] เอกสาร PyTorch Torchvision: Transforms (Resize/Normalize + random transforms)
[5] เอกสาร Google Cloud Vertex AI: ภาพรวมการตรวจสอบโมเดล (feature skew & drift)