처음에 나온 CNN 이후로, CNN은 어떻게 발전해왔을까?
ImageNet Large-Scale Visual Recognition Challenge, 줄여서 ILSVRC라는 대회에서 수상한 모델을 기준으로 보자. 이 대회에서는 이미지를 가지고 각종 작업을 하는 성능을 가지고 비교하는데, 2015년을 기점으로 모델들의 오차율이 인간의 오차율이라 여겨지는 5퍼센트 밑으로 내려가게 됐다. 본격적으로 CNN이 발전한 시기와 겹친다.
AlexNet
alexnet의 특이점은 당시 컴퓨터의 성능 이슈로 gpu가 두 개를 사용했다는 것.
그리고 처음에 11, 11필터를 사용했다는 것. 이후에 보겠지만 이렇게 필터의 크기가 큰 것은 좋지 않다.
왜 갑자기 이 모델은 혜성처럼 나와서 성공했을까?
- Relu 활성함수
relu 함수는 선형모델의 속성을 보존하며 최적화에 용이하다.
무엇보다 gradient vanishing(기울기 소실) 문제가 생기지 않는다! 시그모이드 같은 활성함수는 연산이 진행될수록 경사가 줄어든다. 반면 relu는 양수에서 기울기가 정직하기 때문에 그러한 문제가 발생하지 않는다.
- GPU 2개!
- Local response normalization, Overlapping pooling
- Data Augmentation
- Dropout
현재로 봤을 때는 흔하게 쓰이는 기법들이 사용됐다(Local response normalization은 사장됐다고 한다). 당시에 현재에도 통용되는 각종 기법들의 표준을 제시해준 것이 바로 alexnet.
VGGNet
이 모델은 3,3필터만 사용함으로써 파라미터 수를 줄였다.
Receptive field.
3,3 필터를 두 번 쓴다고 생각해보자. 이것은 실상 5,5필터 하나 쓰는 것과 결과로 도출되는 층이 같게 나오기에 receptive field 차원에서는 같다. 그런데 그렇게 깊이를 깊게 하면서 필터의 크기를 줄임으로써 파라미터의 갯수는 줄어든다.
간단하게 생각해도 3,3필터가 두 개면 9 + 9해서 지나는 파라미터가 18이지만 5,5필터면 25의 파라미터가 필요하다.
이 모델 후에 등장하는 모델들은 점차 필터의 크기를 줄이는 방향으로 발전했다.
GoogLeNet
1,1필터는 차원을 줄이는 효과가 있다. 모델의 깊이를 깊게 하면서 중간에 1,1필터를 잘 섞어주면 파라미터의 수를 줄이는 결과를 낳는다. googlenet은 이러한 효과를 잘 활용한 케이스다.
또한 inception block을 반복해서 배치해뒀는데, 이를 통해 한 입력에 대해 다양한 receptive field를 만들어 합치는 효과도 있는 동시에 1,1 필터를 적절히 활용해 파라미터 수를 줄일 수 있었다.
보다시피 채널의 두께를 줄여서 파라미터의 수를 줄이는 데에 있어 1,1필터는 매우 효과적이다. 한번 쓴 것만으로도 거의 30퍼 가량으로 파라미터 수를 줄여낼 수 있다!
ResNet
통상적으로 모델의 층이 깊어지면 모델의 성능이 떨어지는 문제가 발생했다. 층이 깊으면 일정 이상의 학습을 시키면 학습 데이터와 테스트 데이터 모두에 대해서 예측율이 떨어지는 상황이 나오게 됐던 것이다.
resnet은 이것을 해결했다. 바로 identity 맵.
이것은 이후의 층에 기존 값을 잘 전달하는 한편 층을 지나면서 생기는 차이를 합쳐 전달하는 꼴이라 층이 깊어져도 잘 작동을 하게 된다.
또 여기에서 bottlenect achitecture를 사용한다. 이것이 뭔고 하니, 1,1 필터로 지속적으로 감싸는 작업을 말하는 듯하다.
DenseNet
resnet에서 identity 맵을 활용한 것에서 더 나아간 모델.
출력값에 원래 값을 더하지 않고, 각각을 그냥 따로 전달하는 방식을 사용했다. 이렇게 되면 점차 채널이 늘어나게 된다. 즉 파라미터가 엄청 늘어난다는 것. 그래서 densenet은 중간에 채널을 줄이는 과정을 추가한다.
중간 중간 1,1필터를 사용해서 채널을 줄이고 뭉치는 작업을 하고 다시 채널을 늘리며 표현력을 풍부하게 하고, 그것을 다시 줄이는 방식.
'인공지능 in 네부캠 AI 4기 > 딥러닝 기본' 카테고리의 다른 글
Recurrent Neural Networks (0) | 2022.10.04 |
---|---|
Computer Vision Applications (0) | 2022.10.04 |
Convolutional Neural Networks (0) | 2022.10.04 |
Optimization (0) | 2022.10.03 |
Neural Networks & Multi-Layer Perceptron (0) | 2022.10.03 |