[모두를 위한 딥러닝1] Lec 11 - Convolutional Neural Network(CNN)

YSL·2021년 7월 7일
0

Convolutional Neural Network(CNN)

: 합성곱 신경망


1. Conv Layer 만들기

  1. start with an image(width * hight * depth)
    : 이미지 입력받기
  2. Let's focus on a small area only
    : 하나의 이미지를 전체 입력으로 받지 않고, 이미지의 일부분만 우선 처리
    => "filter"
  3. Get one number using the filter
    : by [Wx + b] or [ReLU(Wx + b)]
  4. Let's look at other area with the same filter


  • How many numbers can we get ?
    이 과정에서 구할 수 있는 출력값의 크기(Output size)는 [( N - F ) / Stride + 1 ]
    이때 N: input 수, F: filter 수, Stride: 이동할 칸의 수를 의미함

    ex)
    N = 7, F = 3, Stride = 1일 때 -> 5 x 5 output을 얻음
    N = 7, F = 3, Stride = 2일 때 -> 3 x 3 output을 얻음

위 과정을 거치면서 하나의 큰 Input이 점점 크기가 작아지고 이때 정보를 잃는 문제가 발생할 수 있음
=> "padding"을 통해 보완할 수 있음

  • padding을 사용하는 이유
    1. 입력의 크기가 작아지는 것 방지
    2. 입력 이미지의 모서리를 NN에게 알려주기 위해

2. Pooling

= sampling

  • input image를 filter 과정을 통해 conv layer들을 구한 후, 한 layer씩만 추출하여 resize 하는 과정

3. Fully Connected layer (FC layer)

  • 여러 번의 [convolution layer -> ReLU -> Pooling] 과정을 한 전체 값을 이용하여 Neural Network를 구성하는 과정


- CNN 사례 연구








  • 전체적인 깊이는 굉장히 깊지만 하나로 layer가 합쳐진다고 간주할 수 있음
    => layer 개수는 많지만 실제 학습하는 입장에서는 layer가 그렇게 깊지 않은 느낌으로 학습 가능함

  • 이미지뿐만 아니라 텍스트로 CNN으로 처리 가능함

0개의 댓글