<aside> 💡
</aside>
CNNconvolutional neural network은 합성곱을 사용하는 신경망입니다. 합성곱 신경망, 콘볼루션 신경망 이라고도 부릅니다. 이미지에 특징이 하나만이 있는 게 아니기 때문에 CNN의 한 층에 필터를 여 러 개 준비합니다. 그래서 셀로판지 필터와 달리 CNN 필터는 여러 색과 모양을 제거할 수 있습 니다. 과거에는 CNN 필터를 사람이 직접 설계했지만 최근에는 인공 신경망을 이용해 만듭니다. CNN를 한마디로 요약하자면 인공 신경망을 이용해 합성곱 필터를 학습하는 신경망입니다.

입력은 1 원본 이미지입니다. 2 합성곱 커널이 CNN에서 특징 추출의 주역으로 학습에 필요한 가중치를 갖고 있습니다. 책을 읽듯이 원본 이미지의 왼쪽 위부터 오른쪽으로 한 칸씩 커널을 옮 기고, 오른쪽 끝에 다다르면 한 칸 내려 다시 커널을 제일 왼쪽으로 옮겨줍니다. 원본 이미지와 커 널의 각각 위치를(여기서는 ○와 △) 곱해주고, 곱한 결과인 9개 숫자를 다 더해 값(여기서는 ☆) 을 출력합니다. 앞의 그림에서는 원본 이미지가 4×4, 커널이 3×3이므로 다음 그림과 같이 총 4 회 픽셀끼리의 곱셈 계산을 합니다.
CNN이 왜 중요할까? 고해상도 이미지(예: 4K UHD)는 약 840만 개의 픽셀로 구성됩니다. 일반 신경망으로 이를 처리하면 각 층마다 매우 많은 가중치가 필요해 연산량이 기하급수적으로 증가합니다. 이러한 문제를 해결하기 위해 합성곱(convolution) 연산이 도입되었습니다. 합성곱은 작은 크기의 필터를 이용해 이미지의 중요한 특징을 효율적으로 추출하는 기법입니다.
이해를 돕기 위한 비유: 색깔이 있는 투명 필름을 통해 특정 색상의 글자만 걸러내듯이, CNN은 이미지에서 중요한 패턴과 특징만을 선택적으로 추출합니다. 불필요한 정보는 제거하고 분류에 필요한 핵심 특징만 남기는 것입니다.
<aside>
특징 맵 ( feature map ) 합성 곱 의 결과 로부터 얻어지는 이미지 . 합성 곱 으로부터 얻어진 특징 이 그려진 이미지 라서 특징 맵 이라고 불 립니다 . 스트라이드 ( stride ) 커널 의 이동 거리
</aside>
CNN은 이러한 방식으로 이미지 판별에 유용한 특징을 자동으로 학습합니다. 여기서 특징 추출에 사용되는 작은 필터를 커널(kernel)이라고 합니다.


기존 모델은 모든 픽셀에 대해 가중치를 갖고 있습니다. 이미지 전체를 특징으로 이용하기 때문에 학습에 사용된 데이터에 관해서는 완벽에 가까울 정도로 특징을 잡아낼 수 있는데, 특징 위치가 바뀌게 되면 무용지물이 됩니다. 반대로 합성곱은 커널을 이미지 안에서 이리저리 움직이며 특징을 추출합니다. 볼 수 있는 시야는 좁아지는 대신, 위치와 무관하게 특징을 잡아낼 수 있습니다. 또 하나의 장점이 있습니다. 이미지 전체에 가중치를 두는 모델은 이미지 크기가 커지면 학습해야 하는 가중치 개수도 늘어나는데, CNN 커널 크기는 변화가 없습니다. 즉 커널을 사용하면 이미지 크기와 무관하게 학습해야 하는 가중치 개수가 같습니다. 학습할 가중치도 줄어들고, 특징의 위치에 대해 어느 정도 자유로워졌으니 두 마리 토끼를 다 잡은 셈이죠.
CNN은 합성곱을 사용하는 신경망입니다. 합성곱 신경망, 콘불루션 신경망 다양하게 불리고 있습니다. 이미지에 특징이 하나만 있는게 아니라서 CNN은여러 층의 필터를 사용하여 이미지를 분류합니다. 그래서 셀로판지 필터와 달리 CNN의 필터는 여러층의 색, 모양을 제거 할 수 있습니다. 과거에는 CNN필터를 사람이 직접 설계 했지만 최근에는 딥러닝을 이용하여 만들고 있습니다. CNN은 딥러닝을 이용해 합성곱 필터를 학습하는 신경망 입니다.

원본 이미지 (Input Image): 우리가 분석하고 싶은 사진입니다.
커널 (Kernel): '특징 돋보기'나 '필터'라고 생각하면 쉽습니다. 이 커널은 '수직선', '수평선', '특정 색상' 등 이미지의 아주 기본적인 특징을 찾아내는 역할을 합니다. 커널 안에는 학습을 통해 얻어진 **가중치(weights)**라는 숫자들이 들어있습니다.
연산 방식:
