CNN
격자형 데이터에서 지역적 패턴을 학습하는 합성곱 기반 신경망.
고양이 사진은 잘 구분하지만, 입력 크기 하나 바뀌면 마지막 Linear 레이어에서 차원 불일치 에러를 선물하는 고전 명작. 모델보다 내 머리가 먼저 flatten 된다
1. 개요
CNN(Convolutional Neural Network, 합성곱 신경망)은 이미지처럼 격자 구조를 가진 데이터를 처리하기 위해 설계된 딥러닝 모델이다. 핵심 아이디어는 작은 필터를 이미지 위로 밀어가며 모서리, 질감, 윤곽 같은 지역적 특징을 잡아내는 것이다. 초기 레이어는 단순한 선과 색 대비를 보고, 깊은 레이어로 갈수록 눈, 바퀴, 얼굴 같은 복잡한 패턴을 조합한다. 이 구조 덕분에 CNN은 2010년대 컴퓨터 비전의 절대 강자로 군림했고, 이미지 분류, 객체 탐지, 의료 영상 분석 등 수많은 영역에서 표준처럼 쓰였다.
2. 합성곱과 풀링
CNN의 핵심 연산은 합성곱이다. 작은 커널이 이미지를 훑으며 특정 패턴이 있는지 점수화하고, 이 결과가 특징 맵이 된다. 커널이 여러 개라면 여러 종류의 특징을 동시에 찾을 수 있다. 풀링은 특징 맵을 압축해 위치 변화에 조금 둔감하게 만들고 계산량을 줄인다. 말로 들으면 단순하지만, 실제 구현에서는 입력 크기, 패딩, 스트라이드, 채널 수를 조금만 잘못 계산해도 텐서 shape가 맞지 않는다. 그래서 PyTorch나 TensorFlow 튜토리얼을 따라 하던 개발자들이 가장 먼저 만나는 벽이 바로 차원 계산이다.
3. CNN의 전성기와 현재 위치
2012년 AlexNet이 이미지넷 대회에서 압도적인 성능을 보여주며 CNN은 인공지능 역사에서 중요한 전환점을 만들었다. 이후 VGG, ResNet, EfficientNet 같은 모델들이 등장하며 이미지 인식 성능은 빠르게 올라갔다. 최근에는 트랜스포머 기반 모델이 이미지 영역까지 침투하면서 CNN의 독점 시대는 끝났지만, CNN은 여전히 가볍고 안정적이며 해석하기 쉬운 장점이 있다. 특히 임베디드 장치나 실시간 처리처럼 효율이 중요한 환경에서는 아직도 강력한 선택지다.
4. 관련 밈 및 드립
4.1. 고양이 vs 강아지 분류기의 추억
딥러닝 입문자들이 CNN을 처음 배울 때 거의 반드시 거치는 통과의례. 문제는 예제에서는 95% 정확도가 나오는데, 내가 찍은 흐릿한 고양이 사진을 넣으면 모델이 자신 있게 강아지라고 외치는 순간이다.
4.2. shape mismatch
CNN 실습의 진짜 최종 보스. 모델 구조를 조금만 바꾸면 마지막 분류 레이어 입력 차원이 달라져 에러가 터진다. 이때 개발자는 print로 텐서 크기를 찍어가며 차원 추적 탐정이 된다.
5. 여담
- ResNet의 잔차 연결: 깊은 CNN을 학습할 때 성능이 오히려 나빠지는 문제를 skip connection으로 완화하면서 이미지 인식 모델의 깊이를 크게 늘렸다.
- GPU와 찰떡궁합: 합성곱 연산은 병렬화하기 좋아 GPU 가속의 이점을 크게 받는다. CNN 전성기는 GPU 대중화와도 강하게 연결된다.
- Transformer에게 밀려도 죽지 않는다: 최신 비전 모델에서 Transformer 계열이 많이 쓰이지만, CNN은 여전히 모바일, 실시간 추론, 경량 모델에서 끈질기게 살아남아 있다.