โครงข่ายประสาทเทียม - ความสัมพันธ์ระหว่างการสูญเสียและความแม่นยำ


11

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

คำตอบ:


9

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


6

การสูญเสียทั่วไปมากกว่าความแม่นยำ ในการจัดหมวดหมู่คุณสามารถไปที่ความแม่นยำ 100% ซึ่งการทำนายฉลากทั้งหมดถูกต้อง แต่สิ่งที่เกี่ยวกับการถดถอยหรือการพยากรณ์? ไม่มีคำจำกัดความที่ 0% และ 100%

การสูญเสียสามารถปรับให้เหมาะสมได้หลายวิธี ในคลาสเมธอดเชิงตัวเลขคุณได้เรียนรู้ที่จะแก้ปัญหาโดยเพิ่มประสิทธิภาพ (ซึ่งย่อให้เล็กที่สุด ) ด้วยวิธีการต่าง ๆ เช่นวิธีของนิวตันวิธีการแบ่งครึ่งเป็นต้น|yhaty|


0

ใช่พวกเขาทั้งสองวัดความถูกต้องของ y และ y_hat และใช่พวกเขามักจะมีความสัมพันธ์กัน บางครั้งฟังก์ชันการสูญเสียอาจไม่แม่นยำ แต่คุณยังสนใจที่จะวัดความแม่นยำแม้ว่าคุณจะไม่ได้ปรับให้เหมาะสมโดยตรง ตัวอย่าง TensorFlow MNIST ของ Google ช่วยลด / เพิ่มประสิทธิภาพการสูญเสียเอนโทรปี แต่แสดงความแม่นยำให้กับผู้ใช้เมื่อรายงานผลและสิ่งนี้ดีมาก

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


7
ที่สำคัญกว่านั้นความแม่นยำไม่ใช่ฟังก์ชั่นที่แตกต่างกันดังนั้นคุณจึงไม่สามารถ backpagate ได้
Jan van der Vegt

@JanvanderVegt ใช่มันเป็นจุดที่ดี
Ryan Zotti

ฉันเรียนรู้ว่าใน Keras ฉันสามารถใส่เมตริกการประเมินแบบ "กำหนดเอง" (โดยกำหนดเองในกรณีนี้ฉันหมายความว่าไม่มีการใช้งานในตัวใน Keras เช่น AUC หรือ F1-Score) ในการรวบรวม ฉันเชื่อว่าในกรณีนี้เมตริก "กำหนดเอง" นี้จะใช้ / แสดงแทนความแม่นยำทุกที่ที่show_accuracyพารามิเตอร์ถูกตั้งค่าเป็น True (เช่นเหมาะสมหรือในการประเมินผล) ถูกต้องหรือไม่
Hendrik

1
@Hendrik ใช่คุณทำได้เพียงแค่สร้างdef your_own_metric(y_true, y_pred)ฟังก์ชั่นและส่งต่อไปยังmodel.compile(..., metrics=[your_own_metric])
rilut
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.