Lecture 9 | CNN Architectures
2022. 2. 15. 22:44
Lecture 9 | CNN Architectures
CNN Architectures
- AlexNet
- VGG
- GoogLeNet
- ResNet
AlexNet

- 최초의 large scale CNN이다.
- 기존의 LeNet과 상당히 유사하고 레이어만 많아졌다.
AlexNet의 구조
- AlexNet의 구조는 다음과 같다.

Details/Restrospective
- 활성화함수로 ReLU를 사용하였다.
- local response normalization layer를 사용하여 정규화 작업을 수행하였다.
- data augmentation을 사용하였다.
- dropout: 0.5
- batchsize: 128
- SGD Momentum: 0.9
- Learning rate: 1e-2, reduced by 10
- L2 weight decay: 5e-4
- 7 CNN ensemble: 18.2% → 15.4%
AlexNet의 특징
- AlexNet은 2개의 모델로 분산작업을 했스며 각 GPU가 모델의 뉴런과 feature map을 각각 반반씩 나눠 갖는다.

- 따라서 Conv1,2,4,5 layer에서는 같은 GPU내에 있는 feature map만을 사용하여 전체 96개의 feature map을 볼 수 없다.

- 하지만 Conv3, FC layer는 전체 feature map과 연결되어 있어 GUP통신을 하기 때문에 전체의 depth를 전부 가져올 수 있다.
ZFNet

- ZFNet은 단순히 AlexNet의 하이퍼파라미터만 조절하여 Error rate을 개선시킨 모델이다.
VGG

- VGG의 큰 특징은 작은 filter사용과 깊은 층을 쌓았다는 것이다.

작은 filter를 여러번 사용하는 것에는 몇 가지 장점
- 3x3의 filter를 여려겹 사용하는 것은 7x7 filter와 똑같은 rectptive field를 갖는다.
- 깊어질수록 더 비선형적으로 변한다.
- 더 적은 파라미터를 갖는다.

- VGG는 초반 layer에서 가장 많은 메모리를 사용하고 가장 뒤에 있는 FC layer에서 가장 많은 파라미터를 갖는다.
Details

GoogLeNet

- GoogLeNet은 높은 계산량을 아주 효율적으로 수행하도록 네트워크를 디자인 하였다.
Inception module

- GoogLeNet의 가장 큰 특징은 Inception module을 여러개를 쌓아 만들었다는 점이다.
- Inception module내부에는 동일한 입력을 받는 서로 다른 다양한 필터들이 병렬로 존재한다.
- 각각의 filter로부터 나온 output을 depth방향으로 합쳐 다음 layer에 전달한다.

- 초기 Inception module은 위와 같이 다른 size를 가진 filter들을 여러개를 사용하고 다시 그것들을 depth방향으로 합치는 것이였다.
문제점
- 각각 filter로부터 생성된 output을 depth로 합치다보니 계산비용이 너무 비싸다.
해결책
- 1x1 Conv인 bottleneck layer를 사용하여 Conv연산을 수행하기전에 입력을 더 낮은 차원으로 보내는 것

- 입력의 depth르 더 낮은 차원으로 projection한다.
- 이렇게 1x1 Conv을 사용하면 공간적인 정보를 유지하면서 depth를 줄일수 있다.
개선한 Inception module


Full GoogLeNet architecture

- GoogLeNet은 계산량이 많은 FC Layer를 대부분 걷어냈고 파라미터가 줄어들어도 모델이 잘 동작함을 확인하였다.

- GoogLeNet은 layer의 층이 깊기 때문에 중간에 보조 분류기를 달아 주었다.
- 이 보조 분류기는 추가적인 gradient를 얻을 수 있어 중간 레이어의 학습을 도울수 있다.
- 또한 GoogLeNet은 학습시 각 보조분류기의 loss를 모두 합친 평균을 계산하여 사용한다.
ResNet

- ResNet은 Residual block을 사용하여 만든 매우 깊은 network model이다.
연구배경

- 일반적인 CNN을 여러개를 쌓아 층을 깊게하여 수행하였는데 성능은 더 나빠졌다. 하지만 여기서 그 원인이 overfitting이 아니라는 것을 찾아냈다.

- 따라서 문제는 모델이 깊어질수록 최적화가 어렵다는 가설을 세웠다.

- 이를 해결하기 위한 방법으로 Residual block을 사용하는것을 제시하였다.
- 이것은 H(x)를 학습하는 것 대신에 H(x)-x를 학습할 수 있도록 만들어준다.
- 또한 skip connection에는 가중치가 없고 identity mapping으로 그대로 출력단으로 내보낸다.
Full ResNet architecture

bottleneck

- ResNet도 GoogLeNet처럼 layer가 50이산이면 bottleneck layer를 사용한다.
Traing ResNet in practice

Experomental Results

Comparing complexity

Forward pass time and power consumption

Other architectures to know
Network in Network (NiN)

Identity Mapping in Deep Residual Networks

Wide Residual Networks

Aggregated Residual Transformations for Deep

Deep Networks with Stochastic Depth

FractalNet: Ultra-Deep Neural Networks without Residuals

Densely Connected Convolutional Networks

SqueezeNet: AlexNet-level Accuracy With 50x Fewer
Parameters and <0.5Mb Model Size**

Syllabus
Youtube
'Deep Learning > cs231n' 카테고리의 다른 글
| Lecture 11 | Detection and Segmentation (0) | 2022.03.13 |
|---|---|
| Lecture 10 | Recurrent Neural Networks (0) | 2022.03.05 |
| Lecture 7 | Training Neural Networks II (0) | 2022.02.13 |
| Lecture 6 | Training Neural Networks I (0) | 2022.02.05 |
| Lecture 5 | Convolutional Neural Networks (0) | 2022.01.28 |



