CHAPTER 7 합성곱 신경망(CNN)

이번 장의 주제는 합성곱 신경망${}^{\text{convolutional neural network, CNN}}$입니다. CNN은 이미지 인식과 음성 인식 등 다양한 곳에서 사용되는데, 특히 이미지 인식 분야에서 딥러닝을 활용한 기법은 거의 다 CNN을 기초로 하죠. 이번 장에서는 CNN의 메커니즘을 자세히 설명하고 이를 파이썬으로 구현해보겠습니다.

합성곱 신경망 기지 입구 지니, 도로시, 토토가 카메라 렌즈 모양의 웅장한 합성곱 기지 입구에 도착해 거대한 렌즈 탑을 흥미롭게 쳐다보고 있어요.

도로시의 새로운 모험 입구

  • 도로시: “와! 지니, 저 거대하고 특이하게 생긴 카메라 렌즈 같은 건물이 7장 합성곱 신경망(CNN) 기지구나! 건물 전체에 필터나 격자 같은 격자 패턴이 가득해!”
  • 지니: “맞아, 도로시! 이제부터 우리는 이미지의 공간 구조를 찌그러뜨리지 않고 온전히 특징을 뽑아내는 최고의 시각 지능 부품, 합성곱(Convolution)풀링(Pooling) 계층의 놀라운 세계를 탐험하게 될 거야. 어서 들어가 보자!”

7장 세부 목차

학습자의 학습 흐름과 흥미를 이끌기 위해 총 8개의 서브 챕터로 나누어 모험을 진행합니다. 아래 링크를 클릭해 순서대로 모험에 합류해 보세요!

07.1 전체 구조

지금까지 배운 완전연결 계층(Affine) 구조 위에 새롭게 도입되는 합성곱 계층(Conv)과 풀링 계층(Pooling)의 배치 순서 및 전체 아키텍처 흐름을 파악합니다.

07.2 합성곱 계층

완전연결 계층의 형상 붕괴 한계를 타파하고, 패딩(Padding), 스트라이드(Stride) 및 3차원 데이터 직육면체 블록 합성곱 연산의 원리와 4차원 배치 처리 데이터 흐름을 배웁니다.

07.3 풀링 계층

세로·가로 방향의 공간 크기를 줄이는 최대 풀링(Max pooling)과 평균 풀링(Average pooling)의 연산 방식과 학습 매개변수 없음, 채널 수 불변, 미세 이동에 대한 강건성 등 특징을 파악합니다.

07.4 합성곱/풀링 계층 구현하기

4차원 배열 구조 데이터를 큰 행렬 계산에 최적화된 형태로 전개해 주는 im2col 트릭을 사용하여 파이썬 넘파이로 ConvolutionPooling 클래스(순전파/역전파)를 간결하게 구현합니다.

07.5 CNN 구현하기

합성곱 계층과 풀링 계층을 조합하여 손글씨 숫자를 99% 수준의 초고정밀도로 분류하는 SimpleConvNet 신경망을 설계하고 훈련 기울기 산출을 코딩합니다.

07.6 CNN 시각화하기

1번째 층 합성곱 계층의 필터가 학습 전후에 에지(경계선)와 블롭 검출기로 진화하는 가중치를 가시화하고, 레이어가 깊어짐에 따라 텍스처에서 사물 일부, 최종 클래스로 고수준 추상화되는 흐름을 관찰합니다.

07.7 대표적인 CNN

1998년 손글씨 인식을 연 합성곱의 원조 LeNet과, 2012년 대량의 데이터 및 GPU 하드웨어에 힘입어 ReLU, 드롭아웃으로 현대 딥러닝 열풍을 점화한 AlexNet 구조를 비교합니다.

07.8 정리

7장에서 익힌 합성곱 신경망 핵심 설계 요점, im2col 최적화 및 LeNet, AlexNet 아키텍처의 주요 차이점 등을 총괄 요약합니다.

7장 CNN 로드맵 지니가 칠판 가득 합성곱 필터 연산의 흐름과 특징 맵, 그리고 풀링 계층으로 이어지는 CNN 전체 경로를 그리며 도로시와 토토에게 열정적으로 로드맵을 알려주고 있어요.

지니의 CNN 탐험 지도 브리핑

  • 지니: “도로시, CNN 기지 안에는 합성곱 연산의 보폭을 조율하는 스트라이드와 테두리를 감싸는 패딩, 그리고 4차원 텐서 데이터를 고속으로 풀어헤쳐 행렬 곱셈으로 가속하는 im2col 마법까지 준비되어 있단다. 이 경로를 차례로 밟아가면 SimpleConvNet이라는 강력한 신경망을 직접 조립할 수 있게 돼!”
  • 도로시: “공간 특징 정보를 보존해서 MNIST 손글씨를 99% 이상 맞출 수 있는 완벽한 설계도구나! 좋아, 7장의 서브 챕터들을 순서대로 격파해 보자!”

🌟 7장을 마치며: 합성곱 신경망(CNN)

7장에서는 이미지가 가지는 공간 구조(가로·세로·채널)의 3차원 직육면체적 특성을 온전히 보존하며 특징 맵을 추출하는 합성곱 신경망(CNN)의 설계와 효율적 프로그래밍 기법을 정립했습니다.

  • 형상 보존의 마법: 1차원 벡터로 압착하며 픽셀 간 인접성 정보를 파괴하던 완전연결 방식의 단점을 해결하기 위해, 공간 지형을 그대로 보존하는 합성곱 계층(Conv)의 매개변수 갱신 방식을 마스터했습니다.
  • 출력 변형 공식: 입력 크기, 패딩(Padding), 보폭 스트라이드(Stride) 및 필터 규격에 따라 최종 피처 맵의 너비·높이가 결정되는 공식을 도출하고 유효 차원을 산정하는 메커니즘을 획득했습니다.
  • 성능 극대화 (im2col): 파이썬 루프 연산의 비효율을 회피하고자, 3차원 입력을 2차원 행렬 내적으로 매핑하여 고속 행렬 계산 라이브러리(BLAS) 혜택을 온전히 누리는 im2col / col2im 트릭의 진가를 체험했습니다.
  • CNN 추상화 시각화: 에지(경계선)를 보는 1층 필터부터 시작해, 깊이가 깊어질수록 텍스처, 사물 일부, 그리고 사물의 의미를 판단하는 영역으로 피처가 진화해 나가는 딥러닝 내부의 특징 추출 양상을 확인했습니다.

공간 특징 파악의 절대 강자인 CNN을 조립하며 딥러닝의 심장부를 완벽하게 관통했습니다! 마지막 8장 딥러닝에서는 층을 극적으로 깊게 쌓아 올려 99%를 돌파해 인간 수준의 인지 능력을 보이고 자율주행, GAN 이미지 생성 분야로 뻗어 나가는 현대 심층 학습 최전선의 기술적 현실과 실체들을 탐험해 보겠습니다!

8장 딥러닝 기지로 점프 CNN 기지 탐험을 무사히 완료한 도로시와 지니가 멀리 보이는 거대하고 신비로운 8장 ‘딥러닝 기지’ 성채를 가리키며 앞으로의 마지막 모험에 대해 기대하고 있어요.

도로시의 모험 지속 선언

  • 도로시: “지니! 저기 구름 뚫고 솟아있는 장엄한 성이 바로 마지막 여정인 8장 딥러닝 기지구나! 층을 엄청나게 깊이 쌓아 올려서 거의 마법 수준의 인공지능을 실현하는 곳이래!”
  • 지니: “그래, 도로시! 합성곱 신경망을 단단하게 조립했으니, 이제 더 고차원적인 역사적 모델들과 실전 자율주행, GAN 마법이 기다리는 마지막 관문으로 당당하게 진격하자!”
  • 토토: “왈왈! (꼬리를 흔들며) 8장 성채로 고고싱이다 멍!”
서브목차