GELU (Gaussian Error Linear Unit)
Khám phá hàm kích hoạt Gaussian Error Linear Unit (GELU). Tìm hiểu cách tính phi tuyến trơn, mang tính xác suất của hàm này hỗ trợ Transformer, BERT và AI hiện đại.
Đơn vị tuyến tính lỗi Gaussian (GELU) là một hàm kích hoạt tinh vi, đóng vai trò then chốt trong hiệu suất của các hệ thống trí tuệ nhân tạo (AI) hiện đại, đặc biệt là những hệ thống dựa trên kiến trúc Transformer. Không giống các hàm truyền thống áp dụng ngưỡng cứng, tất định cho đầu vào của neuron, GELU đưa vào một yếu tố xác suất lấy cảm hứng từ các đặc tính của phân phối Gaussian. Bằng cách cân trọng số đầu vào theo độ lớn thay vì chỉ đơn giản bật hoặc tắt chúng, GELU cung cấp một tính phi tuyến mượt hơn, hỗ trợ quá trình tối ưu hóa các model học sâu (DL). Đặc tính độc đáo này cho phép các mạng mô hình hóa các mẫu dữ liệu phức tạp hiệu quả hơn, góp phần đáng kể vào thành công của các model nền tảng quy mô lớn.
Cách GELU hoạt động#
Trong bất kỳ mạng neuron nào, các hàm kích hoạt xác định neuron có "kích hoạt" hay không dựa trên tín hiệu đầu vào. Các hàm cũ hơn như Đơn vị tuyến tính chỉnh lưu (ReLU) hoạt động như một công tắc, xuất ra giá trị 0 đối với mọi đầu vào âm và chính đầu vào đó đối với các giá trị dương. Mặc dù hiệu quả, điểm cắt đột ngột này có thể cản trở động lực học huấn luyện.
GELU cải thiện điều này bằng cách nhân tỷ lệ đầu vào với hàm phân phối tích lũy của một phân phối Gaussian. Theo trực giác, điều này có nghĩa là khi giá trị đầu vào giảm, xác suất neuron bị loại bỏ tăng lên, nhưng diễn ra dần dần thay vì đột ngột. Độ cong này tạo ra một hàm trơn, không đơn điệu và khả vi tại mọi điểm. Độ trơn đó tạo điều kiện thuận lợi cho quá trình lan truyền ngược gradient tốt hơn, giúp giảm thiểu các vấn đề như hiện tượng tiêu biến gradient, vốn có thể làm đình trệ quá trình huấn luyện các mạng sâu.
Các ứng dụng trong thực tế#
Không gian tối ưu hóa mượt hơn do GELU cung cấp đã khiến nó trở thành lựa chọn mặc định cho một số ứng dụng tiên tiến nhất trong học máy (ML).
- Mô hình ngôn ngữ lớn (LLMs): GELU trở nên nổi bật cùng với sự ra đời của BERT (Biểu diễn bộ mã hóa hai chiều từ Transformer) do các nhà nghiên cứu của Google phát triển. Hiện nay, đây là một thành phần tiêu chuẩn trong dòng GPT và các model văn bản sinh khác. Trong các tác vụ như tóm tắt văn bản hoặc phân tích cảm xúc, GELU giúp model nắm bắt những sắc thái tinh tế trong biểu diễn ngôn ngữ mà các hàm kích hoạt cứng có thể bỏ sót.
- Transformer thị giác (ViT): Trong lĩnh vực thị giác máy tính, các model điều chỉnh kiến trúc Transformer cho phân loại ảnh phụ thuộc nhiều vào GELU. Bằng cách xử lý hình ảnh dưới dạng các chuỗi patch, những model này sử dụng GELU để duy trì thông tin đặc trưng phong phú qua các lớp sâu, đạt độ chính xác cao trên các benchmark như ImageNet.
So sánh với các thuật ngữ liên quan#
Việc hiểu GELU thường đòi hỏi phải phân biệt nó với các hàm kích hoạt phổ biến khác trong bảng thuật ngữ Ultralytics.
- GELU so với ReLU: ReLU đơn giản hơn về mặt tính toán và tạo ra tính thưa (các giá trị 0 chính xác), điều này có thể mang lại hiệu quả. Tuy nhiên, "góc nhọn" tại 0 có thể làm chậm quá trình hội tụ. GELU cung cấp một phép xấp xỉ mượt, thường cho độ chính xác cao hơn trong các tác vụ phức tạp, dù có chi phí tính toán cao hơn một chút.
- GELU so với SiLU (Swish): Đơn vị tuyến tính sigmoid (SiLU) có cấu trúc rất giống GELU và có chung các đặc tính mượt, không đơn điệu. Trong khi GELU chiếm ưu thế trong Xử lý ngôn ngữ tự nhiên (NLP), SiLU thường được ưu tiên trong các bộ phát hiện đối tượng được tối ưu hóa cao như YOLO26 nhờ hiệu quả trên phần cứng edge và hiệu suất vượt trội trong các tác vụ phát hiện.
- GELU so với Leaky ReLU: Leaky ReLU cố gắng khắc phục vấn đề "neuron chết" của ReLU tiêu chuẩn bằng cách cho phép một độ dốc tuyến tính nhỏ, không đổi đối với các đầu vào âm. Ngược lại, GELU là phi tuyến đối với các giá trị âm, mang lại phản hồi phức tạp và thích ứng hơn, thường dẫn đến khả năng học biểu diễn tốt hơn trong các mạng rất sâu.
Ví dụ triển khai#
Việc triển khai GELU rất đơn giản khi sử dụng các thư viện học sâu hiện đại như PyTorch. Ví dụ sau đây minh họa cách áp dụng hàm này cho một tensor dữ liệu đầu vào.
import torch
import torch.nn as nn
# Initialize the GELU activation function
gelu_activation = nn.GELU()
# Create sample input data including negative and positive values
input_data = torch.tensor([-3.0, -1.0, 0.0, 1.0, 3.0])
# Apply GELU to the inputs
output = gelu_activation(input_data)
# Print results to see the smoothing effect on negative values
print(f"Input: {input_data}")
print(f"Output: {output}")Đối với các developer muốn tận dụng những hàm kích hoạt nâng cao này trong các dự án thị giác máy tính của riêng mình, Ultralytics Platform đơn giản hóa toàn bộ quy trình. Nền tảng cung cấp một interface thống nhất để gán nhãn dữ liệu, huấn luyện model bằng các kiến trúc như YOLO26 (sử dụng các hàm kích hoạt được tối ưu hóa như SiLU) và triển khai chúng hiệu quả lên cloud hoặc các thiết bị edge.









