Splotowa sieć neuronowa

Architektura sieci wykorzystująca operacje splotu do wykrywania lokalnych wzorców, szczególnie skuteczna w analizie obrazów.

Splotowa sieć neuronowa (Convolutional Neural Network, CNN) to architektura sieci neuronowej, w której zamiast łączyć każdy neuron z każdym pikselem obrazu, używasz operacji splotu (convolution): małe filtry przesuwają się po obrazie i wykrywają lokalne wzorce — krawędzie, narożniki, tekstury, a w głębszych warstwach całe kształty. Dzięki temu CNN jest wręcz stworzona do danych o strukturze siatki: obrazów, spektrogramów dźwięku, a czasem nawet tekstu traktowanego jako sekwencja.

Jak to działa

Sednem jest filtr (kernel) — mała macierz wag, np. 3×3, którą „przejeżdżasz” po obrazie i liczysz iloczyn skalarny z każdym fragmentem. Wynikiem jest mapa cech (feature map), która podświetla miejsca, gdzie dany wzorzec występuje. Kluczowa sztuczka to współdzielenie wag (weight sharing): ten sam filtr jest stosowany w całym obrazie, więc sieć ma drastycznie mniej parametrów niż klasyczna sieć w pełni połączona i sama uczy się, że krawędź to krawędź niezależnie od tego, gdzie się pojawi.

Typowy blok to splot, funkcja aktywacji (zwykle ReLU) i pooling (np. max pooling), który zmniejsza rozdzielczość i daje odporność na drobne przesunięcia. Warstwy układasz w stos: pierwsze łapią proste krawędzie, kolejne składają je w oczy, koła czy litery, a na końcu warstwy gęste (lub global average pooling) zamieniają cechy na decyzję — np. „to kot z prawdopodobieństwem 0,93″.

Przykład z praktyki

W praktyce rzadko budujesz CNN od zera. Bierzesz gotową, wytrenowaną sieć i robisz transfer learning. W PyTorch wygląda to mniej więcej tak:

  • from torchvision import models
  • model = models.resnet50(weights="IMAGENET1K_V2")
  • zamrażasz większość warstw, podmieniasz ostatnią warstwę pod swoją liczbę klas i dotrenowujesz na własnych zdjęciach.

Realny scenariusz: klasyfikujesz zdjęcia produktów albo wykrywasz wadliwe elementy na taśmie. Zamiast zbierać miliony obrazów, korzystasz z sieci, która już „widziała” pół internetu (ImageNet) i potrzebujesz tylko kilkuset swoich przykładów na klasę.

Częste błędy i mity

  • Brak augmentacji danych. Bez obracania, przycinania i zmiany jasności sieć nauczy się Twojego konkretnego zbioru na pamięć — i polegnie na nowych zdjęciach.
  • Zła normalizacja. Jeśli używasz wytrenowanego modelu, musisz znormalizować wejście dokładnie tak, jak robiono to w treningu, inaczej dostajesz losowe wyniki.
  • „CNN jest niezmiennicze na obrót”. Nie jest. Pooling daje tylko niewielką odporność na przesunięcie, nie na rotację czy skalę — od tego masz augmentację.
  • Mit, że CNN to już przeszłość. Wizja przesunęła się mocno w stronę Vision Transformerów, ale CNN dalej rządzi tam, gdzie liczy się szybkość i mały model na urządzeniu.

Pojęcia powiązane

Warto znać: filtr/kernel, feature map, pooling, ReLU, transfer learning, augmentacja danych, sieci ResNet i VGG, a po drugiej stronie ringu — Vision Transformer (ViT). Z sąsiednich tematów: sieci rekurencyjne (RNN) do sekwencji oraz ogólne pojęcie deep learning, w którym CNN jest jednym z fundamentów.