머신러닝과 딥러닝/딥러닝

CNN 모델의 발전 과정 #1

Stat_in_KNU 2020. 12. 25. 15:41

도입

 

ratsgo`s blog(ratsgo.github.io/deep%20learning/2017/10/09/CNNs/)와 dataplay.tistory.com/24, adeshpande3.github.io/adeshpande3.github.io/The-9-Deep-Learning-Papers-You-Need-To-Know-About.html

를 많이 참고하여 제가 아는 내용을 첨가해 정리하였습니다.

 

4. CNN 발전 (1) - Alexnet, GoogLeNet

1. CNN의 발전  CNN은 1990년대 Yann LeCun 교수가 발표한 이후, 발전을 많이 했습니다. 특히 2010년 초중반에 많은 발전이 있었습니다. Conv layer 자체에서 Convolution을 어떤식으로 진행할지를 고민하는 차

dataplay.tistory.com


모델 소개

 

AlexNet(2012)

제프리 힌튼 교수팀이 2012년 ILSVRC대회에서 test error 15.4%를 기록하며 세상에 나왔습니다.

CNN을 활용해서 유의미한 결과를 내서 주목을 받았다고 합니다.

 

https://images.app.goo.gl/wfBx47LtXBQ7J7Zg8

위 이미지와 같은 구조를 가지고 있으며, 

주요 특징

 

  • Convolution Layer, Max-pooling Layer, Dropout Layer 각 5개
  • Fully Connected Layer 3개
  • Activation Function : RELU
  • Optimizer : Batch stochastic gradient descent
  • GTX 580 GPU를 이용하여 5~6일 학습
  • 총 22000카테고리의 1500만장의 데이터를 활용 하였습니다.
  • Data Augmentation을 활용하였습니다.

 

 

 

 

ZF Net(2013)

2012년에 AlexNet이 나온 이후로 ILSVRC 대회에 많은 CNN모델이 나왔습니다. 하지만, 경쟁자들을 제치고 우승한 모델은 11.2%의 test error를 기록한 ZF Net이었습니다. 

전체적인 아키텍쳐는 AlexNet을 따르지만 Fine Tuning 되었습니다.

주요특징

  • AlexNet은 1500만개의 이미지로 학습했지만 ZF Net은 오히려 130만장의 이미지만을 학습시켰습니다.
  • AlexNet은 첫번째 레이어에 11x11 사이즈의 필터를 이용하였는데 ZF Net은 그 대신에 7x7 사이즈의 필터를 사용했고 Stride 값도 줄였습니다. 11x11 필터는 많은 정보를 소실 시켰는데, 필터 사이즈를 줄이면서 input의 pixel 정보를 보존하는데 도움이 되었습니다.
  • Network가 진행될수록 더 많은 필터를 사용했습니다.
  • Activation Function : ReLU
  • Optimizer ; Batch stochastic gradient descent
  • loss function : cross-entropy
  • 시각화 테크닉인 Deconvolution Network를 개발했습니다. 

ZF Net은 2013 Competition에서 우승한것도 의의가 있었지만, CNN의 작동 원리에 대해 새로운 인사이트를 제공해주었습니다. 

 

VGG net(2014)

 

단순함과 깊이가 주요 골자인 모델입니다. 주로 VGG-16과 VGG-19로 현재도 널리 쓰이고있습니다. 저 또한, 한글 폰트이미지를 기반의 분류 모델을 만들때 VGG16을 이용하였습니다.

주요 특징

  • AlexNet의 11x11필터, ZF Net의 7x7필터보다 훨씬 작은 3x3필터를 이용하였고, 효과적이었습니다. (3x3의 작은 필터를 이용하였으므로, 네트워크의 깊이도 길어질 수 있었습니다. 또한 파라미터가 줄어들어 속도가 향상되었습니다.)
  • 2개의 컨볼루션 레이어로 ReLU를 두번 사용할수 있게 하였습니다.
  • data augmentation 테크닉을 이용했습니다.
  • VGG는 CNN모델에서 depth(모델의 깊이)의 중요성을 역설해주었습니다.

 

GoogLeNet(2015)

네트워크 아키텍쳐에서 단순함이 중요하다고하였는데, GoogLeNet은 Inception module로 이런 관념을 깨부셨습니다. 

 

출처 : GoogLeNet 논문

GoogLeNet을 이해하려면 Inception Module을 이해해야합니다. 총 9개의 Inception Module을 가지고있는데,

실제로 사용된 Module은 1x1 컨볼루션이 포함된 (b)입니다. 이전 층에서 생성된 특성맵을 1x1, 3x3, 5x5, 3x3(maxpool)의 특성맵을 모두 함께 쌓아줍니다. 이전에 AlexNet VGGNet에서 동일 사이즈 필터 채널을 이용했던것과 비교해서 좀 더 다양한 종류의 특성이 도출 된다는 차이점이 있습니다. 거기에다가  1x1 컨볼루션이 있으니 연산량은 당연히 줄어들었습니다.

또한 기존의 FCNN(Fully Connected Neural Net)대신에 GAP(Global Average Pooling)방법을 이용합니다. 이를통해 파라미터의 개수를 많이 없애주었습니다.

 

auxiliary classifier

네트워크의 깊이는 Vanishing gradient 문제에 취약합니다. 즉, 역전파 과정에서 가중치가 0에 수렴해버리는 현상으로 훈련이 원활하게 일어나지 않습니다. 이것을 해결하기 위해 GoogLeNet에서는 두개의 보조 분류기(auxiliary classifier)를 달아주었습니다.

보조 분류기를 통해 gradient가 잘 전달되지 않는 하위 layer를 학습시켰습니다.

단, 보조 분류기가 weight에 큰 영향을 주는 것을 막기위해 0.3을 곱해주었고, 마지막 output layer(softmax)에는 따로 lue를 곱해주지 않으면서 사용했습니다.

출처 : https://technical-support.tistory.com/87

Training 시에만 사용되고, 예측시에는 분류기를 제거해주어야합니다.

 

주요 특징

  • 9개의 Inception Module을 사용했습니다. 총 레이어 개수는 100개 이상입니다.
  • FC 레이어는 사용하지 않았습니다. 대신 GAP 레이어를 사용하였습니다.
  • 전체적인 컨셉은 R-CNN입니다.
  • GoogLeNet은 Inception Module을 통하여 Conv Layer의 Sequence라는 통념을 없앴습니다.

ResNet(2015)

MS에서 개발한 ResNet은 152개의 레이어를 가진 네트워크로 분류, 감지, 지역화(localization)을 포함하고있습니다. 3.6%의 에러로 인간의 성능을 뛰어 넘었습니다.

 

- Residual Block

Residual Block은 ResNet의 핵심 아이디어중 하나입니다. 

간단히 요약하면, 기존에 학습한 정보를 보존하고 거기에 추가적으로 학습하는 정보를 의미합니다. 복잡한 설명은 생략..

 

주요 특징

  • 매우 깊습니다. 152개 레이어
  • 그런데도 놀라운것은 첫 2개의 레이어로 224x224사이즈의 이미지가 56x56이 됩니다.
  • 모델 개발자는 1202레이어의 네트워크를 시도했지만 높은 테스트 정확도 즉, 오버피팅 문제가 있었다고 합니다.

 

 

 

다음 게시글에서 계속..