한양과학기술고등학교

에듀테크 프로젝트 대시보드

합성곱 신경망 (CNN)

합성곱 신경망 (Convolutional Neural Network)

필터가 슬라이딩하며 지역 패턴을 읽어내는 이미지 처리의 표준 아키텍처

28×28 흑백 손글씨 이미지 한 장도 픽셀이 784개입니다. 이걸 완전연결층에 그대로 넣으면 첫 은닉층 뉴런 하나당 784개의 가중치가 필요하고, 이미지가 커질수록 파라미터 수가 폭발합니다. 게다가 완전연결층은 모든 픽셀 조합을 동등하게 취급해서, 같은 모양이 이미지의 다른 위치에 나타나면 처음부터 다시 배워야 합니다. 합성곱 신경망(CNN)은 작은 필터(커널)를 이미지 전체에 공유해서 슬라이딩시켜, 파라미터 수를 극적으로 줄이면서도 "위치에 상관없이 같은 패턴을 알아보는" 능력을 얻습니다.

1. 합성곱 — 작은 창으로 훑으며 계산한다

커널(kernel)은 예를 들어 3×3 크기의 작은 숫자 격자입니다. 이 커널을 입력 이미지 위에서 한 칸씩 옮겨가며(슬라이딩), 커널과 겹치는 9개 픽셀 값을 각각 곱해서 모두 더한 값 하나를 출력합니다. 이 과정을 이미지 전체에 반복하면 특징 맵(feature map)이라는 새로운 격자가 나옵니다.

# 커널 K가 3x3, 입력 위 (r, c) 위치에서의 합성곱 출력 한 칸
output[r][c] = Σ_i Σ_j  input[r+i][c+j] * K[i][j]    # i, j = 0..2
핵심은 같은 커널을 이미지 전체가 공유한다는 점입니다(가중치 공유, weight sharing). "세로 선"을 찾는 커널은 이미지의 왼쪽 위에서든 오른쪽 아래에서든 똑같이 세로 선을 찾아냅니다. 덕분에 파라미터 수는 이미지 크기와 무관하게 커널 크기(예: 3×3=9개)에만 비례합니다.

2. 스트라이드와 패딩 — 출력 크기를 조절하는 손잡이

개념의미효과
스트라이드(stride)커널을 몇 칸씩 건너뛰며 이동할지클수록 출력 크기가 작아짐(다운샘플링)
패딩(padding)입력 가장자리에 0을 덧대는 것'same' 패딩은 출력 크기를 입력과 같게 유지

패딩이 없으면(valid) 커널이 가장자리를 벗어날 수 없어 출력이 (W − K)/stride + 1 만큼 작아집니다. 가장자리 정보를 잃지 않으려면 입력 둘레에 0을 둘러(zero padding) 출력 크기를 보존합니다.

3. 직접 보기 — 커널로 특징 맵 만들기

왼쪽 격자를 클릭/드래그해서 그림을 그려보세요(흰색 ↔ 검은색 토글). 커널 프리셋을 고르거나 직접 9칸에 숫자를 입력하면, 가운데 특징 맵이 실시간으로 갱신됩니다. 오른쪽은 그 결과에 2×2 맥스 풀링을 적용한 모습입니다.

① 입력 이미지 (8×8, 클릭해서 그리기)
② 3×3 커널 (직접 수정 가능)
1
valid (0)
출력 크기: –
③ 합성곱 결과(특징 맵) → 2×2 맥스 풀링
풀링 후

4. 풀링 — 위치에 조금 둔감하게, 크기는 절반으로

맥스 풀링(max pooling)은 2×2 같은 작은 영역에서 가장 큰 값 하나만남기고 나머지는 버립니다. 특징 맵의 가로세로 크기를 절반으로 줄여 이후 계산량을 줄이는 동시에, "그 근처 어딘가에 강한 특징이 있었다"는 정보만 남기므로 물체가 한두 픽셀 이동해도 결과가 크게 달라지지 않는 강건함을 얻습니다.

5. 층을 쌓으면 — 저수준에서 고수준 특징으로

첫 합성곱 층은 보통 엣지·선·색 경계 같은 저수준 특징을 찾습니다. 그 특징 맵을 다시 다음 합성곱 층에 넣으면, 엣지들의 조합인 곡선·모서리·질감을 찾게 되고, 더 깊은 층으로 갈수록 눈·바퀴·글자 모양 같은 고수준 개념을 표현하게 됩니다. 사람이 "이런 특징을 찾아라"고 설계하지 않아도, 역전파가 손실을 줄이는 방향으로 각 층의 커널 값을 스스로 학습합니다.

핵심 정리

  • 합성곱 = 작은 커널을 이미지 전체에 공유·슬라이딩시켜 가중치 공유 + 지역 패턴 인식을 얻는 연산
  • 스트라이드로 다운샘플링 정도를, 패딩으로 가장자리 정보 보존 여부를 조절
  • 맥스 풀링으로 크기를 줄이고 작은 위치 변화에 강건해짐
  • 층을 쌓을수록 저수준(엣지) → 고수준(모양·개념) 특징으로 자연스럽게 발전