แก้ไขแล้ว: บันทึกโมเดลด้วยการสูญเสียการตรวจสอบที่ดีที่สุด

การปรับปรุงครั้งล่าสุด: 09/25/2023
ผู้แต่ง: หลาม SourceTrail

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

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

วิธีการบันทึกแบบจำลองที่มีการสูญเสียการตรวจสอบที่ดีที่สุด

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

from keras.callbacks import ModelCheckpoint

# specify the path to save the model
filepath="weights.best.hdf5"

# initiate the ModelCheckpoint function
checkpoint = ModelCheckpoint(filepath, monitor='val_loss', verbose=1, save_best_only=True, mode='min')

# define the list of callbacks
callbacks_list = [checkpoint]

# fit the model
model.fit(X, Y, validation_split=0.33, epochs=150, batch_size=10, callbacks=callbacks_list, verbose=0)

ทำความเข้าใจกับรหัส: ทีละขั้นตอน

มาดูข้อมูลโค้ดทีละขั้นตอนเพื่อทำความเข้าใจแต่ละส่วน:

1. นำเข้าฟังก์ชัน ModelCheckpoint จาก Keras
2. กำหนดเส้นทางไฟล์ที่คุณต้องการบันทึกโมเดลโดยใช้รูปแบบ .hdf5 รูปแบบนี้ออกแบบมาเพื่อจัดเก็บและจัดระเบียบข้อมูลจำนวนมาก
3. เริ่มต้นฟังก์ชัน ModelCheckpoint ที่นี่ เรากำลังตรวจสอบ 'val_loss' ด้วยโหมด 'min' ซึ่งบ่งชี้ว่าเรามุ่งหมายที่จะลดค่านี้ให้เหลือน้อยที่สุด ด้วย 'save_best_only=True' โมเดลที่ดีที่สุดล่าสุดตามปริมาณที่ได้รับการตรวจสอบจะไม่ถูกเขียนทับ
4. จุดตรวจสอบจะถูกเพิ่มเข้าไปในรายการโทรกลับ พารามิเตอร์การฝึกอื่นๆ เช่น EarlyStopping สามารถรวมอยู่ในรายการนี้ได้เช่นกัน
5. จากนั้นโมเดลจะได้รับการฝึกเกี่ยวกับข้อมูลโดยใช้ model.fit() อาร์กิวเมนต์การโทรกลับใช้เวลาใน callbacks_list

โค้ดจะบันทึกโมเดลเป็น 'weights.best.hdf5' ในแต่ละยุคซึ่งการสูญเสียการตรวจสอบความถูกต้องอยู่ที่ระดับต่ำสุด

Key Python Libraries สำหรับการบันทึกโมเดล

Pythonมีระบบนิเวศของไลบรารีที่หลากหลายสำหรับการบันทึกโมเดลการเรียนรู้ของเครื่อง ไลบรารีที่ใช้กันเป็นหลัก ได้แก่:

  • เครา: API โครงข่ายประสาทเทียมระดับสูงนี้สามารถทำงานบน API ระดับล่างอื่นๆ เช่น TensorFlow ช่วยให้สร้างต้นแบบโมเดลการเรียนรู้เชิงลึกได้ง่ายและรวดเร็ว ฟังก์ชัน ModelCheckpoint ใน Keras ให้ความยืดหยุ่นในการตรวจสอบพารามิเตอร์ต่างๆ ในระหว่างกระบวนการฝึกอบรม และบันทึกแบบจำลองหรือน้ำหนักในขั้นตอนต่างๆ
  • เทนเซอร์โฟลว์: เฟรมเวิร์กแมชชีนเลิร์นนิงแบบโอเพ่นซอร์สของ Python ช่วยให้นักพัฒนาสามารถสร้างโมเดล ML ที่ซับซ้อนได้อย่างง่ายดาย โดยมีโมดูล SavedModel ซึ่งเป็นรูปแบบการทำให้เป็นอนุกรมสากลสำหรับโมเดล TensorFlow
  • Scikit-เรียนรู้: ไลบรารี Python ยอดนิยมสำหรับการเรียนรู้ของเครื่องนี้มียูทิลิตี้สำหรับการบันทึกและการโหลดโมเดล โดยทั่วไปโมดูล Joblib จะใช้สำหรับการซีเรียลไลซ์อ็อบเจ็กต์ Python ด้วยอาร์เรย์จำนวนมาก ซึ่งเป็นสถานการณ์ทั่วไปในเวิร์กโฟลว์แมชชีนเลิร์นนิง

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

กระทู้ที่เกี่ยวข้อง: