시즌 1 · 알파고편 / PART 4 · PART 4 · 신경망 등장: 직관을 학습한다 / Ch 2 · CNN: 바둑판은 이미지다

합성곱(Convolution) — 작은 필터로 패턴 감지

합성곱의 핵심 직관: "작은 필터를 이미지 위에서 미끄러뜨리며 적용한다".

📖 필터(Filter / Kernel)란

3x3, 5x5 같은 작은 가중치 행렬. 학습으로 정해짐. 한 필터가 한 가지 "패턴 감지기" 역할.

예 — 세로 모서리 감지 필터 3x3:

    -1   0  +1
    -1   0  +1
    -1   0  +1
  

이 필터를 이미지 위 어떤 위치 (i, j)에 두고:

  • 필터의 -1, 0, +1을 그 위치의 픽셀 값과 곱해서 모두 합
  • 결과가 큼 = 오른쪽이 밝고 왼쪽이 어둠 → 세로 모서리 감지
🎯 합성곱 결과 (Feature Map)

필터를 이미지 모든 위치에 적용 → 새 이미지 (Feature Map).

입력 19x19 + 3x3 필터 → 출력 17x17 (가장자리 효과). 또는 padding 처리해서 19x19 유지.

이 Feature Map의 값은 "각 위치에서 그 필터의 패턴이 얼마나 강한가"의 점수.

💡 가중치 공유의 의미

같은 3x3 필터를 모든 위치에 적용. 만약 보드 (3,3)에서 사다리 모양이 있고 (15,15)에서도 같은 사다리 모양이 있다면:

  • MLP: 각 위치마다 다른 가중치 학습해야 함
  • CNN: 같은 필터 → 같은 응답. 한 번 학습 = 모든 위치에서 동작

이게 CNN의 본질적 효율 — "한 번 배운 패턴은 어디서나 인식".

한 필터로 한 패턴 감지. 보통 한 층에서 여러 필터를 동시에 사용 — 32개, 64개, 256개...

📊 알파고 신경망의 필터 수
  • 알파고(2016): 192개 필터 × 13층 ≈ 2,500 필터
  • 각 필터가 다른 패턴 감지 — 모서리, 모양, 사다리, 살아있음...
  • 학습으로 자동 발견된 필터들 (사람이 정의 안 함)

코드로 합성곱 직접 만들어보자.