[Image Classification] 5. ResNet
앞서 CNN 이 무엇인지와, 파라미터 수를 계산하는 방법, 그리고 이미지 영역에서 CNN 을 사용하는 이유, CNN 의 가정 등에 대해서 살펴봤다.
이제 AlexNet 을 포함한 CNN 에서 굵직한 영향을 가져온 논문들을 살펴보자.
ISVRC 에서 해마다 1등했던 모델들이다. 여전히 주의할 것은 각각 네트워크의 parameter 수, 네트워크의 depth 에 유의하자. 모델이 발전할 수록 네트워크의 depth 는 점점 깊어지고, parameter 수는 줄어가며, 성능은 올라간다. 네트워크를 깊게 쌓으면서 어떻게 parameter 수를 줄일 수 있는지를 관심있게 보자.
ResNet
- ResNet (2015)
- Generalization performance - train error 가 줄어듦에도 불구하고 test error 와 차이가 많이 나는 정도를 의미 → 차이가 적어야 일반화 성능이 좋다!
- 파라미터 수가 많은 것은 1) 오버피팅 문제가 있음. 2)
- 오버피팅은 학습 에러가 줄어드는데 테스트 에러가 커지는 것. 슬로프가 반대되는 것. 테스트 에러가 점점 커지는 것. 아래 그림은 오버피팅은 아님. 둘 다 같이 줄어들었기 때문.
- 문제는 학습 에러가 작음에도 불구하고 테스트 에러가 더 큰 것. 즉 학습이 안되는 것. 56 레이어를 아무리 잘 학습시켜봤자 20레이어가 더 학습이 잘되는 것. → 오버피팅은 아니지만 네트워크가 커짐에 따라서 학습을 못 시키는 것.
- 그래서 ResNet 은 residual connection(identity map 혹은 skip connection)을 추가함.
- skip connection 은 입력이 올라가면 출력이 나오는데, 그 입력을 뉴럴 네트워크의 출력 값 혹은 한단 짜리 conv layer 에 더해주는 것. → 궁극적으로 원하는 것은 이 conv layer 가 학습하고자 하는 것은 residual. 차이만 학습하는 것. 왜냐면 x에다가 f(x)를 더했기 때문. 실제로 f(x)가 학습하는 것은 그 차이를 학습하길 원하는 것. 그렇게 되면 아래처럼 깊어졌을 때 학습이 잘 될 수 있음.
⇒ skip connection이 gradient 소실 문제 해결에도 도움이 되는데, Skip Connection은 그래디언트가 직접적으로 뒤로 전달될 수 있도록 하여 그래디언트 소실 문제를 완화한다.
- identity map 을 사용하면 학습 자체를 더 잘 시킬 수 있게 되는 것. 네트워크를 딥하게 쌓을 수 있는 가능성을 열어준 것. 깊게 쌓아도 학습 가능!
- 중요한 점은, x 를 더하려면 차원이 같아야 함. 내가 입력이 128x128x64 일 때, 3x3conv - BN - ReLU - 3x3conv - BN 을 통과하고 나온 값이 역시 128x128x64 가 되어야 함.
- 차원을 맞춰주기 위해서 1x1 conv 로 채널을 바꿔주는 것이 projected Shortcut
- 재밌는 것은, BN 이 컨볼루션 뒤에 일어나게 됨. 그 다음에 activation 이 일어남.
- BN 을 ReLU 다음에 넣어야 잘된다, 안넣어야 잘된다 이런 말들도 있음. 원래 논문에서는 BN 이 Conv 다음에 나옴.
- 여기도 Bottleneck arch 가 나옴. 3x3 conv 를 위해서는 파라미터 수는 3 x 3 x input_channel x output_channel. 내가 3x3 conv 하기 전에 input_channel 을 줄이면 전체적인 파라미터 수를 줄일 수 있음. 그래서 3x3 conv 전에 input 채널을 줄이고, 3x3 conv 이후에 input 채널을 늘리는 용도로 1x1 conv 가 사용됨. 그래서 1x1 conv 이 2번 들어가는 것. 이것을 통해서 내가 궁극적으로 원하는 output conv feature map 의 채널의 차원을 맞출 수 있는 것.
⇒ 정리하면, 1x1 conv 를 이용해서 채널을 줄이게 되고, 그렇게 줄어든 채널에서 3x3 conv 을 함으로써 receptive field 를 키우고, 다시 1x1 conv 로 원하는 채널을 맞춰주는 테크닉. 이런 식으로 파라미터 숫자는 줄임과 동시에 네트워크를 깊게 쌓아서 receptive field 를 키우는 게 전략.
맨 위로 이동 ↑
댓글 남기기