ML Atlas

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

Zobacz też