이 글은 논문 [ImageNet Classification with Deep Convolutional Neural Networks]을 읽고 정리한 글이다.
papers.nips.cc/paper/4824-imagenet-classification-with-deep-convolutional-neural-networks.pdf
- ImageNet LSVRC-2010에서 제공하는 120만개의 이미지 데이터를 1000개의 클래스로 분류하는 Deep CNN이 대회에서 top-1 에러율이 37.5%, top-5가 17%로 가장 뛰어난 성적을 얻었다.
-6000만개의 파라미터, 65만개의 뉴런, Max-pooling layer가 적용된 5개의 Convolutional Layer와 마지작으로 3개의 Fully Connected(FC) Layer를 적용해 1000개의 클래스로 분류하였다.
- 학습속도 향상을 위해 convolution을 할때 GPU를 사용했다.
- 과적합(Overfitting)을 피하기 위해 Dropout 기법을 사용했다.
- 이를 바탕으로 ImageNet LSVRC-2012 대회에서 top-5 에러율을 15.3%까지 줄이며 대회에서 우승을 하였다.
1. Network 구조 설명
우선 위 그림의 각 층에 대해 설명해 보면 아래와 같이 구성되어있다.
- Input Layer: 224 Width x 224 Height x 3 Channel
- 1 Convolution: 96 Channel x 11x11 Filter + LRN + Pooling
- 2 Convolution: 256 Channel x 5x5 Filter + LRN + Pooling
- 3 Convolution: 384 Channel x 3x3 Filter
- 4 Convolution: 384 Channel x 3x3 Filter
- 5 Convolution: 192 Channel x 3x3 Filter + Pooling
- 1 Fully-Connected: 4096
- 2 Fully-Connected: 4096
- Output Layer: 1000 Classes
- 모든 Layer는 ReLU(Rectified Linear Units)를 사용하였으며 표준편차 0.01의 Zero-Mean Normal Distribution으로 initialize하고 1 FC와 2 FC에는 0.5 비율의 Dropout을 추가했다.
- ReLU는 기존의 tanh을 사용해 학습시킨 것보다 6배나 빠른 속도를 보였기에 사용하였다.
- 1과 2 Convoultion에 추가된 LRN(Locally Response-Normalization Layer)은 에러율을 top-5에서는 1.2%, top-1에서는 1.4% 낮추는 효과를 보였다. 여기서 k=2, n=5, alpha=10^-4, beta=0.75의 파라미터 값을 부여하였다.
- Pooling은 Max-pooling을 사용했으며 stride=2에 filter(z)=3의 파라미터 값을 주었다. 이 기법은 기존의 s=z(filter크기)와는 다르게 s < z로 기존의 방법보다 top-1과 top-5 에러율을 각각 0.4%, 0.3% 감소시켜주었다.
- 과적합을 방지하기 위한 기법으로는 Data Augmentation(데이터 증가시키기)이 있다. 두 가지 방식이 있는데 첫 번째는 이미지의 이동과 수평방향 뒤집기이다. 테스트 시에는 5개의 224x224 패치와 이를 수평방향으로 뒤집은 패치까지 해서 총 10개를 사용하였다. 이를 바탕으로 softmax의 예측값으로 평균을 낸 것이다. 두 번째는 RGB 채널의 값을 조절하는 것이다. ImagNet의 학습 데이터의 RGB 픽셀값을 PCA(Principal Component Analysis, 주성분분석)에 적용하였다. 이러한 방식은 자연 이미지의 특성을 잘잡은 것이다. 요컨데, 자연이미지에서 사물의 고유색은 조명에 의한 색 변화와는 무관한 것이기 때문이다. 이러한 구조는 top-1 에러율을 1% 감소시켰다.
- Dropout은 여러 다른 모델들을 조합하여 테스트 에러율을 줄이는 방식을 사용할때 비용을 줄여주는 기법이다. 쉽게 말해 랜덤으로 층마다 들어오는 뉴런들을 "dropped out" 시키는 것이다. 떨어져 나간 뉴런들은 순방향이나 역방향 과정에서 아무 역할을 하지 않는다. 따라서 지속적으로 뉴런이 들어가는 구조가 바뀌지만 파라미터는 공유하기에 과적합도 줄여주는 효과도 있다.
- 학습시 사용한 GPU는 NVDIA GTX580 3GB 2장이었으며 CNN구조의 위쪽과 아래쪽을 나누어서 각기 다른 GPU에서 수행하였다. 각 파라미터로는 Batch Size는 128, momentum = 0.9, weight decay = 0.0005, Learning rate = 0.01을 주었다.
2. 결과
- ILSVRC2010: Top-1 에러율 37.5%, Top-5 에러율 17.0%
- ILSVRC2012: Top-1 에러율 36.7%, Top-5 에러율 15.3%
- 어느 정도 이미지의 특징이 정형화된 유사한 이미지를 가져올 수 있는 것을 확인했다.
- Unsupervised learning처럼 pre-training을 하면 더 나은 성적을 얻을 수 있을 거라 예상했지만 실험의 단순화를 위해 그렇게 하지 않았다.
- Supervised Learning으로만으로도 높은 성적을 걷을 수 있는 것을 보여주었다.
- 비디오 시퀀스를 통해 크고 깊은 CNN으로 고정된 이미지에는 없는 시간적인 구조와 같은 것을 학습하려고 한다.
3. 정리
- ImageNet의 고해상도 이미지 데이터 1500만개를 사용해서 학습함.
- GTX 580 3GB GPU 2개를 사용해 5~6일간 학습함.
- 총 8개의 층으로 구성되어있으며 5개는 Convolutional Layer이고 3개는 FC Layer로 구성됨.
- 인풋 이미지는 256x256x3(RGB)로 고정.
- ReLU, Dropout, Max-pooling 등 다양한 기법을 사용하여 에러율을 낮춤.
'Study > ML&DL' 카테고리의 다른 글
파이토치(PyTorch)와 텐서플로우(Tensorflow) GPU 사용환경 구축하기 (2) | 2021.12.13 |
---|---|
관용표현 중의성 해소를 위한 다층위 임베딩 연구 (0) | 2021.12.09 |
퍼셉트론 (0) | 2020.03.24 |
10. 회귀 분석으로 연속적 타깃 변수 예측 (0) | 2020.03.17 |
8. 감성분석에 머신 러닝 적용 (0) | 2020.03.03 |
댓글