컴퓨터비전 - CNN (ResNet)

Sylen·2024년 7월 24일

Dive to Computer Vision

목록 보기
6/16

ResNet (2015)

일정 수준 이상으로는 더 깊은 레이어를 쌓아도 Training Error와 Test Error 모두 정확도가 오르지 않는 문제

Residual Connection

  • 컨볼루션 레이어의 입력을 컨볼루션 레이어의 출력에 그대로 더해준 뒤 Activation Function을 통과시키는 구조를 2개의 컨볼루션 레이어마다 추가해 줌

깊은 네트워크일수록 Optimization이 어렵다

  • Training Error와 Test Error 모두 높은 Deep Plain Model의 경우 Overfitting으로 인한 현상이라고 보기 어려움
  • 깊은 모델일수록 더 풍부한 Feature에 대해서 학습할 수 있다는 장점이 있음에도 불구하고 성능이 오르지 않은 것은 깊은 모델의 경우 Optimization이 더 어렵기 떄문에 발생한 문제라고 해석할 수 있음

Identity Mapping

모델 F(X) 는 F(x) = H(x)가 되는 방향으로 Optimize 됨
F(x) : x -> conv -> ReLU -> conv -> H(x)

모델 F(X)에 x 를 더해주게 되면 F(x) = H(x)에서 F(x) = H(x) - x (Resudual, 잔차) 가 되는 방향으로 Optimize 됨

  • 쌓여진 레이어가 그 다음 레이어에 바로 Optimize 되는것이 아니라 Residual Mapping에 Optimize되도록 만듦
  • 추가적인 파라미터도 필요하지 않으며, Shortcut Connection만 추가되기 떄문에 복잡한 곱셈연산도 필요하지 않다는 장점

Short Connection : Convolution연산을 거치지 않은 x값을 뒷 레이어에 더해주어 초반 레이어의 정보가 희석되는 것을 방지하고자 함

Bottleneck Layer

깊은 네트워크의 단점

  • Convolution Layer를 연속해서 쌓을 떄 Feature Map의 Dimension (=Channel)을 커지거나 유지시키면서 다양한 특징에 대한 학습이 가능하도록 함
  • Channel의 수가 늘어난다는 것은, Convolution 연산 시 필요한 Filter의 수가 많아진다는 것을 의미하기 떄문
  • 계속해서 Channel의 수가 늘어날 경우 모델이 깊어질수록 연산에 필요한 파라미터 수가 급격히 늘어나기 때문에 학습에 어려움이 생기게 됨

1 x 1 Conv의 효과

  • 3x3 Convolution Layer Input과 Output간의 dimension을 맞추는 데에 사용됨
  • Input과 Output간의 채널 수를 맞추면서도 모델의 파라미터 수는 크게 늘리지 않을 수 있게 됨

Batch Normalization

필요성

  • Input들이 잘 Normalize 되어 있지 않음 (Bias가 클 수 있다)
  • 특정 레이어에서 매우 큰 Weight를 가질 수 있음
  • 따라서 Input이 각 레이어마다 일정하게 Scale되어 계산될 수 있도록 하는 장치가 필요함
  • 각 Dimension을 zero-mean Unit - variance로 만들기 위해서는 아래와 같은 식을 거쳐야 함


역할

  • Deep Network가 잘 학습될 수 있도록 함
  • Gradient Flow를 개선시킴
  • 더 빠르게 Converage 될 수 있도록 함
  • 학습 시 Regularization을 한 것 같은 효과를 얻을 수 있음
  • 좀 더 Robust한 모델이 될 수 있도록 하는 데에 기여함
  • ResNet에서는 모든 Convolution Layer 이후에 Batch Normalization을 해줌
    (Conv - BN - ReLU 구조)
profile
AI가 재밌는 걸

0개의 댓글