96. 합성곱 층 (Convolution Layer) - 필터 스캐닝 특징 추출

⚠️ 이 문서는 이미지 인식 딥러닝 모델(CNN)의 심장부로서, 사람이 개와 고양이를 구별할 때 눈과 코의 모양(특징)을 무의식적으로 잡아내는 과정을 기계적으로 모방하기 위해, **마법의 돋보기(필터/커널)를 사진 위에 올려놓고 가로세로로 슥슥 훑고 지나가며 픽셀들의 수학적 패턴(테두리, 선, 질감)을 도장 찍듯 꽝꽝 추출해 내어 압축된 보물 지도(특징 맵)를 만들어내는 핵심 연산 계층인 '합성곱 층(Conv Layer)'**을 다룹니다.

핵심 인사이트 (3줄 요약)

  1. 본질: 이미지를 1차원(한 줄)으로 길게 펴서 공간적 위치 정보를 다 부숴버렸던 과거 모델(MLP)과 달리, 2차원 사각형 픽셀 배열을 그대로 유지한 채 $3 \times 3$ 크기의 작은 필터를 슬라이딩(이동)시키며 주변 픽셀들 간의 관계(공간 정보)를 그대로 보존하는 연산이다.
  2. 가치: 파라미터 공유(Parameter Sharing)를 통해 $3 \times 3$(가중치 9개) 필터 하나만 있으면 화면 왼쪽 구석의 고양이 귀든, 오른쪽 구석의 귀든 똑같이 귀신같이 잡아낸다. 수십억 개의 가중치(메모리 폭발)가 필요했던 이미지 분석을 단 수백 개의 가중치만으로 해치우는 미친 효율을 자랑한다.
  3. 기술 체계: **필터(Filter)**가 원본 이미지의 픽셀들과 짝지어 곱하고 더하는 합성곱 연산을 수행하며, 이 필터가 몇 칸씩 뛸 것인지 정하는 스트라이드(Stride), 그리고 모서리 픽셀의 정보 유실을 막기 위해 이미지 겉에 0을 덧대는 **패딩(Padding)**이라는 3대 파라미터로 조율된다.

Ⅰ. 필터(Filter)의 기적: 특징(Feature)을 캐내는 마법의 도장

컴퓨터는 색깔을 보지 않는다. 오직 픽셀 숫자의 단차(선)를 볼 뿐이다.

  1. 필터(=커널)의 원리:
    • $3 \times 3$ 크기의 작은 네모난 유리판(필터)이 있다. 이 유리판 안에는 9개의 수학적 가중치 숫자($W$)가 미리 적혀 있다.
    • 예를 들어, 세로선을 찾는 필터는 왼쪽에 양수(1), 중간에 0, 오른쪽에 음수(-1)가 박혀있다.
  2. 합성곱(Convolution) 연산 (곱하고 더하기):
    • 강아지 사진(픽셀 숫자의 판) 맨 왼쪽 위 구석에 이 $3 \times 3$ 필터를 겹쳐 올린다.
    • 사진의 픽셀 숫자와 필터의 가중치 숫자가 겹치는 9칸을 각각 짝지어 곱한 뒤, 9개의 값을 몽땅 하나로 더해버린다(내적 연산).
    • 만약 그 9칸의 사진에 '세로선' 모양의 이미지가 있었다면, 필터와 찰떡궁합으로 반응해 결과값이 +100처럼 빵 터지게 나온다. 가로선이었다면 결과가 0이 되어 묵음 처리된다.
  3. 특성 맵 (Feature Map)의 탄생:
    • 필터 도장을 한 칸 찍어서 나온 +100이라는 숫자 하나를 새로운 도화지의 1번 칸에 적는다.
    • 이렇게 필터가 사진 전체를 훑고 지나가면, 원본 강아지 사진은 사라지고 **"세로선이 존재하는 위치만 형광펜으로 밝게 칠해진" 새로운 요약 지도(Feature Map)**가 1장 완성된다. 이 지도가 다음 층(Layer)의 뉴런으로 넘어가는 핵심 단서가 된다.

📢 섹션 요약 비유: 위폐 감별기(필터)와 같습니다. '5만 원짜리 홀로그램'을 찾는 기능이 탑재된 돋보기(필터)를 쥐고 큰 종이(이미지) 위를 슥슥 훑고 지나갑니다. 종이에서 홀로그램 잉크가 발라진 위치를 지날 때만 돋보기에서 "삐빅!" 하고 요란한 소리(높은 결과값)가 납니다. 이 소리가 난 위치만 빈 종이에 점으로 콕콕 찍어서, 오직 홀로그램 위치만 표시된 새로운 암호 지도(Feature Map) 1장을 찍어내는 완벽한 탐지 시스템입니다.


Ⅱ. 파라미터 튜닝 1: 스트라이드(Stride) - 돋보기의 보폭

촘촘하게 훑을 것인가, 듬성듬성 뛰며 훑을 것인가.

  1. 스트라이드(Stride)의 개념:
    • 돋보기 도장을 한 번 찍고, 오른쪽으로 몇 칸 이동해서 다음 도장을 찍을 것인가를 결정하는 보폭(Step)이다.
    • Stride = 1: 한 칸씩 촘촘히 겹치며 이동한다. 원본 이미지의 디테일을 놓치지 않고 꼼꼼히 훑는다. 당연히 도장 찍는 횟수가 많아져 연산이 무겁다.
  2. 공간적 축소 (Downsampling):
    • Stride = 2: 돋보기가 두 칸씩 건너뛰며(듬성듬성) 도장을 찍는다.
    • 이렇게 하면 완성된 특성 맵(Feature Map) 지도의 가로세로 크기가 원본 사진에 비해 절반($1/2$)으로 팍 줄어들어 버린다(해상도 감소).
    • 모델의 목적이 "강아지의 위치"를 픽셀 단위로 정확히 아는 게 아니라 "이 사진에 강아지가 있다/없다"만 판별하는 것이라면, 쓸데없는 픽셀을 버리기 위해 스트라이드를 2 이상 줘서 데이터를 시원하게 압축해 버리는 전략을 쓴다.

📢 섹션 요약 비유: 해변에서 금속 탐지기(필터)를 들고 동전을 찾습니다. Stride=1은 발을 한 걸음씩 모아 걸으며 모래사장을 1cm도 빠짐없이 촘촘하게 훑는 꼼꼼한 탐색입니다. 정확하지만 하루 종일 걸립니다. Stride=2는 징검다리를 건너듯 큼직큼직하게 성큼성큼 뛰어다니며 훑는 것입니다. 작은 동전은 놓칠 수 있지만, 큰 보물 상자는 충분히 찾으면서도 탐색 시간을 반으로 확 줄이는 초효율 스캔 기법입니다.


Ⅲ. 파라미터 튜닝 2: 패딩(Padding) - 가장자리 보존의 법칙

사진의 구석에 있는 불쌍한 픽셀들을 구출하라.

  1. 가장자리 유실 (Border Loss) 문제:
    • 돋보기를 이동시키며 꽝꽝 찍다 보면 치명적인 문제가 생긴다.
    • 사진 '정가운데'에 있는 픽셀은 돋보기가 지나갈 때마다 9번이나 중복으로 겹쳐서 도장을 맞는다(데이터 과대반영).
    • 하지만 사진 '맨 왼쪽 위 모서리 구석'에 있는 불쌍한 픽셀은, 돋보기가 스케줄을 시작할 때 딱 1번만 도장에 겹치고 영원히 소외된다(가장자리 데이터 100% 무시).
    • 게다가 도장($3 \times 3$)을 찍을 때마다 바깥쪽 테두리가 잘려 나가서, 층을 거칠수록 특성 맵의 크기가 계속 쪼그라드는 붕괴 현상이 일어난다. ($5 \times 5$ $\rightarrow$ $3 \times 3$ $\rightarrow$ $1 \times 1$로 멸망)
  2. 패딩 (Zero Padding)의 긴급 처방:
    • 이 억울함을 풀기 위해, 원본 강아지 사진의 겉 테두리에 가상의 투명한 '0(Zero) 픽셀' 블록을 한 바퀴 빙 둘러서 액자처럼 붙여버린다.
    • 이렇게 가짜 테두리(패딩)를 치고 도장을 찍으면, 진짜 구석에 있던 픽셀들이 0 픽셀 덕분에 안쪽으로 밀려 들어와 돋보기 정중앙에 여러 번 찍힐 기회를 얻게 된다.
  3. Same Padding (크기 보존):
    • 계산을 잘해서 패딩을 1줄 또는 2줄 두르면, 원본 사진이 $28 \times 28$이었을 때 필터를 거치고 나온 특성 맵(Feature Map)의 크기도 쪼그라들지 않고 완벽하게 똑같은 $28 \times 28$ 크기를 유지하게 할 수 있다. 이를 'Same Padding'이라 부르며 깊은 딥러닝 층을 100개씩 쌓을 수 있게 해주는 필수 건축술이다.

📢 섹션 요약 비유: 피자 도우(이미지)를 쿠키 커터(필터)로 잘라낼 때, 도우의 정중앙은 예쁘게 잘려 나가지만 맨 가장자리 끄트머리 밀가루는 커터 모양에 안 맞아서 맨날 버려집니다(정보 유실). 패딩(Padding)은 피자 도우 바깥 가장자리에 '먹지 못하는 가짜 밀가루(0)'를 한 바퀴 두껍게 덧대어 주는 꼼수입니다. 이렇게 덧대놓고 커터를 찍으면, 원래 진짜 가장자리였던 맛있는 부분도 가짜 밀가루 덕분에 온전히 커터 모양의 정중앙에 예쁘게 담겨서 버려지는 재료 없이 완벽한 쿠키를 수백 장 찍어낼 수 있게 됩니다.