Funkcja aktywacji to jeden z najważniejszych komponentów sieci neuronowej. Bez niej nawet najgłębsza sieć byłaby jedynie liniową transformacją danych — niezdolną do rozwiązywania złożonych problemów. Funkcja aktywacji wprowadza nieliniowość, dzięki której sieć może uczyć się skomplikowanych wzorców w danych.
Dlaczego potrzebujemy funkcji aktywacji?
Wyobraź sobie sieć neuronową bez funkcji aktywacji. Każda warstwa oblicza jedynie liniową transformację: y = Wx + b. Złożenie dwóch liniowych transformacji to... kolejna liniowa transformacja. Bez względu na liczbę warstw, cała sieć sprowadzałaby się do jednej operacji liniowej — równoważnej pojedynczemu perceptronowi.
Funkcja aktywacji „łamie" liniowość. Dzięki niej każda warstwa wnosi coś nowego — sieć z dwiema warstwami jest realnie potężniejsza niż sieć z jedną.
Twierdzenie o uniwersalnej aproksymacji (Cybenko, 1989) mówi, że sieć neuronowa z jedną warstwą ukrytą i nieliniową funkcją aktywacji może aproksymować dowolną ciągłą funkcję z dowolną dokładnością (przy wystarczającej liczbie neuronów). To fundamentalny wynik teoretyczny uzasadniający użycie funkcji aktywacji.
Przegląd najważniejszych funkcji aktywacji
1. Sigmoid (logistyczna)
Wzór: σ(z) = 1 / (1 + e⁻ᶻ)
Zakres: (0, 1)
Sigmoid przekształca dowolną wartość rzeczywistą w liczbę z przedziału (0, 1). Przy dużych dodatnich z → 1, przy dużych ujemnych z → 0. Wykres ma charakterystyczny kształt litery S.
Zalety:
- Gładka i różniczkowalna — umożliwia backpropagation
- Interpretowalna jako prawdopodobieństwo — idealna w warstwie wyjściowej klasyfikatorów binarnych
- Historycznie ważna — dominowała w sieciach neuronowych do ~2012
Wady:
- Zanikający gradient (vanishing gradient) — przy dużych |z| pochodna zbliża się do zera, blokując przepływ gradientów przez głębokie warstwy
- Niesymetryczna — wyjścia zawsze dodatnie, co może spowalniać uczenie (wagi aktualizują się w jednym kierunku)
- Kosztowna obliczeniowo — wymaga potęgowania (exp)
Kiedy używać: warstwa wyjściowa w klasyfikacji binarnej. Unikaj w warstwach ukrytych głębokich sieci.
2. Tanh (tangens hiperboliczny)
Wzór: tanh(z) = (eᶻ - e⁻ᶻ) / (eᶻ + e⁻ᶻ)
Zakres: (-1, 1)
Tanh jest „poprawioną" wersją sigmoida — symetryczna względem zera. Wyjścia mogą być ujemne, co oznacza, że średnia aktywacji jest bliższa zeru, co pomaga w uczeniu.
Zalety:
- Symetryczna — wyjścia mogą być ujemne, lepsza dynamika gradientów
- Silniejszy gradient niż sigmoid w okolicach z = 0
Wady:
- Nadal cierpi na zanikający gradient (choć mniej niż sigmoid)
- Kosztowna obliczeniowo
Kiedy używać: warstwy ukryte w sieciach RNN/LSTM. Rzadko w nowoczesnych CNN/transformerach.
3. ReLU (Rectified Linear Unit)
Wzór: ReLU(z) = max(0, z)
Zakres: [0, ∞)
ReLU to przełom, który umożliwił rewolucję głębokiego uczenia. Zasada jest banalna: jeśli wejście jest dodatnie — przepuść bez zmian; jeśli ujemne — wyzeruj.
Zalety:
- Brak zanikającego gradientu (dla z > 0 pochodna = 1)
- Ekstremalnie szybka — porównanie z zerem zamiast potęgowania
- Rzadka aktywacja — część neuronów daje zero, co prowadzi do efektywniejszych reprezentacji
- Umożliwia trenowanie bardzo głębokich sieci (setki warstw)
Wady:
- Problem umierających neuronów (dying ReLU) — jeśli neuron zawsze otrzymuje ujemne wejścia, jego gradient wynosi 0 i nigdy się nie nauczy
- Niesymetryczna — wyjścia zawsze ≥ 0
Kiedy używać: domyślny wybór dla warstw ukrytych w CNN i MLP. Najczęściej stosowana funkcja aktywacji.
4. Leaky ReLU
Wzór: LeakyReLU(z) = z jeśli z > 0, αz jeśli z ≤ 0 (typowo α = 0,01)
Zakres: (-∞, ∞)
Wariant ReLU rozwiązujący problem umierających neuronów — dla ujemnych wejść przepuszcza mały, niezerowy gradient (typowo 1% wartości).
Zalety:
- Rozwiązuje problem dying ReLU
- Szybka obliczeniowo
Wady:
- Hiperparametr α wymaga dostrojenia
- W praktyce nie zawsze lepsza od zwykłego ReLU
Warianty:
- Parametric ReLU (PReLU) — α jest uczone podczas treningu
- ELU — dla z < 0 używa krzywej eksponencjalnej: α(eᶻ - 1)
5. GELU (Gaussian Error Linear Unit)
Wzór: GELU(z) = z · Φ(z), gdzie Φ to dystrybuanta rozkładu normalnego
Zakres: (~-0,17, ∞)
GELU to gładka aproksymacja ReLU, która „miękko" wycisza wejścia zamiast ostro zerować. Dominuje w architekturach transformerów — BERT, GPT, Claude używają GELU.
Zalety:
- Gładka — lepsza optymalizacja niż ReLU z ostrym „rogiem" w z = 0
- Probabilistyczna interpretacja — neuron jest aktywowany proporcjonalnie do jego pozycji w rozkładzie
- Empirycznie lepsza w transformerach
Wady:
- Droższa obliczeniowo niż ReLU (choć w praktyce różnica jest marginalna)
Kiedy używać: transformery, modele językowe, modele wielomodalne.
6. Softmax
Wzór: softmax(zᵢ) = eᶻⁱ / Σⱼ eᶻʲ
Zakres: (0, 1), suma = 1
Softmax to nie tyle funkcja aktywacji pojedynczego neuronu, co transformacja wektora w rozkład prawdopodobieństwa. Każdy element wyjściowy jest dodatni, a ich suma wynosi 1.
Kiedy używać: warstwa wyjściowa w klasyfikacji wieloklasowej, mechanizm atencji w transformerach.
Porównanie — tabela zbiorcza
| Funkcja | Zakres | Gradient | Koszt | Zastosowanie |
|---|---|---|---|---|
| Sigmoid | (0, 1) | Zanika | Wysoki | Wyjście binarne |
| Tanh | (-1, 1) | Zanika | Wysoki | RNN/LSTM |
| ReLU | [0, ∞) | Stabilny | Niski | CNN, MLP |
| Leaky ReLU | (-∞, ∞) | Stabilny | Niski | Wariant ReLU |
| GELU | (~-0,17, ∞) | Stabilny | Średni | Transformery |
| Softmax | (0, 1) | — | Średni | Klasyfikacja wieloklasowa |
Jak wybrać funkcję aktywacji?
Praktyczne reguły:
- Warstwy ukryte CNN/MLP → ReLU (domyślnie) lub Leaky ReLU (jeśli zauważysz dying neurons)
- Transformery / LLM → GELU
- RNN / LSTM → Tanh (wewnętrznie) + Sigmoid (bramki)
- Wyjście — klasyfikacja binarna → Sigmoid
- Wyjście — klasyfikacja wieloklasowa → Softmax
- Wyjście — regresja → brak aktywacji (liniowa)
W praktyce ReLU i GELU pokrywają ponad 90% zastosowań. Sigmoid i Tanh dominowały historycznie, ale w nowoczesnych głębokich sieciach pełnią rolę niszową (warstwy wyjściowe, bramki w LSTM).
Podsumowanie
Funkcja aktywacji to „dusza" sieci neuronowej. Bez niej nie ma uczenia się złożonych wzorców. Ewolucja od sigmoida (lata 80.) przez ReLU (2012) po GELU (2016+) odzwierciedla rosnącą głębokość sieci i coraz wyższe wymagania dotyczące stabilności gradientów. Każda nowa generacja architektur przynosi nowe funkcje aktywacji — ale fundamentalna zasada pozostaje: nieliniowość pozwala sieci być czymś więcej niż sumą swoich części.