ML lec(이론) 11-1 - CNN introduction

박성재·2020년 12월 16일
0

출처: 모두를 위한 딥러닝 강좌 시즌 1 by Sung Kim

Fully Connected Layer 참고: https://sonofgodcom.wordpress.com/2018/12/31/cnn%EC%9D%84-%EC%9D%B4%ED%95%B4%ED%95%B4%EB%B3%B4%EC%9E%90-fully-connected-layer%EB%8A%94-%EB%AD%94%EA%B0%80/


Convolutional Neural Network

CNN은 고양이의 신경 세포가 시각 자극의 특성에 따라 차별적으로 반응하는 것에 아이디어를 얻어서 창안된 모델이다.

CNN 구조

CNN은 위 그림과 같이 여러 개의 convolutional layer로 구성되어 있으며 마지막에 fully connected layer를 통해 labeling할 수 있다.

cf) FC(fully connected) layer

  • 이전 레이어의 모든 노드가 다음 레이어의 모든 노드에 연결된 레이어를 뜻함
  • dense layer라고도 함

Convolutional layer

그렇다면 Convolutional layer는 어떻게 구성되는 것일까?

이미지는 이미지의 가로 세로 크기에 따라서 데이터의 크기가 다르며, 색상값을 1개(흑백)만 가지고 있을 수도 있고, 3개(rgb)를 가지고 있을 수도 있다.
(예: 32x32x3, 64x64x1)

  • convolution은 임의로 설정한 filter 사이즈에 해당하는 데이터의 정보를 압축해 하나의 값으로 만드는 과정을 포함한다.
  • 전체 데이터가 filter를 거치고 나면 feature map(activation map)이 추출되며, 이 filter map에 다시 activation function을 적용할 수 있다.

Feature Map Size

그렇다면 전체 데이터에 대해서 filter를 적용하고 나면 얻게 되는 feature map의 크기는 어떻게 알 수 있을까?

이는 간단한 식을 통해 계산할 수 있다.

입력 데이터의 크기 = NxN
filter의 크기 = FxF
filter가 한 번에 움직이는 보폭을 뜻하는 stride = s

이때 feature map의 크기
= {(NF)/s+1}2\{(N-F)/s+1\}^2

예를 들면, 7x7 데이터에 stride가 1, 크기가 3x3인 filter를 적용하면 5x5 사이즈의 feature map을 결과로 얻게 되는 것이다.

cf) 이미지 사이즈와 필터 사이즈에 따라서 적용할 수 있는 stride가 다르다.(나누어 떨어져야 하므로)

이렇듯, filter를 적용하고 나면 얻어지는 feature map의 크기는 원래 데이터의 크기보다 작아지는데, 이는 정보의 손실을 의미한다.

  • 따라서 위와 같이 0으로 채워진 패딩을 추가해서 사용하기도 한다.
  • 이 때는 padding을 고려한 이미지 사이즈를 같은 공식에 넣어서 feature map 사이즈를 구하면 된다.
  • 위 그림과 같은 경우, 원래의 데이터 크기와 같은 7x7 사이즈의 feature map을 얻게 된다.
  • 보통 이렇게 원래의 데이터 크기와 같은 크기를 얻도록 하는 padding 사이즈를 사용하는 것이 일반적이라고 한다.

Many filters

우리는 지금까지 filter를 하나 사용하는 예시를 통해 Convolutional layer 생성 과정을 알아보았다.

그런데 convolutional layer를 만들 때에는 보통 위 그림과 같이 filter를 여러 개 적용해서 여러 개의 feature map(activation map)을 얻게 된다.

Many CNN layers

Convolutional layer는 activation function과 함께 적용할 수 있으며, 위 그림과 같이 여러 번의 작업을 거쳐 여러 개의 Convolutional layer를 만들 수 있다.

  • convolutional layer를 구성할 때에도 가중치가 필요하다.
  • 필요한 가중치의 개수는 필터의 개수와 크기, 채널의 수(색상)을 곱해서 구할 수 있다.
  • 이때 사용되는 가중치 또한 적절한 초기화를 통해 주어지며, 학습을 통해 그 값이 변화하게 된다.

0개의 댓글