Ultralytics YOLO27: Đăng ký vào danh sách chờ.
Cấp phép YOLO
Quay lại Bảng thuật ngữ Ultralytics

Sigmoid

Hàm sigmoid ánh xạ mọi số thực thành một giá trị trong khoảng từ 0 đến 1. Nội dung đề cập đến công thức, gradient, đầu ra xác suất, gate và code PyTorch.

Hàm sigmoid, σ(x) = 1 / (1 + e^(−x)), ánh xạ mọi số thực thành một giá trị từ 0 đến 1 theo đường cong hình chữ S: đầu vào âm lớn cho đầu ra gần 0, đầu vào dương lớn cho đầu ra gần 1, còn đầu vào bằng 0 cho giá trị chính xác 0.5. Trong học máy (ML), “sigmoid” hầu như luôn chỉ hàm logistic, cùng đường cong biến điểm số tuyến tính thành xác suất trong hồi quy logistic. Trong mạng nơ-ron (NN), sigmoid có ba vai trò: ban đầu đây là hàm kích hoạt cho các lớp ẩn; hàm chuyển điểm số cuối thành xác suất cho đầu ra nhị phân và đa nhãn; đồng thời hoạt động như công tắc bật-tắt mềm trong các cổng của tế bào hồi quy và các lớp có cổng khác. Các lớp ẩn sau đó chuyển sang dùng những hàm như ReLU, vì vậy trong các model hiện nay, hầu hết hàm sigmoid nằm ở đầu ra và trong các cổng.

Công thức và tính chất#

Sigmoid đối xứng quanh điểm giữa, σ(−x) = 1 − σ(x), và hàm nghịch đảo của nó là logit, log(p / (1 − p)), chuyển xác suất trở lại log-odds. Vì vậy, đầu ra thô của mạng trước khi qua sigmoid được gọi là logit. Đạo hàm có dạng gọn σ′(x) = σ(x)(1 − σ(x)), đạt cực đại 0.25 khi x = 0 và giảm dần về 0 khi đường cong phẳng ra ở hai đầu; hiện tượng này gọi là bão hòa. Đoạn mã PyTorch dưới đây tính đầu ra và gradient tại năm điểm:

import torch

x = torch.tensor([-6.0, -2.0, 0.0, 2.0, 6.0], requires_grad=True)
y = torch.sigmoid(x)

# Backpropagate to get the derivative sigmoid(x) * (1 - sigmoid(x)) at each input
y.sum().backward()

print(f"Sigmoid:  {[round(v, 4) for v in y.tolist()]}")
print(f"Gradient: {[round(v, 4) for v in x.grad.tolist()]}")

Kết quả in ra các giá trị sigmoid [0.0025, 0.1192, 0.5, 0.8808, 0.9975] và gradient [0.0025, 0.105, 0.25, 0.105, 0.0025]. Tại ±6, đầu ra cách giới hạn của nó không quá 0.0025 và gradient nhỏ hơn 100 lần so với tại 0, vì vậy đầu vào trong khoảng đó hầu như không làm thay đổi trọng số tạo ra nó.

Sigmoid trong các lớp ẩn#

Các mạng nhiều lớp đời đầu dùng sigmoid ở mọi lớp ẩn, dẫn đến hai vấn đề. Lan truyền ngược nhân đạo hàm của từng hàm kích hoạt qua mỗi lớp; vì đạo hàm sigmoid không bao giờ vượt quá 0.25, qua mười lớp sigmoid, riêng các đạo hàm đó khiến gradient có độ lớn tối đa chỉ bằng 0.25¹⁰, nhỏ hơn một phần triệu; đây là vấn đề vanishing gradient. Đầu ra sigmoid cũng luôn dương, vì vậy trong mỗi lần cập nhật, mọi gradient trọng số của một neuron nhận các đầu ra đó đều cùng dấu, khiến trọng số chỉ có thể dịch chuyển zig-zag về phía giá trị tối ưu. Tanh đưa đầu ra về quanh 0, còn Xavier Glorot và Yoshua Bengio chứng minh vào năm 2010 rằng giá trị trung bình dương của sigmoid khiến lớp ẩn trên cùng của một mạng sâu được khởi tạo ngẫu nhiên rơi vào trạng thái bão hòa. ReLU loại bỏ cả hai vấn đề và trở thành hàm mặc định cho các lớp ẩn; các hàm kế nhiệm trơn như SiLU, x · σ(x), vẫn dùng sigmoid bên trong làm cổng.

Sigmoid làm lớp đầu ra#

Với phân loại nhị phân, một đầu ra z duy nhất trở thành p = σ(z), xác suất dự đoán cho lớp dương; ngưỡng 0,5 trên p tương đương ngưỡng 0 trên z. Quá trình huấn luyện kết hợp sigmoid với binary cross-entropy, có gradient theo logit đơn giản là p − y, tức xác suất dự đoán trừ nhãn. Các framework hợp nhất hai phép tính này để đảm bảo ổn định số: BCEWithLogitsLoss của PyTorch nhận logit thô và dùng thủ thuật log-sum-exp nội bộ, tránh lấy log của xác suất đã làm tròn chính xác thành 0 hoặc 1.

Khi các nhãn có thể đồng xuất hiện, model dùng một sigmoid cho mỗi nhãn; thiết lập này gọi là phân loại đa nhãn. Ngược lại, Softmax khiến các lớp cạnh tranh để chia nhau một đơn vị xác suất, phù hợp với các nhãn loại trừ lẫn nhau:

import torch

# Logits from a classifier for the labels "person", "backpack", and "car"
logits = torch.tensor([2.0, 1.5, -3.0])

# Sigmoid scores each label on its own; softmax makes the labels compete for one total
sigmoid_probs = torch.sigmoid(logits)
softmax_probs = torch.softmax(logits, dim=0)

print(f"Sigmoid: {[round(p, 3) for p in sigmoid_probs.tolist()]}, sum {sigmoid_probs.sum():.3f}")
print(f"Softmax: {[round(p, 3) for p in softmax_probs.tolist()]}, sum {softmax_probs.sum():.3f}")

Các điểm sigmoid [0.881, 0.818, 0.047] có tổng bằng 1.746, nên cả “person” và “backpack” đều vượt ngưỡng 0.5; còn softmax phân chia cùng các logit thành [0.62, 0.376, 0.004] và chỉ “person” còn trên 0.5. Các model phát hiện YOLO26 tính điểm cho từng lớp bằng sigmoid độc lập được huấn luyện với BCEWithLogitsLoss, vì vậy điểm lớp của một bounding box không nhất thiết phải có tổng bằng 1; các model pose YOLO26 áp dụng sigmoid lên logit độ hiển thị của mỗi keypoint để xuất ra xác suất keypoint đó hiển thị.

Sigmoid làm cổng#

Vì đầu ra nằm trong khoảng từ 0 đến 1, sigmoid có thể điều chỉnh từng phần tử của một tín hiệu khác, từ chặn hoàn toàn đến truyền hoàn toàn, đồng thời vẫn khả vi:

  • Các tế bào LSTM và GRU: Cổng sigmoid quyết định mức độ giữ lại bộ nhớ cũ, ghi nội dung mới và đưa trạng thái ra ngoài tại mỗi bước thời gian; trong khi đó, tanh định hình chính nội dung.
  • SwiGLU: Các lớp feed-forward của nhiều mô hình ngôn ngữ lớn (LLM) nhân một phép chiếu đã học với phép chiếu thứ hai được kích hoạt bằng SiLU; đây là một cổng xây dựng trên sigmoid.
  • SigLIP: Model ảnh-văn bản này tính điểm cho từng cặp ảnh-chú thích trong một batch bằng một sigmoid riêng, cho ra xác suất khớp có/không, vì vậy loss không cần chuẩn hóa trên toàn batch.
  • Hàm logistic: Từ đồng nghĩa với sigmoid trong ML. Trong toán học, “sigmoid” còn chỉ các đường cong hình chữ S khác, bao gồm tanh và hàm sai số.
  • Softmax: Chuẩn hóa toàn bộ vector thành các xác suất có tổng bằng 1. Với hai lớp, softmax trên logits (z₁, z₂) cho lớp thứ nhất giá trị σ(z₁ − z₂), vì vậy softmax hai đầu ra và sigmoid một đầu ra mô tả cùng một model.
  • Tanh: Sigmoid được co giãn lại, tanh(x) = 2σ(2x) − 1, có đầu ra từ −1 đến 1 với tâm tại 0 và đạo hàm cực đại bằng 1.
  • Hard sigmoid: Phép xấp xỉ tuyến tính từng đoạn giúp tránh phép tính hàm mũ trên phần cứng di động. MobileNetV3 sử dụng ReLU6(x + 3) / 6; hàm này bằng 0 khi x < −3, bằng 1 khi x > 3 và là một đường thẳng ở giữa.

Khám phá các giải pháp

Thị giác máy tính trong thể thao

Thị giác máy tính trong thể thao

Khám phá cách Ultralytics YOLO thúc đẩy thị giác máy tính trong thể thao với khả năng theo dõi cầu thủ và bóng, phân tích hiệu suất, cung cấp thông tin chuyên sâu cho huấn luyện và hỗ trợ phục hồi cho vận động viên.
Tìm hiểu thêm
Thị giác máy tính cho ảnh hàng không

Thị giác máy tính cho ảnh hàng không

Chuyển hình ảnh từ drone và ảnh hàng không thành thông tin chuyên sâu theo thời gian thực cho nông nghiệp, nuôi trồng thủy sản, bảo tồn và phân tích không gian địa lý với Ultralytics YOLO.
Tìm hiểu thêm
Thị giác máy tính trong hàng không vũ trụ

Thị giác máy tính trong hàng không vũ trụ

Ứng dụng computer vision trong ngành hàng không vũ trụ với Ultralytics YOLO cho kiểm tra máy bay, phát hiện dị vật trên đường băng (FOD), vận hành mặt đất tại sân bay và phát hiện lỗi vật liệu composite.
Tìm hiểu thêm
Computer vision trong lĩnh vực an ninh

Computer vision trong lĩnh vực an ninh

Bảo vệ mọi địa điểm bằng model Ultralytics YOLO. Vision AI hỗ trợ giám sát vành đai, phát hiện mối đe dọa, nhận dạng biển số và an toàn nơi làm việc.
Tìm hiểu thêm
Computer vision trong robotics

Computer vision trong robotics

Tăng cường năng lực cho máy móc thông minh bằng model Ultralytics YOLO. Vision AI trong lĩnh vực robotics hỗ trợ điều hướng tự động, nhận thức, theo dõi đối tượng và điều khiển theo thời gian thực.
Tìm hiểu thêm
Thị giác máy tính trong logistics

Thị giác máy tính trong logistics

Tinh giản hoạt động logistics với các model Ultralytics YOLO. Vision AI hỗ trợ kiểm tra kiện hàng, phân loại, theo dõi phương tiện và giám sát an toàn kho hàng theo thời gian thực.
Tìm hiểu thêm
Thị giác máy tính trong bán lẻ

Thị giác máy tính trong bán lẻ

Định hình lại hoạt động bán lẻ với các model Ultralytics YOLO. Vision AI hỗ trợ theo dõi hàng tồn kho, giám sát kệ hàng, quản lý hàng chờ và phân tích khách hàng thông minh hơn.
Tìm hiểu thêm
Thị giác máy tính trong chăm sóc sức khỏe

Thị giác máy tính trong chăm sóc sức khỏe

Xây dựng các giải pháp chăm sóc sức khỏe với model Ultralytics YOLO. Vision AI trong chăm sóc sức khỏe hỗ trợ xử lý hình ảnh y tế nhanh hơn, chẩn đoán thông minh hơn và theo dõi bệnh nhân.
Tìm hiểu thêm
Thị giác máy tính trong sản xuất

Thị giác máy tính trong sản xuất

Tối ưu hóa sản xuất bằng các model Ultralytics YOLO. Vision AI thúc đẩy kiểm soát chất lượng, phát hiện lỗi, tuân thủ PPE và tự động hóa dây chuyền lắp ráp.
Tìm hiểu thêm
Thị giác máy tính trong ngành ô tô

Thị giác máy tính trong ngành ô tô

Ứng dụng thị giác máy tính trong ngành ô tô với các model Ultralytics YOLO. Vision AI nâng cao an toàn giao thông, hỗ trợ người lái và tự động hóa phương tiện để tạo nên những tuyến đường thông minh hơn.
Tìm hiểu thêm
Thị giác máy tính trong nông nghiệp

Thị giác máy tính trong nông nghiệp

Ứng dụng AI thị giác vào nông nghiệp thông minh với các model Ultralytics YOLO. Hỗ trợ giám sát cây trồng, theo dõi vật nuôi và canh tác chính xác để nâng cao năng suất một cách thông minh hơn.
Tìm hiểu thêm

Hãy cùng nhau kiến tạo tương lai của AI!

Bắt đầu hành trình hướng đến tương lai của machine learning