06 · Sieci · 4 min czytania · aktualizacja
Jak sieć z neuronami ReLU składa schodek albo krzywą z prostych odcinków?
W skrócie
Neuron ReLU to funkcja z jednym zagięciem: zero, a od pewnego miejsca prosta. Suma kilku przesuniętych zagięć daje łamaną — rampę, schodek, dowolny kształt.
Co to jest
Sieć z warstwą ukrytą złożoną z neuronów ReLU oblicza funkcję odcinkami liniową. Każdy neuron ukryty wnosi jedno zagięcie — miejsce, w którym przechodzi z zera w prostą — a warstwa wyjściowa sumuje te zagięcia z wagami. Z kilku zagięć powstaje łamana, która przybliża progi, schodki i krzywe, czyli kształty, których model liniowy nie wyrazi żadną prostą.
To konkretna, geometryczna postać twierdzenia o uniwersalnej aproksymacji dla ReLU. Obowiązuje w każdej sieci MLP z aktywacją ReLU, także w blokach MLP transformerów.
Mechanizm — dlaczego tak działa
Neuron ukryty z jednym wejściem x liczy max(0, a·x + b): zero dla x < −b/a, a dalej prostą o nachyleniu a. Jedno zagięcie w punkcie −b/a. Weźmy dwa neurony: h₁ = max(0, x − 20) z wagą wyjściową +1 i h₂ = max(0, x − 30) z wagą −1. Ich suma jest równa 0 dla x < 20, rośnie liniowo od 20 do 30, a od 30 jest stała, bo nachylenia +1 i −1 się znoszą. To rampa: przejście z 0 do 10 między 20 a 30, czyli miękki schodek.
Im bliżej siebie zagięcia i im większe nachylenia, tym ostrzejszy schodek; w granicy to funkcja skokowa. Kolejne pary neuronów dodają kolejne schodki w innych miejscach. Z n neuronów powstaje łamana o co najwyżej n zagięciach, która przybliża dowolną funkcję ciągłą jednej zmiennej z błędem malejącym wraz z n.
W wielu wymiarach każdy neuron zgina przestrzeń wzdłuż hiperpłaszczyzny; sieć dzieli wejście na regiony i w każdym jest liniowa. Liczba regionów rośnie wielomianowo z szerokością i wykładniczo z głębokością (Montúfar i in. 2014), dlatego głębsze sieci składają złożone kształty oszczędniej.
Bez warstwy ukrytej wyjście to jedna prosta albo sigmoid nałożony na prostą — jedno łagodne przejście o ustalonym kształcie. Ostry próg w danych („jeśli x ≤ c, to klasa A”) zamienia się wtedy w długi, łagodny stok i punkty blisko progu są mylone. Dwa neurony ReLU postawią zagięcia po obu stronach progu i zrobią schodek dokładnie tam, gdzie trzeba.
Zastrzeżenie: sieć nie wie z góry, gdzie postawić zagięcia — uczy się tego gradientem. Wymaga to, by neurony nie były martwe i by zagięcia dało się przesuwać (dobra inicjalizacja, standaryzacja wejść), a optymalizacja może utknąć w gorszym układzie zagięć. Drzewa decyzyjne robią schodki wprost, pytaniem o próg, bez uczenia zagięć — stąd ich przewaga na tabelach z ostrymi progami.
Na przykładzie
Prosty eksperyment liczbowy: 400 równo rozłożonych punktów funkcji sin(x) na przedziale od −π do π, dopasowanych przez MLPRegressor z aktywacją ReLU i jedną warstwą ukrytą (solver lbfgs, najlepszy z 5 seedów 0–4). Regresja liniowa ma błąd średniokwadratowy 0,198. Sieć z 1 neuronem: 0,161, z 2: 0,139, z 3: 0,0033 — trzy zagięcia wystarczą, by oddać oba „zakręty” sinusa. Z 8 neuronami błąd spada do 0,00024, z 32 do 0,00003. Sieć z 4 neuronami wypadła gorzej (0,0053) niż z 3 — optymalizator nie zawsze znajduje najlepsze położenie zagięć.
Dla schodka (0 dla x ≤ 0 i 1 dla x > 0) regresja liniowa ma błąd 0,0625, a sieć z dwoma neuronami ReLU — poniżej 0,00001: dwa zagięcia ustawiły się tuż po obu stronach zera.
W praktyce
- Na danych z progami (reguły „jeśli x > c”) sieć bez warstwy ukrytej jest za słaba z definicji; jedna warstwa z kilkoma–kilkunastoma neuronami zwykle wystarcza na kilka progów.
- Rachunek orientacyjny dla jednej zmiennej: liczba neuronów ≈ 2 × liczba schodków, a dla gładkiej krzywej — liczba zagięć potrzebnych do przybliżenia jej łamaną.
- Drzewa i boosting modelują progi natywnie — jeśli dane to głównie progi, boosting zwykle wygrywa z MLP.
- Wizualizacja: narysuj wyjście sieci w funkcji jednej cechy przy pozostałych ustalonych (
PartialDependenceDisplay) — zobaczysz łamaną i położenie zagięć. - Typowy błąd: dokładanie neuronów bez sprawdzenia, ile progów i zakrętów naprawdę jest w danych.
Najczęstsze pytania
- Jak sieć ReLU przybliża funkcję nieliniową?
- Każdy neuron ukryty to zagięcie (zero, potem prosta), a wyjście sumuje je z wagami. Suma zagięć w różnych miejscach i o różnych nachyleniach to łamana, która przybliża każdą funkcję ciągłą z dowolną dokładnością, jeśli zagięć jest dość. Położenia zagięć sieć znajduje gradientem.
- Ile neuronów potrzeba na schodek?
- Dwa: jeden rozpoczyna rampę (zagięcie przed progiem, nachylenie dodatnie), drugi ją kończy (zagięcie za progiem, nachylenie ujemne). Odległość między zagięciami wyznacza szerokość przejścia. Każdy kolejny schodek to następna para neuronów.
- Dlaczego model liniowy nie radzi sobie z progami?
- Bo jego wyjście to jedna prosta albo jeden sigmoid na niej — jedno łagodne przejście o ustalonym kształcie. Ostry próg wymaga dwóch zagięć blisko siebie, a kilka progów — kilku par. Bez warstwy ukrytej albo ręcznie dodanych cech progowych tego nie da się uzyskać.
Źródła
- Goodfellow, I., Bengio, Y., Courville, A. (2016). Deep Learning, MIT Press, rozdz. 6.4.1 "Universal approximation properties and depth". https://www.deeplearningbook.org/contents/mlp.html
- Montúfar, G., Pascanu, R., Cho, K., Bengio, Y. (2014). "On the number of linear regions of deep neural networks". NeurIPS. arXiv:1402.1869
- Arora, R., Basu, A., Mianjy, P., Mukherjee, A. (2018). "Understanding deep neural networks with rectified linear units". ICLR. arXiv:1611.01491
- Zhang, A., Lipton, Z. C., Li, M., Smola, A. J. Dive into Deep Learning, rozdz. 5.1 "Multilayer perceptrons". https://d2l.ai/chapter_multilayer-perceptrons/mlp.html