AlexNet
AlexNet은 총 8개의 layer로 구성되며 60M의 parameter를 가진다.
- ReLU activation function을 사용하였다. -> vanishing gradient problem을 극복할 수 있다.
- 2개의 GPU를 사용하였다.
- nomalization과 overlapping pooling 기법을 사용하였다.
- Data augmentation(데이터 증강)을 사용하였다.
- Dropout을 사용하였다.
VGGNet
VGGNet은 총 19개의 layer로 구성되며 110M의 parameter를 가진다.
- 3x3 크기의 filter만을 사용하여 층을 더 깊게 쌓았다.
- fully connected layer를 위해 1x1 convolution를 사용하였다.
- Dropout(0.5)를 사용하였다.
이 모델에서 중요한 것은 3x3 크기의 filter를 사용했다는 점이다. 일반적으로 다음과 같이 5x5 filter를 사용했을 경우 parameter는 총 409,600개가 사용된다.
하지만 3x3 크기의 filter를 사용하면 층이 더 깊어짐에도 불구하고 paramter의 개수가 294,912개로 줄어드는 것을 확인 할 수 있다.
GoogLeNet
GoogLeNet은 총 22개의 layer를 가지며 4M의 parameter를 가진다. 앞에서 봐왔던 VGGNet이나 AlexNet보다 훨씬 parameter의 수가 급격히 줄어든 것을 확인 할 수 있다. 입력 사이즈는 224 x 224 x 3이 기준이다.
- Inception blocks
GoogLeNet은 inception block이라는 것을 사용하였는데 다음과 같이 중간 중간에 1x1 convolution을 끼워 넣어서 paramter를 줄인후 concatenation을 해준 것을 말한다.
- Benefit of 1x1 convolution
1x1 convolution을 사용하지 않을 때의 parameter는 3x3 크기의 kernel을 사용하고 128 channel을 사용할 때 총 127,456개가 나온다.
하지만 다음과 같이 1x1 convolution을 사용했을 경우 40,960개의 paramter로 약 30%가 줄어든 것을 확인할 수 있다.
ResNet
이전까지는 1x1 convolution을 사용하여 parameter를 줄이는 model들을 봤다. 그런데 더 깊은 DNN은 학습이 힘든 문제가 발생했다. 예를 들어서 20 layer를 사용한 모델과 56 layer를 사용한 모델을 비교했을 때 똑같이 training error가 낮아지긴 하지만 layer를 깊게 쌓은 모델(56 layers)은 더 적게 쌓은 모델(20 layers)보다 낮아질 수 없다는 것이다.
그래서 ResNet은 다음과 같이 weight layer, activation function, weight layer를 통과한 값과 통과하지 않은 값(입력값)을 addition해주는 방법을 사용하여 layer를 더 깊게 쌓아도 더 좋은 성능의 모델을 만들 수 있게하였다. 입력 사이즈는 224 x 224 x 3이 기준이다.
- Residual Function
residual function은 출력값 F(x)와 입력값 x 간의 차이를 계산하는 것을 의미한다. 즉, F(x)의 값이 0에 가까울 수록 입력값 x에 가까워진다는 말이다. 따라서 F(x)를 최소로 해준다는 것은 H(x) - x를 최소로 해주는 것과 동일한 의미를 가진다. 여기서 H(x) - x를 잔차(residual)이라고 한다.
- Basic Block
Basic Block은 모두 3x3 convolution만 사용한 design이다.
- bottleneck
bottlenect은 처음과 끝에 1x1 convolution을 사용한 design이다.
DenseNet
densenet은 resnet에서 addition하는 방식과 달리 concatenation을 해주는 방법을 사용하였다.
하지만 concatenation으로 계속 진행하다보면 다음과 같이 상당히 길어진다.
그래서 이러한 문제를 해결하기 위해서 Transition Block을 사용하였는데 이 Block은 BatchNorm -> 1x1 Conv -> 2x2 AvgPooling 순서로 진행하여 dimension을 줄여준다. 그리고 이 Transition Block를 적용한 densenet은 dense block으로 concatenation하고 Trainsition Block으로 dimension을 줄여주는 식을 반복적으로 수행하여 prediction을 한다.
'Boostcamp AI Tech' 카테고리의 다른 글
[Boostcamp Day-9] DL Basic - Recurrent Neural Network (0) | 2021.08.12 |
---|---|
[Boostcamp Day-8] DL Basic - Computer Vision Applications (0) | 2021.08.12 |
[Boostcamp Day-8] DL Basic - Convolutional Neural Networks (0) | 2021.08.11 |
[Boostcamp Day-7] DL Basic - Optimization (0) | 2021.08.10 |
[Boostcamp 2주차] 피어세션과 학습 회고 (0) | 2021.08.09 |