AlexNet 성능개선 전략
모델 아키텍처
- Relu
- Duel GPU
- LRN
- Overlapping pooling
오버핏 해소 전략
- Augmentation(증강) - 데이터 수 높인다. Random crop, RGB shift
- Drop-out - 동일 모델로, 실제 학습에 참여한 파라미터의 조합이 바뀐다.
디테일 파라미터 3가지
- 모멘텀
- Weight decay
- 초기화: 정규분포 - std:0.01
- Learning rate 스케줄: reduce LR on pleatu - 0.01 -> 1/10
추가전략 2가지
- 앙상블
- 미세조정(Fine-tuning)
논문구성요소
Abstract(초록)
논문으로 얻고 싶은 목록을 작성한다.
목록을 작성하지 못하면, 모델구조, 학습방식, 성능개선전략 만 뽑아내자
- 모델구조:
- 6천 만개의 파라미터, 65만 뉴런
- 5개의 합성곱계층(pooling 계층 포함)
- 3개의 완전연결계층(65만개 뉴런)
- 최종 1000개
- 학습방식:
- 성능개선전략
- non-saturating 뉴런 사용
- gpu 이용한 효율적인 cnn연산
- 과적합 방지, 드롭아웃 이용
Introduction
굳이 읽을 필요 없다.
2. The dataset
- ImageNet: 22,000개의 카테고리, 150만개 라벨링 이미지 데이터셋
- 기존 이미지 크기가 다양하므로 256 x 256 크기의 이미지로 다운샘플링 작업 실시. (Head의 완전 연결층 때문)
- Zero 센터링 실시
3. The Architecture
3.1 ReLU Nonlinearity
- tanh(x) 혹은 1/(1+e^-x) (=Sigmioid 함수)를 사용하면 training error가 잘 떨어지지 않는다. (train이 잘 안되기 때문에 underfit)(기울기 소실 문제)
- non-saturating nonlinearity 즉 ReLU 함수를 쓰면 training error가 더 잘 떨어진다.
3.2 Training on Multiple GPUs
- two GPUs (GTX 580 GPU has only 3GB of memory)
3.3 Local REsponse Nomalization
- Convolution(ReLU) 결과에 정규화를 한다.
- 입력 데이터가 아닌, 결과 피처맵에 정규화하는 것을 말한다.
- top1, top-5 error가 각각 1.4%, 1.2% 감소했다.
- top1: n개의 label 예측 값 중 상위 1개가 정답인가?
- top5: n개의 label 예측 값 중 상위 5개에 정답이 있는가?
3.4 Overlapping Pooling
- Overlap: 겹치는 것.
- Non-Overlap: 일반적인 Pooling, 사이즈 = stride
- Overlap: s(stride)=2, z(size)=3, Pooling 결과 피처맵 사이즈는 s(stride)의 영향을 받으므로 s=2, z=3, Non-Overlap의 결과 피처맵과 유사하다.
- Overlap Pooling으로 약간 Overfit을 방지했다.
- Overlap은 더 일반화(추상화)된 피처맵을 만든다.
- 4개의 최대값과 4개의 최대값이 같을 확률보다 9개의 최대값과 9개의 최대값이 같을 확률이 더 높다. 겹치는 갯수가 많아질수록 추상화가 잘 된다.
- 데이터가 추상화 된다는 것은 단서가 더 추상화되므로 정답을 맞추기 어렵다.
- Overfit을 방지했다.
3.5 Overall Architecture
- 227 x 227 x3
- Convolution: 11 x 11 x 3, n=96, s=4, padding=none
- prameter = 364 x 96 = 34,944
- 55 x 55 x 96
- Pooling: 3 x 3, s=2
- 27 x 27 x 96
- Convolution: 5 x 5 x 96, n=256, s=1, padding=same
- prameter = 2,401 x 256 = 614,656
- 27 x 27 x 256
- Pooling: 3 x 3, s=2
- 13 x 13 x 256
- Convolution: 3 x 3 x 256, n=384, s=1, padding=same
- prameter = 2,305 x 384 = 885,120
- 13 x 13 x 384
- Convolution: 3 x 3 x 384, n=384, s=1, padding=same
- prameter = 3,457 x 384 = 1,327,488
- 13 x 13 x 384
- Convolution: 3 x 3 x 384, n=256, s=1, padding=same
- prameter = 3,457 x 256 = 884,992
- 13 x 13 x 256
- Pooling: 3 x 3, s=2
- 6 x 6 x 256 (Flat 9216)
- prameter = 9217 x 4096 = 37,752,832
- fc1 4096
- prameter = 4097 x 4096 = 16,781,312
- fc2 4096
- prameter = 4097 x 1000 = 4,097,000
- fc3 1000
- total prameter = 62,378,344
4. Reducing Overfitting
- 파라미터: 6000만 -> 데이터 120만개로는 overfit
- 4.1 Data Augmentation: 데이터가 많을 수록 어려워지므로, 데이터를 늘린다.
- 다양한 이미지를 256 x 256으로 바꿨다.
- RandomCrop을 224 x 224로 한다. 2048개를 추가로 만든다.
- RGB channels 의 강도를 변경했다.
- 4.2 Dropout: 모델 복잡도를 낮춘다. 파라미터 수를 줄인다.
- 단일 모델로 앙상블(여러 모델 합치기) 효과를 낸다.
- 0.5의 확률로 뉴런의 결과 값을 0으로 만든다. (training에 사용하지 않는다.)
- input이 들어올 때마다, 활성화 되는 뉴런들이 바뀐다.
- 각 배치마다 시행에 사용된 모델 자체는 동일하지만, 실제 학습에 참여한 파라미터의 조합은 바뀐다.
- drop out은 fc1 과 fc2에 사용한다.
- drop out은 epochs를 2배 더 필요로 한다. training error가 더 늦게 떨어지게 했다. overfit을 해결하기 위해 underfit화 하다.
- train 할 때만 Dropout 하고, test할 때는 Dropout 하지 않는다.
5. Details of learning
- Weight update
- SGD(stochastic gradient descent)
- momentum:
- 0.9 * V(i)
- weight decay (억제 파라미터):
- W(i): 모델 복잡
- - 0.0005 * lr * W(i)
- W(i+1) = W(i) - lr * G 과 비교
- 앞부분에 추가된 부분 0.9 * V(i) - 0.0005 * lr * W(i)
- 정규분포 - zero-mean Gaussian distribution
- learning rate 스케줄:
Callback - 3) ReduceLROnPlateau: - 1batch당 0.5초~ 0.6초
6. Results
- 앙상블:
비슷한 CNN 5개의 예측을 평균한 모델은 16.4%를 기록했다. - ex1: dropout을 각각 다르게 준 모델 생성 (은닉층 노드는 동일)
- models = [
- CNNModel(1024, 0.5),
- CNNModel(1024, 0.6),
- CNNModel(1024, 0.7),
- CNNModel(1024, 0.8),
- CNNModel(1024, 0.9)
- ]
- 각 모델을 학습
- 예측 값을 평균 냄
- ex2: 은닉층 노드를 다르게 준 모델 생성 (dropout은 동일)
- additional_models = [
- CNNModel(512, 0.5),
- CNNModel(256, 0.5)
- ]
- 미세조정:
ImageNet 2011 Fall 데이터를 분류하기 위해 만든, 풀링계층 이후에 6개의 합성곱 계층을 추가한 CNN 모델을 미세조정(fine-tuning) 시켰을 때 16.6% 에러율을 달성했다. - 앙상블 + 미세조정:
방금 언급한 미세조정한 모델과 CNN5개의 예측을 평균한 모델을 더해 또다시 예측을 평균하였더니 15.3%의 에러율을 기록하였다.
7. Discussion
layer 깊이가 늘어날수록 에러율이 낮아지지만, 8층까지만 함.
논문 팁
논문 보조툴
1) typeset.io
2) scite.ai
3) explainpaper.com
4) notebookLM
번역기
1) 구글 번역기
2) DeepL 번역기
Tags:
AI개발_교육