Khám phá vai trò của hàm Sigmoid trong học máy. Tìm hiểu cách hàm kích hoạt này cho phép phân loại nhị phân trong các mô hình như... Ultralytics YOLO26.
Hàm Sigmoid là một thành phần toán học cơ bản được sử dụng rộng rãi trong lĩnh vực học máy (ML) và học sâu (DL) . Thường được gọi là "hàm nén", nó nhận bất kỳ số thực nào làm đầu vào và ánh xạ nó đến một giá trị nằm giữa 0 và 1. Đường cong hình chữ "S" đặc trưng này làm cho nó cực kỳ hữu ích để chuyển đổi đầu ra thô của mô hình thành các xác suất có thể diễn giải được. Trong bối cảnh của mạng nơ-ron (NN) , hàm Sigmoid hoạt động như một hàm kích hoạt , đưa vào tính phi tuyến tính cho phép các mô hình học được các mẫu phức tạp vượt ra ngoài các mối quan hệ tuyến tính đơn giản. Mặc dù nó đã được thay thế phần lớn bởi các hàm khác trong các lớp ẩn sâu, nhưng nó vẫn là một lựa chọn tiêu chuẩn cho các lớp đầu ra trong các nhiệm vụ phân loại nhị phân.
Về bản chất, hàm Sigmoid biến đổi dữ liệu đầu vào—thường được gọi là logit—thành một phạm vi chuẩn hóa. Phép biến đổi này rất quan trọng đối với các nhiệm vụ mà mục tiêu là dự đoán xác suất xảy ra của một sự kiện. Bằng cách giới hạn đầu ra giữa 0 và 1, hàm này cung cấp một điểm số xác suất rõ ràng.
Mặc dù Sigmoid từng là hàm mặc định cho tất cả các lớp, nhưng các nhà nghiên cứu đã phát hiện ra những hạn chế như vấn đề suy giảm độ dốc , trong đó độ dốc trở nên quá nhỏ để cập nhật trọng số một cách hiệu quả trong các mạng nơ-ron sâu. Điều này dẫn đến việc áp dụng các hàm thay thế cho các lớp ẩn.
Tính hữu dụng của hàm Sigmoid trải rộng trong nhiều ngành công nghiệp khác nhau, nơi cần đến việc ước lượng xác suất.
Bạn có thể quan sát cách hàm Sigmoid biến đổi dữ liệu bằng cách sử dụng PyTorch , một thư viện phổ biến để xây dựng các mô hình học sâu. Ví dụ đơn giản này minh họa hiệu ứng "nén" trên một loạt các giá trị đầu vào.
import torch
import torch.nn as nn
# Create a Sigmoid layer
sigmoid = nn.Sigmoid()
# Define input data (logits) ranging from negative to positive
input_data = torch.tensor([-5.0, -1.0, 0.0, 1.0, 5.0])
# Apply Sigmoid to squash values between 0 and 1
output = sigmoid(input_data)
print(f"Input: {input_data}")
print(f"Output: {output}")
# Output values near 0 for negative inputs, 0.5 for 0, and near 1 for positive inputs
Đối với những ai muốn huấn luyện các mô hình sử dụng những khái niệm này mà không cần viết mã cấp thấp, Nền tảng Ultralytics cung cấp giao diện trực quan để quản lý tập dữ liệu và huấn luyện các mô hình hiện đại như YOLO26. Bằng cách tự động xử lý các phức tạp về kiến trúc, nó cho phép người dùng tập trung vào việc thu thập dữ liệu huấn luyện chất lượng cao cho các ứng dụng thị giác máy tính cụ thể của họ.