논문링크: ImageNet Classfication with Deep Convolutional Neural Networks
AlexNet은 2012년에 열린 ILSVRC(ImageNet Large Scale Visual Recognition Challenge)에서 우승한 CNN(Convolutional Neural Networks) 모델에 대한 논문이다. 논문 저자인 Alex Krizhevsky의 이름을 딴 이 AlexNet은 CNN기반 모델의 발전에 큰 영향을 주었다고 한다.
논문의 흐름대로 내용을 정리해보고자 한다.
ILSVRC-2010 데이터 학습
AlexNet은 ImageNet ILSVRC-2010 대회의 이미지 분류 task를 진행하며, 이 대회에서의 이미지를 학습했다. 120만 개의 이미지에서 1,000가지 종류를 분류하는 task였다.
모델 개요
6천만 개의 파라미터를 사용했고, max-pooling layer를 포함한 5개의 CNN layers, 마지막 1000-way의 softmax layer를 포함한 3개의 FC layers를 사용하여 65만 개의 뉴런으로 구성된 모델이다. 빠른 훈련을 위해 Non-saturating 뉴런을 사용하였고, overfitting을 방지하기 위해 Dropout을 사용했다. 연산은 GPU를 이용했다. 그 결과 top-1 error는 37.5%, top-5 error는 17.0%를 달성했다.
ILSVRC-2012 최종 성적
여기서 조금 변형된 모델을 사용하여 ILSVRC-2012 대회에서 top-5 error 15.3%를 달성하며 2위인 26.2% 보다 월등한 성적으로 1위를 차지했다.
모델이 나오게 된 배경
큰 데이터셋을 모을 수 있게 되면서, 큰 용량의 모델이 필요하게 되었다.
이 때 CNN 모델은 깊이와 너비를 다양하게 조절할 수 있고, 이미지에 대해 정확한 예측을 한다. 따라서 기존의 비슷한 크기의 신경망에 비해 CNN은 더 적은 연결과 파라미터로 훈련이 가능하고 이론상 더 나은 효과를 보인다. 그러나 여전히 고해상도의 큰 데이터셋에 적용하기에는 힘들었으나, 다행히 GPU는 2D 합성곱 연산에 최적화되어있다.
논문의 성과
ImageNet 데이터
22,000개의 카테고리로 이루어진 150만 개의 라벨링된 고해상도 이미지 데이터셋을 사용했다.
웹상에서 수집되었고, 사람에 의해 라벨링 되었다.
ILSVRC 데이터
1,000개의 class가 존재한다. 120만 개의 train data, 5만 개의 validation data, 15만 개의 test data를 사용했다.
성능평가는 top-1 error, top-5 error를 기준으로 삼았다.
전처리 작업
256 X 256 크기의 이미지로 다운 샘플링을 진행했고, 각 픽셀에 train set의 평균을 빼는 것을 제외하고는 다른 전처리 작업은 진행하지 않았다. RGB 이미지들로 학습을 진행했다.
Figure 1: 기존 연구들의 방법인 tanh를 사용한 에러율과 ReLU를 사용한 에러율 비교
기존의 방법:
연구에서는 ReLU 사용:
ReLU는 tanh보다 몇 배 빠른 훈련이 가능하다. ReLU 4개를 이용한 CNN 계층 4개만으로 CIFAR-10 데이터에 대해 6번의 epoch만에 25% 에러율을 달성했다. (Figure 1)
GPU 2개 사용
각 GPU에 특정 레이어만 할당함으로써 각각 절반의 뉴런들만을 할당했다.
예) layer 3의 입력은 모든 커널의 layer 2에서 받지만, layer 4의 입력은 같은 GPU에 있는 layer 3에서만 받는다. (Figure 2 참고)
이러한 방법은 교차검증에서 문제가 되지만 방대한 양의 계산이 가능하게 되었다.
→ 그 결과 에러율을 더욱 낮아졌고, 학습 시간을 축소했다.
ReLU는 saturating을 방지하기 위해 input 정규화가 필요하지 않다.
그러나 연구에서는 다음의 local normalization이 generalization에 도움이 된다는 것을 발견했다.
위치 (x, y)에서 커널 i를 적용한 다음 ReLU 비선형성을 적용하여 계산된 뉴런의 활동 로 표시하는 response normalization activity
이를 brightness normalization라고 부른다.
→ top-1, top-5 에러율 1.4%, 1.2% 감소시켰다. CIFAR-10 데이터셋에 대해 비정규화 13%, 정규화 11%의 에러율을 달성했다.
기존의 방식
인접한 뉴런들은 중복되지 않게 풀링 계층을 통과시킨다.
s 픽셀 단위로 이루어진 풀링 그리드가 중심에서 x, y, z 크기의 인접 뉴런들을 요약한다.
만약 s = z로 설정한다면 CNN의 전통적인 풀링 방식이 된다.
논문의 방식
s = 2, z = 3으로 s < z가 되게 설정하여 풀링되는 뉴런들의 중복을 허용했다.
(= 풀링할 때 겹쳐지도록 설정했다는 뜻)
→ top-1, top-5의 에러율을 각각 0.4%, 0.3%만큼 낮췄다. 또한 이러한 방식이 과적합을 방지한다는 것도 발견했다.
Figure 2
구성 개괄
구성 세부
첫번째 합성곱 레이어는 224 X 224 X 3의 이미지 데이터를 입력으로 받아, stride = 4, 11 X 11 X 3 커널로 컨볼루션 한다. 96장의 55 X 55 피처맵이 산출된다.
두번째 합성곱 레이어는 response-normalizatoin과 풀링 레이어를 통과한 첫번째 합성곱 레이어를 입력으로 받아 5 X 5 X 48 크기의 커널로 컨볼루션한다. 256개의 피처맵을 출력한다.
세번째 합성곱 레이어는 정규화, 풀링을 통과한 두번째 레이어를 입력으로 받아 3 X 3 X 256 크기의 커널로 컨볼루션한다. 384개의 피처맵을 산출한다.
네번째 합성곱 레이어는 3 X 3 X 192 크기의 커널로 컨볼루션하고 384개 피처맵을 산출한다.
다섯번째 합성곱 레이어는 3 X 3 X 192 크기의 커널로 컨볼루션한고 256개 피처맵을 산출한다.
각각의 FC layer는 4,096개의 뉴런들로 구성되어 있다.
이 절에서는 과적합을 방지하는 두 가지 기법을 설명한다.
원본 데이터에 약간의 변형만 주어 디스크에 적재할 필요 없이 변환된 이미지를 생성했다.
GPU가 학습 중일 때 python 코드를 이용하여 CPU를 이용해 이미지를 생성하도록 구현했기 때문에 데이터 증강을 위한 계산 비용은 들지 않는다.
image translations, horizontal reflections
256 X 256 크기의 이미지에서 랜덤하게 224 X 224 크기를 추출하고 여기에 horiznotal reflections을 적용하여 학습시켰다.
학습 샘플들은 높은 상호의존성을 보였지만 학습세트는 2,048배 증가했다.
테스트시에는 각 모서리 4곳과 중앙의 1곳, horizontal-reflections까지 합한 총 10개로 증강된 이미지의 예측을 softmax 계층에서 평균함으로써 예측했다.
학습 데이터의 RGB 채널의 강도 변경
학습 데이터 세트의 RGB 값에 PCA를 수행했다.
각 학습 이미지에 평균이 0이고, 표준편차가 0.1인 가우시안 값에 비례하는 크기의 랜덤 변수와 이미지에서 발견된 주요 구성 요소의 배수를 더한다.
따라서 각 RGB 픽셀 에 를 더한다.
는 i번째 고유벡터와 RGB 픽셀의 3 X 3 공분산 행렬의 고유값이다.
는 램덤 변수다. 특정 학습 이미지가 다시 학습될 때 모든 픽셀에 대해 한 번만 그려진다.
이 방법은 원본 이미지에 대해 대략적으로 중요한 특성을 뽑아내고 조명의 세기와 색상의 변화에 대해 변하지 않는다. 또한 top-1 error rate를 1% 넘게 낮췄다.
각 은닉층의 뉴런들을 0.5의 확률로 0을 출력하게 한다.
드롭아웃된 뉴런들은 순전파와 역전파에 모두 관여하지 않는다.
그러므로 신경망에 입력값이 전달될 때마다 다른 구조를 띄지만 동일한 weight를 공유한다.
드롭아웃은 특정 뉴런이 다른 뉴런에 의존할 수 없기 대문에 뉴런들의 복잡한 의존성을 감소시킨다.
테스트 시에는 출력된 뉴런들에 50%만 사용했다. 이는 많은 드롭아웃 네트워크에 의해 생성된 예측 분포의 기하학적 평균을 취하는 것에 대한 합리적인 근사치다.
확률적 경사하강법: batch_size = 128, momentum = 0.9, weight_decay = 0.0005
weight_decay를 작게 사용하는 것은 단순히 규제 작용을 할 뿐만 아니라 모델의 train error도 줄인다.
가중치 w의 업데이트
각 레이어에 대해 평균이 0이고 표준편차가 0.01인 가우시안 분포로 가중치를 초기화했다.
2, 4, 5번째 합성곱 계층과 완전연결계층의 biases를 상수 1로 초기화했다.
이는 ReLU에 양수의 입력을 주어 초기 단계의 학습을 가속시킨다.
나머지 계층의 biases는 모두 0으로 초기화했다.
모든 계층에 동일한 학습률을 적용했고, 훈련 내내 수동으로 조정했다.
vaildation error가 현재 학습률에서 더 나아지지 않을때 학습률을 10으로 나누는 휴리스틱을 따랐다.
학습률은 0.01로 시작해 종료되기까지 3회 감소했다.
2개의 NVIDIA GTX 580 3GB GPUs를 이용해 5~6일에 걸쳐 120만 개의 이미지를 90epochs 정도로 학습시켰다.
Table1: ILSVRC-2010의 결과, 이텔릭체는 다른 팀, 볼드체는 논문 저자의 팀이다.
Table2: ILSVRC-2012의 결과, 이텔릭체는 다른 팀, *표시가 있는 모델은 ImageNet2011 대회에서 사전학습된 모델
ImageNet Fall 2009의 에러율
Figure 3: 신경망 내 2개의 데이터가 연결되는 계층에서의 합성곱 커널을 보여준다.
224x224x3의 이미지를 입력으로 받아 11x11x3 크기의 96개의 커널을 가진 첫 번째 합성곱 계층을 통과한 것이다. 위 48개는 GPU 1에서, 아래 48개는 CPU 2에서 작동한 것이다.
여기서는 다양한 주파수, 방향, 색상들을 학습했다.
GPU 1은 색 정보가 거의 없지만, CPU 2는 다양한 색상을 담고 있다.
이러한 특성은 랜덤한 가중치 초기화와는 무관하게 실행마다 발생한다.
왼쪽: ILSVRC-2010 테스트 이미지에 대해 모델이 예측한 가장 유력한 5가지 라벨
정답은 각 이미지의 아래에 표시되어있고, 그에 대한 확률은 빨간색 바로 표시했다.
오른쪽: 첫 번째 사진은 ILSVRC-2010의 테스트 이미지, 나머지는 모델의 마지막 은닉층에서 유클리드 최소거리를 이용하여 얻은 학습 이미지
왼쪽 1번 사진: 왼쪽에 있는 진드기도 신경망에서 감지할 수 있다.
대부분의 top-5는 일리있는 예측을 보인다.
(예: 고양이 종에 속하는 다른 것들이 표범의 하위 라벨들로 예측된다.)
테스트 이미지가 애매모호한 경우가 존재한다. (강아지와 체리가 한 사진에 들어가 있는 것)
4096개의 은닉층에서 이미지에 유도된 특성 활성화
만약 두 이미지가 작은 Euclidean separation으로 특성이 활성화 되었다면, 우리는 신경망이 높은 수준으로 그 둘이 비슷하다고 할 수 있다.
Figure 4의 오른쪽 사진들이 이 방법에 따라 테스트 셋의 5개의 이미지가 6개의 학습 이미지와 매우 비슷하다는 것을 보여준다.
(두 개의 4096 차원에서 실수값 벡터의 유클리드 거리 유사도를 계산하는 것은 비효율적이지만, 오토 인코더를 이용해 짧은 이진코드로 벡터를 압축하여 훈련하면 효율적일 것)
ReLU나, Dropout 등 지금은 익숙한 방법들이 신선한 내용으로 나와서 신기해하며(?) 읽었습니다. CNN과 깊이의 중요성에 대해 짚어준 논문이었는데, 그래서 이 다음으로는 VGG 논문 리뷰를 올리려고 합니다.
해석이나, 내용 중 틀린 점이 있다면 댓글로 알려주세요!💡
읽어주셔서 감사합니다.😊
잘 읽었습니다. 좋은 정보 감사드립니다.