Bài 5 — Loss, sampling và optimization: đang ưu tiên lỗi nào?#
Điểm vào · Trước: pooling · Tiếp: augmentation.
Mục tiêu và tiền đề#
Tính minibatch loss với đúng denominator, phân biệt weights/sampling/priors, hiểu focal và margin/metric/multitask qua assumptions. Cần CE, gradient và weighted population optimum. Bài này bổ sung so sánh recipe; không lặp chứng minh Bayes. Dùng y=1 B, y=0 S, q=σ(d)=model output B, d=z_B−z_S, natural log, losses không có đơn vị vật lý.
1. CE/BCE: cùng pointwise loss, reduction có thể khác#
Không weights: ℓᵢ=−yᵢ ln qᵢ−(1−yᵢ)ln(1−qᵢ). Hai-logit CE nhận raw logits; một-logit BCEWithLogits nhận d, chưa sigmoid. Hai biểu thức tương đương pointwise ở cùng d, không bảo đảm hai parameterizations/training runs cho cùng nghiệm.
Hard class-index CE, class weights w_B,w_S, valid labels, reduction='mean':
Denominator phụ thuộc nhãn batch, không q và không optimizer gradient. Bỏ ignored positions khỏi cả numerator/denominator. Soft probability targets trong API có weighted sum over classes rồi chia số elements N, khác hard-target weighted-mean case. Vì vậy one-hot float targets và class-index targets với weights có thể cho khác scale dù cùng labels. PyTorch 2.14 CrossEntropyLoss, hai target modes.
BCEWithLogits pos_weight=p nhân term positive, weight rescale elements, default mean chia số output elements, không tự chia tổng class weights. Broadcast shapes cần hợp với output. BCEWithLogitsLoss API.
2. Ví dụ hoàn chỉnh: ba mẫu, hai denominators#
Toy batch y=[1,0,0], q=[0,8;0,6;0,2], weights w_B=4,w_S=1:
| Mẫu | −ln probability của nhãn đúng | Weighted contribution |
|---|---|---|
| B, q=0,8 | −ln0,8 = 0,223144 | 0,892574 |
| S, q=0,6 | −ln0,4 = 0,916291 | 0,916291 |
| S, q=0,2 | −ln0,8 = 0,223144 | 0,223144 |
Numerator ≈2,032009. Hard-target weighted CE mean chia 4+1+1=6: L≈0,338668. BCE mean với pos_weight=4 chia 3: L≈0,677336. Custom weighted_losses.mean() cũng chia 3 trong toy này. Score gradients CE là [−0,133333;0,1;0,033333]; BCE là gấp đôi ở batch này. Khi composition đổi, factor đổi nên không sửa bằng một LR factor duy nhất cho mọi batch.
Singleton hard-label CE mean: w_yℓ/w_y=ℓ, class weight triệt tiêu nếu w_y>0. Weight không tạo cost sensitivity theo class ở batch size 1 theo reduction này. Loss 'sum' hoặc global fixed normalization cho behavior khác. Trung bình các batch ratios cũng không bằng ratio của toàn epoch; aggregation training log cần nói đang báo gì.
3. Sampling đổi examples; weights đổi contribution#
Giả sử class-only sampling thay prior π_B mà giữ p(x|B),p(x|S). Weighted population objective với fixed/global normalization có ideal logit:
Proof đã có ở lớp 1. Không gán tự động identity này cho expected stochastic objective chia random minibatch denominator, finite model/regularization, hoặc within-class sampling làm conditionals đổi.
Toy uninformative x: original π_B=0,1, weights ratio 9 cho q*=0,5 theo population objective. Balanced sampling chuyển π_B=0,5; giữ weights ratio 9 cho q*=0,9. Đã cộng hai offsets. Nếu desired training emphasis là cân bằng thì combo có thể ưu tiên B thêm; nếu cost target muốn offset ấy thì có thể chủ ý. Không gọi mọi combination là overcorrection. Phải viết mục tiêu tổng thể và reduction.
WeightedRandomSampler dùng sample weights, replacement/num_samples quyết định exposures; class-balanced batch sampler có composition constraint khác. Lấy nhiều genuine lặp lại không tăng unique diversity; đổi batch stats, gradient variance và effective steps. PyTorch data sampler API.
4. Focal: “hard” theo model, không theo giá trị khoa học#
Đặt p_t=q nếu y=1, p_t=1−q nếu y=0:
γ=0 về weighted CE pointwise; γ tăng làm easy examples ít contribution. α_t là class factor; reduction và normalization vẫn cần recipe riêng. Paper gốc cho object detection, không chứng minh hyperparameters tối ưu với Audio-JEPA. Lin et al., v2 §3 equations 4–5.
Toy α=1,γ=2: p_t=0,9 có CE=0,105361, focal=0,001054; p_t=0,1 có CE=2,302585, focal=1,865094. Model-confident easy samples giảm mạnh; mislabeled example cũng có thể luôn “hard”. Không dùng focal loss giảm trên train làm proof học forensic cues.
Focal gradient không chỉ CE gradient nhân (1−p_t)^γ vì modulation cũng phụ thuộc score. Với B:
Ở q=0,9,γ=2 gradient≈−0,002896 so CE −0,1; q=0,1 gradient≈−1,102019 so CE −0,9. Focal có thể làm magnitude hard-gradient lớn hơn CE dù focal loss value nhỏ hơn. Ví dụ và finite differences được kiểm bằng script toy của lớp.
5. Margin/metric: cấu trúc embedding là giả định thiết kế#
| Họ | Cơ chế | Failure/điều cần công bố |
|---|---|---|
| Angular margin | Normalize feature/prototypes, scale logits; tăng angle của đúng class khi train | Angular geometry/scale/margin; inference bỏ training margin; không tự calibrated |
| One-class/compact B | Ép B tập trung, S ngoài vùng với margins khác | Genuine nhiều domain có thể đa mode; lạ chưa chắc fake |
| Triplet/metric | Anchor gần positive hơn negative theo distance | Mining quyết định hard pairs; mislabeled/outliers bị khuếch đại |
| Supervised contrastive | Cùng class làm positives, khác class làm negatives | Gộp fake families có thể xóa structure cần cho transfer/attribution |
Ví dụ angular toy: correct-class angle θ=30°, cosine≈0,8660; margin m=15° làm train cosine(θ+m)=cos45°≈0,7071 trước scale. Nó tạo yêu cầu separation lớn hơn, không tạo unseen-generator guarantee. Công thức này là ví dụ của ArcFace, không mọi margin loss. ArcFace v3 §2.1, OC-Softmax cho spoofing §2.
OC-Softmax trong nguồn này dùng một direction vector chuẩn hóa và hai margins khác nhau cho B/S; vẫn dùng spoof examples khi học. Nhãn số của paper đó là B=0, S=1, ngược quy ước lớp này, nên phải map trước khi chép công thức. “One-class” không mặc định chỉ có bona fide training data, và không tương đương Gaussian density score của bài 2.
SupCon với unit embeddings vᵢ, temperature τ>0, positives P(i):
Denominator chứa cả positive candidates và negatives, không anchor. Batch thiếu positive cần handling; τ đổi concentration/gradient scale. “Fake” có thể nhiều mechanisms; grouping theo binary labels khác grouping theo generator, speaker hoặc view identity. Khosla et al., §3 equation 2.
Multitask L=L_detect+λL_aux có thể học speaker/source/segment. Shared θ nhận tổng gradients; nếu dot product gradients âm, hai tasks cạnh tranh ở local step. Aux speaker/source có thể làm nuisance dễ đọc hơn thay vì bỏ nó; segment labels có thể hỗ trợ locality khi thật sự có annotation. λ và aux-data không là free improvement.
6. Optimization và paper#
Freeze/full đổi update space; LR groups, scheduler, weight decay và steps đổi đường đi trong space ấy. AdamW decoupled decay khác thêm L2 rồi đưa qua adaptive moments; tên optimizer không đủ recipe. Epoch bằng một lượt theo dataloader hiện tại, oversampling làm sample exposure/steps mỗi epoch khác. AdamW §2.
PDF paper báo weighted CE ratio khoảng 9,6, AdamW WD 0,05, six epochs, batch 32, encoder/head peak LR khác nhau. Đây là reported recipe; notebook v38 source dùng CE weight [1, n_S/n_B] theo y=0 S,1 B, hard targets. Chưa tải checkpoint để xác minh trained tensors. Không tự nhập focal/metric/Group DRO vào lịch sử của hệ.
7. Bài tập và đáp án#
- Batch hai mẫu có losses 0,2 (B), 1 (S), weights 5/1. Weighted hard CE mean là gì? Custom weighted mean chia batch là gì?
- Nếu nhân toàn bộ class weights ×10 thì hard CE mean đổi không? Soft-target CE mean luôn giống thế không?
- Balanced sampling rồi class weights có luôn sai không?
- Một file sai nhãn vẫn loss cao. Focal có tự sửa nhãn không?
- Metric loss ép mọi fake gần nhau trả lời cùng câu hỏi với generator attribution không?
Đáp án giải thích
- (5×0,2+1)/6=1/3; chia batch=2/2=1. Contribution và denominator phải xét cùng nhau.
- Hard mean không đổi vì tử/mẫu cùng scale. Soft probability target mode mean chia N, nên weighted loss scale ×10 nếu giữ targets/logits; optimizer update có thể khác.
- Không. Có thể chủ ý theo cost/prior; cần effective objective và batch reduction, không mặc định double-count harmful.
- Không. Nó nhấn hard theo model, có thể tăng ảnh hưởng mislabeled/outliers; cần quality audit.
- Không. Binary compactness và source separation là objectives khác, có thể xung đột.