ai-185Đọc toàn bộ đề miễn phí

Kỹ thuật làm mịn nhãn tránh quá tự tin (Label Smoothing Cross-Entropy)

Trong bài báo kinh điển *Rethinking the Inception Architecture* (Szegedy et al., 2016), các tác giả chỉ ra rằng việc huấn luyện mạng với nhãn One-Hot tuyệt đối (yk = 1) buộc mô hì…

AITrung bình30 phút

Tiến độ của tôi ở bài này

Điểm được lưu vào tài khoản sau khi chấm bài.

Đang tải điểm của bạn…

Kiến thức và chủ đề

label-smoothingcross-entropyregularizationgeneralization

Kiến thức tiên quyết: fused-softmax-cross-entropy-loss.

Nội dung đề bài

Mô tả bài toán

Trong bài báo kinh điển *Rethinking the Inception Architecture* (Szegedy et al., 2016), các tác giả chỉ ra rằng việc huấn luyện mạng với nhãn One-Hot tuyệt đối (yk = 1) buộc mô hình phải đẩy logit cực đại zk → +∞, gây hiện tượng quá tự tin và suy giảm khả năng tổng quát hóa. Kỹ thuật Label Smoothing pha trộn nhãn cứng với phân phối đều: y'k = (1 - ε) yk + εC trong đó ε ∈ (0, 1) là hệ số làm mịn (thường chọn 0.1), và C là số lượng lớp phân loại. Khi đó, hàm Cross-Entropy phân rã thành 2 thành phần: L = (1 - ε) Lhard + ε Luniform với Lhard = -log py và Luniform = -1C ∑k=1C log pk.

Hãy viết hàm label_smoothed_cross_entropy(logits: np.ndarray, targets: np.ndarray, epsilon: float = 0.1) -> float:

  • logits: ma trận (B, C) kiểu float64.
  • targets: mảng 1D (B,) chứa nhãn nguyên 0 ≤ yb < C.
  • epsilon: hệ số làm mịn 0.0 ≤ ε < 1.0.
  • Trả về giá trị hàm mất mát trung bình trên batch dạng float.

Input

  • Hàm label_smoothed_cross_entropy(logits, targets, epsilon): Các tham số đầu vào chứa dữ liệu Tensor/mảng NumPy hoặc giá trị siêu tham số tương ứng.

Output

  • Hàm label_smoothed_cross_entropy: Trả về kết quả kiểu float theo đúng đặc tả kỹ thuật và kích thước quy định.

Ràng buộc

  • Thời gian chạy tối đa: 6000ms.
  • Giới hạn bộ nhớ: 512MB.
  • Dữ liệu đầu vào hợp lệ theo đúng kiểu dữ liệu và miền giá trị được mô tả.

Ví dụ 1

Input

logits = np.array([[2.0, 1.0], [0.5, 3.0]])
targets = np.array([0, 1])
loss_smooth = label_smoothed_cross_entropy(logits, targets, epsilon=0.0)
p0 = np.exp(2.0) / (np.exp(2.0) + np.exp(1.0))
p1 = np.exp(3.0) / (np.exp(0.5) + np.exp(3.0))

Output

0.924142

Giải thích

Hàm/lớp được gọi với các tham số mẫu trên và trả về kết quả số học / kích thước tensor tương ứng theo đúng thiết kế.

Ví dụ 2

Input

logits = np.array([[10.0, 0.0]])
targets = np.array([0])
hard_loss = label_smoothed_cross_entropy(logits, targets, epsilon=0.0)
smooth_loss = label_smoothed_cross_entropy(logits, targets, epsilon=0.2)

Output

1.000045

Giải thích

Hàm/lớp được gọi với các tham số mẫu trên và trả về kết quả số học / kích thước tensor tương ứng theo đúng thiết kế.

3 cấp độ gợi ýMở dần khi bạn thật sự cần hỗ trợ.
Phân tích lời giảiGiải thích hướng tư duy và thuật toán.
Code tham khảoDùng để đối chiếu sau khi tự làm.

Gợi ý và lời giải chỉ mở sau khi bạn bấm Nộp bài. Giáo viên và quản trị viên mở được ngay.