Home CNN-1
Post
Cancel

CNN-1

Intro


  • convolutional Neural Network
  • 합성곱 신경망

why CNN so Successful?


  • similar to simple and complex cells in V1 area of visual cortex
    • david h.hubel, torsten wiesel 노벨상 탐
  • feature extraction + classification

hierarchical representations


Honglak Lee and colleagues (2011) as published in “Unsupervised Learning of Hierarchical Representations with Convolutional Deep Belief Networks”

  • 레이어가 깊어질수록 전체의 특징을 보게됨

Pre-Trained CNNs


  • 보통 만들어진 모델을 활용하여 사용한다.
  1. Transfer learning
    • 파라미터를 고정한 상태로 아웃 레이어만 수정함 ( 분류 크기 )
  2. Fine tuning
    • backpropagation을 통해 튜닝하여 사용함

bayesian model

  • 베이지안 모델을 이용하여 모델을 정할 수 있다.
    • 위에서 무슨 모델을 사용할지 정하는 과정
    • learning to select pre-trained deep representations with bayesian evidence framework 라는 논문을 참고해보자.

CNN


Convolution


  • cnn에서는 가중치를 공유해서 사용한다.
    • 이를 필터/커널이라 부른다.
  • 합성곱 연산은 다음과 같다.

  1. 필터를 들어온 행렬에 원소끼리 곱해준다.
  2. 그 값들을 더해서 출력 행렬에 값을 정한다.
  3. 이동하여 반복한다.
  • input M1×M2M_1 \times M_2과 filter f×ff \times f 의 결과 행렬은
    (N1f+1)×(N2f+1) (N_1-f+1) \times(N_2-f+1)

https://towardsdatascience.com/intuitively-understanding-convolutions-for-deep-learning-1f6f42faee1

가중치는 필터가 적용된 후 나온 행렬의 모든 원소에 더한다.

Padding


  • 합성곱을 진행하면 결과 값의 크기가 작아진다.
  • 만약 크기를 유지하고 싶다면 padding을 이용한다.

  • 보통 0으로 값을 채우는 zero padding을 사용한다.
  • 처음 5x5 행렬이 유지되는 것을 확인할 수 있다.

Strided Convolution


  • 필터가 이동할 때 간격을 이야기한다.

  • 왼쪽은 stride 가 1일 때, 오른쪽은 2일 때이다.

Multi-Channel


  • 기본적으로 이미지는 채널이 여러 개이다.
    • 기본적으로 rgb만 해도 3차원이다.
  • 합성곱을 계산하기 위해서는 필터 또한 채널 크기의 깊이를 가져야 한다.

  • 계산 과정은 아래의 이미지를 참고하자.


https://towardsdatascience.com/

  • 만약 필터의 개수가 K개이면 결과 값이 K개의 채널을 가지게 된다.
  • 채널의 길이를 조정할 때는 1x1 Convolution을 사용한다.

1 x 1 Convolution


  • 1x1 convolution은 기존 input의 크기를 그대로 출력한다.
  • 이에 필터의 개수를 조절하여 output의 channel 길이를 조절한다.

Pooling


  • 합성곱 층 이후 풀링한다.

    • 특성 맵을 다운 샘플링하여 크기를 줄인다.
  • 두 가지 방법이 있다.

    1. max pooling
    2. average pooling
  • 주로 max pooling이 사용된다.

    • 그림처럼 최대 값을 취하는 방식이다.
  • 채널마다 독립적으로 수행된다.

    • 즉 채널 길이가 유지된다.

LeNet-5 에 적용해보자


http://vision.stanford.edu/cs598_spring07/papers/Lecun98.pdf

  1. 32 x 32 입력이 들어온다.
  2. 합성곱
    • 필터 : 5x5 , s=1, 개수 = 6
    • 결과 : 28 x 28 x 6
  3. max pooling
    • 2 x 2
    • 결과 : 14 x 14 x 6
  4. 합성곱
    • 필터 : 5 x 5, s=1, 개수 = 16
    • 결과 : 10 x 10 x 16
  5. max pooling
    • 2 x 2
    • 결과 : 5 x 5 x 16 = 400
  6. Full connection
    • 400 x 120 x 84 x 10 ( output )
This post is licensed under CC BY 4.0 by the author.