知/job지식

CNN(Convolution Neural Network)

콰트로로켓단 2024. 5. 2. 08:00
728x90

 

목차 열기

 

개요

MLP에서 미처 말하지 못했지만, MLP같이 완전히 서로 연결되어 있는 Fully Conneted Layer이라 한다. 이것의 단점은 훈련할 파라미터(가중치와 편향)의 개수가 많다는 것이다. 입력의 개수를 N이라 했을 때 레이어의 퍼셉트론 개수를 O라 하면 (N+1) O가 파라미터의 수이다. 인풋이 이미지라고 생각해 보면 입력의 개수는 가로세로 256X256이어도 이미지는 색이 존재해 3채널(R,G,B)로 있어 256X256X3개이다. 퍼셉트론의 수가 곧 분석 도구의 개수이니 초반부터 개수를 줄이기 힘들다. 

이를 극복할 방법중 하나로 CNN을 사용할 수 있다. 합성곱 신경망이라고도 부르는 CNN은 2개의 차원(가로, 세로)의 정보를 조합할 수 있어 MLP에 입력하기 위한 Flatten으로 손실되는 정보를 잃지 않을 수 있다.

 

어떻게 생겼나?

대략적으로 위에서도 이야기 했듯 가로, 세로 정보를 그대로 가져오기 위해 CNN은 하나의 Layer의 모양이 이미지같이 만들면 된다. 이미지 같이 가로 세로로 배치해도 MLP같이 계산되어 버리면 똑같이 파라미터가 증가한다. 이에 convolution(합성곱)을 진행한다. 단순히 합성곱을 하려면 이미지 크기와 Layer의 크기가 똑같아야 하지만, Layer의 크기(가로, 세로)는 작게 하며 이미지를 훑으며 진행하는 방식이다. 훑는 방식을 Sliding Window라고 한다.

Sliding 하며 한 칸(이미지에서는 픽셀)씩 움직이면서 또는 여러 칸씩 움직일 수 있다. 이 움직이는 단위를 stride라고 한다.

CNN 진행 1
Convolution(합성곱) 한 번 진행
cnn window slide 1cnn window slide 2

 

위 짤 처럼 진행이 되는데 방식이 필터로 거르는 과정 같아 filter라고 지칭을 많이 한다. 필터는 곧 weight와 bias다.

 

파라미터의 개수는?

그럼 파라미터의 수는 몇 개일까? 하기 전에 bias는 MLP에서는 뉴런당 한 개였지만 CNN에서는 필터당 한 개다. 

Filter의 가로(w),세로(h)를 곱한 면적과 입력 값의 채널(c)(RGB이미지라면 3)는 하나의 필터고 여기에 bias 한 개가 추가된다. 그렇다면 필터 한 개만 있다면 아웃풋의 채널 또한 1개가 될 것이다. 필터의 개수(F)는 곧 해석할 수 있는 도구이라는 점을 기억하고 하나의 레이어에 여러 필터를 설정하게 된다. 최종적으로 하나의 레이어의 파라미터 수는 (w * h * c +1) F가 된다. 필터의 개수가 곧 아웃풋의 크기였던 MLP에 비해 아웃풋의 모양을 잡긴 위해서는 필터의 개수와 Padding 및 Stride 수 가 중요해진다. 

Padding은 위 고양이 짤로도 눈치챈 사람도 있겠지만, 오직 사진만 가지고 stride 1로 진행시 아웃풋의 면적은 이전 가로 세로에서 1만큼 작아졌을 것이다. 이는 필터의 면적에도 영향을 받는다. 아웃풋은 원래 이미지크기(W x H)에서 (W-w+1 x H-h+1)같이 된다. 이와 같이 필터의 크기만큼 감소할 수밖에 없기 때문에 외곽 쪽의 정보손실이 발생될 것을 우려해 임의의 수를 채워 넣는 것을 Padding이라 한다. 

0을 채워 넣으면 zero-Padding 평균을 넣으면 Average-Padding이라고 한다. 

 

MLP 비교

마지막 정리로 훈련시킬 파라미터 비교 정리이다.

CNN은 입력의 면적와 무관한 자신의 필터의 크기와 입력의 채널, 필터의 개수로 (w * h * c +1)F가 되지만, FC는 입력의 개수와 매우 연관되어 입력의 개수(N)와 퍼셉트론의 개수(F)로 (N+1)F가 된다.

또한 FC Layer는 공간 정보가 손실되지만 CNN은 살아있다만 기억하면된다.

 

14년도 까지는 이 정도여도 괜찮지만 공간 정보는 모델의 구조를 잘 구성하면 MLP로도 살릴 수 있으며, ViT로도 넓은 영역을 더 잘 찾을 수 있고 다른 구조로도 잘 얻을 수 있다. 여기서 얻을 직관과 생각해 볼 것은 계산방식의 변경으로 파라미터를 줄일 수 있다는 것과, 필터라고 부르는 이유를 다시 한번 고민해 보는 것이다.  

 

로이

안녕하세요, 콰트로 로켓단 로이 입니다.

더 많은 내용이 포함되면 좋지만 분량을 조절하지 못할 것을 알아 급하게 마무리 지었네요.

조금 더 간단하면서 글을 이해하기 쉽게 쓰도록 노력해보겠습니다.

 

 

 

 

728x90

' > job지식' 카테고리의 다른 글

Weight initialization  (0) 2024.05.15
Resnet 직관  (0) 2024.05.05
활성화함수(Activation Function)  (1) 2024.04.27
MLP(Multi-Layer Perceptron)의 직관  (0) 2024.04.24
Perceptron 이란  (0) 2024.04.22