95. 합성곱 신경망 (CNN, Convolutional Neural Network)
⚠️ 이 문서는 인공지능이 강아지와 고양이 사진을 구별하게 만들 때, 기존의 일반적인 인경신경망(MLP)처럼 사진을 한 줄짜리 긴 1차원 숫자로 찢어발겨 입력하면 '눈, 코, 입의 공간적 위치 관계'가 완전히 파괴되어 바보가 되는 치명적 문제를 해결하기 위해, **돋보기(필터)를 들고 2차원 사진의 가로세로를 슥슥 훑으며 지나가면서 픽셀의 상하좌우 '공간적 패턴(모서리, 질감)'을 도장 찍듯 그대로 추출해 내어 시각 지능(Vision AI)의 대폭발을 이끈 '합성곱 신경망(CNN)'**을 다룹니다.
핵심 인사이트 (3줄 요약)
- 본질: 이미지를 분석할 때 전체를 한 번에 통째로 보는 것이 아니라, 아주 작은 $3 \times 3$ 크기의 도장(필터/커널) 수십 개를 이미지 전체에 촘촘하게 찍어대며 '가로선', '세로선', '동그라미' 같은 특징(Feature)들만 모아서 압축된 요약본(Feature Map)을 만들어내는 기술이다.
- 가치: 기존 방식으로는 100만 화소 사진 1장에 뉴런 1조 개가 필요해 컴퓨터가 터졌지만, CNN은 파라미터 공유(Parameter Sharing) 기법을 써서 단 수천 개의 가중치만으로도 위치가 어디든 상관없이 고양이의 귀를 찾아내는 미친 효율성과 위치 불변성(Translation Invariance)을 달성했다.
- 기술 체계: 특징을 도장 찍어 추출하는 합성곱(Convolution) 층과, 불필요한 픽셀을 과감하게 버리고 해상도를 반토막 내어 압축하는 풀링(Pooling/Subsampling) 층을 번갈아 겹겹이 쌓은 뒤, 맨 마지막에 1차원(FC Layer)으로 펼쳐서 "이건 99% 고양이다"라고 결론을 내는 구조다.
Ⅰ. 다층 퍼셉트론(MLP)의 1차원적 붕괴와 한계
사진을 국수 가락처럼 길게 늘이면 눈코입의 위치 정보가 박살 난다.
- 공간 정보(Spatial Information)의 상실:
- 강아지 사진이 $28 \times 28$ 픽셀의 2차원 사각형 뭉치라고 하자.
- 기존의 전통적 딥러닝(MLP, Fully Connected Layer)에 이 사진을 넣으려면, 사각형을 가위로 잘라서 길게 이어 붙여 $784(28 \times 28)$개의 한 줄짜리 국수 가락(1차원 벡터)으로 쭉 펴서 입력층 784개 구멍에 쑤셔 넣어야 한다.
- 이렇게 되면, 위쪽 픽셀(눈)과 그 바로 밑의 픽셀(코)은 2차원 평면에서는 딱 1픽셀 거리로 찰떡같이 붙어있었는데, 1차원으로 길게 펴는 순간 28칸 뒤로 멀리 떨어져 버린다. AI는 "눈 밑에 코가 있다"는 공간적 단서를 영원히 잃고 눈뜬장님이 된다.
- 가중치 폭발 (Curse of Dimensionality):
- 만약 4K UHD 해상도 사진($3840 \times 2160 \times \text{RGB 3색}$)을 기존 방식으로 분석하면 입력 노드만 2,400만 개다. 은닉층 1개만 둬도 곱해야 할 가중치($W$)가 수조 개가 넘어가 램 100GB짜리 슈퍼컴퓨터도 0.1초 만에 뻗어버린다.
📢 섹션 요약 비유: 피카소의 그림을 AI에게 보여주는데, 그림의 캔버스를 그대로 들이미는 게 아닙니다. 가위로 그림을 가로 1mm 두께로 1,000조각으로 길게 자른 다음(1차원으로 펴기), 그 조각들을 일렬로 길게 묶어서 뱀처럼 만들어 AI에게 던져줍니다. AI는 길게 이어진 색깔 띠만 보고 이게 코인지 눈인지 절대 맞출 수 없습니다. 그림은 평면(2차원) 공간 자체로 봐야만 의미가 있습니다.
Ⅱ. CNN의 핵심: 합성곱(Convolution)과 돋보기 필터
1차원으로 자르지 마라! 돋보기를 들고 평면 위를 훑어라.
- 필터/커널 (Filter / Kernel):
- CNN은 사진을 자르지 않고 2차원 그대로 둔다.
- 대신 $3 \times 3$ 픽셀 크기의 작은 네모난 '도장(필터)'을 하나 판다. 이 도장에는 '가로선'을 기가 막히게 찾아내는 마법의 수학 공식(가중치 행렬)이 묻어 있다.
- 합성곱 연산과 훑기 (Sliding Window):
- 이 $3 \times 3$ 도장을 사진의 맨 왼쪽 위 구석에 쾅! 찍어 수학적으로 곱하고 더한다(합성곱). 그리고 도장을 오른쪽으로 1칸(Stride=1) 스윽 이동시켜서 또 쾅! 찍는다. 이렇게 사진 전체를 돋보기 훑듯이 쫙 스캔한다.
- 도장이 스캔을 끝내면, 원본 사진에서 '가로선'만 형광펜으로 칠해놓은 것 같은 쭈글쭈글한 요약본 지도(특징 맵, Feature Map)가 1장 툭 튀어나온다.
- 가중치 공유 (Parameter Sharing):
- 여기서 CNN의 기적이 일어난다. 고양이 귀를 찾는 $3 \times 3$ 도장(가중치 9개) 하나만 있으면, 고양이 귀가 사진 왼쪽 끝에 있든 오른쪽 끝 구석에 숨어있든 돋보기가 훑고 지나가며 귀신같이 찾아낸다.
- 위치가 달라도 똑같은 특징을 잡아내는 이 특성을 **'위치 이동 불변성(Translation Invariance)'**이라 하며, 파라미터를 수백만 개에서 단 9개로 압축한 비결이다.
📢 섹션 요약 비유: 범죄 현장(사진)의 바닥에서 머리카락(특징)을 찾아야 합니다. 기존 방식(MLP)은 바닥 타일을 다 뜯어서 1열로 길게 세워놓고 1만 명의 경찰이 타일 하나씩을 현미경으로 보는 무식한 짓입니다. CNN은 똑똑한 형사 1명이 '머리카락 탐지용 마법의 돋보기(3x3 필터)' 하나만 달랑 들고, 현장 바닥을 가로세로로 쓱쓱 훑고 지나가면서(합성곱 연산) 단 5분 만에 머리카락 있는 위치만 콕 집어내어 요약 지도(Feature Map)를 그려내는 천재적인 수사 기법입니다.
Ⅲ. 풀링(Pooling) 계층과 예측의 완성
필요 없는 픽셀은 쳐내고, 핵심만 뭉쳐서 뇌로 보낸다.
- 풀링(Pooling/Subsampling)의 공간 압축:
- 도장을 수백 번 찍어 요약 지도(Feature Map)를 만들었지만, 여전히 쓸데없는 픽셀이 너무 많고 데이터가 무겁다.
- 그래서 합성곱 층 뒤에 **'풀링 층'**이라는 가위질 담당을 세워둔다.
- Max Pooling(최대 풀링): 지도에서 $2 \times 2$ (총 4칸) 구역을 딱 잡고, 4개의 숫자 중 가장 크고 자극적인 숫자(가장 특징이 뚜렷한 픽셀) 딱 1개만 살려두고 나머지 3개 픽셀은 미련 없이 쓰레기통에 버린다.
- 이 짓을 하면 지도의 가로세로 크기(해상도)가 정확히 $1/2$로 반토막 나며 용량이 4배 줄어들어 컴퓨터 연산 속도가 미친 듯이 빨라진다.
- CNN의 전체 아키텍처 흐름:
[원본 사진] -> [합성곱(돋보기 훑기)] -> [풀링(반토막 압축)] -> [합성곱] -> [풀링]을 50번쯤 겹겹이 샌드위치처럼 반복하며 깊게(Deep) 뇌 속으로 파고든다.- 처음 얕은 층에서는 선과 점(테두리)만 보이다가, 깊은 층으로 갈수록 눈, 코, 고양이 얼굴이라는 고차원적인 조각으로 조립된다.
- 완전 연결 층 (FC Layer, Fully Connected) 마무리:
- 수십 번 압축되어 고양이의 정수만 남은 찐득한 작은 데이터를 맨 마지막 단계에서 마침내 1차원 국수 가락으로 쭉 편다(Flatten).
- 그리고 기존의 인공신경망 뇌세포에 넣고 "결론! 이 사진은 98% 확률로 고양이다!"라고 최종 판결(Softmax)을 내린다.
📢 섹션 요약 비유: 화질이 4K UHD인 고양이 사진을 CNN 뇌로 밀어 넣습니다. 1번 필터망이 훑어서 '털실 뭉치 질감'을 찾아냅니다. 그 뒤에 서 있는 풀링(가위질 담당)이 화질을 HD급으로 깎아버리며 용량을 줄입니다. 2번 필터망이 HD 사진을 훑어 '뾰족한 귀'를 찾아냅니다. 풀링이 다시 화질을 폴더폰급 화질로 깎아버립니다. 마지막에 화소는 다 깨져서 모자이크 덩어리지만, 고양이의 핵심 유전자(정수)만 꽉꽉 뭉쳐진 그 블록 덩어리(Feature Map)를 보고 판사(FC Layer)가 "이건 빼박 고양이네!"라고 도장을 찍는 시각 압축 판독 시스템입니다.