5. Modern CNN - 1x1 convolution의 중요성

유승우·2022년 5월 11일
0

AlexNet


  • 그 당시에 GPU가 부족했기 때문에, 최대한 파라미터를 집어넣기 위해 네트워크를 두 개로 나누어서 사용

  • 11 x 11 filter를 사용하게 되면 하나의 하나의 conv kernel이 볼 수 있는 영역은 커지지만 상대적으로 더 많은 파라미터가 필요가 되기 때문에 좋지 않다.

  • Convolution layer 5개와 Dense layer 3개의 총 8단으로 되어있는 네트워크

  • key ideas

    • ReLU activation
      • Preserves properties of linear models (선형 모델의 특징들을 보존)
      • Easy to optimize with gradient descent (sgd,mini-batch에서도 잘 작동)
      • Good generalization (좋은 일반화 , 결과론적)
      • Overcome the vanishing gradient problem (기울기 소실 문제 극복)
    • GPI implementation (2개의 GPU 활용)
    • Local response normalization, Overlapping pooling (지금은 많이 활용되지 않는다)
    • Data augmentation
    • Dropout
  • 지금은 이러한 아이디어들이 흔하지만 이때 당시에는 이러한 AlexNet을 통해 일반적으로 제일 잘되는 기준을 잡아주었다.

VGGNEet


  • 3 x 3 conv filter만을 사용(with stride 1)
  • 1 x 1 convolution for fully connected layers
  • receptive field 관점에서 5x5 하나를 사용하는 것과 3x3 두개를 사용하는 것은 같은데 3x3만을 사용하는 것이 파라미터를 조금 더 적게 사용할 수있다.
  • recpetive field : 하나의 convolution feature map을 얻기 위해 고려할 수 있는 input의 special demension = kernel?

GooleNet


  • Inception blocks의 1x1을 활용해 파라미터 수를 줄이는 네트워크

  • 1x1을 통해 채널 방향으로 demension을 줄임으로써 입출력의 채널 수를 유지하면서 파라미터의 숫자를 줄일 수 있다.

AlexNexGoogleNetGoogleNet
nework81922
parameter60M110M4M
  • 모델이 발전함에 따라 네트워크의 깊이가 깊어지고, 파라미터의 개수가 적어지는 것을 볼 수 있다.

ResNet


  • 위의 모델들은 네트워크가 깊어지면 overfitting이 일어날 수 있으며, gradient vanishing, exploding 나타나 학습이 되지 않는다.

  • skip connection

  • 이러한 문제를 해결하기 위해 ResNet에서는 입력값 x를 중간의 layer들을 뛰어넘어 곧 바로 출력에 더해서 H(x) = f(x) + x의 형태로 만들어 사용한다
  • 하지만 입력 값을 더해주어야 할때는 차원이 같아야 하는데, 여러개의 convolution layer를 거치고 나면 채널의 개수가 달라지기 때문에, 1x1를 이용해 채널의 수를 맞춰줌으로써 x를 더해준다
  • 이후 F(x) = 0이 되도록 학습하면 H(x) = 0 + x를 미분하여 1이 되므로 기울기 소실 문제가 해결할 수 있게 되었다.

  • Bottleneck architecture
  • Bottleneck architecture는 GoogleNet의 Inception block과 같으며, convolution layer 앞 뒤에 1x1 conv연산을 함으로써 연산량을 줄이는 역할을 한다.
  • 따라서, 1x1 convolution을 구조를 이용해 채널을 줄이게 되고 줄어든 채널을 3x3 convolution을 함으로써 recepted field를 키우고, 다시 1x1 convolution으로 원하는 채널을 맞춰줌으로써 모델을 깊게 쌓으면서 동시에 파라미터를 줄이는 것이 핵심 전략이다
  • 최종적으로 ResNet을 통해 네트워크를 훨씬 더 깊게 쌓아도 학습시킬 수 있는 가능성을 열어주었다,

DenseNet


  • ResNet은 convolution에서 나오는 값을 더하는 것인데, DenseNet은 그것을 더하지 말고concatenate를 해보자는 네트워크이다.

  • 하지만 concatenate를 하게 되면 채널이 커지고, 여기서 가해지는 convolution feature map의 channel이 커지게 되고, 파라미터의 숫자가 커지게 되니까, 중간에 한번씩 channel을 줄여주자는 것이 key point

  • Dense Block : feature map을 concatenate하면서 기하급수적으로 키우는 단계

  • Transition Block : Batchnorm → 1 x 1 Conv → 2 x 2 AvgPooling 을 통해 채널을 줄이는 것

  • 이러한 Dense Block과 Transition Block을 반복하는 것이 DenseNet이다.

0개의 댓글