วิธีตีความ“ การสูญเสีย” และ“ ความแม่นยำ” สำหรับโมเดลการเรียนรู้ของเครื่อง


202

เมื่อฉันฝึกโครงข่ายประสาทเทียมด้วย Theano หรือ Tensorflow พวกเขาจะรายงานตัวแปรที่เรียกว่า "การสูญเสีย" ต่อยุค

ฉันควรตีความตัวแปรนี้อย่างไร การสูญเสียที่สูงขึ้นนั้นดีขึ้นหรือแย่ลงหรือความหมายของประสิทธิภาพขั้นสุดท้าย (ความถูกต้อง) ของเครือข่ายประสาทของฉันคืออะไร

คำตอบ:


287

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

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

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

ความถูกต้องของรูปแบบจะถูกกำหนดปกติหลังจากพารามิเตอร์แบบจะเรียนรู้และคงที่และไม่มีการเรียนรู้ที่เกิดขึ้น จากนั้นตัวอย่างการทดสอบจะถูกป้อนเข้ากับแบบจำลองและจำนวนข้อผิดพลาด (การสูญเสียแบบศูนย์เดียว) ที่แบบจำลองนั้นถูกบันทึกหลังจากเปรียบเทียบกับเป้าหมายจริง จากนั้นคำนวณเปอร์เซ็นต์ของการแบ่งส่วนย่อย

ตัวอย่างเช่นถ้าจำนวนตัวอย่างทดสอบคือ 1,000 และรุ่นจำแนก 952 ของตัวอย่างเหล่านั้นอย่างถูกต้องความแม่นยำของโมเดลคือ 95.2%

ป้อนคำอธิบายรูปภาพที่นี่

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


2
สวัสดี @Amir ขอบคุณสำหรับคำอธิบายรายละเอียดของคุณ แต่ผมมีปัญหาในเครือข่ายประสาทของฉันสูญเสียมักจะลดลงเมื่อผมได้รับการฝึกฝน (เมื่อepochsเพิ่มขึ้น) แต่ความถูกต้องไม่ได้ดีขึ้น
mamatv

9
@amatv ตราบใดที่ต้นทุนลดลงคุณก็ควรจะไปต่อ แม้ว่าปกติแล้วค่าใช้จ่ายและความแม่นยำจะมีความสัมพันธ์แบบสัดส่วนผกผัน แต่คุณอาจทราบว่าความถูกต้องเป็นผลรวมของข้อผิดพลาดที่ไม่มีศูนย์หนึ่งในขณะที่ค่าใช้จ่ายคือผลรวมของจำนวนจุดลอยตัว ดังนั้นการลดต้นทุน 0.001% จึงไม่จำเป็นต้องเพิ่มความแม่นยำขึ้น 0.001% การเพิ่มความแม่นยำนั้นยากกว่ามากเมื่อการลดลงของต้นทุนนั้นไม่มีตัวตน (ค่าใช้จ่ายใกล้กับ minima ท้องถิ่น)
Amir

2
@amatv ฉันควรจะพูดตราบเท่าที่ค่าใช้จ่ายสำหรับการฝึกอบรมและการตรวจสอบลดลงคุณควรจะดีไป นอกจากนี้คุณยังสามารถตรวจสอบความถูกต้องในการตรวจสอบในแต่ละยุค หากมันเริ่มขึ้นโมเดลของคุณอาจเริ่มพอดีและคุณควรหยุดฝึก
อาเมียร์

1
ทำไมไม่ฝึกโมเดลเพื่อเพิ่มความแม่นยำแทนที่จะลดการสูญเสียให้น้อยที่สุด?
bikashg

2
@ ความแม่นยำของ bikashg นั้นไม่สามารถเปลี่ยนแปลงได้ดังนั้นคุณไม่สามารถทำการ backprop ได้
DharmaTurtle

24

พวกเขาเป็นสองตัวชี้วัดที่แตกต่างกันในการประเมินประสิทธิภาพของแบบจำลองของคุณมักจะใช้ในขั้นตอนที่แตกต่างกัน

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

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

ให้เราใช้ตัวอย่างการจำแนกของเล่น คุณต้องการทำนายเพศจากน้ำหนักและส่วนสูง คุณมี 3 ข้อมูลพวกเขามีดังนี้: (0 หมายถึงชาย, 1 หมายถึงหญิง)

y1 = 0, x1_w = 50kg, x2_h = 160cm;

y2 = 0, x2_w = 60kg, x2_h = 170cm;

y3 = 1, x3_w = 55kg, x3_h = 175cm;

คุณใช้โมเดลการถดถอยแบบโลจิสติกส์แบบง่ายนั่นคือ y = 1 / (1 + exp- (b1 * x_w + b2 * x_h))

คุณหา b1 และ b2 ได้อย่างไร คุณกำหนดความสูญเสียก่อนและใช้วิธีการปรับให้เหมาะสมเพื่อลดการสูญเสียในแบบวนซ้ำโดยการอัพเดต b1 และ b2

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

เราไม่รู้ว่า b1 และ b2 ควรเป็นอย่างไร ให้เราทำการสุ่มเลือกว่า b1 = 0.1 และ b2 = -0.03 ถ้าอย่างนั้นการสูญเสียของเราคืออะไร?

ดังนั้นการสูญเสียคือ

จากนั้นคุณเรียนรู้อัลกอริทึม (เช่นการไล่ระดับสี) จะค้นหาวิธีในการอัปเดต b1 และ b2 เพื่อลดการสูญเสีย

จะเกิดอะไรขึ้นถ้า b1 = 0.1 และ b2 = -0.03 คือ b1 และ b2 สุดท้าย (ผลลัพธ์จากการไล่ระดับสี) ความแม่นยำตอนนี้คืออะไร?

สมมุติว่า y_hat> = 0.5 เราจะตัดสินว่าคำทำนายของเราคือเพศหญิง (1) มิฉะนั้นจะเป็น 0 ดังนั้นอัลกอริทึมของเราทำนาย y1 = 1, y2 = 1 และ y3 = 1. ความแม่นยำของเราคืออะไร? เราทำการทำนายผิดบน y1 และ y2 และทำการแก้ไขให้ถูกต้องใน y3 ดังนั้นตอนนี้ความแม่นยำของเราคือ 1/3 = 33.33%

ป.ล. : ในคำตอบของอาเมียร์การกล่าวถึงการขยายพันธุ์กลับเป็นวิธีการหาค่าเหมาะที่สุดใน NN ฉันคิดว่ามันจะถูกมองว่าเป็นวิธีการไล่ระดับสีสำหรับตุ้มน้ำหนักใน NN วิธีการปรับให้เหมาะสมทั่วไปใน NN คือ GradientDescent และ Adam


ขอบคุณสำหรับคณิตศาสตร์ ช่วยอธิบายแนวคิด
Finn Frotscher

7

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

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

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

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.