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

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

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

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

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

  2. เข้ารหัสความเข้าใจลงในสคีมาข้อมูล ต่อไปนี้เป็นตัวอย่างของ กฎ:

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

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

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

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

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

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

ตรวจสอบเมตริกสำหรับชิ้นส่วนข้อมูลที่สำคัญ

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

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

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

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

ใช้เมตริกที่ได้จากธุรกิจจริง

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

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

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

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

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

วันที่

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

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

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

ตรวจหาการรั่วไหลของป้ายกำกับ

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

ทดสอบคุณภาพของโมเดลสดกับข้อมูลที่แสดง

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

  • สร้างป้ายกำกับโดยใช้เจ้าหน้าที่ตรวจสอบ

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

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

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

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

การสุ่ม

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

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

วิธีก่อนหน้านี้ใช้กับทั้งการสุ่มตัวอย่างและการแยกข้อมูลของคุณ

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

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

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

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

 

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