[DL 기본] - 1) CNN

cherry·2024년 6월 25일
1

Naver AI Precourse

목록 보기
16/21

Convolution

1) Convolution 계산

CNN(Convolutional Neural Networks)은 이름에서도 알 수 있듯이 convolution이 중요한 과정이다.

그렇다면 convolution은 무엇인가? https://velog.io/@cherrykim/CNN-첫걸음 이부분에서도 간략하게 다루었었다. 다시 한번 식 첨부하자면 다음과 같다.

이것이 실제 적용된 모습을 그림을 통해 표현하면 다음과 같다. 마치 커널을 이미지 데이터 위에 도장을 찍는 듯한 형상이다. 도장을 하나 찍으면 output이 하나가 나오는 형태이다.

그리고 하나씩 옮겨가며 쭉쭉쭉 계산하게 된다.





2) Convolution 예시

하나의 이미지 데이터에도 어떤 filter(=kernel)를 사용하느냐에 따라 convolution 결과가 다음과 같이(blur, emboss, outline etc.) 상이하다.

구체적인 예를 들자면, 3*3 filter에서 각 셀이 1/9을 갖는다고 생각해보자. 그렇다면 convolution 결과는 9개 픽셀 값을 평균낸 효과를 얻을 것이고, 이는 Blur 효과와 유사할 것이다.





3) Convolution Parameter

Convolution filter의 size와 총 parameter 수를 공식으로 나타내면 다음과 같다.

필터의 크기 = khkwCink_{h} * k_{w} * C_{in}
총 파라미터 수 = (khkwCin)Cout+Cout(k_{h} * k_{w} * C_{in}) * C_{out} + C_{out}

  • khk_{h}: 필터의 높이(height)
  • kwk_{w}: 필터의 너비(width)
  • CinC_{in}: 입력 채널 수
  • CoutC_{out}: 출력 채널 수
    (참고) CoutC_{out}: 각 출력 채널마다 하나의 편향 파라미터가 존재하므로 마지막에 bias parameter를 더해줌.

위 과정을 보다 친절하게 이미지를 통해 설명하자면 다음과 같다.

1) 입력 채널의 수와 filter의 채널 수는 같아야 한다. 이 때 output size(입력 채널) - (filter) + 1 이다.

2) 여러개의 channel을 갖는 convolutional feature map을 만들기 위해서는 output 채널 수 만큼 filter가 여러개 있어야 한다.

즉, 이를 쌓으면 다음과 같은 모양이 된다.





4) CNN의 구성

CNN은 convolution layer, pooling layer(e.g., max pooling, average pooling), fully connected layer로 이루어져 있다.

  • Convolution & Pooling Layers: Feature Extraction
  • Fully Connected Layer: Decision Making (e.g., classification)

(참고) 우리가 새로운 아키텍쳐를 만나면 해야할 일은?
이 네트워크의 layer마다 몇개의 파라미터로 이루어져있고, 전체 파라미터는 몇개인지 감을 갖고 있는게 중요하다.

(참고) 머신러닝 발전 방향성
파라미터 수는 줄이고 convolution layer는 deep하게!
머신러닝에서 내가 학습하고자하는 모델의 파라미터 수가 늘어날수록 주로 학습이 어렵고 generalization performance가 떨어지기 때문이다.





5) 그 외의 개념: Stride, Padding

1. Stride

  • 개념
    Stride는 필터가 입력 데이터 위를 이동하는 간격을 의미한다.

  • 공식
    출력크기=(입력크기필터크기스트라이드)+1출력 크기 = (\frac{입력크기 - 필터크기}{스트라이드}) + 1

2. Padding

  • 개념
    Padding은 입력 데이터의 가장자리에 추가적인 값을 채워 넣어 입력 데이터의 크기를 인위적으로 늘리는 기법이다.
    이를 통해 1) 출력 데이터의 크기를 입력 데이터와 동일하게 유지하거나 2) 입력데이터의 가장자리 정보도 충분히 고려할 수 있게 된다.

출처: https://amber-chaeeunk.tistory.com/24





6) 파라미터 수 계산하기

AlexNet으로 파라미터 수를 계산해보자.
대표적으로 convolution layer와 dense layer 하나씩 보여주겠다!
아래 수식은 마지막 화살표 값 계산하는 방법이다.

위 예시에서 알 수 있는 사실은 파라미터 수: convolution layer <<< dense layer 라는 것이다! 그 이유는 이미 알다시피 convolution layer는 하나의 커널이 모든 위치에 대해 동일하게 적용되는 shared parameter이기 때문이다. 따라서 parameter를 줄이는 것이 중요하다면 fully connected layer는 최소화하고 convolution layer를 늘려야 한다. 그렇게 함으로써 최종적으로 parameter수는 줄이고 NN depth는 늘어나게 된다!

profile
Physics Informed Machine Learning 천재만재

0개의 댓글