-
CNN (2) | 패스트캠퍼스 챌린지 31일차딥러닝 2022. 2. 23. 21:12
CNN을 dropout과 같은 다른 기법과 결합하면 성능 향상을 더 도모할 수 있다. 하지만 CNN에는 convolution layer, pooling layer, fullyc-connected layer 등을 가지고 있기 떄문에 이러한 방식을 넣을 순서가 중요하다. Dropout은 activation function 뒤에 적용하는 것이 좋다고 알려져 있다. Batch normalization의 경우 분포를 조정하는 것이 목적이기 떄문에 주요 연산인 convolution 연산과 분포를 바꾸는 연산인 activation 사이에 진행되는 것이 좋다. 결론적으로, convolution, batch normalization, activation, dropout 순으로 진행하면 된다. Pooling의 경우 맨 뒤가 일반적이다.
이 외에도 data augmentation과 같은 기법이 효과적이다. 가장 중요하게는 transfer learning-fine tuning이 효과적인데, 이는 다량의 데이터로 소스 모델을 훈련하고, output layer 등의 파라미터를 제외한 체 파라미터를 복사하여 타겟 모델을 만든 뒤, 이 타겟 모델을 추가하고, 훈련시키는 과정을 뜻한다. 이 때 일반적으로 소스 모델보다 작은 learning rate를 적용하기 때문에 'fine' tuning이라는 이름이 붙게 되었다. 이 방법은 자연어처리에서도 BERT 등에서 일반적으로 사용되는 기법이다.
Neocognitron이 convolution layer를 적용하였고, LeNet이 여기에 back propagation을 적용하였다면, AlexNet은 이를 깊게 쌓았다. 이렇게 CNN을 깊게 쌓을 떄의 문제는 바로 경사 소실이다. CNN을 쌓았을 때 경사 소실은 activation function인 ReLU 때문인데, ReLU의 0 부분이 쌓이다 보니 경사가 소실해 버린다. VCGNet은 순수하게 CNN을 쌓은 모델로, 총 19레이어가 최대였다. GoogLeNet은 여기에 풀링 레이어와 1x1 convolution layer를 통해 연산량을 줄이면서 27 레이어 까지 쌓을 수 있었다. 마지막으로 ResNet은 residual connection이라는 것을 사용하여 경사 소실 문제를 해결한다. 이는 입력값을 남겨 두었다가 더하는 방식이다. 이를 통해 편미분해도 원래 값이 적용될 수 있게 한다. 이러한 residual layer를 일반화하여 DenseNet이 나와 성능을 높이기도 하였다.
본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성되었습니다. https://bit.ly/37BpXiC
'딥러닝' 카테고리의 다른 글
CNN (4) | Object Detection Strategies (1) | 패스트캠퍼스 챌린지 33일차 (0) 2022.02.25 CNN (3) | 패스트캠퍼스 챌린지 32일차 (0) 2022.02.24 CNN (1) | CNN의 개요 | 패스트캠퍼스챌린지 30일차 (0) 2022.02.22 최적화(Optimization) (3) | 패스트캠퍼스 챌린지 29일차 (0) 2022.02.21 최적화(Optimization) (2) | 패스트캠퍼스 챌린지 28일차 (0) 2022.02.20