الهدف: مواءمة الهدف والطبقة الأخيرة ودالة الخسارة.
الخسارة تُقدّم إشارة التدريب. أما المقياس (Metric) فيصف الجودة بحسب الحاجة. ينبغي أن تكون الخسارة قابلة للاشتقاق في أغلب النقاط؛ أما مقياس الأعمال فقد لا يكون كذلك.
| المهمة | المخرج | الهدف | خسارة PyTorch |
|---|---|---|---|
| انحدار | (N,1) أو (N,) | عدد عائم | MSELoss, L1Loss, HuberLoss |
| ثنائية | Logit واحد | 0/1 عائم | BCEWithLogitsLoss |
| K أصناف | K من Logits | مؤشر صحيح | CrossEntropyLoss |
| متعدّدة العلامات | K من Logits | K قيم 0/1 | BCEWithLogitsLoss |
بالنسبة للصنف الحقيقي y، تساوي الخسارة متعدّدة الأصناف -log p_y. يُعاقَب التنبؤ الواثق
والخاطئ بشدّة. تجمع CrossEntropyLoss بين log_softmax والاحتمال العكسي السالب اللوغاريتمي؛
ولا يجب تزويدها باحتمالات مُطَبَّعة سلفاً.
خسارة الدُّفعة عادةً متوسّط. مع الأصناف النادرة، يمكن ترجيح الأصناف، لكن الترجيح لا يعوِّض عن بروتوكول تحقّق مناسب ولا عن مقاييس مثل الاستدعاء (Recall) والدقة (Precision) وPR-AUC.
import torch
from torch import nn
weights = torch.tensor([1.0, 4.0])
criterion = nn.CrossEntropyLoss(weight=weights)يُبدّل تنعيم العلامات الهدف اليقيني المطلق بتوزيع مُخفَّف قليلاً. قد يُقلّل الإفراط في الثقة، لكنه يُعدّل المعايرة ويجب التحقّق منه، لا تطبيقه كطقس ثابت.
لماذا لا تصلح الدقّة (Accuracy) خسارةً مباشرة؟ هل ينبغي تطبيق softmax قبل
CrossEntropyLoss؟
الدقّة متقطعة ولا تُنتج تدرجاً تقريباً. لا، تنتظر الخسارة Logits.
من أجل سعر عقاري، والاحتيال الثنائي، وتصنيف نوع من عشرة أنواع، ووسوم مستقلّة، حدِّد شكل Logits وترميز الهدف وخسارة التدريب والمقياس التجاري. أضف حالة تكون فيها MAE مفضّلة على MSE. النجاح: للخسارة وللمقياس دوران متمايزان صراحة.
القراءة: الخسارة تجعل التعلّم قابلاً للاشتقاق، بينما يحكم المقياس على قيمة النموذج. لذا قد يكونان مختلفَين. المزلق الرئيسي هو اختيار خسارة لأن اسمها يُشبه المقياس فقط، دون التحقق من تنسيق الهدف، ومن Logits المتوقعة، ومن الكلفة التجارية للأخطاء.