Dlaczego sieci neuronowe nie mnożą: od perceptronów do SwiGLU
Sieci neuronowe, mimo sukcesów w generowaniu tekstu i obrazów, zasadniczo nie wykonują operacji mnożenia danych wejściowych. W perceptronie wejścia przechodzą przez kombinację liniową: są ważone i sumowane. Wzór podstawowego neuronu: $$h = \sigma(\sum w_i x_i + b)$$, gdzie nie ma iloczynu dwóch zmiennych $x_1 \cdot x_2$.
Dla zadania takiego jak obliczanie kosztu (cena × ilość) sieć aproksymuje wynik poprzez zapamiętywanie wzorców, ale nie oblicza mnożenia bezpośrednio. Dodanie ukrytych warstw zachowuje zasadę: na każdym etapie — tylko sumy ważonych sygnałów.
W pierwszej warstwie:
$$h_1^{(1)} = x_1 w_{11}^{(1)} + x_2 w_{12}^{(1)}$$
$$h_2^{(1)} = x_1 w_{21}^{(1)} + x_2 w_{22}^{(1)}$$
W drugiej:
$$h_1^{(2)} = h_1^{(1)} w_{11}^{(2)} + h_2^{(1)} w_{12}^{(2)}$$
Podstawienie pokazuje: $x_1$ i $x_2$ pozostają w sumie, ich iloczyn nie powstaje. Wagi mnożą się między warstwami, ale wejścia — nie.
Obejścia: kwadraty i wstępne obliczenia
Inżynierowie dodają na wejście już pomnożone wartości ($x_1 x_2$) lub kwadraty do imitacji. Szkolny wzór pozwala wyrazić iloczyn:
$$x y = \frac{1}{2} \left( (x+y)^2 - x^2 - y^2 \right)$$
To redukuje mnożenie do dodawania, odejmowania i podnoszenia do kwadratu. Hipotetyczna aktywacja $f(z) = z^2$ mogłaby pomóc, ale standardowe ReLU, Sigmoid, Tanh nie zapewniają nieliniowości kwadratu.
Praktyka pokazuje: takie obejścia działają w demonstracjach, ale w rzeczywistych zadaniach z wieloma wejściami wymagają znajomości potrzebnych kombinacji z góry.
- Wstępne obliczenia: Podanie $x_1 x_2$ na wejście.
- Kwadraty: Wykorzystanie $(x+y)^2$, $x^2$, $y^2$.
- Ograniczenia: Nie skaluje się, narusza uniwersalność aproksymatora.
Przełom transformerów: rola wariantów GLU
Architektura Transformer (2017) wprowadziła attention, ale kluczowy krok — zastąpienie aktywacji na Gated Linear Units (GLU) w 2020 roku (Noam Shazeer, "GLU Variants Improve Transformer"). ReGLU, GEGLU, SwiGLU przewyższają ReLU w zbieżności.
| Aktywacja | Błąd |
|-----------|--------|
| ReLU | 2.45 |
| ReGLU | 2.32 |
| GEGLU | 2.25 |
| SwiGLU | 2.24 |
SwiGLU jest preferowana ze względu na szybkość. Wzór:
$$\text{SwiGLU}(x) = \text{Swish}(x W + b) \odot (x V + c)$$
Tutaj $\odot$ — mnożenie element po elemencie dwóch projekcji. To wprowadza zależności kwadratowe, pozwalając modelować $x_1 x_2$ bez obejść. SwiGLU jest używana w blokach FFN nowoczesnych LLM.
Mechanizm:
- Wejście $x$ jest rzutowane na dwie ścieżki: $xW + b$ i $xV + c$.
- Pierwsza przez Swish ($\text{Swish}(z) = z \sigma(\beta z)$).
- Mnożenie element po elemencie.
Praktyczne konsekwencje dla modeli
SwiGLU poprawia uczenie, ale nie czyni SI dokładnym kalkulatorem. Modele generatywne są probabilistyczne: "2×2=4" — prawdopodobny token, nie dedukcja. Dla złożonych obliczeń LLM delegują kod Python w sandboxie.
- Zalety GLU: Lepsza zbieżność, modelowanie nieliniowości.
- Wady: Sieć nie zawsze automatycznie znajduje potrzebne wagi.
- Wymaga dużych danych.
- Charakter probabilistyczny pozostaje.
Przyszłe integracje (WebAssembly w Transformer) pozwolą uruchamiać natywny kod wewnątrz modelu.
Co jest ważne
- Klasyczne perceptrony sumują, ale nie mnożą wejść.
- GLU (SwiGLU) wprowadza mnożenie element po elemencie projekcji dla zależności kwadratowych.
- Bramy zastępują ReLU w nowoczesnych transformerach, redukując błąd o 5–10%.
- Dla dokładnych obliczeń LLM używają zewnętrznych narzędzi.
— Editorial Team
Brak komentarzy.