Notice
Recent Posts
Recent Comments
Link
관리 메뉴

one by one ◼◻◼◻

[CNN] ImageNet Classification with Deep ConvolutionalNeural Networks 본문

논문리뷰

[CNN] ImageNet Classification with Deep ConvolutionalNeural Networks

JihyunLee 2021. 11. 13. 23:56

제목 : ImageNet Classification with Deep ConvolutionalNeural Networks

저자 : Alex Krizhevsky, Ilya Sutskever, Geoffrey E. Hinton 

링크 : https://proceedings.neurips.cc/paper/2012/file/c399862d3b9d6b76c8436e924a68c45b-Paper.pdf

 

이번주에는 Alex Net 으로도 알려져 있는 ImageNet Classification with Deep ConvolutionalNeural Networks 논문을 읽어 보았습니다. 무려 2021년 11월 기준 90000회가 넘는 인용수를 가진 엄청난 논문이었습니다.

논문을 읽으면서 느낀점은, 논문을 읽는다는 느낌이라기 보다는 교과서를 읽는 느낌이었는데요, 수업시간에 CNN에 대해 배우거나, drop out, ReLU등에 대해 배울때 논문에서 나온 내용이 인용되어 사용되었기 때문이지 않을까 생각이 들었습니다.

 

논문에서 저는 주로 구조(3. The Architecture), 오버피팅을 막기 위한 노력(4. Reducing Overfitting) 부분을 중점적으로 읽었고 그 부분에 대해 리뷰하도록 하겠습니다.

 

3. The Architecture

AlexNet의 전체적인 구조

AlexNet의 구조는 최초의 CNN 구조인 LeNet과 크게 다르지는 않습니다. 그러나 구조적으로 몇가지를 추가해서 더 좋은 성능을 냈습니다.

 

3.1 ReLu Nonlinearity

먼저는 활성화 함수로 ReLU를 사용한 점입니다. 지금은 ReLU를 활성화 함수로 많이 사용하지만, 그 전에는 tanh(x)나 sigmoid함수를 활성화 함수로 사용하였습니다. 그러나 tanh(x)나 sigmoid는 미분이 복잡하고, exponential이 계산과정에 들어있기 때문에 연산이 복잡합니다. 논문에서는 ReLU를 사용하였을 때, 몇배나 빠른 학습이 가능하였고, 그래서 더 좋은 성능이 나왔다고 하였습니다.

실선은 ReLU를 사용한 경우, dashed line은 tanh 를 사용하였을때의 경우 입니다. 훨씬 빠르게 오차가 줄어드는것이 확인됩니다.

3.2 Training on Multiple GPU's

다음으로는 여러개의 GPU를 사용하였다는 점입니다. 당시 실험에서 사용한 gpu는 3GB의 메모리를 가진 gpu였기 때문에 복잡한 레이어를 쌓기 위해서는 gpu를 여러대 사용하는것이 필요하였습니다. 논문에서는 gpu를 여러대 사용하여 학습하는 방법을 고안하여 더 좋은 성능을 낼 수 있었습니다.

 

3.3 Local Response Normalization

ReLU함수를 사용하였을 때 Normalization을 굳이 하지 않아도 좋은 성능이 나왔지만, 그래도 해 주었을 때 더 좋은 결과가 나왔다고 합니다. n개의 주변 값들의 합으로 나누어 normalization을 해 주었다고 합니다. 아래는 그 식입니다.

3.4 Overlapping pooling

마지막으로 pooling을 overlapping 하도록 사용하였다고 합니다. 이전 방법에서는 pooling을 할 때 서로 겹치는 픽셀이 없도록 하였는데 이 논문에서는 겹치게 하였고, 결과가 더좋았다고 합니다.

 

 

4. Reducing Overfitting

논문의 저자들은 모델이 깊어진 만큼 데이터가 충분치 않아 overfitting이 발생하였고, 이를 방지하기 위해 다양한 방법들을 시도하였습니다.

 

4.1 Data Augmentation

data augmentation은 데이터가 적을 때 가장 먼저 시도해 볼 수 있는 방법입니다. 논문에서는 1. 이미지를 뒤집고, 상하좌우로 조금씩 옮기는 방법과 2. 색상을 조절하는 방식 두가지로 data augmentation을 진행하였습니다. 

 

4.2 Dropout

또한 당시로서는 최신의 기술이었던 Dropout을 적용하였습니다. Dropout은 학습시에 몇몇 노드의 값을 0으로 하여 다음 노드가 정보르 일부 받지 못하는 상황을 일부러 만드는 방법입니다. 이 방법을 사용하였을 때, 더 빠른 학습이 가능하였고, 몇몇 노드에 다음노드들이 의존하는 상황을 줄여서 더 robust한 학습이 가능하였다고 합니다.  (여담이지만 저는 dropout을 한 반의 1,2등만 공부를 잘 하게 하는게 아니라 1,2등을 잠시 재운 뒤 나머지 학생들도 모두 공부를 잘 하게 만드는 방식이라고 이해하고 있습니다.)

 

 

Comment

이렇게 당시에는 획기적인, 그러나 지금은 거의 교과서적인 방법이 된 ReLU, Dropout Data Augmentation을 적용하면서 점점 좋은 성능을 만들어 나가는 모습을 보면서 새삼 대단한 논문이라는 생각이 들었습니다! 다음도 CNN계열로 읽어보면서 지식을 쌓아볼까 합니다📃

Comments