1. AlexNet
- Image Classification task에서 당시 매년 1등을 차지했던 모델이다.
- 당시에는 더 많은 파라미터를 학습시키고 싶ㅇgpu 메모리 크기의 한계 때문에 모델을 반으로 나눠서 각 gpu에 학습을 시켰다.
- ReLU activation, drop, data augmentation 등 지금에서는 많이 익숙한 기법이지만 당시에는 새로운 시도였다.
- 현재에 와서는 일반적으로 잘 되는 모델의 standard를 만들었다고 볼 수 있다.
- sigmoid, tanh에서 발생하는 vanishing gradient 문제를 ReLU를 통해 극복했다.
2. VGGNet
- 특징을 뽑자면 3 by 3 kernel을 사용했고 dropout(0.5)를 사용했다.
- alexnet이 11 by 11을 사용한거랑 비교해보면 receptive field가 줄었다고 볼 수 있다.
- 동일한 input에 대해 (3,3)을 두번 사용했을 때, receptive field는 (5,5)를 한번 사용했을 때랑 같다.
- 그런데 (3,3)을 두번 사용했을 때 파라미터 수를 계산해보면 3*3*128*128 + 3*3*128*128 = 294,912인데
- (5,5) 한번 사용했을 때 파라미터 수는 5*5*128*128 = 409,600로 훨씬 많다.
- 즉 네트워크는 깊게 쌓으면서도 파라미터수는 줄일 수 있게 된다.
3. GoogleLeNet
- 이번에는 중간중간 (1,1) convolution을 잘 활용함으로써 전체 파라미터 수를 줄였다.
- inception block이 중간중간 들어가는데 input에 대해 서로 다른 receptive field를 가진 convolution을 거친 정보들을 잘 합친다는 특징이 있다.
- 가장 주목할 점은 1x1 conv를 통해 channel의 깊이를 줄임으로써 파라미터 수를 줄였다는 점이다.(channel-wise dimention reduction)
- width-height에 대한 spatitial dimention은 그대로 두고 channel의 깊이를 확 줄였다.
- 동일한 input, output에 대해 파라미터 수를 확 줄였다.
4. ResNet
- trainset에서 loss가 줄어든다고해서 testset에서도 잘 동작한다는 보장은 없다. 특히 parameter수가 많을 수록 Overfitting의 위험이 크다.
- 그런데 55층으로 구성된 모델1과 22층으로 구성된 모델2 모두 train, test에서 둘다 loss가 줄어드는 상황이라고 해보자.
- 55층으로 구성된, 파라미터 수가 더 많은 모델1은 모델2보다 학습시키기가 더 어렵다. (즉 네트워크가 커질 수록 loss를 줄이기가 더 어렵다)
- ResNet에서는 이 문제를 residual connection을 추가함으로써 해결했다. (skip connection, add identity map)
- input x의 결과, f(x)에 x 자체를 더해준다. 즉 그림에 보이는 해당 layer가(f(x)를 도출하는 층) x부분은 이미 받았으니 남은 차이만큼만학습하도록 도와준다.
- 이때 더하기를 가능하게 하려면 차원을 맞춰줘야 하는데 이때 (1,1) conv를 활용한다.
- skip connection으로 gradient를 끝에 직접 전달해줌으로써, 모델이 깊어져서 gradient전달이 약해지는 문제를 해결한다.
- 참고로 batchnorm을 conv다음에 넣었다. 사람마다 어느위치에 넣는게 좋다는 주장이 다르다.
- 결론적으로 skip connection을 통해 plain모델들보다 layer가 깊어져도 학습이 훨씬 잘되는 결과를 보여준다.
- 네트워크를 더 깊게 쌓을 수 있는 가능성을 제시했다고 볼 수 있다.
- 한가지 또 특이한 점은 bottleneck architecture이다. 이는 GoogleLeNet의 inception block과 유사하다.
- 파라미터 수를 줄이기 위해 (3,3) conv 전, (1,1)conv를 통해 차원을 줄이고 이후에 원하는 차원 크기로 다시 (1,1)conv로 늘렸다.
- 결국 여태 살펴본 alexNet, vgg, googleLeNet에 비해 더 깊게 층을 쌓아도 parameter size는 줄이면서도 receptive field는 키우고 성능은 높였다.
5. DenseNet
- resNet에서는 input값을 출력층에 더해줬는데 반해 denseNet에서는 concatenate한다.
- dense block을 여러개 거칠수록 channel이 계속 쌓이므로 이를 연산하기 위한 convolution layer의 channel수도 같이 커진다.
- 즉 파라미터 수가 계속 증가한다.
- 이걸 해결하고자 (1,1)conv로 채널 깊이를 줄여나간다.
- 즉 dense block으로 channel수를 늘리고 다시 transition block으로 줄이고를 반복한다.
'boostcamp AI tech > boostcamp AI' 카테고리의 다른 글
Short History of Detection Model (0) | 2023.11.22 |
---|---|
Short History of Semantic Segmentation (1) | 2023.11.22 |
Regularization (1) | 2023.11.21 |
Optimization (2) | 2023.11.21 |
Multi gpu training, Hyper parameter Search, etc (0) | 2023.11.16 |