Sigmoid
Hàm sigmoid ánh xạ mọi số thực thành giá trị từ 0 đến 1, chuyển đầu ra của model thành xác suất. So sánh hàm này với các hàm kích hoạt khác.
Hàm Sigmoid là một thành phần toán học nền tảng được sử dụng rộng rãi trong các lĩnh vực học máy (ML) và học sâu (DL). Hàm này thường được gọi là “hàm nén”, nhận một số thực bất kỳ làm đầu vào và ánh xạ thành giá trị trong khoảng từ 0 đến 1. Đường cong hình chữ “S” đặc trưng khiến hàm đặc biệt hữu ích để chuyển đầu ra thô của model thành xác suất có thể diễn giải. Trong bối cảnh mạng nơ-ron (NN), hàm Sigmoid đóng vai trò là hàm kích hoạt, đưa tính phi tuyến vào để model có thể học các mẫu phức tạp vượt ngoài quan hệ tuyến tính đơn giản. Dù phần lớn đã được thay thế bằng các hàm khác trong những lớp ẩn sâu, hàm này vẫn là lựa chọn tiêu chuẩn cho lớp đầu ra trong các tác vụ phân loại nhị phân.
Cơ chế hoạt động của Sigmoid trong AI#
Về cốt lõi, hàm Sigmoid biến đổi dữ liệu đầu vào—thường được gọi là logits—thành một khoảng đã chuẩn hóa. Phép biến đổi này rất quan trọng với các tác vụ cần dự đoán khả năng một sự kiện xảy ra. Bằng cách giới hạn đầu ra trong khoảng từ 0 đến 1, hàm cung cấp điểm xác suất rõ ràng.
- Hồi quy logistic: Trong mô hình hóa thống kê truyền thống, Sigmoid là nền tảng của hồi quy logistic. Hàm này cho phép nhà khoa học dữ liệu ước tính xác suất của một kết quả nhị phân, chẳng hạn như khách hàng sẽ rời đi hay tiếp tục sử dụng dịch vụ.
- Phân loại nhị phân: Đối với mạng nơ-ron được thiết kế để phân biệt hai lớp (ví dụ: “mèo” và “chó”), lớp cuối thường sử dụng kích hoạt Sigmoid. Nếu đầu ra vượt quá ngưỡng (thường là 0.5), model dự đoán lớp dương.
- Phân loại đa nhãn: Khác với bài toán đa lớp, trong đó các lớp loại trừ lẫn nhau, tác vụ đa nhãn cho phép một ảnh hoặc văn bản đồng thời thuộc nhiều danh mục. Ở đây, Sigmoid được áp dụng độc lập cho từng nút đầu ra, cho phép model phát hiện “ô tô” và “người” trong cùng một khung cảnh mà không xung đột.
Những khác biệt chính so với các hàm kích hoạt khác#
Dù từng là lựa chọn mặc định cho mọi lớp, Sigmoid có những hạn chế như vấn đề tiêu biến gradient, trong đó gradient trở nên quá nhỏ để cập nhật trọng số hiệu quả trong mạng sâu. Điều này dẫn đến việc áp dụng các hàm thay thế cho lớp ẩn.
- Sigmoid và ReLU (Đơn vị tuyến tính chỉnh lưu): ReLU có tốc độ tính toán nhanh hơn và tránh hiện tượng gradient biến mất bằng cách xuất trực tiếp giá trị đầu vào nếu giá trị đó dương, còn không thì xuất 0. ReLU và các biến thể trơn như SiLU, được YOLO26 sử dụng, là những lựa chọn ưu tiên cho các lớp ẩn trong kiến trúc hiện đại, trong khi Sigmoid được dành cho lớp đầu ra cuối cùng ở một số tác vụ cụ thể.
- Sigmoid so với Softmax: Cả hai đều ánh xạ đầu ra vào khoảng 0–1, nhưng phục vụ mục đích khác nhau. Sigmoid xử lý từng đầu ra độc lập, phù hợp với tác vụ nhị phân hoặc đa nhãn. Softmax buộc tổng tất cả đầu ra bằng 1, tạo ra phân phối xác suất được dùng cho phân loại đa lớp, trong đó chỉ có một lớp đúng.
Ứng dụng thực tế#
Hàm Sigmoid hữu ích trong nhiều ngành cần ước tính xác suất.
-
Chẩn đoán y tế: Các model AI dùng trong phân tích hình ảnh y tế thường sử dụng đầu ra Sigmoid để dự đoán xác suất bệnh xuất hiện trong ảnh X-quang hoặc ảnh quét MRI. Ví dụ, model có thể xuất ra 0.85, cho biết khả năng có khối u là 85%, hỗ trợ bác sĩ phát hiện sớm.
-
Phát hiện thư rác: Các hệ thống lọc email sử dụng model xử lý ngôn ngữ tự nhiên (NLP) với bộ phân loại Sigmoid để xác định thư đến là “thư rác” hay “không phải thư rác”. Model phân tích từ khóa và siêu dữ liệu, rồi xuất ra điểm số để quyết định email được đưa vào hộp thư đến hay thư mục rác.
Triển khai thực tế#
Bạn có thể quan sát cách Sigmoid biến đổi dữ liệu bằng PyTorch, một thư viện phổ biến để xây dựng các model deep learning. Ví dụ đơn giản này minh họa hiệu ứng "nén" trên một dải 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 người muốn huấn luyện model sử dụng các khái niệm này mà không cần viết mã cấp thấp, Ultralytics Platform cung cấp giao diện trực quan để quản lý dataset và huấn luyện các model 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ền tảng cho phép người dùng tập trung 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ể.










