Activation Function Là Gì?

Activation Function (hàm kích hoạt) là một hàm toán học được áp dụng lên output của mỗi neuron trong mạng neural. Nhiệm vụ của nó rất đơn giản: quyết định xem neuron đó có nên “kích hoạt” hay không, và nếu có thì kích hoạt mạnh đến mức nào.
Nói cách khác, activation function là cánh cửa quyết định thông tin nào được đi qua trong mạng neural. Không có nó, mạng neural dù sâu đến mấy cũng chỉ là một bài toán tuyến tính phức tạp.
Tại Sao Activation Function Lại Quan Trọng?
Đây là phần nhiều người bỏ qua nhưng cực kỳ quan trọng. Hãy nghĩ thế này: nếu bạn xếp 10 lớp tuyến tính lên nhau, kết quả vẫn chỉ là một phép biến đổi tuyến tính. Toán học chứng minh rằng phép cộng và nhân lồng nhau bao nhiêu lần vẫn rút gọn được thành một phép duy nhất.
Điều đó có nghĩa là một mạng 100 lớp không có activation function sẽ không mạnh hơn một mạng 1 lớp. Chúng ta cần thứ gì đó “bẻ cong” đường thẳng đó, và đó chính là vai trò của activation function: thêm tính phi tuyến (nonlinearity).
Nhờ tính phi tuyến, mạng neural có thể học được mọi thứ từ nhận diện ảnh, dịch ngôn ngữ, cho đến viết code. Đó là lý do tại sao universal approximation theorem nói rằng: đủ neuron và đúng activation function, mạng neural có thể xấp xỉ bất kỳ hàm liên tục nào.
Các Loại Activation Function Phổ Biến
Sigmoid
Sigmoid là một trong những activation function đầu tiên, nén mọi giá trị về khoảng từ 0 đến 1. Công thức là 1 chia cho (1 + e mũ trừ x).
Nghe đẹp đúng không? Nhưng sigmoid có vấn đề lớn: khi input quá lớn hoặc quá nhỏ, gradient tiến về 0. Hiện tượng này gọi là vanishing gradient, khiến các lớp sâu gần như không học được gì. Ngoài ra, output của sigmoid luôn dương, khiến quá trình hội tụ chậm hơn.
Ngày nay, sigmoid hiếm khi dùng làm activation trong các lớp ẩn. Nó vẫn xuất hiện ở lớp output cho bài toán phân loại nhị phân, hoặc trong gating mechanism của LSTM.
Tanh (Hyperbolic Tangent)
Tanh tương tự sigmoid nhưng đầu ra nằm trong khoảng từ -1 đến 1, centered quanh 0. Điều này giúp quá trình học ổn định hơn sigmoid. Tanh từng là lựa chọn mặc định cho RNN trước khi LSTM ra đời.
Tuy nhiên, tanh vẫn mắc phải vấn đề vanishing gradient ở các vùng bão hòa, dù nhẹ hơn sigmoid một chút.
ReLU (Rectified Linear Unit)
ReLU là activation function đã cách mạng deep learning. Công thức cực kỳ đơn giản: nếu input dương thì giữ nguyên, nếu âm thì đưa về 0. Tức là max của 0 và x.
Vì sao ReLU lại tuyệt vời? Thứ nhất, nó nhanh vô cùng, chỉ là một phép so sánh. Thứ hai, gradient luôn bằng 1 cho input dương, nên không bị vanishing gradient. Thứ ba, khoảng một nửa neuron sẽ output 0, tạo ra thưa (sparsity), giúp mô hình tổng quát tốt hơn.
Nhưng ReLU có một điểm yếu: dying neuron. Nếu một neuron liên tục nhận input âm (do initialization xấu hoặc learning rate cao), gradient của nó mãi bằng 0 và neuron đó “chết” vĩnh viễn, không học được gì nữa.
Leaky ReLU
Leaky ReLU sửa đúng vấn đề dying neuron. Thay vì đưa input âm về 0 hoàn toàn, nó nhân với một hệ số nhỏ (thường là 0.01). Nhờ đó, neuron vẫn có gradient nhỏ dù input âm, không bao giờ chết.
GELU (Gaussian Error Linear Unit)
GELU là bước tiến tiếp theo, được dùng trong BERT, GPT-2, GPT-3 và phần lớn transformer trước 2023. Thay vì cắt cứng tại 0 như ReLU, GELU làm mượtransition: các giá trị âm nhỏ vẫn được đi qua với xác suất nhất định.
Nói cách khác, GELU như ReLU nhưng có thêm một cái cổng xác suất. Nó smooth hơn, đạo hàm có nghĩa ở mọi điểm, và cho kết quả tốt hơn trong thực tế với các mô hình ngôn ngữ.
SiLU (Swish)
SiLU, hay còn gọi là Swish, được Google Brain tìm ra qua automated search. Công thức là x nhân với sigmoid của x. Nó self-gated, smooth, cho phép giá trị âm đi qua một chút và đã chứng minh vượt trội hơn ReLU trên nhiều benchmark.
SwiGLU
Nếu bạn dùng LLaMA, Mistral, DeepSeek hay bất kỳ LLM nào ra sau 2023, chúng đều dùng SwiGLU. Đây là sự kết hợp giữa SiLU và gated linear unit, sử dụng ba ma trận trọng số thay vì hai như FFN truyền thống.
SwiGLU hoạt động như một cái cổng có điều khiển: một nhánh quyết định bao nhiêu thông tin được đi qua, nhánh kia là chính thông tin đó. Cấu trúc này cho chất lượng tốt nhất hiện nay trong các mô hình ngôn ngữ lớn.
Nên Dùng Activation Function Nào?
Nếu bạn xây CNN cho bài toán phân loại ảnh, ReLU vẫn là lựa chọn an toàn và hiệu quả. Nếu bạn train transformer, GELU hoặc SwiGLU là chuẩn. Nếu gặp vấn đề dying neuron, hãy thử Leaky ReLU.
Quy tắc đơn giản: ReLU cho computer vision, GELU cho transformer cũ, SwiGLU cho LLM hiện đại. Đừng cố sáng tạo ở chỗ không cần thiết, các lựa chọn này đã được chứng minh bởi hàng nghìn paper và production system.
Kết Luận
Activation function là thành phần nhỏ nhưng quyết định sức mạnh của toàn bộ mạng neural. Không có nó, deep learning không tồn tại. Hiểu về các loại activation function giúp bạn đọc paper dễ hơn, debug mô hình nhanh hơn, và đưa ra quyết định kiến trúc tốt hơn.
Từ sigmoid đầu những năm 2000, đến ReLU năm 2012, rồi GELU năm 2018, và SwiGLU ngày nay, sự tiến hóa của activation function phản ánh chính sự trưởng thành của deep learning. Mỗi bước tiến nhỏ trong một hàm toán học đơn giản đã mở ra những khả năng hoàn toàn mới.