Deep Learning Academy · บทเรียน

Binary Cross-Entropy พร้อม Logits

ค่าความสูญเสียที่เสถียรสำหรับปัญหาสองคลาส

บทเรียน 2 จาก 413 ขั้นตอน

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 ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. MSE และ MAE สำหรับการถดถอย
  2. Binary Cross-Entropy พร้อม Logits
  3. Cross-Entropy สำหรับหลายคลาส
  4. น้ำหนักคลาสสำหรับข้อมูลไม่สมดุล
← กลับไปที่ Deep Learning Academy