หน่วย
1. ปัญญาประดิษฐ์ในวิศวกรรม ML: บทบาท ขอบเขต การตรวจสอบ และความรับผิดชอบ 2. ไปป์ไลน์ข้อมูล: การรวบรวม การทำความสะอาด การแท็ก และการกำหนดเวอร์ชัน 3. การฝึกอบรมและการประเมินโมเดล: การวัดที่แม่นยำ การเปรียบเทียบที่ซื่อสัตย์ 4. แอปพลิเคชัน LLM: คำตอบจากข้อมูลของคุณเองด้วย RAG 5. แอปพลิเคชัน LLM: ตัวแทน การใช้เครื่องมือ และระบบอัตโนมัติที่ปลอดภัย 6. พื้นฐานการปรับแต่งอย่างละเอียด: เมื่อใด อย่างไร และมีความเสี่ยงอะไรบ้าง 7. MLOps และการปรับใช้: การย้ายแบบจำลองจากห้องปฏิบัติการไปสู่การใช้งานจริง 8. การประเมินและการติดตาม: การรู้ว่าโมเดลทำอะไรจริงๆ ในการผลิต 9. ความปลอดภัยและความเป็นส่วนตัว: การปกป้องระบบ AI 10. อคติ จริยธรรม และต้นทุน: วิศวกรรม AI ที่มีความรับผิดชอบและยั่งยืน 11. ความสามารถในการทำซ้ำและโครงการแบบครบวงจร: การรวมทุกสิ่งเข้าด้วยกัน
หน่วย 2 / 11

ไปป์ไลน์ข้อมูล: การรวบรวม การทำความสะอาด การแท็ก และการกำหนดเวอร์ชัน

กำไร:

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

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

ขั้นตอนของสายข้อมูล

โดยทั่วไปแล้วสายข้อมูลจะผ่านจุดหยุดเหล่านี้:

  1. การรวบรวม (การนำเข้า): การดึงข้อมูลจากแหล่งที่มา (ฐานข้อมูล, API, ไฟล์บันทึก, สตรีมเหตุการณ์)
  2. การตรวจสอบความถูกต้อง: การตรวจสอบว่าข้อมูลสอดคล้องกับสคีมา ประเภท และช่วงที่คาดหวังหรือไม่
  3. การทำความสะอาด: การจัดการกับค่าที่หายไป บันทึกที่ซ้ำกัน ค่าผิดปกติ และความไม่สอดคล้องกัน
  4. การแปลง: การเปลี่ยนข้อมูลดิบให้เป็นคุณลักษณะ เช่น การแปลงตัวแปรหมวดหมู่เป็นตัวเลข ทำให้เกิด "วันในสัปดาห์" จากวันที่
  5. การแยก: การแยกออกเป็นชุดการฝึกอบรม การตรวจสอบ และการทดสอบ
  6. การกำหนดเวอร์ชัน: การบันทึกว่าโมเดลใดได้รับการฝึกฝนด้วยข้อมูลใด

ปัญญาประดิษฐ์ช่วยประหยัดเวลาโดยการสร้างแบบร่างโค้ดและแนวคิด โดยเฉพาะในขั้นตอนที่ 2, 3 และ 4 แต่การตัดสินใจ เช่น บันทึกที่จะทิ้ง ค่าที่ขาดหายไปในการเติม และอย่างไร จะเป็นของวิศวกรที่รู้ข้อมูล เพราะการทำความสะอาดที่ไม่เหมาะสมอาจทำให้เกิดอคติที่ซ่อนอยู่ในโมเดลได้

การตรวจสอบข้อมูล: การป้องกันแนวหน้าตั้งแต่เนิ่นๆ

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

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

เขียนแผนการตรวจสอบด้วย pandera (หรือ Great Expectations) สำหรับสคีมาข้อมูลต่อไปนี้ คอลัมน์และกฎ:- user_id: จำนวนเต็ม ไม่สามารถเป็นค่าว่างได้ ไม่ซ้ำกัน อายุ: จำนวนเต็ม ไม่สามารถอยู่ระหว่าง 0-120- signup_date: วันที่ ไม่สามารถอยู่ในอนาคต- ประเทศ: หมวดหมู่ จากชุด {TR, DE, US, UK}- ยอดคงเหลือ: ทศนิยม ไม่สามารถเป็นค่าลบ สร้างข้อความแสดงข้อผิดพลาดที่มีความหมายสำหรับการละเมิดกฎแต่ละข้อ แสดงการทดสอบพร้อมตัวอย่างเส้นขาดที่ส่วนท้ายของโค้ด

การทำความสะอาด: มนุษย์เป็นผู้ตัดสินใจ

ค่าที่หายไปคือความเป็นจริงของทุกชุดข้อมูล วิธีจัดการ:

  • การลบ: ละทิ้งแถว/คอลัมน์ที่มีอัตราการขาดหายไปสูงมาก แต่มีความเสี่ยงที่ข้อมูลสูญหายและมีอคติ
  • การใส่ร้าย: การใส่ร้ายด้วยค่าเฉลี่ย ค่ามัธยฐาน ค่าที่พบบ่อยที่สุด หรือการทำนายตามแบบจำลอง
  • ตั้งค่าสถานะ: การจัดเก็บข้อมูล "หายไป" ในคอลัมน์แฟล็กแยกต่างหาก บางครั้งการที่หายไปอาจเป็นสัญญาณ

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

พรอมต์อ่อน / พรอมต์แข็งแกร่ง

พร้อมท์ที่อ่อนแอ: "เติมค่าที่หายไป"

ข้อความแจ้งที่รัดกุม: "มีค่าที่ขาดหายไปในคอลัมน์ต่อไปนี้: รายได้ (หายไป 12%, การแจกแจงแบบเบ้ขวา), Last_login (หายไป 30%) แนะนำให้กรอกรายได้ด้วยค่ามัธยฐาน แต่อธิบายว่าเหตุใดค่ามัธยฐานและไม่ได้หมายความว่า สำหรับ Last_login ถือว่าค่าที่หายไปอาจมีนัยสำคัญ (ผู้ใช้อาจไม่เคยเข้าสู่ระบบ) ให้พิจารณาสร้างแฟล็ก never_logged_in แทนการลบ เขียนความลำเอียงที่วิธีใดวิธีหนึ่งจะเพิ่มลงในโมเดล"

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

การติดฉลาก: คุณภาพคือการวัด

ในการเรียนรู้แบบมีผู้สอน (การเรียนรู้โดยให้ตัวอย่างพร้อมคำตอบที่ถูกต้อง) สิ่งที่โมเดลเรียนรู้คือป้ายกำกับ (ป้ายกำกับ: คำตอบที่ถูกต้องสำหรับแต่ละตัวอย่าง) คุณภาพฉลากกำหนดเพดาน — หากผู้คนติดป้ายกำกับไม่สอดคล้อง โมเดลจะเรียนรู้ไม่สอดคล้องกัน

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

ปัญญาประดิษฐ์ช่วยในการติดป้ายกำกับได้สองวิธี: (1) การร่างแนวทางคำอธิบายประกอบ (2) การติดป้ายกำกับล่วงหน้า และการให้มนุษย์แก้ไขเท่านั้น แต่การติดฉลากล่วงหน้าด้วย LLM มีอันตราย: ข้อผิดพลาดอย่างเป็นระบบของแบบจำลองอาจรั่วไหลไปยังชุดฉลากทั้งหมดได้ นั่นเป็นเหตุผลที่มนุษย์ตรวจสอบฉลาก LLM บางส่วนอยู่เสมอ

ข้อควรสนใจ: อย่าถือว่าฉลากที่ผลิตโดย LLM เป็น "ความจริงจากการภาคพื้นดิน" ตรวจสอบตัวอย่างกับมนุษย์และวัด LLM-ความพอดีของมนุษย์ หากการปฏิบัติตามข้อกำหนดต่ำ การติดฉลากล่วงหน้าจะให้ผลเสียมากกว่าผลดี

พาร์ติชั่นข้อมูล: ป้องกันการรั่วไหล

ข้อผิดพลาดที่อันตรายที่สุดเมื่อแบ่งข้อมูลออกเป็นการฝึกอบรม/การตรวจสอบความถูกต้อง/การทดสอบคือข้อมูลรั่วไหล: การผสมข้อมูลการทดสอบเข้ากับการฝึกอบรม ตัวอย่าง:

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

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

การกำหนดเวอร์ชันข้อมูลและการทำซ้ำ

“เราใช้ข้อมูลอะไรในการฝึกโมเดลนี้” ความสามารถในการตอบคำถามหลายเดือนต่อมาถือเป็นจุดเด่นของวิศวกรรม ML ที่จริงจัง การกำหนดเวอร์ชันข้อมูลจะจัดเก็บสแนปชอตข้อมูลแต่ละรายการด้วย ID (แฮชหรือแท็กเวอร์ชัน) เครื่องมือเช่นข้อมูลเวอร์ชัน DVC (การควบคุมเวอร์ชันข้อมูล) เช่นโค้ด

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

มินิเคสสามอัน

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

กรณีที่ 2 - อคติของการเติมที่ไม่ถูกต้อง ในรูปแบบเครดิต มูลค่ารายได้ที่หายไปถูกเติมด้วยค่าเฉลี่ย แต่รายได้ที่ขาดไปส่วนใหญ่อยู่ในกลุ่มผู้มีรายได้น้อย การเฉลี่ยกลุ่มนี้ "เสริมคุณค่า" โดยไม่ตั้งใจ และแบบจำลองดังกล่าวเสนอขีดจำกัดที่สูงอย่างไม่ยุติธรรม แก้ไขปัญหาด้วยค่ามัธยฐาน + ค่าสถานะหายไป

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

เทมเพลตที่คัดลอกได้

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

เขียนแนวทางร่างคำอธิบายประกอบสำหรับงานติดป้ายกำกับนี้ งาน: [เช่น ติดป้ายรีวิวลูกค้าเชิงบวก/ลบ/เป็นกลาง] ชี้แจงกรณีที่เส้นเขตแดน: การเสียดสี อารมณ์ผสม วิธีติดป้ายกำกับรีวิวที่ไม่เกี่ยวข้องกับผลิตภัณฑ์ ให้ตัวอย่าง 5 ตัวอย่างและกรณีขอบที่ยาก 3 กรณีที่จะเพิ่มความสอดคล้องกันระหว่างแท็กเกอร์

สร้างรายการตรวจสอบความสามารถในการทำซ้ำสำหรับไปป์ไลน์ข้อมูลนี้:- เวอร์ชันข้อมูลควรได้รับการแก้ไขอย่างไร- ควรตั้งค่าเมล็ดสุ่มใดที่ใด- ควรบันทึกข้อมูลเมตาใด (แฮชข้อมูล จำนวนแถว วันที่) รหัสฐานของฉัน: [ภาษา/ห้องสมุด]

ตรวจสอบรหัสล้างนี้เพื่อดูข้อมูลรั่วไหล ดูสิ่งนี้โดยเฉพาะ: พารามิเตอร์การปรับขนาด/การเข้ารหัสถูกคำนวณก่อนที่จะแยกหรือไม่ มีสถิติใดบ้างที่คำนวณจากข้อมูลทั้งหมดหรือแค่การฝึกอบรม? รหัส: [รหัส]

ตารางการตัดสินใจ: กลยุทธ์คุณค่าที่ขาดหายไป

สถานะ

แนวทางที่แนะนำ

ทำไม

การกระจายเชิงตัวเลขและเบ้

เติมค่ามัธยฐาน

ค่าเฉลี่ยได้รับผลกระทบจากค่าผิดปกติ

ตัวเลขสมมาตร

เติมค่าเฉลี่ย

ปกป้องข้อมูล

ข้อบกพร่องอาจมีนัยสำคัญ

ตั้งค่าสถานะคอลัมน์ + การเติม

การขาดเป็นสัญญาณ

อัตราที่หายไป > 60%

คอลัมน์ประเมิน/ละทิ้ง

เสียงรบกวนมากเกินไป

เด็ดขาด

หมวดหมู่ "ไม่ทราบ"

ไม่สร้างเสียงข้างมากเทียม

ข้อผิดพลาดทั่วไป

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

โดยสรุป

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

งานสมัคร

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

รายการตรวจสอบ

  • [ ] การตรวจสอบสคีมาทำงานที่ด้านบนสุดของบรรทัด
  • [ ] ฉันเลือกกลยุทธ์ค่าที่ขาดหายไปตามความหมายของฟิลด์ ฉันไม่ได้เติมด้วยวิธีกลไก
  • [ ] ฉันวัดคุณภาพฉลาก (การปฏิบัติตามข้อกำหนด); ฉันตรวจสอบแท็ก LLM โดยมนุษย์
  • [ ] ฉันป้องกันการรั่วไหลของกลุ่มและชั่วคราวในบานหน้าต่าง
  • [ ] การปรับขนาด/การเข้ารหัสคำนวณจากชุดการฝึกเท่านั้น
  • [ ] เวอร์ชันข้อมูล จำนวนแถว และค่าเริ่มต้นที่บันทึกไว้