[U] Week 3 - Convolutional Neural Networks

JaeJun Lee ·2022년 10월 3일
0

부스트캠프 AI Tech

목록 보기
18/30
(fg)(t)=f(τ)g(tτ)dτ=f(tτ)g(t)dτContinousconvolution(fg)(t)=i=f(i)g(ti)=i=f(ti)g(i)Discreteconvolution(IK)(i,j)=mnI(m,n)K(im,jn)=mnI(im,in)K(m,n)2Dimageconvolution\small (f*g)(t)=\int f(\tau)g(t-\tau)d\tau=\int f(t-\tau)g(t)d\tau \\ \tiny{Continous \, convolution}\\{}\\ \small (f*g)(t)=\sum^{\infty}_{i=-\infty}f(i)g(t-i)=\sum^{\infty}_{i=-\infty}f(t-i)g(i) \\ \tiny{Discrete \, convolution} \\{}\\ \small (I*K)(i,j)=\sum_m \sum_n I(m,n)K(i-m,j-n)=\sum_m \sum_n I(i-m,i-n)K(m,n)\\ \tiny{2D \, image \, convolution}

일반적으로 CNN 모델 구조는 특징을 추출하기 위한 Convolution, Pooling 레이어와 decision making을 위한 Fully Connected 레이어로 구성되는 데 최근에는 FC 레이어를 최소화하는 경향이 있다.

  • 모델의 파라미터 수가 많을수록 학습이 어렵고 generalize 성능이 감소하는 이유이다
  • CNN 모델 아키텍처는 Convolution 레이어를 깊게 쌓으면서 파라미터 수를 줄이는 방향으로 발전 중이다
    • 1x1 Convolution을 활용한 Bottleneck architecture 사용

Convolution 파라미터 수 = (input_channel x kernel_width x kernel_height) x output_channel

Conv layer Arguments

  • Stride: output을 위해 input 데이터의 픽셀을 보는 간격
  • padding: output의 크기를 조절하기 위해 사용하며 주로 zero padding을 활용한다

CNN Model Architectures

CNN을 사용한 주요 Architecture들이 사용한 데이터셋은 ILSVRC(ImageNet Large-Scale Visual Recognition Challenge)이다.

  • 1 million 이상의 1000 클래스 데이터로 학습 데이터는 456,567장의 이미지가 있다

AlexNet

당시 GPU의 한계를 보완하기 위해 모델을 두 구조로 나누어서 학습을 진행한다. 모델은 다섯 개의 convolution 레이어와 3개의 FC 레이어로 구성되며 사용하는 kernel size는 11x11, 5x5, 3x3을 사용하고 추가적으로 다음과 같은 특징을 가진다.

  • ReLU activation 사용
  • GPU implementation
  • Local response normalization
  • Overlapping pooling
  • Data augmentation
  • Dropout

현재 많이 사용하는 특징들이 있지만 당시에는 딥러닝을 활용한 연구들이 부족한 상황에서 기준점을 제시해주었다.

VGGNet

모든 Convolution 레이어에서 3x3 kernel size를 사용하여 이전 모델들보다 더 깊은 19층까지 레이어를 쌓은 구조를 제안하였다.

  • Receptive field 개념을 제시함

GoogLeNet

다양한 kernel size를 사용하여 여러 output를 concatenate해서 사용하는데 이때 1x1 Convolution을 사용하여 전체적인 network의 파라미터 수를 줄인 구조를 제안하였다.

ResNet

일반적으로 파라미터 수가 많으면 overfitting이 발생할 가능성이 높다. ResNet에서는 identity map을 더하는 skip connection 구조를 제안하여 레이어를 100개가 넘는 깊은 모델을 제안하였고 이는 현재까지도 활용되고 있다.

  • 1x1 Convolution을 사용하는 Bottleneck 구조를 사용해 파라미터 수를 줄이고 네트워크는 깊게 쌓아서 receptive field를 키우는 방법을 제안

DenseNet

ResNet에서 identity map을 더하는 것이 아닌 concatenation 연산을 사용하는 방법을 제안하였다. 이때 채널 수가 기하급수적으로 증가하는 문제점은 1x1 Convolution을 사용하는 Transition Block을 사용하여 보완하고자 하였다.

0개의 댓글