Stride & Pooling 장/단점


서론

Convolutional Neural Network(CNN)에서 해상도(resolution)을 줄이는 방법에는 주로 두 가지가 있다. 하나는 stride가 2인 convolution을 사용하는 것이고, 다른 하나는 max/average pooling을 사용하는 것이다. 이 장은 이 장은 Stride와 Pooling의 장/단점에 대해서 설명한다.

목차

  1. Convolution with Stride
    1. 장점
    2. 단점
  2. Pooling
    1. 장점
    2. 단점

Convolution with Stride

장점

  1. 학습 가능한 parameter(Kerenl)가 추가되므로 네트워크가 resolution을 잘 줄이는 방법을 학습할 수 있어서 pooling보다 성능이 좋다.
  2. Input Feature를 뽑기 위한 Convolution Layer와 Input의 Resolution을 줄이기 위한 stride를 동시에 적용할 수 있다. 이 경우 같은 3x3 크기의 필터를 사용하더라도 stride가 적용되기 때문에 더 넓은 receptive field를 볼 수 있다.
    1. receptive field의 크기는 filter의 크기와 동일한데 왜 stride가 커지면 receptive field가 커진다고 말하는걸까?
      1. stride가 크면, 필터는 이미지 위를 더 빠르게 움직인다. 이는 곧 필터가 보는 '연속된' 영역의 수가 줄어든다는 것을 의미한다. 이로 인해 출력의 spatial(공간적) 차원이 줄어들게 되며, 이는 더 높은 수준의 추상화를 가능하게 한다. 쉽게 말해, 더 큰 스트라이드를 사용하면 더 많은 정보를 간략화하게 되어, 필터가 보는 영역이 커지는 것처럼 보이기 때문에 정확히 맞는 표현은 아니지만 의미적인 뤼양스로 이해하면 될 것 같다.
  3. 아래 논문에서는 모든 Pooling을 Convolution with stride로 변경 시 성능 상승의 효과가 있는 것을 확인하였다.
    1. We find that max-pooling can simply be replaced by a convolutional layer with increased stride without loss in accuracy on several image recognition benchmark

https://arxiv.org/pdf/1412.6806.pdf

단점

  • convolution layer를 이용하여 stride = 2로 줄이면 학습 가능한 parameter가 추가되므로 학습 가능한 방식으로 resolution을 줄이게 되나 그만큼 parameter의 증가 및 연산량이 증가한다.

Pooling

장점

  1. convolution연산 대비 연산량이 적으며 저장해야 할 parameter의 숫자도 줄어드므로 학습 시간도 상대적으로 줄일 수 있고 Inference 시간도 줄일 수 있습니다
  2. FishNet에서 제안한 내용 중에 Skip Connection에서 Convolution layer가 계속 추가되면 backpropagation 시 gradient가 잘 전달이 안될 수 있다고 하여 단순히 Pooling만을 사용한 기법이 적용됩니다. 즉, layer를 줄여서 gradient 전파에 초점을 두려고 할 때 pooling을 사용하는게 도움이 될 수 있습니다.
    1. Skip Connection은 초기에 제안된 목적이 Gradient Vanishing 문제를 해결하고, 따라서 더 깊은 네트워크를 구성할 수 있게 하는 것이다. Skip Connection은 layer사이에서 직접적인 경로를 제공하여 backpropagation시 gradient가 잘 전파될 수 있도록 돕는다.
    2. 그러나 충분히 깊은 상태에서 더 깊게 만들기 위해 Skip Connection을 계속해서 Convolution layer와 함께 추가하게 되면, Gradient Vanishing 문제가 다시 발생할 수 있다. 이는 추가된 convolution layer로 인해 네트워크가 깊어짐에 따라 발생하는 문제이다.

    따라서, Resolution을 줄이기 위해 convolution layer 더 추가로 넣는 것보다 layer의 갯수를 줄여서 gradient 전파에 초점을 두려고 할 때 pooling을 사용하는 것이 도움이 될 수 있다.

단점

  • pooling을 이용하여 resolution을 줄이게 되면 학습과 무관해지며 학습할 파라미터 없이 정해진 방식 (max, average)으로 resolution을 줄이게 되어 연산 및 학습량은 줄어들지만 convolution with stride 방식보다 성능이 좋지 못하다.