본문 바로가기

부스트캠프 AI Tech 3기/이론 : U-stage

[Day14] DL Basic 5. Modern CNN

AlexNet

  • ReLU
    선형 모델이 갖는 gradient가 커도 유지된다는 특성을 가진다.
    SGD, mini batch를 이용한 optimize가 쉽고 gradient vanishing 문제를 해결했다.
    결과적으로 generalization performance가 좋다.
  • 2 GPU
  • Data Augmentation
  • Dropout
  • Overlapping pooling

VGGNet

  • 3x3 convolution filter만 사용했다.
    Receptive field : convolution 한 값이 영향을 받은 input의 크기
    ex) 3x3을 2번하는 것과 5x5를 한 번 하는 것은 Receptive field는 같다.
    하지만 파라미터는 1.5배 차이가 난다. 그래서 7x7이상으로는 거의 사용하지 않게 된다.
  • layer가 16개면 VGG16, 19개면 VGG19라 한다
  • dropout 0.5
  • 1x1 convolution 을 fully conneted layer에 사용했지만 파라미터를 줄이기 위함은 아니었다.

GoogLeNet

  • NIN 구조 : network in network 
    비슷하게 보이는 네트워크가 네트워크 안에서 반복
  • Inception blocks
    하나의 입력에 대해서 여러 개의  receptive field를 갖는 filter를 거쳐서 여러 response들을 합친다.1x1을 끼워넣어서서 channel 방향으로 dimension을 줄여서 전체적인 파라미터 수를 줄인다.

ResNet

parameter가 많으면 training error은 줄어드는데 test error는 늘어나는 overfitting이 난다. 그래서 네트워크가 커짐에 따라서 학습이 잘 안 된다.

이 경우는 overfitting은 아니다. training error가 줄면서 test error도 같이 줄기 때문이다. 하지만 학습이 잘 되지 않고 있다는 것은 알 수 있다. 왜냐하면 layer를 더 깊게 쌓아서 학습해도 56 layer의 error가 20 layer보다 test error가 높기 때문이다. 그래서 더이상 학습을 못시키게 된다.

  • Residual connection = identity map = skip connection
    residual을 학습하게 되는데 이 residual은 차이이다.
    이렇게 학습하면 깊게 쌓을수록 더 학습이 잘 된다.
    x+f(x)를 학습하게 되기 때문에 둘을 더할 수 있어야한다.
    그러려면 size가 같아야 하는데, 그냥 추가적인 변환 없이 더할 수 있는 것을 simple shortcut
    1x1 convolution으로 channel depth를 맞추어 주는 것을 projected shortcut이라고 한다.
  • Bottlenect architecture
    googLeNet의 inception block이랑 같다.
    원래 하려는 3x3연산 전에는 dimention을 줄이는 1x1 conv를 넣고, 후에는 늘려주는 1x1 conv를 넣어서 파라미터를 전체적으로 줄인다.

DenseNet

  • Dense block
    resnet에서는 residual connection을 할 때 두 값을 더했는데 더하지말고 concatenation한다.(연결만)
    concatenate하면 channel이 점점 커진다. 그러면 filter channel도 커져야할 것이고 파라미터 숫자도 많이 필요하게 된다.
  • Transition block
    Dense block에서 늘려놓은 channel을 1x1 convolution으로 줄인다.