Sigmoid
Khám phá vai trò của hàm Sigmoid trong machine learning. Tìm hiểu cách hàm activation này hỗ trợ binary classification trong các model như Ultralytics YOLO26.
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 machine learning (ML) và deep learning (DL). Thường được gọi là "hàm nén", hàm này nhận một số thực bất kỳ làm đầu vào và ánh xạ số đó thành một giá trị nằm trong khoảng từ 0 đến 1. Đường cong hình chữ "S" đặc trưng này khiến nó đặc biệt hữu ích để chuyển đổi đầu ra thô của model thành các xác suất dễ diễn giải. Trong bối cảnh neural network (NN), hàm Sigmoid hoạt động như một hàm kích hoạt, đưa tính phi tuyến vào model và cho phép model học các mẫu phức tạp vượt ra ngoài những mối quan hệ tuyến tính đơn giản. Mặc dù phần lớn đã được thay thế bằng các hàm khác trong những lớp ẩn sâu, Sigmoid vẫn là lựa chọn tiêu chuẩn cho các lớp đầu ra trong các tác vụ phân loại nhị phân.
Cơ chế của Sigmoid trong AI#
Về bản chất, hàm Sigmoid chuyển đổi dữ liệu đầu vào—thường được gọi là logits—sang một khoảng đã chuẩn hóa. Phép biến đổi này rất quan trọng đối với các tác vụ có mục tiêu dự đoán khả năng xảy ra của một sự kiện. Bằng cách giới hạn đầu ra trong khoảng từ 0 đến 1, hàm cung cấp một đ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 các 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 bỏ hay tiếp tục sử dụng dịch vụ.
- Phân loại nhị phân: Đối với các neural network được thiết kế để phân biệt giữa hai lớp (ví dụ: "mèo" và "chó"), lớp cuối thường sử dụng hàm kích hoạt Sigmoid. Nếu đầu ra lớn hơn một ngưỡng (thường là 0.5), model sẽ dự đoán lớp dương.
- Phân loại đa nhãn: Khác với các bài toán đa lớp, trong đó các lớp loại trừ lẫn nhau, các tác vụ đa nhãn cho phép một hình ảnh hoặc văn bản đồng thời thuộc về nhiều danh mục. Trong trường hợp này, Sigmoid được áp dụng độc lập cho từng nút đầu ra, cho phép model phát hiện một "chiếc xe" và một "người" trong cùng một 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#
Mặc dù Sigmoid từng là lựa chọn mặc định cho mọi lớp, các nhà nghiên cứu đã phát hiện những hạn chế như vấn đề vanishing gradient, trong đó gradient trở nên quá nhỏ để cập nhật trọng số một cách hiệu quả trong các network sâu. Điều này dẫn đến việc sử dụng các lựa chọn thay thế cho những lớp ẩn.
- Sigmoid so với 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 được hiện tượng vanishing gradient bằng cách xuất trực tiếp đầu vào nếu đầu vào dương, còn nếu không thì xuất 0. Đây là lựa chọn ưu tiên cho các lớp ẩn trong những kiến trúc hiện đại như YOLO26, trong khi Sigmoid được dành cho lớp đầu ra cuối cùng trong các tác vụ cụ thể.
- Sigmoid so với Softmax: Cả hai đều ánh xạ đầu ra vào khoảng từ 0 đến 1, nhưng phục vụ các mục đích khác nhau. Sigmoid xử lý từng đầu ra độc lập, khiến nó phù hợp với các 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 một phân phối xác suất được sử dụng cho phân loại đa lớp, trong đó chỉ một lớp là đúng.
Các ứng dụng trong thực tế#
Tính hữu ích của hàm Sigmoid mở rộng đến nhiều ngành khác nhau, nơi cần ước tính xác suất.
-
Chẩn đoán y khoa: Các model AI được sử dụng trong phân tích hình ảnh y khoa thường dùng đầu ra Sigmoid để dự đoán xác suất một bệnh xuất hiện trong ảnh X-quang hoặc ảnh chụp MRI. Ví dụ, một model có thể xuất ra 0.85, cho biết xác suất có khối u là 85%, qua đó 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) cùng các bộ phân loại Sigmoid để xác định một tin nhắn đến là "thư rác" hay "không phải thư rác". Model phân tích từ khóa và metadata, sau đó xuất ra một điểm số quyết định email sẽ được đưa vào hộp thư đến hay thư mục thư 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 các model sử dụng những khái niệm này mà không cần viết code cấp thấp, Ultralytics Platform cung cấp một 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ý sự phức tạp của 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ể của họ.









