Sieci konwolucyjne (CNN) dobrze działają na obrazach, ponieważ utrzymują sąsiednie piksele razem i uczą się wzorców warstwowo. To jest kluczowy trik. Sieć CNN nie widzi obrazu jako długiej, nieporządkowanej listy liczb. Widzi siatkę.
Zwykła sieć neuronowa najpierw spłaszcza obraz. Obraz 28 na 28 staje się 784 liczbami w jednym długim rzędzie. To traktuje przydatną informację jak stratę: piksele obok siebie zazwyczaj należą do siebie. Gdy ta lokalność znika, model ma trudniejsze zadanie.
Siatka konwolucyjna idzie inną drogą. Przesuwa mały filtr po obrazie i patrzy na jeden fragment naraz. Każdy fragment produkuje jedną liczbę w nowej siatce zwanej mapą cech. Ta mapa zachowuje strukturę obrazu nienaruszoną.
Dlatego sieci CNN są tak dobre w ekstrakcji cech. Uczą się, które lokalne wzorce mają znaczenie. Wczesne warstwy często wykrywają proste rzeczy, takie jak krawędzie i linie. Późniejsze warstwy łączą te elementy w narożniki, krzywe, części obiektów, a ostatecznie całe obiekty.
Pomyśl o małym szarym obrazku odręcznej cyfry, np. 32 na 32 piksele. Filtr 3 na 3 przesuwa się po obrazie i sprawdza każdy drobny region. Jeśli filtr znajdzie silne dopasowanie, wpisuje wysoką wartość do mapy cech. Jeśli region nie pasuje, wpisuje niską wartość. Wagi filtra nie są wybierane ręcznie. Trening je uczy.
To jest praktyczna moc sieci CNN. Nie potrzebuje człowieka, który by powiedział: „Szukaj pionowych kresek tutaj” albo „Zwróć uwagę na krzywe tam”. Uczy się użytecznych wzorców z danych poprzez backpropagację. Zbiór filtrów może uczyć się różnych zadań jednocześnie. Jeden może reagować na poziome krawędzie. Inny na ukośne linie. Kolejny na krzywe.
Jak działa krok konwolucji
Słowo konwolucja brzmi ciężziej, niż jest w rzeczywistości. Akcja jest prosta. Umieść jądro na lewym górnym rogu obrazu. Pomnóż wartości jądra przez odpowiadające im wartości pikseli. Dodaj wyniki. Zapisz tę jedną liczbę.
Następnie przesuwaj jądro po obrazie i powtórz to samo działanie matematyczne. Odległość, jaką pokonuje za każdym razem, to krok (stride). Krok równy 1 przesuwa się o jeden piksel naraz. To zachowuje detale. Krok równy 2 przesuwa się szybciej i bardziej kurczy wynik.
Padding zmienia brzegi tej historii. Jeśli nie użyto paddingu, wynik staje się mniejszy po każdej konwolucji. Nazywa się to valid padding. Jeśli dodano zera wokół granicy, model może dłużej zachowywać rozmiar obrazu i sprawiedliwiej patrzeć na piksele krawędziowe. To same padding. Full padding dodaje jeszcze więcej miejsca na obrzeżach i sprawia, że wynik jest większy.
Rozmiar wyniku zależy od rozmiaru wejścia, rozmiaru jądra, kroku i paddingu. Matematyka jest stała i ma znaczenie, bo mapy cech mogą szybko kurczyć się w praktyce. Kontrola kształtu jest częścią projektowania modelu, a nie drobnym szczegółem.
Kluczowym pomysłem tu jest dzielenie wag. Ten sam filtr jest ponownie używany na całym obrazie. To redukuje liczbę parametrów w porównaniu do gęstej sieci. Mniej parametrów oznacza szybszy trening i mniej miejsca na overfitting. Prosząc mówiąc, model może nauczyć się tego samego reguły wizualnej w wielu miejscach bez odbudowywania tej reguły dla każdej lokalizacji piksela.
Dlaczego pooling i ReLU siedzą między konwolucjami
Po warstwie konwolucyjnej sieci CNN często używają ReLU. ReLU utrzymuje dodatnie wartości i zamienia ujemne wartości na zero. Brzmi to nudno. Jest jednak użyteczne. Ułatwia naukę i zapobiega zbyt szybkiemu zanikaniu gradientów podczas treningu.
Pooling pojawia się dalej w wielu sieciach CNN. Max pooling jest powszechnym przypadkiem. Patrzy na mały region i zatrzymuje największą wartość. Jeśli 2 na 2 pool używa stride 2, mapa cech kurczy się o połowę w każdym kierunku. To redukuje obliczenia i zachowuje najsilniejszy sygnał w każdym regionie.
Poolingu również sprawia, że model jest mniej czuły na drobne przesunięcia. Jeśli linia przesunie się nieco na obrazie, wynik pooled może pozostać podobny. To pomaga, gdy dokładna pozycja piksela nie jest prawdziwą punktem. Obiekt nadal ma większe znaczenie niż dokładne miejsce jednej krawędzi.
Nie oznacza to, że każda nowoczesna sieć CNN używa pooling w ten sam sposób. Niektóre projekty redukują rozmiar za pomocą strided convolutions zamiast tego. Podstawowy pomysł pozostaje ten sam. Zmniejsz rozmiar, zachowaj użyteczny sygnał i nie marnuj wysiłku na piksele, które dodają mało wartości.
Od map cech do wyników klasyfikacji
Sieć CNN zwykle powtarza ten wzorzec kilka razy. Konwolucja, ReLU, pooling. Konwolucja, ReLU, pooling. Każda runda buduje bogatszy widok obrazu. Wczesne warstwy łapią proste części wizualne. Głębsze warstwy łączą te części w bardziej abstrakcyjne kształty.
Na końcu mapy cech są spłaszczane do jednego długiego wektora. Ten wektor trafia do jednej lub więcej w pełni połączonych warstw. Te gęste warstwy mieszają nauczone cechy i przygotowują ostateczną decyzję. Ostatnia warstwa to często softmax. Softmax zamienia końcowe wyniki w prawdopodobieństwa klas.
Jeśli zadaniem jest rozpoznawanie odręcznych cyfr, wyjście może mieć dziesięć wartości, po jednej dla każdej cyfry od 0 do 9. Największa wartość staje się przewidywaną klasą. Nie dzieje się tam nic magicznego. Sieć po prostu zamienia naukowy zestaw cech na rankingową odpowiedź.
Ważnym punktem jest to, że CNN wykonuje trudną pracę wizualną przed zaangażowaniem gęstej warstwy. Gęsta warstwa wykonuje ostateczne sortowanie. Jest to klasyfikator, a nie łowca cech. Sieci CNN są silne, ponieważ łowca cech jest wbudowany w architekturę.
Dlatego też sieci CNN stały się standardowym narzędziem w computer vision. Dobrze pasują do obrazów. Szanują strukturę przestrzenną. Uczą się użytecznych części wizualnych samodzielnie. Sprawia to, że są silną bazą dla zadań takich jak rozpoznawanie twarzy, autodrive i analiza obrazów medycznych. Szczegóły się zmieniają, ale ten sam pomysł ekstrakcji cech ciągle się pojawia.
Istnieje oczywiście limit. Sieci CNN są doskonałe w uczeniu lokalnych wzorców, ale nie są ludzkim wzrokiem. Mogą zawieść, gdy obrazy przesuną się w dziwny sposób, gdy dane są rzadkie, lub gdy zbiór treningowy nie pokrywa świata rzeczywistego dobrze. Dobra architektura pomaga. Nie usuwa złych danych ani błędnych założeń. Maszyny pozostają irytująco dosłowne.
Co ma znaczenie, to model mentalny. Sieć CNN nie czyta obrazu jak arkusz kalkulacyjny. Skanuje go pod kątem wzorców, budując je warstwowo i zachowując użyteczną strukturę przestrzenną po drodze. Gdy to kliknie, reszta architektury przestaje czuć się jak magia i zaczyna wyglądać jak inżynieria.
Możesz teraz zobaczyć, dlaczego sieci CNN biją zwykłe gęste sieci na obrazach, jak działają jądra i mapy cech oraz dlaczego warstwy takie jak ReLU i pooling siedzą w środku stosu. To jest rodzaj praktycznego zrozumienia, którego chcę w The Model Log: jedna praktyczna koncepcja AI, jeden działający przykład i jeden szczery spojrzenie na to, co naprawdę działa.



