Docsity
Docsity

Przygotuj się do egzaminów
Przygotuj się do egzaminów

Studiuj dzięki licznym zasobom udostępnionym na Docsity


Otrzymaj punkty, aby pobrać
Otrzymaj punkty, aby pobrać

Zdobywaj punkty, pomagając innym studentom lub wykup je w ramach planu Premium


Informacje i wskazówki
Informacje i wskazówki

Uczenie głębokie - pełne opracowanie, Notatki z Sztuczna inteligencja

Dokument zawiera opracowanie następujących zagadnień dotyczących dziedziny uczenia głębokiego: - wstęp, architektura perceptronu, - konwolucyjne sieci neuronowe, - architektury, w tym LeNet, AlexNet, ZFNet, VGGNet, Inception/GoogleNet, ResNet, NasNet, EfficientNet, - techniki augmentacji danych, - regularyzacja w sieciach, - transfer learning, - fine tunning, - style transfer, - autoenkoder, - UNET, - inne architektury sieci uczenia głębokiego, - image retrival, - PCA, - siamise networks - SIMCLR - ataki i ich rodzaje - object detection - semantic segmentacion, sieci R-CNN, sieci YOLO, - LSTM, - GAN-y, - transformery, mechanizm atencji, BERT, modele LLM. Część opisów jest w języku angielskim.

Typologia: Notatki

2022/2023

W sprzedaży od 21.10.2024

informatyka-ai-ml-inz-biomedyczna
informatyka-ai-ml-inz-biomedyczna 🇵🇱

5 dokumenty

1 / 77

Toggle sidebar

Ta strona nie jest widoczna w podglądzie

Nie przegap ważnych części!

bg1
Uczenie głębokie
Wyk ła d nr 1/2/3 Da ta : 12/1 0/ 20 23
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.
Regression
o MSE(Mean Squared Error)
o MAE(Mean Absolute Error)
o Hubber loss
Classification
o Binary cross-entropy
o Categorical cross-entropy
AutoEncoder
o KL Divergence
GAN
o Discriminator loss
o Minmax GAN loss
Object detection
o Focal loss
Word embeddings
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.
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe
pff
pf12
pf13
pf14
pf15
pf16
pf17
pf18
pf19
pf1a
pf1b
pf1c
pf1d
pf1e
pf1f
pf20
pf21
pf22
pf23
pf24
pf25
pf26
pf27
pf28
pf29
pf2a
pf2b
pf2c
pf2d
pf2e
pf2f
pf30
pf31
pf32
pf33
pf34
pf35
pf36
pf37
pf38
pf39
pf3a
pf3b
pf3c
pf3d
pf3e
pf3f
pf40
pf41
pf42
pf43
pf44
pf45
pf46
pf47
pf48
pf49
pf4a
pf4b
pf4c
pf4d

Podgląd częściowego tekstu

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.

  • Regression

o MSE(Mean Squared Error)

o MAE(Mean Absolute Error)

o Hubber loss

  • Classification

o Binary cross-entropy

o Categorical cross-entropy

  • AutoEncoder

o KL Divergence

  • GAN

o Discriminator loss

o Minmax GAN loss

  • Object detection

o Focal loss

  • Word embeddings

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)

  • Warstwy konwolucji 1x1:

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.

  • Konwolucje 3x3:

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.