Konwolucyjna sieć neuronowa, splotowa sieć neuronowa[1] (ang. Convolutional Neural Network, CNN) – rodzaj jednokierunkowej sieci neuronowej, która uczy się poprzez optymalizację filtrów (lub jądra). Ten typ sieci głębokiego uczenia został zastosowany do przetwarzania i tworzenia prognoz na podstawie wielu różnych typów danych, w tym tekstu, obrazów i dźwięku[2]. Konwolucyjne sieci neuronowe są de facto standardem w widzeniu komputerowym opartym na uczeniu głębokim[3] i przetwarzaniu obrazu, jednak wraz z popularyzacją nowych architektur jak transformer, proponowane są alternatywy[4][5].
Sieci konwolucyjne zostały zainspirowane procesami biologicznymi[6][7], ponieważ wzór połączeń między neuronami przypomina organizację kory wzrokowej. Pojedyncze neurony korowe reagują na bodźce tylko w ograniczonym obszarze pola widzenia, zwanym polem recepcyjnym. Pola recepcyjne różnych neuronów częściowo zachodzą na siebie, pokrywając całe pole widzenia[7].
W porównaniu z innymi algorytmami klasyfikacji obrazów, sieci CNN wykorzystują stosunkowo mało wstępnego przetwarzania. Oznacza to, że sieć uczy się optymalizować filtry (lub jądra) poprzez automatyczne uczenie się, podczas gdy w tradycyjnych algorytmach filtry te są opracowywane ręcznie. Upraszcza to i automatyzuje proces, zwiększając wydajność i skalowalność oraz eliminując wąskie gardła wynikające z ingerencji człowieka[8].

Konwolucyjna sieć neuronowa składa się z warstwy wejściowej, warstw ukrytych (środkowych) i warstwy wyjściowej. W CNN warstwy ukryte obejmują jedną lub więcej warstw wykonujących konwolucje. Zazwyczaj obejmuje to warstwę wykonującą iloczyn skalarny jądra z macierzą wejściową warstwy. Produktem tym jest zazwyczaj iloczyn Frobeniusa, a jego funkcją aktywacji jest z reguły funkcja ReLU. W miarę jak jądro splotu przesuwa się wzdłuż macierzy wejściowej dla danej warstwy, operacja splotu generuje mapę cech, która z kolei tworzy dane wejściowe kolejnej warstwy. Następnie kolejne warstwy, takie jak warstwy łączenia, warstwy połączeń każdy-z-każdym i warstwy normalizacyjne[9].
Główne elementy
[edytuj | edytuj kod]Architektura CNN składa się ze stosu odrębnych warstw, które przekształcają dane wejściowe w wyjściową (np. przechowującą wyniki zajęć) za pośrednictwem funkcji. Powszechnie stosuje się kilka różnych typów warstw. Poniżej omówiono je bardziej szczegółowo.
Warstwa konwolucyjna
[edytuj | edytuj kod]
Warstwa konwolucyjna stanowi podstawowy element sieci CNN. Parametry warstwy składają się z zestawu filtrów uczących się (lub jąder ), które mają małe pole wykonywania operacji ale są wykonywane na wszystkich danych wejściowych po kolei. Podczas przejścia do przodu każdy filtr jest spleciony na szerokości i wysokości objętości wejściowej, co powoduje obliczenie iloczynu skalarnego między wejściami filtra a wejściem i utworzenie dwuwymiarowej mapy aktywacji danego filtra. W rezultacie sieć uczy się filtrów, które aktywują się, gdy wykryje pewien konkretną cechę w pewnej pozycji przestrzennej w danych wejściowych[10].
Łączność lokalna
[edytuj | edytuj kod]
W przypadku danych wejściowych o dużym rozmiarze, takich jak obrazy, łączenie neuronów ze wszystkimi neuronami z poprzedniej warstwy jest niepraktyczne, ponieważ taka architektura sieci nie uwzględnia przestrzennej struktury danych. Sieci splotowe wykorzystują lokalną korelację przestrzenną, wymuszając rozrzedzenie pomiędzy neuronami sąsiadujących warstw: każdy neuron jest połączony tylko z małym obszarem danych wejściowych[11].
Warstwa łączenia (pooling)
[edytuj | edytuj kod]

Inną ważną koncepcją sieci CNN jest łączenie, które jest stosowane jako forma nieliniowego próbkowania w dół . Grupowanie umożliwia zmniejszenie próbkowania, ponieważ zmniejsza wymiary przestrzenne (wysokość i szerokość) map cech wejściowych, zachowując jednocześnie najważniejsze informacje. Istnieje kilka nieliniowych funkcji implementujących grupowanie, przy czym najczęściej stosowane są funkcje maksymalnego i średniego łączenia . Grupowanie polega na agregowaniu informacji z małych obszarów danych wejściowych, co powoduje tworzenie partycji mapy cech wejściowych, zwykle przy użyciu okna o stałym rozmiarze (np. 2x2) i zastosowaniu kroku (często 2) w celu przesunięcia okna w obrębie danych wejściowych[12].
Oprócz maksymalnego grupowania, jednostki grupujące mogą używać innych funkcji, takich jak grupowanie średnie lub grupowanie zgodne z normą ℓ 2 . Historycznie rzecz biorąc, średnie łączenie było często stosowane, ale ostatnio wyszło z użycia w porównaniu z maksymalnym łączeniem, które w praktyce ogólnie sprawdza się lepiej[13].
Warstwa ReLU
[edytuj | edytuj kod]ReLU jest skrótem od rektyfikowanej jednostki liniowej. Termin został zaproponowany przez Alstona Householdera w 1941 r.[14] i wykorzystany w CNN przez Kunihiko Fukushimę w 1969 r.[15]. ReLU stosuje funkcję aktywacji [16]. Skutecznie usuwa wartości ujemne z mapy aktywacji, ustawiając je na zero[17]. Wprowadza nieliniowość do funkcji decyzyjnej i całej sieci, nie wpływając przy tym na pola recepcyjne warstw konwolucyjnych. W 2011 roku Xavier Glorot, Antoine Bordes i Yoshua Bengio odkryli, że ReLU umożliwia lepsze trenowanie głębszych sieci[18] w porównaniu z powszechnie stosowanymi funkcjami aktywacji przed 2011 rokiem.
Warstwa połączeń każdy-z-każdym (fully connected)
[edytuj | edytuj kod]Po zastosowaniu kilku warstw konwolucyjnych i warstw łączenia, ostateczna klasyfikacja odbywa się poprzez warstwy połączeń każdy-z-każdym. Neurony w warstwie w pełni połączonej mają połączenia ze wszystkimi aktywacjami w warstwie poprzedniej, jak widać w klasycznych sztucznych sieciach neuronowych Ich aktywacje można zatem obliczyć jako transformację afiniczną, w której mnożenie macierzy następuje po przesunięciu odchylenia (dodanie wektorowe wyuczonego lub stałego członu odchylenia)[19][20].
Proces uczenia
[edytuj | edytuj kod]Uczenie CNN polega na adaptacji parametrów filtrów w warstwie konwolucyjnej jak i odpowiednim doborze wag w warstwie połączeń każdy-z-każdym. Z reguły używa się propagacji wstecznej do aktualizacji wartości sieci[21][22].
Przypisy
[edytuj | edytuj kod]- ↑ Aurélien Géron , Uczenie maszynowe z użyciem Scikit-Learn, Keras i TensorFlow, Krzysztof Sawka (tłum.), Gliwice: Helion, 2023, s. 458, ISBN 978-83-8322-423-7 [dostęp 2025-04-22] (pol.).
- ↑ Yann LeCun , Yoshua Bengio , Geoffrey Hinton , Deep learning, „Nature”, 521 (7553), 2015, s. 436–444, DOI: 10.1038/nature14539, ISSN 1476-4687 [dostęp 2025-04-07] (ang.).
- ↑ Y. LeCun i inni, Backpropagation Applied to Handwritten Zip Code Recognition, „Neural Computation”, 1 (4), 1989, s. 541–551, DOI: 10.1162/neco.1989.1.4.541, ISSN 0899-7667 [dostęp 2025-04-07] .
- ↑ Are Transformers replacing CNNs in Object Detection? — Picsellia [online], www.picsellia.com [dostęp 2025-04-08] .
- ↑ Chong Zhou , Chen Change Loy , Bo Dai , Interpret Vision Transformers as ConvNets with Dynamic Convolutions, arXiv, 19 września 2023, DOI: 10.48550/arXiv.2309.10713 [dostęp 2025-04-08] .
- ↑ Kunihiko Fukushima , Neocognitron, „Scholarpedia”, 2 (1), 2007, s. 1717, DOI: 10.4249/scholarpedia.1717, ISSN 1941-6016 [dostęp 2025-04-07] (ang.).
- ↑ a b D.H. Hubel , T.N. Wiesel , Receptive fields and functional architecture of monkey striate cortex, „The Journal of Physiology”, 195 (1), 1968, s. 215–243, DOI: 10.1113/jphysiol.1968.sp008455, ISSN 0022-3751, PMID: 4966457, PMCID: PMC1557912 [dostęp 2025-04-07] .
- ↑ Wenyi Lin , Kyle Hasenstab , Guilherme Moura Cunha , Armin Schwartzman , Comparison of handcrafted features and convolutional neural networks for liver MR image adequacy assessment, „Scientific Reports”, 10 (1), 2020, s. 20336, DOI: 10.1038/s41598-020-77264-y, ISSN 2045-2322 [dostęp 2025-04-08] (ang.).
- ↑ Ljubisa Stankovic , Danilo Mandic , Convolutional Neural Networks Demystified: A Matched Filtering Perspective Based Tutorial, arXiv, 22 marca 2022, DOI: 10.48550/arXiv.2108.11663 [dostęp 2025-04-07] .
- ↑ Konwolucyjne sieci neuronowe 1: konwolucja - manduk.ai [online], manduk.ai, 23 listopada 2019 [dostęp 2025-04-08] .
- ↑ Zewen Li , Wenjie Yang , Shouheng Peng , Fan Liu , A Survey of Convolutional Neural Networks: Analysis, Applications, and Prospects, arXiv, 1 kwietnia 2020, DOI: 10.48550/arXiv.2004.02806 [dostęp 2025-04-08] .
- ↑ Rajendran Nirthika , Siyamalan Manivannan , Amirthalingam Ramanan , Ruixuan Wang , Pooling in convolutional neural networks for medical image analysis: a survey and an empirical study, „Neural Computing & Applications”, 34 (7), 2022, s. 5321–5347, DOI: 10.1007/s00521-022-06953-8, ISSN 0941-0643, PMID: 35125669, PMCID: PMC8804673 [dostęp 2025-04-07] .
- ↑ Dominik Scherer , Andreas Müller , Sven Behnke , Evaluation of Pooling Operations in Convolutional Architectures for Object Recognition, Konstantinos Diamantaras, Wlodek Duch, Lazaros S. Iliadis (red.), Berlin, Heidelberg: Springer, 2010, s. 92–101, DOI: 10.1007/978-3-642-15825-4_10, ISBN 978-3-642-15825-4 [dostęp 2025-04-07] (ang.).
- ↑ Alston S. Householder. A theory of steady-state activity in nerve-fiber networks: I. Definitions and preliminary lemmas. „The Bulletin of Mathematical Biophysics”. 3 (2), s. 63–69, June 1941. DOI: 10.1007/BF02478220. ISSN 0007-4985. (ang.).
- ↑ K. Fukushima. Visual feature extraction by a multilayered network of analog threshold elements. „IEEE Transactions on Systems Science and Cybernetics”. 5 (4), s. 322–333, 1969. DOI: 10.1109/TSSC.1969.300225.
- ↑ Alex Krizhevsky. ImageNet classification with deep convolutional neural networks. „Communications of the ACM”. 60 (6), s. 84–90, 2017-05-24. DOI: 10.1145/3065386. ISSN 0001-0782. [zarchiwizowane z adresu].
- ↑ Vadim Romanuke. Appropriate number and allocation of ReLUs in convolutional neural networks. „Research Bulletin of NTUU "Kyiv Polytechnic Institute"”. 1 (1), s. 69–78, 2017. DOI: 10.20535/1810-0546.2017.1.88156.
- ↑ Imagenet classification with deep convolutional neural networks [online] [zarchiwizowane z adresu 2016-12-13] .
- ↑ EITCA Academy , What is the role of the fully connected layer in a CNN? [online], EITCA Academy, 13 sierpnia 2023 [dostęp 2025-04-08] (ang.).
- ↑ EITCA Academy , What is the role of the fully connected layer in a CNN? [online], EITCA Academy, 13 sierpnia 2023 [dostęp 2025-04-08] (ang.).
- ↑ Podręcznik: Sieć konwolucyjna CNN | eSezam [online], esezam.okno.pw.edu.pl [dostęp 2025-04-08] .
- ↑ Giuseppe Pio Cannata , Backpropagation in Fully Convolutional Networks (FCNs) [online], Towards Data Science, 3 lutego 2021 [dostęp 2025-04-08] (ang.).
Linki zewnętrzne
[edytuj | edytuj kod]- Konwolucyjne Sieci Neuronowe, prof. dr hab. inż. Grzegorz Dudek, Politechnika Częstochowska, w serwisie YouTube