Binary Cross-Entropy พร้อม Logits
ค่าความสูญเสียที่เสถียรสำหรับปัญหาสองคลาส
Binary Cross-Entropy พร้อม Logits เป็นบทเรียน Deep Learning Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 2 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Deep Learning Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Deep Learning Academy มีบทเรียนทั้งหมด 4 บทเรียน
สองคลาส หนึ่งการตัดสินใจ
เมื่อแบบจำลองของคุณต้องตอบคำถามใช่หรือไม่ใช่ เช่น เป็นสแปมหรือไม่เป็นสแปม ให้ใช้ เอนโทรปีไขว้แบบทวิภาค ซึ่งเป็นความสูญเสียที่สร้างมาสำหรับปัญหาสองคลาสโดยเฉพาะ ✅
จากคะแนนสู่ความน่าจะเป็น
แบบจำลองจะส่งออกคะแนนดิบก่อน ซึ่งเรียกว่า ลอจิต จากนั้นฟังก์ชัน sigmoid จะบีบลอจิตนั้นให้เป็นความน่าจะเป็นระหว่าง 0 ถึง 1
import torch
prob = torch.sigmoid(logit)สิ่งที่เอนโทรปีไขว้ให้รางวัล
เอนโทรปีไขว้ให้ค่าความสูญเสียต่ำเมื่อความน่าจะเป็นที่ทำนายใกล้เคียงกับป้ายกำกับจริง และให้ค่าความสูญเสียสูงเมื่อแบบจำลองมั่นใจแต่ทำนายผิด
มั่นใจแต่ผิดยิ่งเสียหาย
การทำนาย 0.99 เมื่อป้ายกำกับจริงคือ 0 จะทำให้เกิดความสูญเสียมหาศาล เอนโทรปีไขว้ลงโทษความผิดพลาดที่มั่นใจมาก มากกว่าความผิดพลาดที่ยังไม่แน่ใจอย่างมาก
การเลือกความสูญเสียแบบตรงไปตรงมา
คุณอาจใช้ sigmoid ด้วยตนเอง แล้วใช้ nn.BCELoss กับค่าความน่าจะเป็น วิธีนี้ใช้งานได้ แต่มีวิธีที่ปลอดภัยกว่าสำหรับการฝึกจริง
import torch.nn as nn
loss_fn = nn.BCELoss()
loss = loss_fn(prob, target)ป้อนลอจิต ไม่ใช่ความน่าจะเป็น
ความสูญเสียที่แนะนำคือ BCEWithLogitsLoss ซึ่งรับลอจิตดิบโดยตรง และใช้ sigmoid ภายในให้คุณโดยอัตโนมัติ
import torch.nn as nn
loss_fn = nn.BCEWithLogitsLoss()
loss = loss_fn(logit, target)เหตุผลที่รวมขั้นตอนเข้าด้วยกัน
การรวม sigmoid กับความสูญเสียเข้าด้วยกันใช้กลเม็ด log-sum-exp ซึ่งช่วยป้องกันค่าล้น และให้เกรเดียนต์ที่เสถียรแม้ลอจิตจะมีค่ามากหรือน้อยสุดขั้ว
ไม่ต้องใช้ Sigmoid ซ้ำ
เนื่องจาก BCEWithLogitsLoss ใช้ sigmoid เอง ชั้นสุดท้ายของแบบจำลองจึงควรส่งออกลอจิตดิบโดยไม่ต่อ sigmoid ไว้
เป้าหมายคือ 0 หรือ 1
ส่งเป้าหมายชนิดจำนวนจริงที่มีค่า 0.0 หรือ 1.0 และมีรูปร่างเดียวกับลอจิตของคุณ รูปร่างที่ไม่ตรงกันคือข้อผิดพลาดคลาสสิกของ BCE ที่ควรระวัง
target = torch.tensor([1.0, 0.0, 1.0])ใช้ Sigmoid เฉพาะตอนอนุมาน
ระหว่างการฝึก ความสูญเสียจะจัดการบีบค่าให้เอง หากต้องการอ่านค่าความน่าจะเป็นสำหรับการทำนาย ให้ใช้ sigmoid กับลอจิตในเวลาการอนุมาน
ปรับสมดุลด้วย pos_weight
หากตัวอย่างบวกมีน้อย อาร์กิวเมนต์ pos_weight จะเพิ่มน้ำหนักให้ส่วนร่วมของตัวอย่างเหล่านั้น เพื่อให้แบบจำลองหยุดมองข้ามคลาสส่วนน้อย
ตรวจสอบอย่างรวดเร็ว
คุณกำลังทำการจำแนกแบบทวิภาคและต้องการความเสถียรเชิงตัวเลข ควรป้อนอะไรให้ความสูญเสีย
ทบทวน: ใช่หรือไม่ใช่อย่างเสถียร
สำหรับงานสองคลาส ให้ป้อนลอจิตดิบเข้า BCEWithLogitsLoss ซึ่งจะบีบค่าและคำนวณคะแนนในขั้นตอนเดียวอย่างเสถียร เก็บ sigmoid ไว้ใช้สำหรับอ่านค่าความน่าจะเป็นภายหลัง 👍
เรียนรู้ Python ด้วย AI tutor — ฟรี
เขียนและเรียกใช้โค้ดจริงในเบราว์เซอร์ของคุณ รับความช่วยเหลือทันทีจาก AI tutor 24/7 และเรียนรู้ต่อจากที่คุณหยุดบนเว็บหรือในแอป
- คอร์ส
- 30
- บทเรียน
- 120
คำถามที่พบบ่อย
บทเรียน “Binary Cross-Entropy พร้อม Logits” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “Binary Cross-Entropy พร้อม Logits” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Deep Learning Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Deep Learning Academy มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “Binary Cross-Entropy พร้อม Logits”
ค่าความสูญเสียที่เสถียรสำหรับปัญหาสองคลาส คุณปฏิบัติ Deep Learning Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Deep Learning Academy หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน Deep Learning Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 2 จากทั้งหมด 4 บทเรียน
บทเรียน “Binary Cross-Entropy พร้อม Logits” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน Deep Learning Academy นี้ได้ไหม
ได้ บทเรียน Deep Learning Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- MSE และ MAE สำหรับการถดถอย
- Binary Cross-Entropy พร้อม Logits
- Cross-Entropy สำหรับหลายคลาส
- น้ำหนักคลาสสำหรับข้อมูลไม่สมดุล