Podstawowa architektura CNN: wyjaśnienie 5 warstw konwolucyjnej sieci neuronowej [USA]
Opublikowany: 2023-04-16CNN (Convolutional Neural Network) to rodzaj sieci neuronowej głębokiego uczenia, która wykorzystuje kombinację warstw konwolucyjnych i podpróbkowania do uczenia się funkcji z dużych zbiorów danych. Jest powszechnie używany do zadań związanych z rozpoznawaniem i klasyfikacją obrazów. Warstwy splotowe stosują filtry do danych wejściowych, a warstwy podpróbkowania zmniejszają rozmiar danych wejściowych. Architektura konwolucyjnej sieci neuronowej ma na celu uczenie się cech z danych, które można wykorzystać do klasyfikowania lub wykrywania obiektów na wejściu. Poniżej wyjaśniono 5 warstw CNN .
Zapisz się na kurs uczenia maszynowego z najlepszych uniwersytetów na świecie. Zdobądź Master, Executive PGP lub Advanced Certificate Programs, aby przyspieszyć swoją karierę.
Spis treści
5 warstw konwolucyjnej sieci neuronowej
1. Warstwa konwolucyjna:
Ta warstwa wykonuje operację splotu na danych wejściowych, która wyodrębnia różne funkcje z danych.
Warstwy konwolucyjne w architekturze modelu CNN są jednym z najważniejszych elementów warstw CNN . Warstwy te odpowiadają za wydobywanie cech z danych wejściowych i tworzenie podstaw do dalszego przetwarzania i uczenia się.
Warstwa konwolucyjna składa się z zestawu filtrów (znanych również jako jądra) zastosowanych do danych wejściowych w sposób przesuwającego się okna. Każdy filtr wyodrębnia określony zestaw cech z danych wejściowych na podstawie powiązanych z nim wag.
Liczba filtrów zastosowanych w warstwie konwolucyjnej jest jednym z kluczowych hiperparametrów w architekturze. Jest ona ustalana na podstawie rodzaju przetwarzanych danych oraz pożądanej dokładności modelu. Ogólnie rzecz biorąc, większa liczba filtrów spowoduje wyodrębnienie większej liczby funkcji z danych wejściowych, co pozwoli na lepsze zrozumienie danych w bardziej złożonych architekturach sieciowych.
Operacja splotu polega na pomnożeniu każdego filtra przez dane w przesuwanym oknie i zsumowaniu wyników. Ta operacja jest powtarzana dla wszystkich filtrów, w wyniku czego powstaje wiele map obiektów dla pojedynczej warstwy splotowej. Te mapy obiektów są następnie wykorzystywane jako dane wejściowe dla kolejnych warstw, umożliwiając sieci poznanie bardziej złożonych cech z danych.
Warstwy konwolucyjne są podstawą architektur głębokiego uczenia się i są wykorzystywane w różnych aplikacjach, takich jak rozpoznawanie obrazów, przetwarzanie języka naturalnego i rozpoznawanie mowy. Wyodrębniając najbardziej krytyczne cechy z danych wejściowych, warstwy splotowe umożliwiają sieci uczenie się bardziej złożonych wzorców i dokonywanie lepszych prognoz.
2. Warstwa puli:
Ta warstwa wykonuje operację próbkowania w dół na mapach obiektów, co zmniejsza ilość wymaganych obliczeń, a także pomaga zredukować nadmierne dopasowanie.
Warstwa puli jest istotnym elementem architektury CNN . Jest zwykle używany do zmniejszania rozmiaru woluminu wejściowego podczas wydobywania znaczących informacji z danych. Warstwy łączenia są zwykle używane na późniejszych etapach CNN, umożliwiając sieci skupienie się na bardziej abstrakcyjnych cechach obrazu lub innego rodzaju danych wejściowych. Warstwa puli działa poprzez przesuwanie okna nad wolumenem wejściowym i obliczanie podsumowującej statystyki dla wartości w oknie.
Typowe statystyki obejmują przyjmowanie maksimum, średniej lub sumy wartości w oknie. Zmniejsza to rozmiar woluminu wejściowego przy jednoczesnym zachowaniu ważnych informacji o danych.
Warstwa puli jest również zwykle używana do wprowadzania niezmienności przestrzennej, co oznacza, że sieć będzie generować ten sam wynik niezależnie od lokalizacji wejścia w obrazie. Dzięki temu sieć może odziedziczyć bardziej ogólne cechy obrazu, zamiast po prostu zapamiętywać jego dokładną lokalizację.
3. Warstwa aktywacji:
Ta warstwa dodaje nieliniowość do modelu poprzez zastosowanie nieliniowej funkcji aktywacji, takiej jak ReLU lub tanh.
Warstwa aktywacyjna w CNN to warstwa, która służy jako nieliniowa transformacja na wyjściu warstwy splotowej. Jest podstawowym elementem sieci, pozwalającym na poznanie złożonych relacji między danymi wejściowymi i wyjściowymi.
Warstwę aktywacyjną można traktować jako funkcję, która pobiera dane wyjściowe warstwy splotowej i odwzorowuje je na inny zestaw wartości. Dzięki temu sieć może uczyć się bardziej złożonych wzorców w danych i lepiej je uogólniać.
Typowe funkcje aktywacji używane w CNN obejmują ReLu (Rectified Linear Unit), sigmoid i tanh. Każda funkcja aktywacji służy do innego celu i może być używana w różnych scenariuszach.
ReLu jest najczęściej używaną funkcją aktywacji w większości sieci splotowych. Jest to transformacja nieliniowa, która daje na wyjściu 0 dla wszystkich wartości ujemnych i taką samą wartość jak wartość wejściowa dla wszystkich wartości dodatnich. Pozwala to sieci na wchłanianie bardziej złożonych wzorców w danych.
Sigmoid to kolejna często używana funkcja aktywacji, która wysyła wartości od 0 do 1 dla dowolnego wejścia. Pomaga to sieci zrozumieć złożone relacje między danymi wejściowymi i wyjściowymi, ale jest bardziej kosztowne obliczeniowo niż ReLu.
Tanh jest najrzadziej używaną funkcją aktywacji, która wysyła wartości od -1 do 1 dla dowolnego wejścia.
Warstwa aktywacyjna jest istotnym elementem CNN, ponieważ zapobiega liniowości i wzmacnia nieliniowość na wyjściu. Wybór odpowiedniej funkcji aktywacji dla sieci jest niezbędny, ponieważ każda funkcja aktywacji służy do innego celu i może być używana w różnych scenariuszach. Wybór odpowiedniej funkcji aktywacji może prowadzić do lepszego działania struktury CNN .
4. W pełni połączona warstwa:
Ta warstwa łączy każdy neuron w jednej warstwie z każdym neuronem w następnej warstwie, tworząc w pełni połączoną sieć.
W pełni połączona warstwa w CNN to warstwa neuronów połączonych z każdym neuronem w poprzedniej warstwie w sieci. Kontrastuje to z warstwami splotowymi, w których neurony są połączone tylko z podzbiorem neuronów w poprzedniej warstwie w oparciu o określony wzór.
Łącząc każdy neuron w jednej warstwie z każdym neuronem w następnej warstwie, w pełni połączona warstwa umożliwia współdzielenie informacji z poprzedniej warstwy w całej sieci, zapewniając w ten sposób możliwość pełniejszego zrozumienia danych.
W pełni połączone warstwy w CNN są zwykle używane pod koniec architektury modelu CNN , po warstwach splotowych i warstwach puli, ponieważ pomagają zidentyfikować wzorce i korelacje, których warstwy splotowe mogły nie rozpoznać.
Dodatkowo, w pełni połączone warstwy są wykorzystywane do generowania nieliniowej granicy decyzyjnej, której można użyć do klasyfikacji. Podsumowując, w pełni połączone warstwy są integralną częścią każdego CNN i zapewniają potężne narzędzie do identyfikowania wzorców i korelacji w danych.
5. Warstwa wyjściowa:
Jest to ostatnia warstwa sieci, która tworzy wyjściowe etykiety lub wartości.
Warstwa wyjściowa CNN jest ostatnią warstwą w sieci i jest odpowiedzialna za produkcję danych wyjściowych. Jest to warstwa, która przejmuje cechy wyodrębnione z poprzednich warstw i łączy je w sposób, który pozwala na uzyskanie pożądanego wyniku.
W pełni połączona warstwa jest zwykle używana, gdy dane wyjściowe to pojedyncza wartość, na przykład problem klasyfikacji lub regresji. Pojedyncza warstwa neuronów jest zwykle używana, gdy wynikiem jest wektor, taki jak rozkład prawdopodobieństwa.
Funkcja aktywacji softmax jest używana, gdy dane wyjściowe są rozkładem prawdopodobieństwa, takim jak rozkład prawdopodobieństwa w klasach. Warstwa wyjściowa CNN jest również odpowiedzialna za wykonanie niezbędnych obliczeń w celu uzyskania pożądanego wyniku. Obejmuje to wykonanie niezbędnych liniowych lub nieliniowych transformacji danych wejściowych w celu uzyskania wymaganego wyjścia.
Wreszcie warstwa wyjściowa CNN może być również wykorzystana do wykonywania technik regularyzacji, takich jak przerywanie lub normalizacja wsadowa, w celu poprawy wydajności sieci.
Wniosek
Architektura CNN jest potężnym narzędziem do zadań związanych z przetwarzaniem obrazu i wideo. Jest to połączenie warstw konwolucyjnych, warstw puli i warstw w pełni połączonych. Pozwala na wyodrębnianie funkcji z obrazów, filmów i innych źródeł danych i może być używany do różnych zadań, takich jak rozpoznawanie obiektów, klasyfikacja obrazów i rozpoznawanie twarzy. Ogólnie rzecz biorąc, ten typ architektury jest bardzo skuteczny, gdy jest stosowany do odpowiednich funkcji i zestawów danych.
Zdobądź biegły zestaw umiejętności w ML i DL dzięki upGrad
Dzięki zaawansowanemu programowi certyfikatów upGrad w zakresie uczenia maszynowego i głębokiego uczenia oferowanemu przez IIIT-B możesz zdobyć biegłość w uczeniu maszynowym i głębokim uczeniu się. Program obejmuje podstawy ML i DL, w tym takie tematy, jak uczenie nadzorowane i nienadzorowane, regresja liniowa i logistyczna, konwolucyjne sieci neuronowe, uczenie się przez wzmacnianie i przetwarzanie języka naturalnego. Nauczysz się także budować i wdrażać modele ML i DL w Pythonie i TensorFlow oraz zdobędziesz praktyczne doświadczenie, pracując nad projektami w świecie rzeczywistym.
Ten kurs obejmuje również korzyści, takie jak:
- Mentoring i wskazówki ekspertów branżowych
- Pomoc w znalezieniu odpowiedniej pracy
- Zaawansowany certyfikat z IIIT Bangalore
Możesz również sprawdzić naszebezpłatne kursyoferowane przez upGrad w zakresie zarządzania, nauki o danych, uczenia maszynowego, marketingu cyfrowego i technologii.Wszystkie te kursy mają najwyższej klasy zasoby do nauki, cotygodniowe wykłady na żywo, zadania branżowe i certyfikat ukończenia kursu - wszystko bezpłatnie!
Jakich bibliotek w Pythonie można użyć w CNN?
Biblioteki w Pythonie, których można użyć w CNN, to TensorFlow, Keras, PyTorch, Caffe, Theano, Scikit-learn, MxNet, CNTK, OpenCV i SciPy. Biblioteki te można wykorzystać do uzyskania gotowych modułów do tworzenia aplikacji i łatwej implementacji algorytmów CNN.
Ile wymiarów jest w warstwach CNN?
Konwolucyjne sieci neuronowe zawierają neurony ułożone w 3 wymiarach: szerokość, wysokość i głębokość. Ta trójwymiarowa struktura neuronów jest obecna w warstwie splotu, która przechodzi przez proces obliczeniowy z danym wejściem, aby dostarczyć wynikowy wynik.
Czy mogę stworzyć CNN w R?
Tak, CNN można tworzyć zarówno w Pythonie, jak i R. Ponieważ R zapewnia wyjątkowo szczegółowe biblioteki, tworzenie konwolucyjnej sieci neuronowej za pomocą R jest całkiem łatwe.