Podstawy splotowych sieci neuronowych: co musisz wiedzieć
Opublikowany: 2024-09-10Konwolucyjne sieci neuronowe (CNN) to podstawowe narzędzia analizy danych i uczenia maszynowego (ML). W tym przewodniku wyjaśniono, jak działają sieci CNN, czym różnią się od innych sieci neuronowych, jakie są ich zastosowania oraz zalety i wady związane z ich użytkowaniem.
Spis treści
- Co to jest CNN?
- Jak działają CNN
- CNN kontra RNN i transformatory
- Zastosowania CNN
- Zalety
- Wady
Co to jest splotowa sieć neuronowa?
Splotowa sieć neuronowa (CNN) to sieć neuronowa stanowiąca integralną część głębokiego uczenia się, zaprojektowana do przetwarzania i analizowania danych przestrzennych. Wykorzystuje warstwy splotowe z filtrami do automatycznego wykrywania i uczenia się ważnych funkcji na wejściu, dzięki czemu jest szczególnie skuteczny w przypadku zadań takich jak rozpoznawanie obrazów i wideo.
Rozpakujmy trochę tę definicję. Dane przestrzenne to dane, w których części są powiązane ze sobą poprzez swoje położenie. Obrazy są tego najlepszym przykładem.
Na każdym powyższym obrazku każdy biały piksel jest połączony z każdym otaczającym go białym pikselem: tworzą one cyfrę. Lokalizacje pikseli informują również widza, gdzie na obrazie znajduje się cyfra.
Funkcje to atrybuty obecne w obrazie. Atrybuty te mogą obejmować wszystko, od lekko nachylonej krawędzi, przez obecność nosa lub oka, po kompozycję oczu, ust i nosów. Co najważniejsze, cechy mogą składać się z prostszych cech (np. oko składa się z kilku zakrzywionych krawędzi i centralnej ciemnej plamki).
Filtry to część modelu, która wykrywa te cechy na obrazie. Każdy filtr szuka jednej konkretnej cechy (np. zakrzywienia krawędzi od lewej do prawej) na całym obrazie.
Wreszcie, „splot” w splotowej sieci neuronowej odnosi się do sposobu zastosowania filtra do obrazu. Wyjaśnimy to w następnej sekcji.
Sieci CNN wykazały dobrą wydajność w przypadku różnych zadań związanych z obrazem, takich jak wykrywanie obiektów i segmentacja obrazu. Model CNN (AlexNet) odegrał znaczącą rolę w rozwoju głębokiego uczenia się w 2012 roku.
Jak działają CNN
Przyjrzyjmy się ogólnej architekturze CNN na przykładzie ustalenia, która liczba (0–9) znajduje się na obrazie.
Przed wprowadzeniem obrazu do modelu obraz należy przekształcić w reprezentację numeryczną (lub kodowanie). W przypadku obrazów czarno-białych każdemu pikselowi przypisana jest liczba: 255, jeśli jest całkowicie biały i 0, jeśli jest całkowicie czarny (czasami normalizowany do 1 i 0). W przypadku obrazów kolorowych każdemu pikselowi przypisano trzy liczby: jedną określającą zawartość koloru czerwonego, zielonego i niebieskiego, zwaną wartością RGB. Zatem obraz o wymiarach 256 × 256 pikseli (z 65 536 pikselami) miałby 65 536 wartości w kodowaniu czarno-białym i 196 608 wartości w kodowaniu kolorowym.
Następnie model przetwarza obraz poprzez trzy typy warstw:
1 Warstwa splotowa:ta warstwa stosuje filtry do swoich danych wejściowych. Każdy filtr jest siatką liczb o określonym rozmiarze (np. 3×3). Ta siatka jest nakładana na obraz, zaczynając od lewego górnego rogu; użyte zostaną wartości pikseli z wierszy 1–3 w kolumnach 1–3. Te wartości pikseli są mnożone przez wartości w filtrze, a następnie sumowane. Suma ta jest następnie umieszczana w siatce wyjściowej filtra w wierszu 1, kolumnie 1. Następnie filtr przesuwa się o jeden piksel w prawo i powtarza proces, aż pokryje wszystkie wiersze i kolumny obrazu. Przesuwając po jednym pikselu, filtr może znaleźć cechy w dowolnym miejscu obrazu, co jest właściwością znaną jako niezmienność translacyjna. Każdy filtr tworzy własną siatkę wyjściową, która następnie jest przesyłana do kolejnej warstwy.
2 Warstwa łączenia: ta warstwa podsumowuje informacje o obiektach z warstwy splotu. Warstwa splotowa zwraca dane wyjściowe większe niż dane wejściowe (każdy filtr zwraca mapę obiektów o mniej więcej tym samym rozmiarze co dane wejściowe, a filtrów jest wiele). Warstwa łączenia pobiera każdą mapę obiektów i stosuje do niej jeszcze jedną siatkę. Ta siatka pobiera średnią lub maksymalną wartość z niej i wyprowadza ją. Jednak ta siatka nie przesuwa się o jeden piksel na raz; przejdzie do następnego fragmentu pikseli. Na przykład siatka łącząca 3 × 3 będzie najpierw działać na pikselach w wierszach 1–3 i kolumnach 1–3. Następnie pozostanie w tym samym wierszu, ale przejdzie do kolumn 4–6. Po pokryciu wszystkich kolumn w pierwszym zestawie wierszy (1–3) przejdzie do wierszy 4–6 i zajmie się tymi kolumnami. To skutecznie zmniejsza liczbę wierszy i kolumn w wynikach. Warstwa łączenia pomaga zmniejszyć złożoność, sprawia, że model jest bardziej odporny na szumy i drobne zmiany oraz pomaga modelowi skupić się na najważniejszych funkcjach.
3 Warstwa w pełni połączona: po wielu rundach warstw splotowych i łączenia ostateczne mapy obiektów są przekazywane do w pełni połączonej warstwy sieci neuronowej, która zwraca dane wyjściowe, na których nam zależy (np. prawdopodobieństwo, że obraz ma określoną liczbę). Mapy obiektów muszą zostać spłaszczone (każdy wiersz mapy obiektów jest połączony w jeden długi wiersz), a następnie połączone (każdy długi wiersz mapy obiektów jest połączony w mega-wiersz).
Oto wizualna reprezentacja architektury CNN ilustrująca, w jaki sposób każda warstwa przetwarza obraz wejściowy i wpływa na końcowy wynik:
Kilka dodatkowych uwag na temat procesu:
- Każda kolejna warstwa splotowa znajduje funkcje wyższego poziomu. Pierwsza warstwa splotowa wykrywa krawędzie, plamy lub proste wzory. Następna warstwa splotowa przyjmuje jako dane wejściowe zbiorczy wynik pierwszej warstwy splotowej, umożliwiając jej wykrycie kompozycji cech niższej dźwigni, które tworzą cechy wyższego poziomu, takie jak nos lub oko.
- Modelka wymaga przeszkolenia. Podczas uczenia obraz przechodzi przez wszystkie warstwy (na początku z losowymi wagami) i generowany jest wynik. Różnica między wynikiem a rzeczywistą odpowiedzią służy do nieznacznego dostosowania wag, co zwiększa prawdopodobieństwo, że model będzie udzielał poprawnych odpowiedzi w przyszłości. Odbywa się to poprzez opadanie gradientowe, podczas którego algorytm uczący oblicza, w jakim stopniu każda waga modelu przyczynia się do ostatecznej odpowiedzi (za pomocą pochodnych cząstkowych) i przesuwa ją nieznacznie w kierunku prawidłowej odpowiedzi. Warstwa basenowa nie posiada żadnych ciężarków, zatem proces treningowy nie ma na nią wpływu.
- CNN mogą pracować wyłącznie na obrazach o tym samym rozmiarze, co te, na których zostali przeszkoleni. Jeśli model został wyszkolony na obrazach o wymiarach 256 × 256 pikseli, wówczas każdy większy obraz będzie musiał zostać poddany próbkowaniu w dół, a każdy mniejszy obraz będzie musiał zostać poddany próbkowaniu w górę.
CNN kontra RNN i transformatory
Konwolucyjne sieci neuronowe są często wymieniane obok rekurencyjnych sieci neuronowych (RNN) i transformatorów. Czym się więc różnią?
CNN kontra RNN
Sieci RNN i CNN działają w różnych domenach. Sieci RNN najlepiej nadają się do danych sekwencyjnych, takich jak tekst, natomiast sieci CNN najlepiej sprawdzają się w przypadku danych przestrzennych, takich jak obrazy. Sieci RNN mają moduł pamięci, który śledzi wcześniej widziane części danych wejściowych, aby kontekstualizować następną część. Z kolei CNN kontekstualizują części danych wejściowych, patrząc na ich bezpośrednich sąsiadów. Ponieważ stacje CNN nie mają modułu pamięci, nie nadają się dobrze do zadań tekstowych: zanim dotrą do ostatniego słowa, zapominają pierwsze słowo w zdaniu.
CNN kontra transformatory
Transformatory są również intensywnie wykorzystywane do zadań sekwencyjnych. Mogą wykorzystywać dowolną część danych wejściowych do kontekstualizowania nowych danych wejściowych, co czyni je popularnymi w zadaniach przetwarzania języka naturalnego (NLP). Jednak ostatnio transformatory zastosowano również do obrazów w postaci transformatorów wizyjnych. Modele te pobierają obraz, dzielą go na fragmenty, kierują uwagę (podstawowy mechanizm w architekturach transformatorów) na fragmenty, a następnie klasyfikują obraz. Transformatory wizyjne mogą przewyższać CNN w przypadku dużych zbiorów danych, ale brakuje im niezmienności translacyjnej właściwej CNN. Niezmienność translacyjna w sieciach CNN umożliwia modelowi rozpoznawanie obiektów niezależnie od ich położenia na obrazie, dzięki czemu sieci CNN są bardzo skuteczne w przypadku zadań, w których ważny jest związek przestrzenny cech.
Zastosowania CNN
Sieci CNN są często używane z obrazami ze względu na ich niezmienność translacyjną i cechy przestrzenne. Jednak dzięki sprytnemu przetwarzaniu CNN mogą pracować w innych domenach (często najpierw konwertując je na obrazy).
Klasyfikacja obrazu
Klasyfikacja obrazów jest głównym zastosowaniem CNN. Dobrze wyszkolone, duże stacje CNN potrafią rozpoznać miliony różnych obiektów i pracować nad niemal każdym otrzymanym obrazem. Pomimo wzrostu liczby transformatorów, wydajność obliczeniowa CNN sprawia, że są one realną opcją.
Rozpoznawanie mowy
Nagrany dźwięk można przekształcić w dane przestrzenne za pomocą spektrogramów, które są wizualną reprezentacją dźwięku. CNN może przyjąć spektrogram jako dane wejściowe i nauczyć się mapować różne kształty fal na różne słowa. Podobnie CNN może rozpoznawać rytmy i próbki muzyczne.
Segmentacja obrazu
Segmentacja obrazu polega na identyfikowaniu i wyznaczaniu granic wokół różnych obiektów na obrazie. Sieci CNN są popularne w tym zadaniu ze względu na ich dobrą wydajność w rozpoznawaniu różnych obiektów. Po segmentacji obrazu możemy lepiej zrozumieć jego zawartość. Na przykład inny model głębokiego uczenia się mógłby przeanalizować segmenty i opisać następującą scenę: „Dwie osoby spacerują po parku. Po ich prawej stronie znajduje się latarnia, a przed nimi samochód. W medycynie segmentacja obrazu pozwala na odróżnienie nowotworów od normalnych komórek na skanach. W przypadku pojazdów autonomicznych może identyfikować oznaczenia pasów ruchu, znaki drogowe i inne pojazdy.
Zalety CNN
Sieci CNN są szeroko stosowane w branży z kilku powodów.
Wysoka wydajność obrazu
Przy dużej ilości dostępnych danych obrazów potrzebne są modele, które dobrze radzą sobie z różnymi typami obrazów. CNN doskonale nadają się do tego celu. Ich niezmienność translacyjna i zdolność do tworzenia większych elementów z mniejszych pozwalają im wykrywać cechy na całym obrazie. Dla różnych typów obrazów nie są wymagane różne architektury, ponieważ podstawowy CNN można zastosować do wszystkich rodzajów danych obrazu.
Brak ręcznej inżynierii funkcji
Przed pojawieniem się CNN najskuteczniejsze modele obrazu wymagały znacznego wysiłku ręcznego. Eksperci dziedzinowi musieli stworzyć moduły do wykrywania określonych typów obiektów (np. filtrów krawędzi), co było czasochłonnym procesem, któremu brakowało elastyczności w przypadku różnorodnych obrazów. Każdy zestaw obrazów wymagał własnego zestawu funkcji. Z kolei pierwsza słynna stacja CNN (AlexNet) potrafiła automatycznie kategoryzować 20 000 typów obrazów, ograniczając potrzebę ręcznego projektowania funkcji.
Wady CNN
Oczywiście korzystanie z CNN wiąże się z kompromisami.
Wiele hiperparametrów
Szkolenie CNN obejmuje wybór wielu hiperparametrów. Jak każda sieć neuronowa, istnieją hiperparametry, takie jak liczba warstw, rozmiar partii i szybkość uczenia się. Dodatkowo każdy filtr wymaga własnego zestawu hiperparametrów: rozmiaru filtra (np. 3×3, 5×5) i kroku (liczba pikseli do przesunięcia po każdym kroku). Hiperparametrów nie można łatwo dostroić podczas procesu uczenia. Zamiast tego należy wytrenować wiele modeli z różnymi zestawami hiperparametrów (np. zestawem A i zestawem B) i porównać ich wydajność, aby określić najlepszy wybór.
Wrażliwość na rozmiar wejściowy
Każda CNN jest przeszkolona do akceptowania obrazu o określonym rozmiarze (np. 256×256 pikseli). Wiele obrazów, które chcesz przetworzyć, może nie pasować do tego rozmiaru. Aby rozwiązać ten problem, możesz skalować obrazy w górę lub w dół. Jednak taka zmiana rozmiaru może spowodować utratę cennych informacji i może pogorszyć wydajność modelu.