Yolo Tầm nhìn Thâm Quyến
Thâm Quyến
Tham gia ngay
Bảng chú giải thuật ngữ

SiLU (Sigmoid Linear Unit)

Khám phá cách hàm kích hoạt SiLU (Swish) tăng cường hiệu suất học sâu trong các tác vụ AI như phát hiện đối tượng và NLP.

Đơn vị Tuyến tính Sigmoid, được biết đến rộng rãi với tên gọi SiLU, là một hàm kích hoạt tiên tiến đóng vai trò quan trọng trong kiến trúc mạng nơ-ron (NN) hiện đại. Ban đầu được xác định trong nghiên cứu về tìm kiếm tự động các hàm kích hoạt — với tên gọi Swish — SiLU đã trở thành lựa chọn ưu tiên cho các lớp sâu trong các mô hình hiệu suất cao. Nó hoạt động như một cầu nối giữa các hành vi tuyến tính và phi tuyến tính, cho phép các hệ thống học sâu (DL) mô hình hóa các mẫu dữ liệu phức tạp hiệu quả hơn so với các phương pháp cũ. Bằng cách nhân đầu vào với phép biến đổi Sigmoid của nó, SiLU tạo ra một đường cong trơn tru, tự đóng, giúp tăng cường luồng thông tin trong quá trình huấn luyện.

Cơ học của SiLU

Định nghĩa toán học của SiLU rất đơn giản: $f(x) = x \cdot \sigma(x)$, trong đó $\sigma(x)$ là hàm sigmoid. Mặc dù đơn giản, cấu trúc này mang lại những đặc tính độc đáo có lợi cho các mô hình học máy (ML) .

  • Độ mượt: Không giống như "góc" lởm chởm trong ReLU (Đơn vị Tuyến tính Chỉnh lưu) , SiLU là một hàm liên tục, khả vi. Độ mượt này hỗ trợ các thuật toán tối ưu hóa như giảm dần độ dốc bằng cách cung cấp một bối cảnh nhất quán cho việc cập nhật trọng số, thường dẫn đến sự hội tụ nhanh hơn trong quá trình huấn luyện mô hình .
  • Tính phi đơn điệu: Một đặc điểm chính của SiLU là nó phi đơn điệu , nghĩa là giá trị của nó có thể giảm ngay cả khi đầu vào tăng (cụ thể là ở vùng âm). Đặc tính này cho phép mạng nắm bắt các đặc điểm phức tạp và thông tin "âm" có thể bị loại bỏ bởi các hàm như ReLU, giúp ngăn ngừa vấn đề gradient biến mất .
  • Tự đóng cổng: Chức năng này hoạt động như một cổng riêng, xác định lượng tín hiệu đầu vào đi qua dựa trên biên độ của tín hiệu đầu vào. Điều này mô phỏng cơ chế đóng cổng trong LSTM nhưng theo cách đơn giản hơn, hiệu quả hơn về mặt tính toán, phù hợp với Mạng Nơ-ron Tích chập (CNN) .

So sánh với các khái niệm liên quan

Để hiểu khi nào nên sử dụng SiLU, bạn cần phân biệt nó với các hàm kích hoạt phổ biến khác có trong thuật ngữ Ultralytics .

  • ReLU so với SiLU : ReLU là mặc định truyền thống cho các lớp ẩn nhờ tốc độ của nó. Tuy nhiên, ReLU đưa ra giá trị 0 cứng cho tất cả các đầu vào âm, dẫn đến "nơ-ron chết" ngừng học. SiLU cho phép một gradient nhỏ chảy qua các giá trị âm, duy trì hoạt động của nơ-ron và cải thiện độ chính xác trong các mạng sâu.
  • GELU so với SiLU : Đơn vị Tuyến tính Sai số Gauss (GELU) rất giống với SiLU về mặt hình ảnh và chức năng. Trong khi GELU chủ yếu được sử dụng trong các kiến trúc Transformer (như BERT hoặc GPT), SiLU thường là tiêu chuẩn cho các tác vụ thị giác máy tính, bao gồm cả dòng mô hình YOLO11 của Ultralytics .
  • Sigmoid so với SiLU : Mặc dù SiLU sử dụng hàm Sigmoid trong tính toán, nhưng chúng phục vụ các mục đích khác nhau. Sigmoid thường được sử dụng ở lớp đầu ra để phân loại nhị phân nhằm tạo ra xác suất, trong khi SiLU được sử dụng ở các lớp ẩn để hỗ trợ trích xuất đặc trưng.

Các Ứng dụng Thực tế

SiLU là một phần không thể thiếu của nhiều giải pháp AI tiên tiến, nơi độ chính xác và hiệu quả là tối quan trọng.

  • Phát hiện đối tượng theo thời gian thực: Các bộ cảm biến tiên tiến như YOLO11 sử dụng SiLU trong kiến trúc xương sống và cổ của chúng. Điều này cho phép mô hình duy trì tốc độ suy luận cao trong khi vẫn phát hiện chính xác các đối tượng trong điều kiện khó khăn, chẳng hạn như hệ thống xe tự hành nhận dạng người đi bộ vào ban đêm.
  • Chẩn đoán Y khoa: Trong phân tích hình ảnh y khoa , các mô hình phải phân biệt được những khác biệt tinh tế về kết cấu trong ảnh chụp MRI hoặc CT. Bản chất bảo toàn gradient của SiLU giúp các mạng này học được những chi tiết cực nhỏ cần thiết để phát hiện khối u giai đoạn đầu, cải thiện độ tin cậy của AI trong chăm sóc sức khỏe .

Thực hiện trong Python

Các khuôn khổ hiện đại giúp việc triển khai SiLU trở nên dễ dàng. Dưới đây là một ví dụ ngắn gọn sử dụng PyTorch để minh họa cách SiLU chuyển đổi dữ liệu đầu vào so với phương pháp tuyến tính tiêu chuẩn.

import torch
import torch.nn as nn

# Initialize the SiLU activation function
silu = nn.SiLU()

# Create a sample tensor with positive, negative, and zero values
input_tensor = torch.tensor([-2.0, -1.0, 0.0, 1.0, 2.0])

# Apply SiLU: Negative values represent the non-monotonic "dip"
output = silu(input_tensor)

print(f"Input:  {input_tensor}")
print(f"Output: {output}")
# Output demonstrates the smooth transition and retention of negative gradients

Để biết thêm chi tiết kỹ thuật, các nhà phát triển có thể tham khảo tài liệu chính thức về PyTorch SiLU hoặc triển khai TensorFlow SiLU tương đương. Hiểu các hàm kích hoạt này là một bước quan trọng để thành thạo tối ưu hóa mô hình .

Tham gia Ultralytics cộng đồng

Tham gia vào tương lai của AI. Kết nối, hợp tác và phát triển cùng với những nhà đổi mới toàn cầu

Tham gia ngay