ทำให้รู้สึกถึงการสูญเสียและเส้นโค้งความแม่นยำ

Aug 20 2020

นี่เป็นปัญหาที่ฉันเจอซ้ำแล้วซ้ำเล่า การสูญเสีย (ข้ามเอนโทรปีในกรณีนี้) และพล็อตความแม่นยำที่ไม่สมเหตุสมผล นี่คือตัวอย่าง: ที่

นี่ฉันกำลังฝึก ReNet18 บน CIFAR10 เครื่องมือเพิ่มประสิทธิภาพคือ SGD พร้อมอัตราการเรียนรู้ 0.1 โมเมนตัม 0.9 Nesterov การสลายตัวของน้ำหนัก 1e-4 อัตราการเรียนรู้ลดลงเป็น⅕ที่ยุค 60, 120, 160

  • ในตอนแรกเส้นโค้งนั้นดูดีและสำรวย หมายถึงการสูญเสียการฝึกอบรมและการตรวจสอบความถูกต้องลดลงและความแม่นยำเพิ่มขึ้น
  • ประมาณยุค 65 ~ 70 คุณจะเห็นสัญญาณของการติดตั้งมากเกินไป เป็น val. การสูญเสียเริ่มเพิ่มขึ้นและวาล ความแม่นยำเริ่มลดลง ( กล่องสีแดง ) ที่นี่ยังไม่มีอะไรแปลก

ตอนนี้มีสองสิ่งที่ไม่สมเหตุสมผลสำหรับฉัน:

  1. หลังจากยุค 120 (ที่ LR ลดลง) val การสูญเสียและความแม่นยำเริ่มดีขึ้นในสองสามยุค ( กล่องสีเขียว ) เหตุใดการลดอัตราการเรียนรู้ลงอย่างกะทันหันจึงช่วยปรับปรุงประสิทธิภาพการตรวจสอบความถูกต้องของโมเดลที่มีความเหมาะสมมากเกินไปอยู่แล้ว! ฉันคาดหวังว่าการลดลงของ LR จะเร่งการติดตั้งอุปกรณ์มากเกินไป

  2. หลังจากยุค ~ 125 ( กล่องสีฟ้า ) การสูญเสียเริ่มขึ้น แต่ความแม่นยำจะดีขึ้นเรื่อย ๆ ฉันเข้าใจว่าการสูญเสียอาจเพิ่มขึ้นได้ในขณะที่ความแม่นยำคงที่ (โดยแบบจำลองจะมั่นใจมากขึ้นในการคาดการณ์ที่ผิดหรือมีความมั่นใจน้อยลงในการคาดการณ์ที่ถูกต้อง) แต่ฉันไม่เข้าใจว่าความแม่นยำจะดีขึ้นได้อย่างไรในขณะที่การสูญเสียเพิ่มขึ้น

คำตอบ

hH1sG0n3 Aug 20 2020 at 18:52

เพียงไม่กี่จุดด้านล่าง

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

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

นอกจากนี้โปรดทราบว่าการสูญเสียรถไฟของคุณนั้นสูงกว่าการสูญเสียค่าตอบแทนสำหรับการฝึกอบรมจำนวนมาก (~ ยุคที่ 55) คุณอาจต้องการตรวจสอบว่าโมเดลของคุณเป็นประจำอย่างไรเนื่องจากอาจส่งผลต่อเส้นโค้งการเรียนรู้ของคุณในรูปแบบที่อาจช่วยให้คุณสรุปการวินิจฉัยได้ดีขึ้น เช่นใน pytorch การสูญเสียรถไฟระหว่างสถานะของโมเดล (model.train () และ model.eval ()) แตกต่างกันอย่างมีนัยสำคัญ