ฉันสับสนเล็กน้อยจากการอยู่ร่วมกันของการวัดผลการสูญเสียและความแม่นยำในเครือข่ายประสาท ทั้งสองควรจะทำให้ "ความแน่นอน" ของการเปรียบเทียบของและใช่มั้ย ดังนั้นการประยุกต์ใช้สองซ้ำซ้อนในการฝึกอบรมไม่ใช่หรือ ยิ่งกว่านั้นทำไมพวกเขาถึงไม่สัมพันธ์กันY
ฉันสับสนเล็กน้อยจากการอยู่ร่วมกันของการวัดผลการสูญเสียและความแม่นยำในเครือข่ายประสาท ทั้งสองควรจะทำให้ "ความแน่นอน" ของการเปรียบเทียบของและใช่มั้ย ดังนั้นการประยุกต์ใช้สองซ้ำซ้อนในการฝึกอบรมไม่ใช่หรือ ยิ่งกว่านั้นทำไมพวกเขาถึงไม่สัมพันธ์กันY
คำตอบ:
บันทึกการสูญเสียมีคุณสมบัติที่ดีว่ามันเป็นฟังก์ชั่น differentiable ความแม่นยำอาจมีความสำคัญมากกว่าและสามารถตีความได้แน่นอนกว่า แต่ไม่สามารถใช้งานโดยตรงในการฝึกอบรมเครือข่ายเนื่องจากอัลกอริทึมการ backpropagation ที่ต้องการฟังก์ชันการสูญเสียที่แตกต่างกัน เมื่อการสูญเสียที่คุณต้องการไม่สามารถเพิ่มประสิทธิภาพได้โดยตรง (เช่นความถูกต้อง) คุณใช้ฟังก์ชั่นการสูญเสียที่ทำหน้าที่คล้ายกับพร็อกซีเมตริกจริง ในกรณีของการจำแนกประเภทไบนารีคุณจะใช้ sigmoid ในตอนท้ายและการสูญเสียบันทึกเพื่อความแม่นยำโดยประมาณ พวกมันมีความสัมพันธ์สูง
การสูญเสียทั่วไปมากกว่าความแม่นยำ ในการจัดหมวดหมู่คุณสามารถไปที่ความแม่นยำ 100% ซึ่งการทำนายฉลากทั้งหมดถูกต้อง แต่สิ่งที่เกี่ยวกับการถดถอยหรือการพยากรณ์? ไม่มีคำจำกัดความที่ 0% และ 100%
การสูญเสียสามารถปรับให้เหมาะสมได้หลายวิธี ในคลาสเมธอดเชิงตัวเลขคุณได้เรียนรู้ที่จะแก้ปัญหาโดยเพิ่มประสิทธิภาพ (ซึ่งย่อให้เล็กที่สุด ) ด้วยวิธีการต่าง ๆ เช่นวิธีของนิวตันวิธีการแบ่งครึ่งเป็นต้น
ใช่พวกเขาทั้งสองวัดความถูกต้องของ y และ y_hat และใช่พวกเขามักจะมีความสัมพันธ์กัน บางครั้งฟังก์ชันการสูญเสียอาจไม่แม่นยำ แต่คุณยังสนใจที่จะวัดความแม่นยำแม้ว่าคุณจะไม่ได้ปรับให้เหมาะสมโดยตรง ตัวอย่าง TensorFlow MNIST ของ Google ช่วยลด / เพิ่มประสิทธิภาพการสูญเสียเอนโทรปี แต่แสดงความแม่นยำให้กับผู้ใช้เมื่อรายงานผลและสิ่งนี้ดีมาก
บางครั้งคุณไม่ต้องการเพิ่มประสิทธิภาพความแม่นยำโดยตรง ตัวอย่างเช่นหากคุณมีคลาสที่ไม่สมดุลอย่างจริงจังโมเดลของคุณจะเพิ่มความแม่นยำสูงสุดเพียงแค่เลือกคลาสที่พบบ่อยที่สุด แต่นี่จะไม่ใช่โมเดลที่มีประโยชน์ ในกรณีนี้ entropy / log-loss จะเป็นฟังก์ชั่นการสูญเสียที่ดีกว่าในการเพิ่มประสิทธิภาพ
show_accuracy
พารามิเตอร์ถูกตั้งค่าเป็น True (เช่นเหมาะสมหรือในการประเมินผล) ถูกต้องหรือไม่
def your_own_metric(y_true, y_pred)
ฟังก์ชั่นและส่งต่อไปยังmodel.compile(..., metrics=[your_own_metric])