ระบบ ML เวอร์ชันที่ใช้งานจริง: ไปป์ไลน์การตรวจสอบ

ยินดีด้วย คุณได้ติดตั้งใช้งานรูปแบบ Unicorn แล้ว โมเดลควรทํางานได้ตลอด 24 ชั่วโมงทุกวันโดยไม่มีปัญหา คุณต้องตรวจสอบไปป์ไลน์แมชชีนเลิร์นนิง (ML) เพื่อให้แน่ใจว่าระบบทำงานได้

เขียนสคีมาข้อมูลเพื่อตรวจสอบข้อมูลดิบ

หากต้องการตรวจสอบข้อมูล คุณควรตรวจสอบข้อมูลอย่างต่อเนื่องเทียบกับค่าสถิติที่คาดไว้ด้วยเขียนกฎที่ข้อมูลต้องเป็นไปตาม ชุดกฎนี้เรียกว่าสคีมาข้อมูล กําหนดสคีมาข้อมูลโดยทําตามขั้นตอนต่อไปนี้

  1. ทําความเข้าใจช่วงและการกระจายของฟีเจอร์ สําหรับฟีเจอร์เชิงหมวดหมู่ ให้ทําความเข้าใจชุดค่าที่เป็นไปได้

  2. เข้ารหัสความเข้าใจของคุณลงในสคีมาข้อมูล ตัวอย่างกฎมีดังนี้

    • ตรวจสอบว่าคะแนนที่ผู้ใช้ส่งอยู่ในช่วง 1 ถึง 5 เสมอ
    • ตรวจสอบว่าคําว่า the ปรากฏบ่อยที่สุด (สําหรับฟีเจอร์ข้อความภาษาอังกฤษ)
    • ตรวจสอบว่าฟีเจอร์เชิงหมวดหมู่แต่ละรายการได้รับการตั้งค่าเป็นค่าจากชุดค่าที่เป็นไปได้ซึ่งได้รับการกําหนดไว้
  3. ทดสอบข้อมูลกับสคีมาข้อมูล สคีมาควรตรวจหาข้อผิดพลาดด้านข้อมูล เช่น

    • ความผิดปกติ
    • ค่าที่ไม่คาดคิดของตัวแปรเชิงหมวดหมู่
    • การแจกแจงข้อมูลที่ไม่คาดคิด

เขียนการทดสอบ 1 หน่วยเพื่อตรวจสอบวิศวกรรมฟีเจอร์

แม้ว่าข้อมูลดิบอาจผ่านสคีมาข้อมูล แต่โมเดลจะไม่ฝึกด้วยข้อมูลดิบ แต่โมเดลจะฝึกกับข้อมูลที่ผ่านการปรับแต่งฟีเจอร์ เช่น โมเดลจะฝึกด้วยฟีเจอร์ตัวเลขที่แปลงค่าให้เป็นมาตรฐานแทนข้อมูลตัวเลขดิบ เนื่องจากข้อมูลที่ได้รับการออกแบบฟีเจอร์อาจแตกต่างจากข้อมูลอินพุตดิบอย่างมาก คุณจึงต้องตรวจสอบข้อมูลที่ได้รับการออกแบบฟีเจอร์แยกต่างหากจากการตรวจสอบข้อมูลอินพุตดิบ

เขียนการทดสอบ 1 หน่วยตามความเข้าใจของคุณเกี่ยวกับข้อมูลที่ผ่านการวิศวกรรมฟีเจอร์ เช่น คุณสามารถเขียนการทดสอบ 1 หน่วยเพื่อตรวจสอบเงื่อนไขต่างๆ เช่น เงื่อนไขต่อไปนี้

  • ฟีเจอร์ที่เป็นตัวเลขทั้งหมดจะปรับขนาด เช่น อยู่ระหว่าง 0 ถึง 1
  • เวกเตอร์ที่เข้ารหัสแบบฮอตเดียวจะมีเฉพาะ 1 รายการและ 0 จำนวน N-1
  • การแจกแจงข้อมูลหลังจากการเปลี่ยนรูปแบบเป็นไปตามที่คาดไว้ เช่น หากคุณได้ปรับให้เป็นมาตรฐานโดยใช้คะแนน z ค่ามัธยฐานของคะแนน z ควรเป็น 0
  • ระบบจะจัดการค่าที่ผิดปกติ เช่น การปรับขนาดหรือการตัด

ตรวจสอบเมตริกสําหรับข้อมูลส่วนสําคัญ

บางครั้งภาพรวมที่ประสบความสำเร็จอาจบดบังภาพย่อยที่ไม่ประสบความสำเร็จ กล่าวคือ โมเดลที่มีเมตริกโดยรวมยอดเยี่ยมอาจยังคงทําการคาดการณ์ได้แย่ในบางสถานการณ์ เช่น

โมเดล Unicorn มีประสิทธิภาพโดยรวมดี แต่มีประสิทธิภาพต่ำเมื่อทำการคาดการณ์สำหรับทะเลทรายซาฮารา

หากคุณเป็นวิศวกรที่พอใจกับ AUC โดยรวมที่ยอดเยี่ยม คุณอาจไม่สังเกตเห็นปัญหาของโมเดลในทะเลทรายซาฮาร่า หากการคาดการณ์ที่ดีสําหรับทุกภูมิภาคมีความสําคัญ คุณจะต้องติดตามประสิทธิภาพของทุกภูมิภาค ส่วนย่อยของข้อมูล เช่น ข้อมูลที่เกี่ยวข้องกับทะเลทรายซาฮารา เรียกว่าข้อมูลส่วนย่อย

ระบุข้อมูลส่วนที่น่าสนใจ จากนั้นเปรียบเทียบเมตริกของโมเดลสําหรับข้อมูลส่วนเหล่านี้กับเมตริกของชุดข้อมูลทั้งหมด การตรวจสอบว่าโมเดลมีประสิทธิภาพดีกับข้อมูลทุกกลุ่มจะช่วยขจัดอคติ ดูข้อมูลเพิ่มเติมได้ที่ความเป็นธรรม: การประเมินอคติ

ใช้เมตริกในชีวิตจริง

เมตริกรูปแบบไม่ได้วัดผลลัพธ์จริงของรูปแบบเสมอไป เช่น การเปลี่ยนแปลงไฮเปอร์พารามิเตอร์อาจเพิ่ม AUC ของโมเดล แต่การเปลี่ยนแปลงดังกล่าวส่งผลต่อประสบการณ์ของผู้ใช้อย่างไร หากต้องการวัดผลลัพธ์ในชีวิตจริง คุณต้องกําหนดเมตริกแยกต่างหาก เช่น คุณอาจสํารวจผู้ใช้โมเดลเพื่อยืนยันว่าผู้ใช้เห็นยูนิคอร์นจริงๆ เมื่อโมเดลคาดการณ์ไว้

ตรวจสอบความคลาดเคลื่อนระหว่างการฝึกและการให้บริการ

ความเอียงของข้อมูลการฝึกกับข้อมูลการนําเสนอหมายความว่าข้อมูลอินพุตระหว่างการฝึกแตกต่างจากข้อมูลอินพุตในการนําเสนอ ตารางต่อไปนี้อธิบายความเบี่ยงเบน 2 ประเภทที่สําคัญ

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

สาเหตุของความคลาดเคลื่อนระหว่างการฝึกและการให้บริการอาจมองไม่เห็น พิจารณาข้อมูลที่มีให้โมเดลใช้ ณ เวลาการคาดการณ์เสมอ ในระหว่างการฝึก ให้ใช้เฉพาะฟีเจอร์ที่คุณจะใช้ได้เมื่อแสดง

แบบฝึกหัด: ทดสอบความเข้าใจ

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

คุณอาจพบปัญหาอะไร
คลิกที่นี่เพื่อดูคำตอบ

ตรวจสอบการเปิดเผยป้ายกำกับ

การรั่วไหลของป้ายกำกับหมายความว่าป้ายกำกับข้อมูลจริงที่คุณพยายามคาดการณ์ได้เข้าสู่ฟีเจอร์การฝึกโดยไม่ตั้งใจ บางครั้งการเปิดเผยข้อมูลแท็กก็ตรวจจับได้ยากมาก

แบบฝึกหัด: ทดสอบความเข้าใจ

สมมติว่าคุณสร้างโมเดลการจัดประเภทแบบไบนารีเพื่อคาดการณ์ว่าผู้ป่วยใหม่ในโรงพยาบาลเป็นมะเร็งหรือไม่ โมเดลของคุณใช้ฟีเจอร์ต่อไปนี้

  • อายุของผู้ป่วย
  • เพศของผู้ป่วย
  • ภาวะทางการแพทย์ก่อนหน้านี้
  • ชื่อโรงพยาบาล
  • สัญญาณชีพ
  • ผลการทดสอบ
  • พันธุกรรม

ป้ายกำกับมีดังนี้

  • บูลีน: ผู้ป่วยเป็นมะเร็งหรือไม่

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

เหตุใดโมเดลที่ยอดเยี่ยมในชุดทดสอบจึงล้มเหลวอย่างสิ้นเชิงในโลกแห่งความเป็นจริง
คลิกที่นี่เพื่อดูคำตอบ

ตรวจสอบอายุของโมเดลตลอดไปป์ไลน์

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

ทดสอบว่าน้ำหนักและเอาต์พุตของโมเดลมีความเสถียรทางตัวเลข

ในระหว่างการฝึกโมเดล น้ำหนักและเอาต์พุตของเลเยอร์ไม่ควรเป็น NaN (ไม่ใช่ตัวเลข) หรือ Inf (อินฟินิตี) เขียนการทดสอบเพื่อตรวจสอบค่า NaN และ Inf ของน้ำหนักและเอาต์พุตของเลเยอร์ นอกจากนี้ ให้ทดสอบว่าเอาต์พุตของเลเยอร์มากกว่าครึ่งไม่ได้เป็น 0

ตรวจสอบประสิทธิภาพของโมเดล

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

  • ติดตามประสิทธิภาพของโมเดลตามเวอร์ชันของโค้ด โมเดล และข้อมูล การติดตามดังกล่าวจะช่วยให้คุณระบุสาเหตุที่แน่ชัดของประสิทธิภาพที่ลดลงได้
  • ทดสอบขั้นตอนการฝึกต่อวินาทีของโมเดลเวอร์ชันใหม่เทียบกับเวอร์ชันก่อนหน้าและเทียบกับเกณฑ์คงที่
  • ตรวจหาหน่วยความจำที่รั่วไหลโดยการตั้งเกณฑ์การใช้หน่วยความจำ
  • ตรวจสอบเวลาในการตอบกลับของ API และติดตามเปอร์เซ็นต์ไทล์ แม้ว่าเวลาในการตอบกลับของ API อาจอยู่นอกเหนือการควบคุมของคุณ แต่การตอบกลับที่ช้าอาจส่งผลให้เมตริกในชีวิตจริงไม่ดี
  • ตรวจสอบจำนวนคำค้นหาที่ตอบต่อวินาที

ทดสอบคุณภาพของโมเดลเวอร์ชันที่ใช้จริงกับข้อมูลที่แสดง

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

  • สร้างป้ายกำกับโดยใช้ผู้ให้คะแนนที่เป็นมนุษย์

  • ตรวจสอบโมเดลที่แสดงความเบี่ยงเบนทางสถิติที่สําคัญในการคาดการณ์ ดูการแยกประเภท: ความลำเอียงในการคาดการณ์

  • ติดตามเมตริกในชีวิตจริงของโมเดล เช่น หากคุณกําลังจัดประเภทจดหมายขยะ ให้เปรียบเทียบการคาดการณ์กับจดหมายขยะที่ผู้ใช้รายงาน

  • ลดการเบี่ยงเบนระหว่างข้อมูลการฝึกและข้อมูลการนําเสนอโดยแสดงโมเดลเวอร์ชันใหม่ในการค้นหาเพียงบางส่วน ขณะที่ตรวจสอบรูปแบบการแสดงโฆษณาใหม่ ให้เปลี่ยนการค้นหาทั้งหมดเป็นเวอร์ชันใหม่ทีละน้อย

เมื่อใช้การทดสอบเหล่านี้ อย่าลืมตรวจสอบทั้งคุณภาพการคาดการณ์ที่ลดลงอย่างฉับพลันและช้าๆ

การสุ่ม

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

  • กำหนดข้อมูลเริ่มต้นให้กับโปรแกรมสร้างตัวเลขสุ่ม (RNG) การสร้างข้อมูลเริ่มต้นช่วยให้ RNG แสดงผลค่าเดียวกันตามลําดับเดิมทุกครั้งที่คุณเรียกใช้ ซึ่งจะสร้างชุดข้อมูลขึ้นมาใหม่
  • ใช้คีย์แฮชแบบคงที่ การแฮชเป็นวิธีทั่วไปในการแยกหรือสุ่มตัวอย่างข้อมูล คุณสามารถแฮชตัวอย่างแต่ละรายการ และใช้จำนวนเต็มที่ได้เพื่อตัดสินใจว่าควรวางตัวอย่างนั้นไว้ในการแยกกลุ่มใด อินพุตของฟังก์ชันแฮชไม่ควรเปลี่ยนแปลงทุกครั้งที่คุณเรียกใช้โปรแกรมการสร้างข้อมูล อย่าใช้เวลาปัจจุบันหรือตัวเลขแบบสุ่มในแฮช เช่น หากต้องการสร้างแฮชอีกครั้งตามคําขอ

แนวทางข้างต้นใช้ได้กับทั้งการสุ่มตัวอย่างและการแยกข้อมูล

ข้อควรพิจารณาสำหรับการแฮช

ลองนึกภาพว่าคุณกําลังรวบรวมคําค้นหาใน Search และใช้การแฮชเพื่อรวมหรือยกเว้นคําค้นหา หากคีย์แฮชใช้เฉพาะข้อความค้นหา คุณจะรวมข้อความค้นหานั้นเสมอหรือยกเว้นข้อความค้นหานั้นเสมอในข้อมูลหลายวัน การรวมหรือยกเว้นคําค้นหาเสมอนั้นไม่ดีเนื่องจากเหตุผลต่อไปนี้

  • ชุดการฝึกอบรมจะเห็นชุดข้อความค้นหาที่มีความหลากหลายน้อยลง
  • ชุดการประเมินจะมีความยากเป็นพิเศษเนื่องจากจะไม่ทับซ้อนกับข้อมูลการฝึก ในทางปฏิบัติแล้ว ณ เวลาแสดงโฆษณา คุณจะเห็นการเข้าชมจริงบางส่วนในข้อมูลการฝึกอบรม ดังนั้นการประเมินของคุณจึงควรแสดงถึงข้อมูลดังกล่าว

แต่คุณสามารถแฮชคำค้นหา + วันที่แทน ซึ่งจะส่งผลให้เกิดการแฮชที่แตกต่างกันในแต่ละวัน

 

รูปที่ 7 ภาพเคลื่อนไหวแสดงว่าการแฮชเฉพาะข้อความค้นหาทําให้ข้อมูลไปอยู่ในที่เก็บข้อมูลเดียวกันในแต่ละวัน แต่การแฮชข้อความค้นหาบวกเวลาการค้นหาทําให้ข้อมูลไปอยู่ในที่เก็บข้อมูลที่แตกต่างกันในแต่ละวัน โดยที่กลุ่ม 3 กลุ่มดังกล่าว ได้แก่ การฝึกอบรม การประเมิน และละเว้น
รูปที่ 7 การแฮชในคําค้นหาเทียบกับการแฮชในคําค้นหา + เวลาในการค้นหา