Strona głównaArtykułySztuczna Inteligencja & Uczenie Maszynowe

Sieci Neuronowe Konwolucyjne: Wyjaśniony Filtr, ReLU i Max-Pooling

Jak niewielki nauczony filtr, przesuwany przez obraz, buduje hierarchię cech, która pozwala CNN rozpoznawać obiekty.

mysimulator teamZaktualizowano — czerwiec 2026≈ 7 min czytania▶ Otwórz symulację

Filtrowanie jest pytaniem zadawanym wszędzie

Warstwa konwolucyjna przesuwa małą siatkę liczb, nazywaną jądrem lub filtrem (często 3x3 lub 5x5), po każdej pozycji obrazu wejściowego i w każdym położeniu oblicza iloczyn skalarny między tym jądrem a fragmentem pikseli pod nim. Wynikiem jest pojedyncza liczba wskazująca, jak silnie ten fragment pasuje do wzoru, którego filtr nauczył się wykrywać – krawędź, narożnik, fragment koloru. Powtarzanie tego w każdej pozycji generuje nową siatkę nazywaną mapą cech.

output[y][x] = suma po (i,j) kernel[i][j] * input[y+i][x+j] (+ bias) # jeden filtr → jedna mapa cech demo na żywo · filtr przesuwający się przez obraz 8x8● NA ŻYWO Kluczem do taniego i potężnego konwolucjonowania jest współdzielenie wag: te same 9 lub 25 liczb jest wykorzystywane w każdym położeniu, więc sieć nie musi mieć oddzielnego zestawu wag dla "krawędzi w lewym górnym rogu" i "krawędzi w prawym dolnym rogu" – uczy się jednego detektora krawędzi i stosuje go wszędzie. Ponadto warstwa ta jest w przybliżeniu równoważna translacyjnie: przesunięcie wejścia o kilka pikseli powoduje przesunięcie mapy cech wraz z nim, zamiast sieci musieć ponownie uczyć się wzoru od podstaw w każdym miejscu.

output[y][x] = sum over (i,j) of  kernel[i][j] * input[y+i][x+j]   (+ bias)
                                                        # one filter → one feature map
demo na żywo · powiązana symulacja● LIVE

ReLU: odrzucanie znaku

Po konwolucji każda wartość przechodzi przez nie-liniową funkcję aktywacji, prawie zawsze ReLU (Rectified Linear Unit): ReLU(x) = max(0, x). Zerosuje odpowiedzi ujemne i przekazuje niezmienione odpowiedzi dodatnie. Bez nie-liniowości warstw konwolucyjnych nakładających się jedna na drugą, matematycznie skłoniłyby się do jednego dużego filtru liniowego, bez względu na to, ile warstw by je było złożono; ReLU jest tym, co pozwala głębokości faktycznie dodać ekspresywność, a ponieważ jest tania – tylko jedno porównanie, bez eksponencjalnych funkcji – dlatego zastąpiła funkcje sigmoid i tanh w większości nowoczesnych sieci.

Max-pooling: pomijanie pozycji

Max-pooling następnie zmniejsza każdy mapę cech poprzez przesunięcie małego okna (zwykle 2x2) przez nią i zachowanie tylko największej wartości w każdym oknie, odrzucając resztę. Robi to dwema rzeczami: redukuje ilość obliczeń dla każdego kolejnego warstwy oraz sprawia, że reprezentacja jest nieco bardziej odporna na drobne przesunięcia i zniekształcenia położenia, w którym dany element pojawił się – sieć coraz bardziej interesuje się tym, czy krawędź lub tekstura występuje w sąsiedztwie, a nie jej dokładnym współrzędnych pikseli.

2x2 max-pool, stride 2:
[ 3  1  7  2 ]        [ 3  7 ]
[ 0  2  4  9 ]   →   [ 5  9 ]
[ 5  1  0  3 ]
[ 1  0  2  1 ]

Układanie warstw: od krawędzi do obiektów

Poszczególne warstwy konwolucyjne widzą jedynie niewielkie pole odbiorcze – odpowiadające jednej wartości jądra (kernel). Połącząc kilka bloków conv/ReLU/pool, każde kolejne warstwy mają coraz większe pole odbiorcze, mierzone w pikselach oryginalnego obrazu, ponieważ budowane są na podstawie cech, które same powstały z mniejszych obszarów. W praktyce to generuje się przybliżoną hierarchię: wczesne warstwy reagują na krawędzie i proste gradienty, średnie warstwy łączą je w kąty, faktury i proste kształty, a głębsze warstwy rozpoznają części i całościowe obiekty. Nikt nie projektuje tej hierarchii ręcznie – powstaje ona w wyniku uczenia się jąder za pomocą propagacji wstecznej (backpropagation) w celu zminimalizowania błędu klasyfikacji lub detekcji.

Dlaczego konwolucja przewyższa warstwę w pełni połączoną dla obrazów

Warstwa w pełni połączona na obrazie 8x8x3 wymaga już 192 wag na neuron wyjściowy; na realistycznym obrazie 224x224x3 potrzeba ponad 150 000 wag na neuron, a żaden z tych elementów nie jest wykorzystywany ponownie między neuronami. Warstwa konwolucyjna z jądrem 3x3 wymaga 27 wag w sumie dla całego obrazu, które są współdzielone we wszystkich pozycjach. Mniej parametrów oznacza mniej rzeczy do nauczenia się z ustalonej ilości danych, szybsze uczenie się i – ponieważ ten sam detektor jest testowany w każdym miejscu – wbudowana założenie, że przydatny wzór (krawędź, oko, koło) to wzór lokalny, który może pojawić się wszędzie na kadrze, co prawie zawsze jest prawdą dla obrazów naturalnych.

Frequently asked questions

Co reprezentuje mapa cech?

Jest to siatka o przybliżonym kształcie jak wejście, gdzie każda wartość mierzy, w jakim stopniu filtr nauczył się dopasować do wzoru z obrazu w tym miejscu. Mapy cech wczesnych warstw przypominają mapy krawędzi; bardziej abstrakcyjne i trudne do interpretacji wizualnie są mapy cech głębszych warstw.

Dlaczego ReLU a nie sigmoid?

ReLU jest tani w obliczeniach, nie ulega nasyceniu dla dużych wartości dodatnich (dzięki czemu gradienty płyną podczas propagacji wstecznej) i empirycznie trenuje szybciej i głębiej niż sigmoid lub tanh, które ściskają swoje wyjście w wąskie przedziały i powodują zanikający gradient w głębokich warstwach.

Czy max-pooling zawsze używa maksimum?

Max-pooling jest najczęstszym wyborem, ponieważ zachowuje najsilniejszą aktywację w każdym oknie, ale average-pooling (obliczanie średniej zamiast maksimum) również jest stosowany, szczególnie jako ostateczny krok, który redukuje każdą mapę cech do jednej liczby przed warstwą klasyfikacyjną.

Wypróbuj na żywo

Wszystko powyżej działa bezpośrednio w Twojej przeglądarce — otwórz Convolutional Neural Network i zmieniaj parametry podczas działania. Nic nie jest instalowane ani przesyłane na serwer, cały model działa w jednej karcie.

▶ Otwórz symulację Convolutional Neural Network

Co znalazłeś?

Dodaj kroki odtworzenia (opcjonalnie)