CNN

김혜원·2023년 3월 7일
0

What is CNN and Deep Learning?

CNN

Convolutional Neural Networks

  • Usually used for image/video data processing in deep learning
  • Convolution이라는 전처리 작업이 들어가는 Neural Network model
  • DNN(Deep Neural Network)의 문제를 해결하기 위해 사용했다.
  • DNN: 1차원 data 사용하는데, 학습시간과 능률 효율성 저하됨.
  • CNN의 중요 포인트는 image전체가 아닌 부분, image의 pixel과 주변 pixel의 연관성을 살리는 것!

CNN's major concept

  • 2차원 image(pixel로 구성)
  • 2차원 image를 matrix로 표현할 수 있다. (오른쪽)
  • CNN에는 filter(kernel)이 존재, filter를 input image 모든 영역에 반복 적용해 패턴을 찾아 처리하는 것이 목적!!
  • Zero-Padding: filter통과해 손실되는 부분 0으로 채워줌
    Input image size(d1d2)
    Filter size(f1
    f2)
    Result image size: (d1-f1+1) * (d2-f2+1)
  • Stride(s):filter를 얼마만큼 움직여 주는가.
    Input image size(d1d2)
    Filter size(f1
    f2)
    Result image size: ((d1-f1)/s+1) * ((d2-f2)/s+1 )

CNN's network structure

Convolutional Layer와 Pooling Layer들을 활성화 함수 앞뒤에 배치해 만들어진다!!
완전연결계층(fully-connected layer);이전 계층 모든 뉴런과 결합되어 있는 affine계층으로 구현;과는 다르게 구성.

Convolutional Layer

  • Not image대상으로 여러 개(e.g. 10개)의 filter(kernel)을 사용해 (e.g. 10개의)결과값(feature mapping)을 얻는다. 도출한 결과값에 activation function(e.g. ReLU function)을 적용한다.
  • Convolutional Layer = convolution + activation
  • Activation Function(활성함수)
    Linear function인 convolution에 nonlinearity를 추가하기 위해 사용.

Pooling Layer


pooling은 각 결과값(feature map)의 dimentionality를 축소해 주는 것을 목적으로 한다. correlation이 낮은 부분을 삭제해 각 결과값의 크기(dimension)을 줄이는 과정이다.
e.g. Max pooling, Average pooling

2'nd Convolutional Layer, 2'nd Pooling Layer

  • Tensor convolution을 적용한다. 이전의 pooling layer에서 얻어낸 tensor를 대상으로 tensor filter를 사용해 결과값을 얻어낸다.
  • 전과 같은 방식으로 pooling해 더 크기가 작아진 결과값을 얻는다.

Flatten(Vectorization)

4420의 tensor를 일자 형태의 data로 펼쳐 vector형태로 만든다.
1차원 data로 변형해도 2번의 pooling 후 얻어진 값들은 이미지 보다는 입력된 이미지에서 얻어온 특이점 data가 된다. 1차원 vector data로 변형해 주어도 무관한 상태이다.

Fully-Connected Layers(Dense Lyers)

하나 또는 하나 이상의 fully-connected layer를 적용하고, softmax activation function을 적용해 최종 결과물을 출력한다.

Parameter(매개변수)와 Hyper-Parameter

  • Model parameter는 model 내부에 있으며, 데이터로부터 값이 추정될 수 있는 설정변수(configuration variable)이다.
  • Model hyper-parameter는 model 외부에 있으며, 데이터로부터 값이 추정될 수 없는 설정변수이다.
  • Deep Learning은 parameter들을 최적 값으로 빠르고 정확하게 수렴하는 것을 기본으로 한다. 어떻게 model의 parameter들을 최적화 시키냐는 것이 model training의 key point!!!
  • 좋은 hyper-parameter를 찾는 것이 중요하며, ‘tune hyperparameter’라 표현한다.

학습 가능한 parameter의 수

  1. 1’st convolution에서 5*5 filter 10개 사용 -> 250개 parameter 존재.
    Pooling layer는 단순히 크기 줄이는 개념으로, no parameter.
  2. 2’nd convolutiondptj 5510 tensor 20개 사용 -> 5,000개 parameter 추가.
  3. 2 fully-connected layer에서 각각 32,000, 1,000 parameter 추가.
    =>total 38,250 trainable parameter

Hyper-parameter

CNN model에서 튜닝 가능한 hyper-parameter
1. Convolutional layers: filter num, filter size, stride값, zero-padding 유무
2. Pooling layers: pooling 방식(Max pooling, Avg. pooling), pool 크기, pool stride 값(overlapping)
3. Fully-connected layers: 넓이(width)
4. Activation function(활성함수): ReLU, SoftMax, Sigmoid
5. Loss function: Cross-entropy for classification, L1,p2 for regression
6. Optimization algorithm: SGD, SGD with momentum, AdaGrad ,RMSprop
7. Random initialization: Gaussian or uniform, Scaling

참고링크

0개의 댓글