📖 একটি ছোট গল্প
আপনি একটি classifier তৈরি করেছেন। সে প্রতিটি ভুল উত্তর কতটা "আত্মবিশ্বাসের সাথে" দিচ্ছে — সেটাই Cross-Entropy। PyTorch-এর nn.CrossEntropyLoss আসলে Shannon-এর ১৯৪৮ সালের সূত্রের সরাসরি প্রয়োগ।
Entropy: গড় Information
H(P) = -Σ P(x) log P(x)
- একটি distribution-এর গড় "অনিশ্চয়তা"
- Uniform distribution → maximum entropy
- One-hot (নিশ্চিত) distribution → H = 0
উদাহরণ: ফেয়ার coin-এর H = 1 bit; biased coin (0.9, 0.1)-এর H ≈ 0.47 bit।
Cross-Entropy
সত্য distribution P, model-এর prediction Q হলে:
H(P, Q) = -Σ P(x) log Q(x)
Classification-এ true label one-hot, তাই sum কমে দাঁড়ায় -log Q(y_true)। মডেল ঠিক class-কে যত কম probability দেয়, loss তত বড়।
💡 ইনসাইট
সম্পর্ক: H(P, Q) = H(P) + KL(P‖Q)। H(P) fixed হওয়ায় cross-entropy minimize করা মানে KL divergence minimize করা।
PyTorch Implementation
pythonPython · NumPy
import torch
import torch.nn.functional as F
logits = torch.tensor([[2.0, 0.5, 0.3]]) # raw scores
target = torch.tensor([0]) # true class
# Manual cross-entropy
probs = F.softmax(logits, dim=-1)
loss_manual = -torch.log(probs[0, target])
# PyTorch built-in (combines log_softmax + NLL)
loss_builtin = F.cross_entropy(logits, target)
print(loss_manual.item(), loss_builtin.item()) # equalSummary · সারসংক্ষেপ
- Entropy = একটি distribution-এর গড় অনিশ্চয়তা।
- Cross-Entropy = সত্য বনাম prediction-এর "ভুল বিশ্বাসের" পরিমাপ।
- প্রায় সব classification model-এর default loss এটি।