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

코드: 합성곱 직접 구현

실행 결과를 보면 명확:

  • 입력: 가운데 세로 막대만 있는 이미지
  • 세로 막대 필터: 가운데 컬럼에서 응답 6.0 — 강한 매치!
  • 가로 막대 필터: 어디서도 응답 0 — 찾는 패턴 없음
🎯 핵심: 필터 = 패턴 감지기

같은 입력에 다른 필터를 적용 → 다른 패턴 감지. CNN은 보통 한 층에서 수십~수백 개 필터를 동시에 적용. 각 필터가 다른 패턴.

예 알파고 첫 층 필터들 (학습 후):

  • 수직 모양
  • 수평 모양
  • 대각선 모양
  • 코너 모양
  • 2개 돌 연결
  • ... (총 192개)
💡 핵심 코드 부분
for i in range(OH):
    for j in range(OW):
        patch = image[i:i+K, j:j+K]
        output[i, j] = np.sum(patch * kernel)

필터를 위치마다 슬라이딩하며 원소곱 합 — 이게 합성곱의 본질. 한 줄 두 줄로 어떤 패턴이든 감지.

📖 실제 CNN 라이브러리

위 코드는 교육용. 실제 TensorFlow나 PyTorch는:

  • GPU 가속 — 같은 합성곱 1000배 빠름
  • 여러 입력 채널 + 여러 필터 동시
  • 학습 (역전파)가 자동

그러나 알고리즘 본질은 위 코드 그대로.

PYTHON