Focal Loss
Khám phá cách Focal Loss giải quyết vấn đề mất cân bằng lớp (class imbalance) trong học sâu. Tìm hiểu cách triển khai nó với Ultralytics YOLO26 để tập trung vào các ví dụ khó và cải thiện độ chính xác của mô hình.
Focal Loss là một hàm mục tiêu chuyên biệt chủ yếu được sử dụng trong học sâu nhằm giải quyết bài toán mất cân bằng lớp nghiêm trọng. Trong nhiều tác vụ thị giác máy tính như phát hiện đối tượng, số lượng ví dụ nền (mẫu âm tính) lớn hơn rất nhiều so với các đối tượng quan tâm (mẫu dương tính). Các phương pháp tiêu chuẩn, chẳng hạn như Cross-Entropy Loss được sử dụng rộng rãi, đối xử công bằng với mọi lỗi, điều này thường khiến model bị quá tải bởi lượng dữ liệu nền dễ phân loại khổng lồ. Focal Loss sửa đổi phép tính độ mất mát tiêu chuẩn để giảm trọng số các ví dụ dễ này, buộc thuật toán tối ưu hóa phải tập trung năng lực học tập vào các ví dụ "khó"—những đối tượng hiếm và khó phân loại đóng vai trò cốt lõi đối với hiệu năng của model.
Cơ chế tập trung#
Sự đổi mới cốt lõi của Focal Loss nằm ở khả năng điều chỉnh linh động mức phạt được gán cho từng mẫu dựa trên độ tin cậy của model. Trong một kịch bản học có giám sát điển hình, một trình phát hiện có thể đánh giá hàng nghìn vị trí ứng viên trong một hình ảnh. Vì hầu hết các vị trí này không chứa đối tượng, một hàm mất mát tiêu chuẩn sẽ tích lũy nhiều tín hiệu lỗi nhỏ từ các mẫu âm tính dễ này, điều có thể làm chìm đi tín hiệu có giá trị từ một số ít trường hợp dương tính.
Focal Loss giới thiệu một hệ số điều biến làm suy giảm đóng góp của độ mất mát khi độ tin cậy vào lớp chính xác tăng lên. Điều này có nghĩa là nếu model đã chắc chắn 99% rằng một bản vá nền thực sự là nền, độ mất mát cho bản vá đó sẽ giảm xuống gần bằng không. Do đó, các trọng số model được cập nhật chủ yếu dựa trên các mẫu bị phân loại nhầm hoặc những mẫu mà model còn chưa chắc chắn. Cách tiếp cận có trọng điểm này rất cần thiết để huấn luyện các trình phát hiện đối tượng một giai đoạn hiệu suất cao như YOLO26, cho phép chúng đạt độ chính xác cao mà không cần các giai đoạn lấy mẫu phức tạp.
Các ứng dụng trong thực tế#
Xử lý dữ liệu huấn luyện mất cân bằng đóng vai trò quan trọng đối với việc triển khai các hệ thống AI mạnh mẽ trong các môi trường mà sự an toàn và độ chính xác được đặt lên hàng đầu.
- AI trong Y tế: Trong các lĩnh vực như phân tích hình ảnh y tế, việc xác định bệnh lý thường giống như tìm kim đáy bể. Ví dụ, trong một bản quét MRI tìm kiếm các tổn thương nhỏ, mô khỏe mạnh có thể chiếm hơn 99% số pixel. Một model tiêu chuẩn có thể tối đa hóa độ chính xác đơn giản bằng cách dự đoán là "khỏe mạnh" ở mọi nơi, bỏ sót chẩn đoán quan trọng. Focal Loss cho phép hệ thống nén tín hiệu từ mô khỏe mạnh dồi dào và ưu tiên học các đặc trưng tinh tế của các điểm bất thường, từ đó cải thiện độ thu hồi cho các trường hợp phát hiện cứu mạng.
- Xe tự lái: Các hệ thống nhận thức cho xe tự hành phải phát hiện những người tham gia giao thông dễ bị tổn thương như người đi bộ hoặc người đi xe đạp dựa trên bối cảnh phức tạp gồm các tòa nhà, đường xá và bầu trời. Mặc dù phần nền rất dễ học, các vật cản nhỏ hoặc ở xa lại đặt ra thách thức lớn. Bằng cách tận dụng Focal Loss, các ứng dụng AI trong ngành ô tô có thể đảm bảo tầng nhận thức không bỏ qua những đối tượng khó phát hiện này, duy trì các tiêu chuẩn an toàn ngay cả khi các mối nguy hiểm chỉ chiếm một phần vô cùng nhỏ trong trường nhìn.
Triển khai với Ultralytics#
Thư viện ultralytics bao gồm các triển khai tối ưu hóa của các hàm mất mát nâng cao để hỗ trợ các model tiên tiến. Trong khi Ultralytics Platform tự động cấu hình các siêu tham số này để huấn luyện tối ưu, các lập trình viên cũng có thể truy cập trực tiếp các thành phần này cho các nghiên cứu tùy chỉnh.
Ví dụ sau minh họa cách khởi tạo Focal Loss bằng gói tiện ích ultralytics và tính toán lỗi cho một tập hợp các dự đoán.
import torch
from ultralytics.utils.loss import FocalLoss
# Initialize Focal Loss.
# The 'gamma' parameter controls the focusing strength (higher = more focus on hard examples).
criterion = FocalLoss(gamma=1.5)
# Example: Model predictions (logits) and binary Ground Truth labels
# requires_grad=True simulates model outputs that need backpropagation
predictions = torch.tensor([[0.8], [-1.5], [0.1]], requires_grad=True)
targets = torch.tensor([[1.0], [0.0], [1.0]])
# Calculate the loss value
loss = criterion(predictions, targets)
print(f"Computed Focal Loss: {loss.item():.4f}")Sự khác biệt với các khái niệm liên quan#
Việc hiểu rõ vị trí của Focal Loss trong bối cảnh rộng lớn hơn của việc đo lường sai số sẽ giúp ích trong việc chọn chiến lược phù hợp cho các tác vụ thị giác máy tính cụ thể.
- Focal Loss so với Cross-Entropy Loss: Cross-Entropy là chỉ số nền tảng cho việc phân loại, có tác dụng phạt các dự đoán dựa trên lỗi logarit. Focal Loss hoàn toàn là một phần mở rộng của Cross-Entropy; nếu tham số tập trung được đặt bằng 0, nó sẽ quay về mặt toán học thành Cross-Entropy tiêu chuẩn. Điểm khác biệt chính là khả năng tự động giảm trọng số các mẫu âm tính dễ của Focal Loss, giúp nó vượt trội hơn đối với các tập dữ liệu mất cân bằng như COCO.
- Focal Loss so với IoU Loss: Trong khi Focal Loss được thiết kế cho việc phân loại (xác định đối tượng là gì), IoU Loss được sử dụng cho việc định vị (xác định đối tượng ở đâu). Các trình phát hiện hiện đại tận dụng một hàm mất mát hỗn hợp kết hợp Focal Loss cho xác suất lớp và các chỉ số dựa trên IoU cho việc hồi quy khung bao.
- Focal Loss so với Dice Loss: Dice Loss là một kỹ thuật khác được sử dụng để xử lý tình trạng mất cân bằng, chủ yếu trong các tác vụ phân đoạn ảnh. Trong khi Focal Loss hoạt động trên từng pixel hoặc từng mẫu dựa trên độ tin cậy, Dice Loss tối ưu hóa mức độ trùng lặp giữa các vùng được dự đoán và vùng thực tế trên phạm vi toàn cục. Thường thấy cả hai được sử dụng cùng nhau trong các quy trình phân đoạn phức tạp.






