본문 바로가기
CS/딥러닝

[논문 리뷰] AlexNet(2012)

by jaehoonChoi 2023. 6. 21.

 

0. Why We Read 

우선, 논문리뷰에 앞서, AlexNet이 왜 딥러닝 필수논문으로 의미를 가지는지를 알아보자. 

 

AlexNet은 2012 이미지분류대회에서 딥러닝을 사용하여 압도적인 성능으로 1위를 차지하였다.

 

 

 

 

CNN구조와 LeLU함수, 효과적인 GPU사용, Drop Out 등 매우 효과적인 기법들이 대거 등장하였다. 

 

이들은 현재까지도 많은 연구에서 그 성능이 입증된 방법들로, 이들이 거의 처음으로 공개된 논문이다. 

 

CNN은 기존의 Fully Connected 모델과 달리 필터를 통해 지역적인 특성을 뽑아서 더 적은 파라미터로 

 

효과적인 성능을 내는 모델이다. 

 

 

 

 

 

CNN은 이미 알려진 구조지만, 딥러닝모델 자체가 계산비용이 비싸서 잘 쓰이지 않았다.

 

하지만 GPU의 성능이 향상되고, 규제법이 발전함에 따라 딥러닝이 더 효과적으로 작동하는 시대가 도래했다.

 

이제 AlexNet의 구체적인 논문을 리뷰해보자. 

 

 

1. Introduction 

과거에는 이미지셋도 부족했고, 분류해야하는 레이블도 적은 경우가 대부분이어서,

숫자판별(MNIST)정도는 유용한 결과를 보였다.

 

하지만 수천만개의 이미지셋을 통해 수백개의 레이블로 나누고 판단하는데엔

매우 큰 모델이 필요하다. 위에 서술했듯이 CNN은 이전에도 알려져있고, 지역적인 특성을 고려하는

효과적인 모델이지만(특히 이미지분류에 효과적) 연산비용이 높다는 큰 단점이 존재했다.

 

하지만 합성곱 연산에 최적화된 GPU의 발달로 인해 매우 많은 데이터셋을 통해 훈련하는게 가능해졌다. 

 

 

AlexNet은 5개의 (Convolution-Pooling) 층과 3개의 (Fully Connected) 층으로 이루어져 있다.

 

파라미터는 약 6천만개이며, 이 8개의 층들중 1개만 빼고 만들면 효과가 줄어듦을 발견했다.

 

즉, 모델링 과정에서 어떻게 층의 깊이를 짤지가 굉장히 중요하다는 걸 시사한다.

 

 

 

2.  The Dataset

 

ImageNet은 1500만개 이상의 이미지와 2만2천개 이상의 레이블로 구성된 이미지셋이다. 

 

이 대회에서는 이들중 약 1000개의 카테고리에 속하는 약 150만개의 훈련세트와 5만개의 평가세트, 

15만개의 테스트세트로 구성되어있다. 

 

또한, 이들은 다양한 해상도의 이미지로 구성되어있는데, 이들을 CNN구조에 넣어 학습하기 위해, 

256*256 규격으로 다운샘플링하는 기법을 사용하였다.  

 

 

마지막으로, 각 훈련세트에서 픽셀들을 표준화시켜주었고, 그 외의 전처리는 하지 않았다. 

 

 

 

3. The Architecture

 

AlexNet의 구조를 살펴보자.

 

 

위와 같이 Conv층 5개와 3개의 FC층으로 구성되어 있다.

 

우선 매 층마다 활성화함수로 사용될 ReLU함수에 대해 알아보자. 

 

 

- 3.1 ReLU

ReLU함수는 전통적인 활성화함수(시그모이드, 하이퍼탄젠트)에 비해 빠른 속도와 성능을 자랑한다.

 

\(\textbf{ReLU}(x)=\max(0, x) \)으로 정의된다. 

 

 

위 그래프는 ReLU함수와 tanh를 이용한 결과의 차이를 보여준다. 

 

ReLU의 경우 무려 5에폭만에 25%의 오차율에 도달한 반면, tanh함수는 35에폭이나 걸렸다. 

 

 

학습원인이 느린 이유로는 tanh함수는 \( [0, 1]\) 사이의 기울기를 갖기 때문에 계속 학습을 하게 되면

1보다 작은 값을 계속 곱하기 때문에 기울기 소멸의 문제가 발생할 수 있다. 

하지만, ReLU의 경우 1아니면 0이기 때문에 기울기 소멸이 발생하지 않는다. 

 

또한 함숫값 범위가  \([-1, 1] \) 이기 때문에 포화상태(saturating) 문제가 발생할 수 있다. 

하지만, ReLU함수는 함숫값 범위가 \( [0, \infty] \) 이기 때문에 saturate 문제가 일어나지 않는다.  

 

 

 

- 3.2 Mutiple GPUs

AlexNet는 2개의 GPU를 이용하여 훈련하였다. GPU는 병렬연산에 적합하며, 이렇게 여러개로 나눈게

성능이 더 좋았으며, 현재는 AlexNet이 비교적 작은 모델에 속하지만, 당시에는 엄청 큰 규모의 모델이라서 

여전히 GPU 1개로는 부족한 점도 여러개를 사용하는 원인에 해당했다.

 

 

 

위 그림은 GPU1과 GPU2 컨볼루션층이 학습한 것을 시각화한 것이다.

 

위 그림의 위쪽 절반은  색상과 무관한 수평, 수직선을 학습한 반면,  아래쪽 절반은 색상을 포함한

여러정보를 학습하였음을 알 수 있다. 

 

 

 

- 3.3 Local Response Normalization 

 

지역반응정규화는 말그대로 지역적인 특징을 약화(일반화)시키는 기법이다. 

인간의 특성중 측면억제라는 현상에 영감을 받아 만들어졌다고 한다. 

 

강한 자극의 이미지가 약한 자극의 이미지를 약화시키기 때문에 이러한 현상이 이미지에 반영되면, 

학습이 떨어진다고 생각하여 이를 고르게 할 방법으로 정규화를 진행한다. 

 

ReLU함수를 사용하면 포화문제는 해결할 수 있지만, 이 함수는 0 아니면 자신을 리턴하는 함수라서

강한 이미지를 그대로 출력한다. 이를 해결하기 위해서 ReLU를 사용했음에도 정규화를 시켜준 것 같다. 

 

 

 

대충 위처럼 계산한다고 한다. 

 

(현재는 이 방법은 잘 쓰이지 않고, 배치 정규화라는 기법을 많이 쓴다.) 

 

 

 

- 3.4 Overlapping Pooling

Pooling 기법은 과적합을 방지해주며 사이즈를 줄여주는 방법이다. 

대표적으로 Average pooling과 Max pooling이 있다.  (최근엔 Max pooling이 더 자주 쓰인다.) 

 

 

이때, Pooling을 겹쳐서 하면, 과적합이 더 줄어든다고 한다. 

 

AlexNet의 자세한 그림과 구현을 참고하자.

 

 

 

4. Reducing Overfitting

 

AlexNet은 6천만개의 파라미터로 이루어져 있다. 그래서 데이터셋도 충분해야 과적합을 방지할 수 있다.

AlexNet이 채택한 방법은 데이터 확대, 변환(Data Augmentation)과 드롭아웃(Drop Out)이다.

 

 

- 4.1 Data Augmentation

 

AlexNet은 이미지를 수평으로 뒤집고, 랜덤하게 224*224 크기로 잘라서 데이터셋에 포함시켰다. 

Test score를 계산할 땐, 중심부패치 1개와 좌상,하단, 우상,하단 4개의 부분패치를 선택하고, 이것의 반전된

이미지에 대해서도 총 10개의 이미지의 예측값을 평균내어 계산하는 방식을 취했다. 

 

 

또한, 각 pixel의 RGB벡터에 PCA를 적용하여 오차를 줄였다. 

 

$$ [I_{xy}^R,I_{xy}^G, I_{xy}^B ]^T+=[\textbf{p}_1, \textbf{p}_2, \textbf{p}_3][\alpha _1\lambda _1, \alpha _2\lambda _2, \alpha _3\lambda _3]^T   $$

 

 

 

- 4.2 Dropout 

서로 다른 모델들을 ensemble(결합)하는 기법은 효과가 좋다. 딥러닝에서도 이를 응용한다. 

 

 

50%의 확률로 노드의 output을 0으로 만들어 순전파, 역전파에 계산되지 않도록 배제시키는 기법이다.

이 기법을 사용하여 과적합을 방지하면서, 각 층이 랜덤하게 만들어지기 때문에 서로 다른 모델을 

조합한 효과를 낼 수 있다. 또한, Fully Connected와 달리 다른 노드에 의존하는 경향성을 줄일 수 있다. 

 

 

 

 

 

5. Details of Learning

AlexNet은 SGD(stochastic gradient descent)를 학습 알고리즘으로 선택하였다. 

하이퍼파라미터는 momentum=0.9, batch size=128, weight decay=0.005로 설정하였다.

또한 weight decay의 중요성을 강조하였다. 

 

 

모멘텀(Momentum)은 현재 그래디언트 계산에 이전 그래디언트를 반영하여 관성을 주는 방식이다. 

가중치감쇠(weight decay)는 손실함수가 너무 커질 때, 규제항을 넣어 가중치가 너무 커지지 않게

패널티를 부여하는 기법이다. 

 

 


 

[논문 후기]

태어나서 처음으로 읽어본 논문이어서 기분이 좋다. 평소 정리된 지식을 학습하는 공부와 달리 논문를 직접 읽고

이해하는 공부는 다양한 배경과 저자의 생각을 직접 들을 수 있어서 매우 좋은 공부인 것 같다.

렐루함수와 드롭아웃 2개가 한방에 소개된 논문이라니 정말 대단하다. 당시 연구하면서 테스트 결과를 보면서

얼마나 흥분되었을지.. 딥러닝 분야가 워낙 발전이 빠르고  아이디어들이 쏟아지기 때문에 논문 읽는게

되게 재밌다고 들었다. 트랜스포머, 생성모델등 감동적인 논문들이 많다는데 빨리 공부해보고 싶다. 

 

 

'CS > 딥러닝' 카테고리의 다른 글

경사하강법  (0) 2023.03.18
신경망 기본구조와 구현  (0) 2023.03.18

댓글