카테고리 없음

CNN-VGGNet, ResNet, DenseNet

coldtruthk 2024. 4. 13. 23:31

VGGNet

  • AlexNet의 레이어의 수는 8개인데, 그에 비해 VGGNet16은 레이어의 수가 16개이다.
  • 망이 깊어지면 출력단에서 하나의 픽셀이 담고 있는 정보의 양이 많아지면서 훨씬 복잡한 문제를 풀 수 있다.(장점)
  • 성능을 올릴 수 있지만 자유 파라미티의 수가 증가하게 되면서 overfitting에 빠질 가능성이 높아진다.
  • 구조는 AlexNet과 크게 다르지 않지만 깊이가 다르다.

VGGNet 구조

 

  • AlexNet과 다르게 LRN을 쓰지 않았으며, 3 x 3  컨볼루션 필터만을 사용하여 학습시키는 것이 가장 큰 특징이다.
  • 큰 사이즈의 컨볼루션 필터를 하나 사용하는것보다 작은 사이즈의 필터를 여러개 사용하면(3 x 3 컨볼루션 필터 말하는 거임) activation function을 더 많이 사용할 수 있어서,
    1. 네트워크의 non-linearity(비선형성 증가->모델의 특징 식별성 증가)
    2. 학습 parameter 수 감소

 

VGGNet이 레이어를 깊게 만들면서 성능을 증가시켰지만, layer가 더 많이 깊어질 때는 성능 증가가 미미하다.

-> deep neural network의 layer가 깊어지면 gradient vanishing/exploding 등의 이유로 training이 잘 안된다.

더 깊은 네트워크가 test error가 높은 것을 확인할 수 있다.

이를 해결하기 위해 ResNet가 이용될 수 있다.

ResNet

  • residual learning(skip conection(입력에서 바로 출력으로 연결되는 것))을 사용한다. ==  '잔차학습'으로 어떤 값의 차이를 학습한다는 의미

  • 기존의 layer는 input data로 target data H(x)를 얻는 것이 목적이였으나 residual block은 output 값에 input data x를 더해 F(x) + x를 최소화하는 것을 목표로 한다.
  • F(x) = H(x) - x이고 x는 고정값이므로 F(x)를 최소화한다는 것은 H(x) - x 를 0과 가깝게 만든다는 것이다.
  • H(x) - x를 residual이라고 한다.
  • F(x)에 x를 더해주는 것을 shortcut connection 이라고 한다.

ResNet에서 제기된 문제점

  • 이전 레이어의 output을 다음 레이어의 output값과 합해서 더한다는 점에서 정보들이 이후의 레이어들로 온전히 흘러가는 것을 방해할 수 있다는 약점이 있다.(분리해서 분석할 수 없고, 합쳐버린다는 부분)

DenseNet

  • Layer간의 정보가 흘러가는 것을 개선

모든 이전 레이어의 output 정보를 이후의 레이어의  input으로 받아오는 방법을 사용

 

  • ResNet에서는 feature map끼리 더하기를 해주는 방식이였다면 DenseNet에서는 feature map 끼리 concatenation을 시켜주는 것이 가장 큰 차이점이다.(ResNet는 바로 이전의 블록과만 연결되었다면 DenseNet은 레이어 이전의 모든 레이어에 연결이 된다.)
  • 장점
    1.  vanishing gradient 문제 해결 d
    2.  parameter 수 감소
      • Feature reuse : 이전 모든 레이어의 특징 맵을 여러 차례 재사용하며 중복하여 특징을 학습할 필요가 없음
      • Parameter efficiency( feature propagation) : 이전 모든 레이어의 feature map을 활용할 수 있어 더 적은 필터만 사용할 수 있음
    3. DenseNet은 raw data 와 변경 값을 함께 전달함
    4. Max-pooling이 아닌 average pooling 을 사용하여 backpropagation때보다 안정적으로 값을 전달하여 gradient vanishing 문제를 해결함.

TransferLearning