Pobierz Uczenie głębokie - pełne opracowanie i więcej Notatki w PDF z Sztuczna inteligencja tylko na Docsity!
Uczenie głębokie
Wykład nr 1/ 2 / 3 Data: 12 / 1 0/
1 PERCEPTRON
Zwany progową jednostką logiczną lub liniową jednostką progową. Składa się
z we/wy, połączeń z przyporządkowanymi wagami. Perceptron wyznacza
ważoną sumę sygnałów i podaje wartość na funkcję aktywacyjną.
To na wyjściu dostajemy y który podaje się do funkcji aktywacji.
1.1 BIAS – WE OBCIĄŻAJĄCE – PO CO?
Bias to dodatkowe wejście, jego zadaniem jest wysyłanie na wyjście wartości
1. Pomaga w skalowaniu wag, modelowaniu nieliniowości, różnicowaniu
neuronów, dopasowywaniu do danych treningowych.
1.2 FUNKCJE AKTYWACJI
1.3 FUNKCJE STRAT - LOSS FUNCTIONS
Obliczanie różnicy między wyjściem (predykcją) a wartością ‘poprawną/zadaną’. Jest wiele rodzaji f. w zależności od
zadania.
o MSE(Mean Squared Error)
o MAE(Mean Absolute Error)
o Hubber loss
o Binary cross-entropy
o Categorical cross-entropy
o KL Divergence
o Discriminator loss
o Minmax GAN loss
o Focal loss
o Triplet loss
FFNN - Feedforward Neural Network (sieć neuronowa jednokierunkowa) to rodzaj sztucznej sieci neuronowej, w
której dane przemieszczają się w jednym kierunku, tj. od warstwy wejściowej przez warstwy ukryte aż do warstwy
wyjściowej. Jest to najprostsza i najbardziej podstawowa architektura sieci neuronowej.
Uczenie głębokie Wykład nr 1 - 3
2 KONWOLUCYJNE SIECI NEURONOWE
Konwolucyjne sieci neuronowe (Convolutional Neural Networks, CNNs) to rodzaj zaawansowanych sztucznych sieci
neuronowych specjalnie dostosowanych do przetwarzania danych w przestrzeniach wielowymiarowych, takich jak
obrazy.
Główne cechy konwolucyjnych sieci neuronowych to:
Operacja Konwolucji: Wprowadzenie operacji konwolucji umożliwia efektywne wykrywanie lokalnych cech w
danych przestrzennych. Filtry (kernels) przesuwają się po danych wejściowych, wyodrębniając cechy, takie jak
krawędzie, tekstury czy inne ważne detale.
Uczenie Hierarchii Cech: Konwolucyjne sieci neuronowe są zdolne do hierarchicznego uczenia się cech od prostych
do bardziej złożonych. Pierwsze warstwy konwolucyjne uczą się niskopoziomowych detali, a następne warstwy
konwolucyjne integrują te detale w bardziej skomplikowane struktury.
2.1 KONWOLUCJA
Operacja konwolucji jest podstawowym elementem przetwarzania
obrazów w sieciach neuronowych. Wykorzystuje filtr (tzw. kernel),
który jest przesuwany po wejściowej macierzy (np. obrazie) w celu
wyodrębnienia pewnych cech. Wynik konwolucji to mapa cech, w
której każdy piksel reprezentuje ważoną sumę pikseli z określonego
obszaru wejściowego. Wartości wagi (parametry) w filtrze są
uczonymi parametrami, które dostosowują się w trakcie treningu,
aby wykrywać konkretne cechy.
2.1.1 PARAMETRY WARSTWY KONWOLUCYJNEJ
Filtry (Kernels): Filtry (lub kernale) są małymi macierzami wag,
które przesuwane są po wejściowej macierzy w celu ekstrakcji cech. Każdy filtr specjalizuje się w wykrywaniu pewnych
wzorców w danych, takich jak krawędzie, tekstury, czy inne lokalne cechy.
Rozmiar Filtra (Kernel Size): Rozmiar filtra określa wymiary macierzy wag filtra. Popularne rozmiary to 3x3, 5x5, a
nawet 7x7. Większe filtry mogą pomóc w wykrywaniu bardziej złożonych cech, ale również zwiększają liczbę
parametrów.
Strides (Kroki): Parametr strides określa, o ile pikseli przesuwany jest filtr (kernel) podczas przesuwania po danej osi.
Większe wartości strides powodują zmniejszenie rozmiaru wynikowej mapy cech, co może pomóc w zmniejszeniu
wymiarów danych i przyspieszeniu obliczeń.
Padding: Padding to dodawanie pikseli zerowych wokół wejściowej macierzy przed zastosowaniem filtra. Pozwala to
zachować rozmiar wejściowy po operacji konwolucji, co jest istotne, aby nie utracić informacji z krawędzi obrazu.
Funkcja Aktywacji: Po zastosowaniu operacji konwolucji, wynik jest przekazywany przez funkcję aktywacji,
najczęściej ReLU (Rectified Linear Unit), która wprowadza nieliniowość do modelu.
2.1.2 CO Z WIELOMA KANAŁAMI – RGB
W takim przypadku używane są tzw. konwolucje wielokanałowe lub konwolucje głębokie. W przypadku konwolucji
wielokanałowej, każdy filtr (kernel) ma własne wagi dla
każdego kanału wejściowego. Te wagi są używane do
wykonania konwolucji z odpowiednim kanałem, a wyniki są
sumowane, aby uzyskać pojedynczą wartość na mapie cech
wynikowej. Przykładowo, jeśli mamy filtr 3x3 i trzy kanały
wejściowe (RGB), to dla każdego punktu mapy cech wynikowej
wykonywane są trzy operacje konwolucji, a ich wyniki są
sumowane. Proces ten jest powtarzany dla każdego punktu na
mapie cech.
Uczenie głębokie
Wykład nr 4 Data: 05 / 1 0/
1 LENET- 5 1989
LeNet-5 to architektura, którą Yann LeCun i in. zaprezentowali w 1989 roku [3]. Była jedną z pierwszych CNN. Twórcy wykorzystywali stworzony program do rozpoznawania odręcznie zapisanych kodów pocztowych na listach. Dokładność klasyfikacji wynosiła 90%, co pokazywało, że SSN mogą mieć praktyczne zastosowania. Model składa się z siedmiu warstw, nie licząc warstwy wejścia. Wszystkie warstwy zawierają parametry, które można trenować (wagi). Wejście to obraz o wymiarach 32 x 32 piksele [13]. LeNet-5 definiuje podstawy CNN, jednak w momencie pojawienia się na rynku nie była popularna z powodu braku odpowiedniego sprzętu, a zwłaszcza kart graficznych.
1.1 ARCHITECTURE
The LeNet-5 CNN architecture has seven layers. Three convolutional layers, two subsampling layers, and two fully linked layers make up the layer composition. 1.1.1 FIRST LAYER A 32x32 grayscale image serves as the input for LeNet-5 and is processed by the first convolutional layer comprising six feature maps or filters with a stride of one. From 32x32x1 to 28x28x6, the image’s dimensions shift. 1.1.2 SECOND LAYER Then, using a filter size of 22 and a stride of 2, the LeNet-5 adds an average pooling layer or sub-sampling layer. 14x14x6 will be the final image’s reduced size. 1.1.3 THIRD LAYER A second convolutional layer with 16 feature maps of size 55 and a stride of 1 is then present. Only 10 of the 16 feature maps in this layer are linked to the six feature maps in the layer below, as can be seen in the illustration below (actually on the right 😉). The primary goal is to disrupt the network’s symmetry while maintaining a manageable number of connections. Because of this, there are 1516 training parameters instead of 2400 in these layers, and similarly, there are 151600 connections instead of 240000. First layer Second layer Third layer 1.1.4 FOURTH LAYER With a filter size of 22 and a stride of 2, the fourth layer (S4) is once more an average pooling layer. The output will be decreased to 5x5x16 because this layer is identical to the second layer (S2) but has 16 feature maps. 1.1.5 FIFTH LAYER With 120 feature maps, each measuring 1 x 1, the fifth layer (C5) is a fully connected convolutional layer. All 400 nodes (5x5x16) in layer four, S4, are connected to each of the 120 units in C5’s 120 units. 1.1.6 SIXTH LAYER A fully connected layer (F6) with 84 units makes up the sixth layer.
Fourth layer Fifth layer Sixth layer 1.1.7 OUTPUT LAYER The SoftMax output layer, which has 10 potential values and corresponds to the digits 0 to 9, is the last layer. Output layer LeNET-5 summary 2 ALEXNET - 2012 AlexNet to model zaprezentowany przez Alexa Krizhevskiego i in. w 2012 roku [14]. Architektura ta konkurowała w zawodach ImageNet Large Scale Visual Recognition Challenge (ILSVRC) w tym samym roku, wygrywając je [4]. Współczynnik błędów top- 5 modelu wynosił 15,3% i był niższy o 10,8% niż kolejny wynik w konkursie. AlexNet składa się z pięciu warstw splotowych, z czego po niektórych znajdują się warstwy łączące, oraz z trzech w pełni połączonych warstw [14]. Zastosowanie większej liczby warstw było kluczowe dla wydajność, ale potrzebowało wiele zasobów. Było to jednak możliwe dzięki wykorzystaniu kart graficznych w procesie uczenia sieci. AlexNet consists of 5 convolution layers, 3 max-pooling layers, 2 Normalized layers, 2 fully connected layers and 1 SoftMax layer. Each convolution layer consists of a convolution filter and a non-linear activation function called “ReLU”. The pooling layers are used to perform the max-pooling function and the input size is fixed due to the presence of fully connected layers. The input size is mentioned at most of the places as 224x224x3 but due to some padding which happens it works out to be 227x227x3. Above all this AlexNet has over 60 million parameters.
3 ZFNET ZFNet was a slight improvement over AlexNet .The 2013 ILSVRC was won by ZFNet.It actually visualized how each layer of AlexNet performs and what parameters can be tuned to achieve greater accuracy. 3.1 SOME KEY FEATURES OF ZFNET ARCHITECTURE · Convolutional layers: In these layers convolutional filters are applied to extract important features,ZFNet consists of multiple convolutional layers to extract important features. · MaxPooling Layers: MaxPooling Layers are used to downsample the spatial dimensions of feature map in.It consist of aggregation function known as maxima. · Rectified Linear Unit: Relu is used after each convolution layer to introduce non linearity into the model which is crucial for learning complex patterns. It rectifies the feature map ensuring the feature maps are always positive. · Fully Connected Layers: In the latter part of ZFNet architecture fully connected dense layers are used to extract patterns from features .The activation function used in the neurons is relu. · SoftMax Activation: SoftMax activation is used in the last layer to obtain the probabilities of the image belonging to the 1000 classes. · Deconvolution Layers: ZFNet introduced a visualization technique involving deconvolutional layers(Transposed Layers) .These layers provide insights into what network has learned by projecting feature activations back into input pixel space. Comment from the original paper: Architecture of our 8-layer convnet model. A 224 by 224 crop of an image (with 3 color planes) is presented as the input. This is convolved with 96 different 1st layer filters (red), each of size 7 by 7, using a stride of 2 in both x and y. The resulting feature maps are then: (i) passed through a rectified linear function (not shown), (ii) pooled (max within 3x3 regions, using stride 2), and (iii) contrast normalized across feature maps to give 96 different 55 by 55 element feature maps. Similar operations are repeated in layers 2, 3, 4, 5. The last two layers are fully connected, taking features from the top convolutional layer as input in vector form (6·6· = 9216 dimensions). The final layer is a C-way softmax function, C being the number of classes. All filters and feature maps are square in shape. 3.2 ARCHITECTURE AND LAYERS
- Input The input image is of size 224x224x3.
- First Layer In the first layer 96 filters of size 7x7 and stride of 2 are used to convolve followed by relu activation. The output feature map is then passed through Max Pooling Layer with pool kernel of 3x3 and stride of 2 .Then the features are contrast normalized.
- Second layer In the second layer 256 filters are applied of size 3x3 with stride of 2. Again the obtained feature map is passed through MaxPooling layer with pooling kernel of 3x3 with stride of 2.After that features are contrast normalized.
- Third layer and Fourth Layer The third and fourth layers are identical with 384 kernels of size 3x3 and padding is kept as same and stride is set to 1.
- Fifth Layer In the fifth layer 256 filters of size 3x3 are applied with stride 1. After then the MaxPooling kernel of size 3x3 is applied with stride of 2 .Then the features are contrast normalized.
- Sixth Layer and Seventh Layer The sixth and seventh layers are fully connected dense layers with 4096 neurons each.
- Eighth Layer The last layer is dense layer with 1000 neurons(number of classes). 3.3 DIFFERENCE BETWEEN ALEXNET AND ZFNET
- Architecture AlexNet consists of eight layers, five convolutional layers followed by three fully connected layers. ZFNet retained basic architecture of AlexNet but made some architectural adjustments,particularly in the first few layers.
- Filters AlexNet used 11x11,5x5 and 3x3 filter sizes while ZFNet used 7x7 filter size in the first layer only and 3x3 in the latter layers only.
- Strides There is stride of 4 in the first layer of AlexNet while in ZFNet there is stride of 2 used.
- Normalization AlexNet used Local Response Normalization while ZFNet used Local Contrast Normalization 4 VGGNET It is a typical deep Convolutional Neural Network (CNN) design with numerous layers, and the abbreviation VGG stands for Visual Geometry Group. The term “deep” describes the number of layers, with VGG-16 or VGG-19 having 16 or 19 convolutional layers, respectively. Innovative object identification models are built using the VGG architecture. The VGGNet, created as a deep neural network, outperforms benchmarks on a variety of tasks and datasets outside of ImageNet. It also remains one of the most often used image recognition architectures today. 4.1 VGG- 16 The convolutional neural network model called the VGG model, or VGGNet, that supports 16 layers is also known as VGG16. It was developed by A. Zisserman and K. Simonyan from the University of Oxford. In ImageNet, the VGG16 model achieves top-5 test accuracy of about 92.7 per cent. A dataset called ImageNet has over 14 million photos that fall into almost 1000 types. It was also among the most well-liked models submitted at ILSVRC-2014. It significantly outperforms AlexNet by substituting several 3x3 kernel-sized filters for the huge kernel-sized filters. Nvidia Titan Black GPUs were used to train the VGG16 model over many weeks. The VGGNet-16 has 16 layers and can classify photos into 1000 different object categories, including keyboard, animals, pencil, mouse, etc., as discussed above. The model also accepts images with a resolution of 224 by 224. 4.2 VGG- 19 The VGG19 model (also known as VGGNet-19) has the same basic idea as the VGG16 model, with the exception that it supports 19 layers. The numbers “16” and “19” refer to the model’s weight layers (convolutional layers). In comparison to VGG16, VGG contains three extra convolutional layers. In the final section of this essay, we’ll go into greater detail on the features of the VGG 16 and VGG19 networks. 4.3 VGG-NET ARCHITECTURE Very tiny convolutional filters are used in the construction of the VGG network. Thirteen convolutional layers and three fully connected layers make up the VGG-16.
- Inputs : The VGGNet accepts 224224-pixel images as input. To maintain a consistent input size for the ImageNet competition, the model’s developers chopped out the central 224224 patches in each image.
- Convolutional Layers : VGG’s convolutional layers use the smallest feasible receptive field, or 33, to record left-to-right and up-to-down movement. Additionally, 11 convolution filters are used to transform the input linearly. The next component is a ReLU unit, a significant advancement from AlexNet that shortens training time. Rectified linear unit activation function, or ReLU, is a piecewise linear function that, if the input is positive, outputs the input; otherwise, the
- Redukcja wymiarowości przestrzennej : Stosowanie podwójnej konwolucji może pomóc w efektywniejszym zarządzaniu rozmiarem danych poprzez redukcję wymiarowości przestrzennej. To może przyczynić się do zmniejszenia ilości parametrów modelu i poprawy jego wydajności obliczeniowej.
- Lepsza reprezentacja kontekstu : Poprzez stosowanie dwóch warstw konwolucyjnych, model może rozwijać bardziej globalne zrozumienie kontekstu, co może być istotne w zadaniach, gdzie istnieje potrzeba analizy szerszego obszaru danych. Podsumowując, stosowanie podwójnej konwolucji jest jednym ze sposobów na zwiększenie zdolności modelu do efektywnego ekstrahowania cech z danych wejściowych, co może prowadzić do lepszych wyników w różnych zadaniach, takich jak rozpoznawanie obrazów czy segmentacja obrazu. Jednakże, zastosowanie tej techniki może być uzależnione od specyfiki problemu i danych, dlatego zawsze warto eksperymentować i dostosowywać architekturę sieci do konkretnej aplikacji. 5.2 PO CO CONV 5 X 5 VS 3 X 3 - STACKING CONVOLUTIONS VERTICALLY We can replace 5x5 or 7x7 convolution kernels with multiple 3x convolutions on top of one another. Stacking smaller convolutional layers is lighter, than having bigger ones. It also tends to improve the result , with the simple intuition that it results in more layers and deeper networks_. (Możemy zastąpić jądra konwolucji 5x5 lub 7x7 wieloma konwolucjami 3x3 jeden na drugim. Układanie mniejszych warstw konwolucyjnych jest lżejsze niż posiadanie większych. Ma to również tendencję do poprawiania wyników, z prostą intuicją, że skutkuje to większą liczbą warstw i głębszymi sieciami.)_ Zastąpienie jądra konwolucyjnego o rozmiarze 5x5 dwoma jądrami o rozmiarze 3x3 to technika znana jako "faktoryzacja" lub "rozkład jądra konwolucyjnego". Istnieje kilka powodów, dla których stosuje się to podejście: Redukcja Parametrów: Jądro 5x5 ma 5 * 5 = 25 parametrów, podczas gdy dwa jądra 3x3 mają 2 * (3 * 3) = 18 parametrów. Użycie dwóch jąder 3x3 redukuje liczbę parametrów, co może być korzystne pod względem efektywności modelu, zwłaszcza gdy zasoby pamięci i obliczeniowe są ograniczone. Efektywność Obliczeniowa: Koszt obliczeniowy operacji konwolucji często jest proporcjonalny do kwadratu rozmiaru jądra. Użycie mniejszych jąder pozwala na bardziej efektywne obliczenia. Dwa kolejne jądra 3x3 wymagają mniejszej liczby obliczeń niż pojedyncza konwolucja 5x5. Nieliniowość: Dodanie nieliniowych funkcji aktywacji pomiędzy dwoma jądrami 3x3 pozwala sieci na naukę bardziej złożonych i hierarchicznych cech. Każda konwolucja 3x3 wprowadza nieliniowości, co może zwiększyć pojemność reprezentacyjną modelu. Nauka Hierarchicznych Cech: Dwa kolejne jądra 3x3 pozwalają na naukę hierarchicznych cech. Pierwsze jądro 3x3 uchwytuje lokalne wzorce, a drugie jądro 3x3 uchwytuje wzorce z wyjść pierwszego jądra. To pomaga sieci w nauce bardziej skomplikowanych i abstrakcyjnych cech. Efektywność Obliczeń Równoległych: Mniejsze konwolucje są bardziej równoległe niż większe. Wiele nowoczesnych architektur sprzętowych może efektywniej wykorzystać przetwarzanie równoległe przy mniejszych operacjach konwolucyjnych. Udział Wspólny Wagi: Użycie dwóch jąder 3x3 pozwala na współdzielenie wag między warstwami. To może pomóc w nauce bardziej zwięzłych reprezentacji i poprawić ogólną generalizację. Elastyczność: Użycie dwóch jąder 3x3 daje większą elastyczność w projektowaniu architektury sieci. Możesz łatwiej dostosować głębokość i strukturę sieci. Podsumowując, zastąpienie jądra konwolucyjnego o rozmiarze 5x5 dwoma jądrami 3x3 to strategia mająca na celu redukcję liczby parametrów, poprawę efektywności obliczeniowej i zwiększenie zdolności sieci do nauki hierarchicznych cech w bardziej elastyczny sposób. Ta technika została szeroko przyjęta w architekturach konwolucyjnych sieci neuronowych (CNN) do zadań rozpoznawania obrazów. 5.3 PO CO KONWOLUCJA 1 X1? To recap, 1X1 Convolution is effectively used for: o Dimensionality Reduction/Augmentation o Reduce computational load by reducing parameter map o Add additional non-linearity to the network
o Create deeper network through “Bottle-Neck” layer o Create smaller CNN network which retains higher degree of accuracy Konwolucja 1x1, znana również jako "pointwise convolution", to rodzaj konwolucji, w której filtr ma rozmiar 1x1. Choć może to wydawać się nietypowe (ponieważ konwolucje zazwyczaj używają większych filtrów), konwolucja 1x1 jest użyteczna w kilku kontekstach i może przynieść kilka korzyści, takich jak:
- Redukcja wymiarowości: Konwolucje 1x1 są często używane do redukcji liczby kanałów (wymiary głębokości) danych przestrzennych. Mogą one działać jak warstwy przekształcające, które zmniejszają liczbę kanałów danych bez zmiany wymiarów przestrzennych. To jest szczególnie przydatne w celu ograniczenia liczby parametrów modelu i zmniejszenia obciążenia obliczeniowego.
- Mieszanie informacji kanałów: Konwolucje 1x1 pozwalają na mieszanie informacji między różnymi kanałami danych. Działa to jak rodzaj kompresji cech, gdzie korelacje między kanałami są wykorzystywane do generowania bardziej złożonych reprezentacji cech.
- Uczenie nieliniowości: Nawet jeśli sama konwolucja 1x1 jest liniowa, po dodaniu nieliniowości (na przykład poprzez funkcję aktywacji, taką jak ReLU) może ona przyczynić się do wprowadzenia nieliniowości do modelu.
- Poprawa efektywności obliczeniowej: Konwolucje 1x1 są efektywne obliczeniowo, zwłaszcza gdy są stosowane w celu redukcji wymiarów głębokości, co może pomóc w zmniejszeniu ilości parametrów do nauczenia.
- Wykorzystanie w architekturze sieci głębokich: Konwolucje 1x1 są powszechnie stosowane w architekturach sieci głębokich, takich jak MobileNet, aby uzyskać równowagę między wydajnością obliczeniową a dokładnością modelu. Podsumowując, konwolucje 1x1 są używane w różnych kontekstach w celu manipulowania przestrzenią kanałów danych, redukcji wymiarowości, a także mieszania informacji między kanałami. To narzędzie może pomóc w poprawie wydajności modeli, zwłaszcza w przypadku architektur sieci głębokich i w zastosowaniach, gdzie ograniczenie liczby parametrów jest istotne. 5.4 FLATTEN A GLOBAL AVERAGE POOLING Zarówno Flatten, jak i Global Average Pooling są operacjami używanymi w kontekście przetwarzania obrazów w sieciach neuronowych, ale różnią się one sposobem, w jaki przekształcają dane. Flatten:
- Flatten jest operacją, która przekształca tensor o dowolnym kształcie do jednowymiarowego wektora.
- W przypadku obrazów, Flatten zamienia tensor obrazu, który może mieć wymiary (wysokość, szerokość, liczba kanałów), na jednowymiarowy wektor, eliminując strukturę przestrzenną.
- W efekcie każdy punkt obrazu (piksel) jest traktowany jako niezależna zmienna wejściowa w warstwach fully connected, co może generować dużą liczbę parametrów. Global Average Pooling:
- Global Average Pooling oblicza średnią wartość dla każdego kanału na przestrzeni całego obrazu.
- W kontekście obrazów, zamiast uzyskiwania jednowymiarowego wektora, dla każdego kanału oblicza się średnią wartość na całej przestrzeni obrazu.
- Wynikiem jest jeden wektor średnich wartości dla każdego kanału, co prowadzi do znacznie mniejszej liczby parametrów w warstwach fully connected niż w przypadku Flatten.
- Global Average Pooling wprowadza pewną lokalność, ale jednocześnie jest bardziej odporny na przesunięcia w danych wejściowych niż Flatten. W skrócie, główna różnica między Flatten a Global Average Pooling polega na tym, w jaki sposób przekształcają tensor obrazu. Flatten zamienia go na jednowymiarowy wektor, podczas gdy Global Average Pooling oblicza średnią wartość na przestrzeni całego obrazu dla każdego kanału. Global Average Pooling często wykorzystywane jest do redukcji liczby parametrów, zmniejszenia skłonności do overfittingu i uzyskania lepszej inwariantności translacyjnej w sieciach neuronowych przetwarzających obrazy. 6 GOOGLENET/INCEPTION GoogLeNet to 22-warstwowa architektura, znana także pod nazwą Inception v1. GoogLeNet zostało zaprezentowana w 2014 roku przez firmę Google [15]. W tym samym roku zwyciężyła konkurs ImageNet [4] z poziomem błędów wynoszącym 6,7%. Największą nowością zaprezentowaną wraz z tą architekturą były moduły incepcji. Moduły te polegają na równoległym działaniu warstw konwolucyjnych, każda z różną dokładnością działania (różne wielkości filtrów). Takie rozłożenie warstw ma pomagać w klasyfikacji obiektów o różnych skalach. Wersja naiwna takiego modułu wykonuje splot na wejściu za pomocą 3 różnych rozmiarów filtrów (1x1, 3x3, 5x5). Dodatkowo wykonywany jest proces maksymalnego łączenia (ang. max pooling). Następnie wyjścia są łączone i wysyłane dalej. W celu ograniczenia zapotrzebowania na zasoby twórcy zaproponowali także wersję modułu incepcji z
Strategie: Inicjalizacja wag : Wybór odpowiednich początkowych wartości wag może pomóc w łagodzeniu problemu zanikającego gradientu. Inicjalizacje, takie jak inicjalizacja He czy Xavier, są projektowane w taki sposób, aby zrównoważyć wprowadzane sygnały przez kolejne warstwy. Normalizacja warstw: Warstwy normalizujące, takie jak Batch Normalization (BN), pomagają w utrzymaniu stabilnych rozkładów aktywacji poprzez normalizację ich wartości. To może pomóc w redukcji zjawiska zanikającego gradientu. Używanie nieliniowości aktywacji z umiarkowanym nachyleniem: Nieliniowości aktywacji, takie jak ReLU , są popularne ze względu na ich efektywność, ale mogą przyczyniać się do problemu zanikającego gradientu. Używanie nieliniowości z umiarkowanym nachyleniem, takich jak Leaky ReLU czy Parametric ReLU, może pomóc w łagodzeniu tego problemu. Użycie odpowiednich funkcji kosztu: Wybór odpowiedniej funkcji kosztu może wpłynąć na to, jak gradienty są propagowane przez sieć. W niektórych przypadkach, na przykład w zadaniach generowania sekwencji, używanie funkcji kosztu, która jest bardziej odporna na zanikający gradient, może być korzystne. 7.1 VGP A MODUL INCEPTION I AUXILIARY Klasyfikatory pomocnicze to rodzaj komponentu architektonicznego, który ma na celu poprawę konwergencji bardzo głębokich sieci. Są to głowice klasyfikatorów, które dołączamy do warstw przed końcem sieci. Motywacją jest przeniesienie użytecznych gradientów do niższych warstw, aby uczynić je natychmiast użytecznymi i poprawić zbieżność podczas treningu poprzez zwalczanie problemu zanikającego gradientu. Są one szczególnie wykorzystywane w rodzinie konwolucyjnych sieci neuronowych Inception. W architekturze Inception, szczególnie w oryginalnej wersji GoogLeNet, auxiliary classifiers (pomocnicze klasyfikatory) to dodatkowe gałęzie wewnątrz modułów Inception, które są używane do generowania dodatkowych sygnałów gradientowych podczas wstecznej propagacji. Te pomocnicze klasyfikatory są dodane, aby pomóc w zniwelowaniu problemu zanikającego gradientu i przyspieszyć proces uczenia się głębokich sieci. Te pomocnicze klasyfikatory są umieszczone przed głównym klasyfikatorem (np. przed warstwą softmax) i mają na celu dostarczenie dodatkowego sygnału do wstecznej propagacji. Pomagają one w zapewnieniu, że gradienty przekazywane z warstwy klasyfikacji do warstw wcześniejszych są bardziej stabilne i mają większą szansę dotarcia do warstw wejściowych. Jest to szczególnie ważne w głębokich sieciach, gdzie problem zanikającego gradientu może być bardziej widoczny. 8 INCEPTION-V3 (2015) Inception-v3, wprowadzona przez Google w 2015 roku, to jedna z kolejnych iteracji architektury Inception, rozwinięcie wcześniejszych wersji takich jak Inception-v1 (GoogLeNet) i Inception-v2 (Inception v2, Inception v3). Inception-v3 ma za zadanie poprawienie dokładności klasyfikacji i ogólnej efektywności modelu w porównaniu do wcześniejszych wersji. 8.1 ARCHITEKTURA INCEPTION-V3:
- Bloki A: o Bloki A są jednymi z podstawowych bloków budujących sieć Inception-v3. o Zawierają różne rozmiary filtrów konwolucyjnych (3x3, 5x5), operacje pooling oraz konwolucje 1x1. o Ich celem jest ekstrakcja różnorodnych cech na różnych skalach przestrzennych.
- Bloki B: o Bloki B również zawierają różne rozmiary filtrów konwolucyjnych, operacje pooling oraz konwolucje 1x1. o Posiadają dodatkowe operacje konwolucji separowalnej przestrzennie (depthwise separable convolution), co ma na celu redukcję liczby parametrów i efektywność obliczeniową.
- Bloki C: o Bloki C kontynuują trend stosowania różnych rozmiarów filtrów konwolucyjnych, konwolucji separowalnych przestrzennie i poolingów. o Mają za zadanie dalsze zwiększanie reprezentacyjnej mocy sieci.
Moduł A Moduł B Moduł C
Uczenie głębokie
Wykład nr 5 Data: 05 / 1 0/
1 RESNET
Sieci rezydualne (ResNet) to rodzaj architektury głębokich sieci neuronowych, które zostały wprowadzone przez
Microsoft Research w 2015 roku. ResNet zaproponowano jako rozwiązanie problemu zanikającego gradientu w bardzo
głębokich sieciach neuronowych, co pozwala na skuteczne uczenie się modeli o setkach lub nawet tysiącach warstw.
1.1 ARCHITEKTURA RESNET
Sieci rezydualne (ResNet) to rodzaj architektury głębokich sieci neuronowych, które zostały wprowadzone przez
Microsoft Research w 2015 roku. ResNet zaproponowano jako rozwiązanie problemu zanikającego gradientu w bardzo
głębokich sieciach neuronowych, co pozwala na skuteczne uczenie się modeli o setkach lub nawet tysiącach warstw.
1.2 KLUCZOWE CECHY ARCHITEKTURY RESNET:
- Blok rezydualny (Residual Block):
o Centralną ideą ResNet jest wprowadzenie bloków rezydualnych, które składają się z resztkowego
połączenia (skip connection) pomiędzy warstwami.
o Resztkowe połączenie omija jedną lub więcej warstw, przekazując dane bezpośrednio z wejścia do wyjścia
bloku.
o Matematycznie można to zapisać jakoF(x)+x, gdzie F(x) to transformacja wykonana przez warstwy
wewnątrz bloku, a x to wejście.
o Rozróżnia się dwa rodzaje blokó rezydualnych: blok identity oraz blok convolutional – w bloku
konwolucyjnym w połączeniu shortcut stosuje się dodatkową konwolucję żeby dopasować liczbę map cech
między kolejną sekcją (patrz ta tabela na dole)
o Wewnątrz bloków rezydualnych często stosuje się konwolucje 1x1, które pełnią rolę redukcji
wymiarowości i zmniejszają liczność parametrów.
o W blokach rezydualnych często używane są konwolucje 3x3, które pomagają w ekstrakcji cech na różnych
skalach przestrzennych.
- Batch Normalization i ReLU:
o Stosuje się normalizację batch oraz nieliniowość ReLU w każdej warstwie, co pomaga w przyspieszeniu
uczenia się oraz stabilizacji procesu treningowego.
o Resztkowe połączenia wzdłuż ścieżki głównej:
o Resztkowe połączenia są dodawane do ścieżki głównej (bez żadnej transformacji) w blokach rezydualnych.
- Wersje z projekcją (Shortcut Projection):
o W przypadku, gdy wymiary wejścia są różne od wymiarów wyjścia, stosuje się warstwę konwolucji 1x
jako projekcję, aby dostosować wymiary wejścia do wymiarów wyjścia.
1.3 BOTTLENECK LAYER, ROZWIĄZANIE DLA VGP, IDENTITY FUNCTION
The idea behind the ResNet architecture is that we should at least be able to train a deeper neural network by copying
the layers of a shallow neural network (e.g. a neural network with five layers) and adding layers into it that learn
the identity function (i.e. layers that don’t change the output called identity mapping). The issue is that making the layer
learn the identity function is difficult because most weights are initialized
around zero, or they tend toward zero with techniques such as weight decay/l
regularization. Instead of trying to make the layer learn the identity
function , the idea is to make the input of the previous layer stay the same
by default , and we only learn what is required to change. Therefore, each
function won’t have to learn a lot and will basically be the identity function.
Figure 3. Residual block In figure 3, F(x) represents what is needed to
change about x, which is the input. As we said earlier, weights tend to be around zero so F(x) + x just become the
identity function!
Adding skip connection creates another issue, after each convolution of stride 2, the output is half the size of what it
was previously, and at the same time the number of filters in the next convolutions is twice as big as the previous ones.
So how do we deal with this issue and make the identity function work? Three ideas are explored to solve this issue.
One is adding zero padding, the second one is to add a 1x1 convolution to those specific connections (the dotted
ones), and the last one is to add a 1x1 convolution to every connection. The more popular idea is the second one as the
third one wasn’t improving a lot compared to the second option and added more parameters.
1.3.1 BOTTLENECK LAYER
As the neural networks get deeper, it becomes computationally
more expensive. To fix this issue, they introduced a “bottleneck
block.” It has three layers, two layers with a 1x1 convolution,
and a third layer with a 3x3 convolution.
The first 1x1 layer is responsible for reducing the dimensions
and the last one is responsible for restoring the dimensions,
leaving the 3x3 layer with smaller input/output dimensions and
reducing its complexity. Adding 1x1 layers isn’t an issue as they
are much lower computationally intensive than a 3x3 layer.
1.3.2 IDENTITY BLOCK
The identity block is the standard block used in ResNets and corresponds to the case where the input activation (say
a[l]) has the same dimension as the output activation (say a[l+2]). Below is an example of identity block where the upper
path is the “shortcut path” and the lower path is the “main path”.
1.3.3 CONVOLUTIONAL BLOCK
When the input and output dimensions don’t match up, we add a convolutional layer in the shortcut path. The
arrangement is called convolutional block.
Jak wspomniano wcześniej, Inception-ResNet, podobnie jak Inception v4, wykorzystuje 3 różne moduły macierzyste i
bloki redukcji. Ponieważ jednak sieć ta jest hybrydą Inception v4 i ResNet, kluczową funkcjonalnością Inception-
ResNet jest to, że dane wyjściowe modułu inception są dodawane do danych wejściowych (tj. danych z poprzedniej
warstwy).
Aby to zadziałało, wymiary danych wyjściowych z modułu początkowego i danych wejściowych z poprzedniej warstwy
muszą mieć te same wymiary. Faktoryzacja staje się zatem ważna, aby dopasować te wymiary. Dalsze badania wykazały
jednak, że sieć umiera, gdy liczba filtrów splotowych przekracza 1000. Następnie wprowadzono skalowanie aktywacji,
które rozwiązało problem umierającej sieci.
4 DEPTH-WISE CONVOLUTION
In normal convolution, we apply a 2-d depth filter at each depth level of input tensor. Lets understand this through an
example. Suppose our input tensor is 3* 8 8 (input_channelswidth* height). Filter is 333. In a standard convolution
we would directly convolve in depth dimension as well (fig 1). In depth-wise convolution, we use each filter channel
only at one input channel. In the example, we have 3 channel filter and 3 channel image. What we do is — break the
filter and image into three different channels and then convolve the corresponding image with corresponding channel
and then stack them back (Fig 2).
To produce same effect with normal convolution, what we need to do is- select a channel, make all the elements zero in
the filter except that channel and then convolve. We will need three different filters — one for each channel. Although
parameters are remaining same, this convolution gives you three output channels with only one 3-channel filter while,
you would require three 3-channel filters if you would use normal convolution.
Fig 1 Normal convolution Fig 2 Depth-wise convolution. Filters and image have been broken into three different
channels and then convolved separately and stacked thereafter
5 DEPTHWISE SEPARABLE CONVOLUTION
While standard convolution performs the channelwise and spatial-wise
computation in one step , Depthwise Separable Convolution splits the
computation into two steps: depthwise convolution applies a single
convolutional filter per each input channel and pointwise convolution is used to
create a linear combination of the output of the depthwise convolution.
The same idea applied to separate depth dimension from horizontal
(width*height) gives us depth-wise separable convolution whare we perform
depth-wise convolution and after that we use a 1*1 filter to cover the depth
dimension (fig 3). One thing to notice is, how much parameters are reduced by
this convolution to output same no. of channels. To produce one channels we need
333 parameters to perform depth-wise convolution and 1*3 parameters to
perform further convolution in depth dimension. But If we need 3 output channels,
we only need 3 1*3 depth filter giving us total of 36 ( = 27 +9) parameters while
for same no. of output channels in normal convolution, we need 3 333 filters
giving us total of 81 parameters. Having too many parameters forces
function to memorize lather than learn and thus over-fitting. Depth-
wise separable convolution saves us from that.
6 DENSENET (2017)
A DenseNet is a type of convolutional neural network that
utilises dense connections between layers, through Dense Blocks, where we connect all layers (with matching feature-
map sizes) directly with each other. To preserve the feed-forward nature, each layer obtains additional inputs from all
preceding layers and passes on its own feature-maps to all subsequent layers.
Podstawową ideą DenseNet jest gęste połączanie (dense connectivity) między warstwami. W tradycyjnych
architekturach, takich jak VGG czy ResNet, informacje przekazywane są od jednej warstwy do drugiej, ale w DenseNet
każda warstwa otrzymuje wejście nie tylko od poprzedniej warstwy, ale także od wszystkich poprzednich warstw. To
tworzy tzw. "gęstą" strukturę połączeń.
Gęsta Koncentracja: Każda warstwa otrzymuje wejścia od wszystkich poprzednich warstw w bloku. To oznacza, że
sygnały i gradienty mają krótsze ścieżki do przemieszczania się w sieci, co ułatwia uczenie się.
Bloki Gęstych Połączeń: DenseNet składa się z bloków, a każdy blok zawiera sekwencję warstw konwolucyjnych,
normalizacji batch, funkcji aktywacji ReLU oraz operacji pooling. Wejścia do każdej warstwy w bloku składają się z
wyników wszystkich poprzednich warstw tego samego
bloku.
Konstrukcja Bloków: Bloki w DenseNet mogą być
zbudowane z warstw konwolucyjnych o różnych
rozmiarach jąder, co pozwala na efektywne wydobycie
różnych poziomów abstrakcji.
Redukcja Liczby Parametrów: Dzięki gęstym
połączeniom, DenseNet osiąga efektywność przy mniejszej
liczbie parametrów w porównaniu do innych architektur, co
jest korzystne szczególnie przy ograniczonych zasobach
obliczeniowych.
7 DUAL PATH NETWORKS – 2017
Głównym celem DPN jest poprawa wydajności i dokładności sieci konwolucyjnych (CNN) poprzez wprowadzenie
dwóch równoległych ścieżek przetwarzania danych.
Kluczowe cechy Dual Path Networks:
Podwójna Ścieżka Przetwarzania: DPN wprowadza
dwie równoległe ścieżki przetwarzania danych, które
działają jednocześnie w różnych aspektach przestrzeni
cech. Jedna ścieżka przetwarza dane w sposób pionowy
(pionowa ścieżka głęboka), a druga w sposób poziomy
(pozioma ścieżka szeroka). Ścieżki te są łączone, aby
uzyskać pełniejszą reprezentację danych.
Bloki Przekładające Informacje: DPN wykorzystuje
bloki nazwane "blokami przekładającymi" (Transition
Blocks), które mają za zadanie połączyć informacje z obu
ścieżek. Bloki te działają jako łączniki, integrując cechy
przetwarzane w pionie i w poziomie, co prowadzi do
bardziej zrównoważonych i kompleksowych reprezentacji
danych.