Konwolucyjna sieć neuronowa, czyli CNN, to sieć neuronowa, która wyszukuje małe lokalne wzorce, a następnie łączy je w większe. W obrazach wczesne warstwy często wykrywają krawędzie lub narożniki, środkowe warstwy wykrywają tekstury lub części obiektów, a głębsze warstwy wykorzystują te sygnały do końcowej predykcji.
Kluczową ideą jest współdzielenie wag. Zamiast uczyć osobną wagę dla każdej pary piksel-pozycja, CNN używa tego samego małego filtra w wielu miejscach. Dzięki temu jest znacznie tańsza obliczeniowo niż warstwa gęsta działająca bezpośrednio na surowym obrazie i lepiej wykrywa ten sam typ wzorca w więcej niż jednym miejscu.
Co robi konwolucyjna sieć neuronowa
W warstwie w pełni połączonej każde wyjście może jednocześnie zależeć od wszystkich wartości wejściowych. CNN ma bardziej uporządkowaną strukturę. Używa małych jąder, często nazywanych filtrami, które patrzą tylko na jeden lokalny fragment naraz.
Dla wejścia jednokanałowego i jądra o rozmiarze , jeden element wyjścia można zapisać jako
To właśnie idea lokalnej sumy ważonej stojąca za warstwą konwolucyjną. W wielu bibliotekach uczenia maszynowego implementowana operacja jest technicznie korelacją wzajemną, a nie odwróconą matematyczną konwolucją, ale intuicja praktyczna pozostaje taka sama: jądro przesuwa się po wejściu i tworzy mapę cech.
Mapa cech pokazuje, gdzie wyuczony wzorzec pojawia się z dużą siłą.
Dlaczego współdzielone filtry pomagają
Jeśli ta sama pionowa krawędź pojawia się blisko lewego górnego rogu obrazu albo bliżej środka, zwykle chcemy, aby model zauważył ją w obu przypadkach. CNN to umożliwia, używając tych samych parametrów filtra w różnych pozycjach.
Ma to dwa praktyczne skutki:
- Zmniejsza liczbę uczonych parametrów w porównaniu z warstwą gęstą działającą na surowym obrazie.
- Zachęca sieć do wykrywania powtarzających się lokalnych wzorców zamiast zapamiętywania jednej stałej lokalizacji.
To współużycie parametrów jest jednym z powodów, dla których CNN stały się skuteczne w zadaniach związanych z obrazami.
Jak wygląda podstawowa architektura CNN
Podstawowa CNN często ma taki schemat:
- warstwa konwolucyjna
- funkcja aktywacji, na przykład ReLU
- opcjonalny pooling lub downsampling
- kolejne bloki konwolucyjne
- końcowa warstwa predykcyjna
Wczesne warstwy zwykle wychwytują prostą lokalną strukturę. Głębsze warstwy łączą te odpowiedzi w większe cechy, bardziej specyficzne dla danego zadania.
Pooling nie jest obowiązkowy, ale gdy się go używa, zmniejsza wymiary przestrzenne, dzięki czemu późniejsze warstwy mogą pracować na bardziej zwartej reprezentacji. Typowym przykładem jest max pooling, który zachowuje największą wartość w każdym małym obszarze.
Jeśli stride wynosi , a padding , to wejście z jądrem daje wyjście o rozmiarze . Ta reguła rozmiaru jest przydatna, gdy sprawdzasz, czy przykład obliczeniowy ma sens.
Przykład obliczeniowy: jak powstaje mapa cech w CNN
Weźmy taki obraz wejściowy :
Użyjmy takiego jądra :
Załóżmy stride i brak paddingu. Ponieważ wejście ma rozmiar , a jądro , wyjście musi mieć rozmiar . Każdy element wyjścia jest sumą jednego fragmentu , ponieważ każda wartość w jądrze jest równa .
Wartość wyjściowa w lewym górnym rogu to
Fragment przesunięty o jeden krok w prawo to
więc
Po wykonaniu obliczeń dla wszystkich poprawnych pozycji otrzymujemy
To wyjście jest mapą cech. Duże wartości pokazują, gdzie jądro znalazło silne dopasowanie. Tutaj filtr reaguje najmocniej tam, gdzie pojawia się pełny jasny blok .
Jeśli teraz zastosujesz ReLU, nic się nie zmieni, ponieważ wszystkie elementy są już nieujemne. Jeśli następnie użyjesz max poolingu ze stride , wynik po poolingu będzie równy
To nie tworzy nowej informacji. Zachowuje najsilniejsze pobliskie odpowiedzi i zmniejsza siatkę przestrzenną.
Ten przykład jest prosty, ale dobrze pokazuje podstawowy mechanizm: filtr przesuwa się, oblicza lokalne sumy ważone i tworzy mapę tego, gdzie pojawia się dany wzorzec.
Czego CNN uczy się podczas treningu
Powyższe jądro zostało wybrane ręcznie, ale w prawdziwej CNN wartości filtrów są uczone na podstawie danych. Trening dostosowuje te wartości tak, aby powstałe mapy cech były użyteczne dla danego zadania.
Jeśli zadaniem jest klasyfikacja obrazów, sieć uczy się filtrów, które pomagają rozróżniać klasy. Jeśli zadaniem jest segmentacja lub detekcja, późniejsze warstwy są trenowane pod te właśnie wyjścia. Podstawowy mechanizm pozostaje taki sam: przejście w przód, funkcja straty, backpropagation, aktualizacja parametrów.
Typowe błędy przy nauce CNN
Myślenie, że CNN to po prostu „klasyfikator obrazów”
Obrazy są standardowym przykładem, ale CNN tak naprawdę dotyczą lokalnej struktury i współdzielonych filtrów. Jeśli sąsiednie wartości mają znaczenie, ta sama idea może być użyteczna także poza obrazami.
Zakładanie, że pooling jest zawsze wymagany
Jest częsty, ale nie uniwersalny. Niektóre architektury zmniejszają rozmiar przestrzenny za pomocą konwolucji ze skokiem, a inne dłużej zachowują więcej szczegółów przestrzennych.
Ignorowanie stride i paddingu
Rozmiar mapy cech zależy od tych wyborów. Jeśli zmienisz stride albo padding, zmienisz nie tylko kształt wyjścia, ale też to, jakie lokalne sąsiedztwa może zobaczyć każda jednostka.
Traktowanie warstwy wyłącznie jako wzoru
Wzór na konwolucję jest ważny, ale architektura też ma znaczenie. CNN działa dlatego, że konwolucja, aktywacja, układanie warstw i trening współpracują ze sobą.
Kiedy konwolucyjne sieci neuronowe są przydatne
CNN są szeroko stosowane w zadaniach computer vision, takich jak klasyfikacja obrazów, detekcja obiektów i segmentacja. Pojawiają się też w niektórych zadaniach związanych z przetwarzaniem sygnałów i sekwencji, gdzie lokalne wzorce mają znaczenie.
Są szczególnie przydatne wtedy, gdy dane wejściowe mają wyraźną strukturę siatki albo uporządkowane sąsiedztwo. Jeśli ten warunek jest słaby, lepiej może sprawdzić się inna architektura.
Model mentalny, który ułatwia zrozumienie CNN
Pomyśl o CNN jak o detektorze wzorców, który zaczyna od małych elementów i wraz z głębokością staje się bardziej abstrakcyjny. Jedna warstwa pyta: „Czy ten mały wzorzec pojawia się tutaj?”. Późniejsze warstwy pytają: „Czy te prostsze wzorce łączą się w coś bardziej znaczącego?”.
Dlatego CNN łatwiej zrozumieć, gdy skupiasz się na mapach cech, a nie tylko na samym słowie „konwolucja”.
Wypróbuj własną wersję
Zachowaj to samo wejście, ale zmień jądro na
Oblicz ponownie mapę cech i sprawdź, które obszary dają teraz duże dodatnie lub ujemne odpowiedzi. Ta mała zmiana znacznie lepiej pokazuje, jak różne filtry wykrywają różne wzorce.
Potrzebujesz pomocy z zadaniem?
Prześlij pytanie i otrzymaj zweryfikowane rozwiązanie krok po kroku w kilka sekund.
Otwórz GPAI Solver →