개요

합성곱 신경망(Convolutional Neural Network, CNN)은 주로 이미지를 인식하고 분류하는 데 특화된 인공지능 모델이다1. 사람이 사진을 보고 “이건 고양이야”, “이건 강아지야”라고 판단하듯이, 컴퓨터가 이미지를 보고 자동으로 판단할 수 있게 해준다.

왜 CNN이 필요할까?

일반적인 방법으로 이미지를 분석하려면 사람이 직접 “귀가 뾰족하면 고양이”, “코가 크면 강아지” 같은 규칙을 일일이 프로그래밍해야 한다. 하지만 CNN은 수많은 예시 이미지를 보여주면 스스로 특징을 찾아내고 학습한다. 마치 아이가 여러 동물 그림책을 보면서 자연스럽게 동물을 구분하는 법을 배우는 것과 비슷하다.

어떻게 작동할까?

CNN은 고양이의 시각 피질에서 영감을 받았다2. 고양이의 뇌는 시각 정보를 처리할 때 처음에는 선이나 모서리 같은 단순한 패턴을 인식하고, 점차 복잡한 형태를 조합해서 이해한다. CNN도 이와 똑같은 방식으로 작동한다:

  1. 1단계: 이미지에서 선, 곡선, 모서리 같은 기본 패턴 찾기
  2. 2단계: 기본 패턴을 조합해서 눈, 코, 귀 같은 부분 찾기
  3. 3단계: 부분들을 종합해서 “이건 고양이다” 판단하기

CNN은 어떻게 효율적일까?

일반적인 신경망은 이미지의 모든 픽셀을 한 번에 처리하려고 한다. 예를 들어 1000×1000 크기의 이미지라면 백만 개의 픽셀을 모두 연결해야 하므로 엄청나게 복잡해진다.

CNN은 훨씬 영리한 방식으로 작동한다3:

1. 지역적으로 살펴보기 (Local Connectivity)

사람이 사진을 볼 때 한 번에 모든 부분을 보지 않듯이, CNN도 이미지의 작은 부분씩 집중해서 본다. 예를 들어 3×3 크기의 작은 영역만 보면서 “여기에 수직선이 있네”, “여기에 곡선이 있네”를 파악한다.

2. 같은 방법을 반복 사용하기 (Parameter Sharing)

고양이 귀를 찾는 방법은 이미지의 왼쪽에서나 오른쪽에서나 똑같다. 그래서 CNN은 한 번 배운 패턴 인식 방법을 이미지 전체에 재사용한다. 이렇게 하면 학습해야 할 내용이 훨씬 줄어든다.

3. 단계적으로 이해하기 (Spatial Hierarchy)

처음에는 단순한 선과 곡선을 찾고, 그 다음에는 이것들을 조합해서 눈·코·귀를 찾고, 마지막으로 이것들을 종합해서 동물의 종류를 판단한다. 간단한 것부터 복잡한 것 순서로 단계적으로 배운다.

CNN의 구성 요소

CNN은 여러 종류의 계층(레이어)이 순차적으로 쌓여서 만들어진다. 각 계층은 고유한 역할을 담당한다.

1. 합성곱 층 (Convolutional Layer) - “패턴 찾기”

이미지에서 패턴을 찾아내는 계층이다1.

💡 비유로 이해하기: 작은 돋보기(필터)를 들고 이미지 위를 천천히 움직이면서 특정 패턴을 찾는다고 상상해보자. 예를 들어:

  • 한 돋보기는 수직선을 찾는 역할
  • 다른 돋보기는 곡선을 찾는 역할
  • 또 다른 돋보기는 특정 색상을 찾는 역할

이 돋보기들이 바로 필터(Filter) 또는 **커널(Kernel)**이라고 부르는 것이다.

주요 설정값3:

  • 필터 크기: 돋보기 크기 (보통 3×3 또는 5×5)
  • 필터 개수: 몇 개의 돋보기를 사용할지 (예: 64개, 128개)
  • 스트라이드(Stride): 돋보기를 얼마나 건너뛰며 이동할지 (1칸씩? 2칸씩?)
  • 패딩(Padding): 이미지 가장자리에 여분의 공간을 추가할지 여부

💡 왜 “합성곱(Convolution)“이라는 이름일까?

이 용어는 수학의 **합성곱 연산(Convolution Operation)**에서 유래했다.

구체적인 작동 과정을 보면:

1단계 - 이미지의 일부분을 잘라낸다 (예: 3×3 크기):

이미지 일부:
[10, 20, 30]
[40, 50, 60]
[70, 80, 90]

2단계 - 필터를 준비한다 (예: 수직선을 찾는 3×3 필터):

필터:
[-1,  0,  1]
[-2,  0,  2]
[-1,  0,  1]

3단계 - 같은 위치끼리 곱한다:

10×(-1) = -10
20×0    =   0
30×1    =  30
40×(-2) = -80
50×0    =   0
60×2    = 120
70×(-1) = -70
80×0    =   0
90×1    =  90

4단계 - 모든 결과를 더한다:

-10 + 0 + 30 + (-80) + 0 + 120 + (-70) + 0 + 90 = 80

💡 이 숫자(80)가 왜 “수직선이 있다”는 의미일까?

필터의 패턴을 다시 보면:

필터:
[-1,  0,  1]   왼쪽은 음수(-1, -2, -1)
[-2,  0,  2]   가운데는 0
[-1,  0,  1]   오른쪽은 양수(1, 2, 1)

이 필터는 왼쪽이 어둡고 오른쪽이 밝은 패턴(수직선)을 찾도록 설계되었다.

만약 이미지에 수직선이 있다면:

이미지:
[10, 20, 90]   왼쪽 어둡고 → 오른쪽 밝음 = 수직선!
[10, 20, 90]
[10, 20, 90]
  • 왼쪽 어두운 부분: 10 × (-1) = 음수 (어둠을 감지)
  • 오른쪽 밝은 부분: 90 × (1) = 양수 (밝음을 감지)
  • 결과: 큰 양수 → 수직선 발견!

만약 이미지가 균일하다면:

이미지:
[50, 50, 50]   변화 없음 = 수직선 없음
[50, 50, 50]
[50, 50, 50]
  • 모든 부분이 같은 값이므로 결과는 0에 가까움
  • 결과: 0 근처 → 수직선 없음

즉, 결과값이 크면 클수록 그 위치에 수직선이 강하게 존재한다는 의미다. 80이라는 값은 “이 위치에 수직선이 꽤 뚜렷하게 있다”는 뜻이다.

5단계 - 필터를 한 칸 옆으로 이동하고 다시 2~4단계 반복:

이미지 위를 슬라이딩하면서:
위치1: 계산 → 결과1
위치2: 계산 → 결과2
위치3: 계산 → 결과3
...

6단계 - 모든 계산 결과를 모으면 새로운 이미지 생성:

원본 이미지 → [필터 적용] → 특징 맵
                             (수직선이 있는 위치들)

왜 “합성곱”인가?

  • 필터와 이미지 일부를 “곱하고” (convolution의 의미)
  • 그 결과들을 “합쳐서” (convolution의 의미)
  • 새로운 정보를 만든다

마치 두 가지 재료(필터 + 이미지)를 섞어서 새로운 요리(특징 맵)를 만드는 것과 같다. 이 “섞는” 과정이 수학의 합성곱 연산과 동일해서 **Convolutional Layer(합성곱 층)**라고 부른다.

2. 풀링 층 (Pooling Layer) - “요약하기”

정보의 핵심만 남기고 크기를 줄이는 계층이다1.

💡 비유로 이해하기: 고화질 사진을 저용량으로 만들 때를 생각해보자. 사진 크기는 줄어들지만 무엇이 찍혀있는지는 여전히 알 수 있다. 풀링 층도 비슷한 역할을 한다.

💡 작동 방식:

  • 맥스 풀링(Max Pooling): 작은 영역(예: 2×2)에서 가장 큰 값만 선택
    • 예시: 2×2 영역 [1, 5, 3, 2]를 배치하면
      [1  5]
      [3  2]
      
      이 중 최댓값 5만 선택 → 결과: 5
    • “이 부분에서 가장 강한 특징은 뭐지?” 하고 묻는 것과 같음
  • 평균 풀링(Average Pooling): 작은 영역의 평균값 계산
    • 위 예시에서 (1+5+3+2) ÷ 4 = 2.75

보통 이미지 크기를 절반으로 줄인다. 예를 들어 100×100 이미지가 50×50이 된다3.

왜 필요할까?

  • 처리해야 할 데이터 양이 줄어들어 계산이 빨라진다
  • 사소한 위치 변화에 덜 민감해져서 더 일반화된 특징을 배운다
  • “고양이가 사진 왼쪽에 있든 오른쪽에 있든 고양이다”를 인식하게 됨

💡 왜 “풀링(Pooling)“이라는 이름일까?

Pool은 영어로 “웅덩이”, “모으다”라는 뜻이다. 여러 값을 한 곳에 모아서(pool) 대표값을 뽑는다는 의미에서 유래했다.

생각해보면:

  • Max Pooling: 여러 값을 모아서 최댓값 선택
  • Average Pooling: 여러 값을 모아서 평균값 계산

마치 물이 웅덩이(pool)에 모이듯이, 여러 픽셀 값을 한 곳에 모아서 하나의 대표값을 만든다고 생각하면 된다.

또 다른 해석으로는 “pooling resources”(자원을 모으다)라는 표현처럼, 분산된 정보를 압축해서 모은다는 의미도 있다.

3. 활성화 함수 (Activation Function) - “신호 강화하기”

패턴이 얼마나 확실한지 판단하고, 약한 신호는 무시하는 역할을 한다1.

💡 비유로 이해하기: 소리가 작으면 “들리지 않는다”고 판단하고, 충분히 크면 “들린다”고 판단하는 것과 비슷하다.

💡 **ReLU (Rectified Linear Unit)**가 가장 많이 쓰인다:

  • 작동 방식: 음수는 전부 0으로 바꾸고, 양수는 그대로 둔다
  • 예시: [-3, 5, -1, 7] → [0, 5, 0, 7]
  • 의미: “확실한 신호만 다음 단계로 전달하자”

왜 필요할까? 활성화 함수가 없으면 CNN은 단순한 직선 관계만 학습할 수 있다. 하지만 실제 세계는 훨씬 복잡하다. “귀가 뾰족하고 AND 수염이 있으면 고양이” 같은 복잡한 조건을 학습하려면 활성화 함수가 반드시 필요하다.

💡 왜 “활성화(Activation)“라는 이름일까?

이 용어는 생물학의 뉴런(신경세포) 작동 방식에서 유래했다.

실제 뉴런의 작동:

  • 뉴런은 다른 뉴런들로부터 신호를 받는다
  • 신호가 **일정 임계값을 넘으면 “활성화(activate)“**되어 다음 뉴런에 신호를 전달한다
  • 신호가 약하면 무시된다

CNN의 활성화 함수:

  • 똑같은 원리를 모방한다
  • 값이 충분히 크면 → “활성화됨” → 다음 층으로 전달
  • 값이 작으면 → “활성화 안 됨” → 0으로 만듦 (ReLU의 경우)

즉, 인공 뉴런이 “켜지고 꺼지는” 것을 결정하기 때문에 **Activation Function(활성화 함수)**라고 부른다.

ReLU는 왜 ReLU일까?

  • Rectified Linear Unit의 약자
  • Rectified: “바로잡다, 정류하다” (전기공학 용어로 음수를 0으로 만드는 것)
  • Linear: 선형 (양수 부분은 그대로 유지)
  • Unit: 단위, 유닛

4. 완전 연결 층 (Fully Connected Layer) - “최종 판단하기”

모든 정보를 종합해서 “이건 고양이다”, “이건 강아지다” 같은 최종 결론을 내리는 계층이다.

💡 비유로 이해하기: 재판에서 판사가 모든 증거를 듣고 최종 판결을 내리는 것과 비슷하다. 이전 계층들이 찾은 “뾰족한 귀”, “수염”, “세로 동공” 같은 특징들을 모두 종합해서 판단한다.

💡 작동 방식: 이전까지는 이미지의 일부분씩만 보았다면, 이 계층에서는 모든 정보를 연결해서 본다. 마치 퍼즐 조각을 모두 맞춰서 완성된 그림을 보는 것과 같다.

💡 왜 “완전 연결(Fully Connected)“이라는 이름일까?

이 용어는 신경망의 연결 구조를 설명한다.

합성곱 층의 연결:

  • 각 뉴런이 이미지의 작은 부분(3×3 같은)에만 연결된다
  • “부분 연결(Partially Connected)”

완전 연결 층의 연결:

  • 이전 층의 모든 뉴런이 다음 층의 모든 뉴런과 연결된다
  • 마치 학급의 모든 학생이 다른 반의 모든 학생과 악수하는 것처럼
  • 연결이 “완전(Fully)“하다

예를 들어:

이전 층: 100개 뉴런
다음 층: 10개 뉴런
→ 총 100 × 10 = 1000개의 연결

모든 정보를 종합해서 판단해야 하므로 **Fully Connected Layer(완전 연결 층)**라고 부른다.

다른 이름으로는:

  • Dense Layer(밀집 층): 연결이 빽빽하게(dense) 되어있다는 의미
  • FC Layer: Fully Connected의 줄임말

CNN은 어떻게 쌓아올릴까?

CNN의 계층들은 다음과 같은 순서로 반복적으로 쌓인다3:

전체 흐름:

입력 이미지
  ↓
합성곱 층 (패턴 찾기) → 활성화 함수 (신호 강화)
  ↓
풀링 층 (요약하기)
  ↓
합성곱 층 → 활성화 함수
  ↓
풀링 층
  ↓
... (여러 번 반복)
  ↓
완전 연결 층 (최종 판단)
  ↓
출력 (분류 결과)

구체적인 예시:

  1. 이미지 입력: 고양이 사진 (224×224 픽셀)
  2. 1차 합성곱+활성화: 선, 곡선, 모서리 같은 저수준 특징 찾기
  3. 1차 풀링: 크기를 112×112로 줄이기
  4. 2차 합성곱+활성화: 눈, 코, 귀 모양 같은 중간 수준 특징 찾기
  5. 2차 풀링: 크기를 56×56으로 줄이기
  6. 3차 합성곱+활성화: 얼굴 전체 형태 같은 고수준 특징 찾기
  7. 완전 연결 층: 모든 특징을 종합해서 판단
  8. 출력: “고양이 90%, 강아지 5%, 토끼 3%, …”

핵심 원리:

  • 계층을 깊게 쌓을수록 더 복잡하고 추상적인 특징을 학습한다
  • 초반 층: 간단한 패턴 (선, 곡선)
  • 중간 층: 부분 특징 (눈, 코, 귀)
  • 후반 층: 전체 구조 (얼굴, 몸통)

유명한 CNN 모델들

CNN의 역사에서 중요한 이정표가 된 모델들을 소개한다. 각 모델은 새로운 아이디어로 이미지 인식의 정확도를 크게 향상시켰다.

LeNet (1990년대)

CNN의 할아버지

우편번호 손글씨 숫자를 읽기 위해 개발된 최초의 실용적인 CNN이다. “5”를 5로, “7”을 7로 인식하는 것처럼 비교적 단순한 작업에 사용되었다.

AlexNet (2012)

CNN의 부활을 이끈 혁명

2012년 ImageNet 대회에서 경쟁자들을 압도적으로 이기며 딥러닝 시대를 열었다. 1000개 카테고리의 이미지를 분류하는 과제에서 이전 방식보다 훨씬 높은 정확도를 달성했다.

핵심 기여: GPU를 활용한 대규모 학습, ReLU 활성화 함수 대중화

VGG (2014)

단순함의 힘

작은 3×3 필터만 사용하면서도 계층을 매우 깊게 쌓았다 (16~19층). “작은 필터를 여러 번 사용하면 큰 필터 한 번 쓰는 것보다 효과적이다”를 보여줬다.

GoogLeNet/Inception (2014)

효율성의 대가

적은 자원으로 높은 성능을 내는 것이 목표였다. 다양한 크기의 필터를 동시에 사용하는 “Inception 모듈”로 효율성을 크게 개선했다.

ResNet (2015)

초심층 네트워크의 돌파구

152개, 심지어 1202개의 계층을 쌓을 수 있게 한 혁신적인 모델이다2.

문제: 계층을 너무 깊게 쌓으면 오히려 성능이 나빠지는 문제가 있었다. 해결책: “지름길(skip connection)“을 만들어서 정보가 계층을 건너뛸 수 있게 했다. 마치 건물에 계단과 엘리베이터를 동시에 만드는 것과 비슷하다.

영향: 현재까지도 많은 최신 모델의 기반이 되는 핵심 기술이다.

CNN은 어디에 사용될까?

CNN은 이미지 관련 작업뿐만 아니라 다양한 분야에서 활용된다1:

이미지 및 비디오 인식

  • 얼굴 인식: 스마트폰 잠금 해제, 공항 보안
  • 객체 탐지: 자율주행차가 사람, 차량, 신호등 인식
  • 사진 분류: 구글 포토가 고양이 사진, 풍경 사진을 자동 분류

의료 영상 분석

  • 질병 진단: X-ray, CT, MRI 이미지에서 종양, 질병 찾기
  • 병변 탐지: 피부암 사진 분석, 안저 사진에서 당뇨망막병증 발견
  • 일부 영역에서는 전문의 수준의 정확도를 보임

자연어 처리

  • 텍스트 분류: 스팸 메일 필터링, 뉴스 기사 카테고리 분류
  • 감성 분석: 리뷰가 긍정적인지 부정적인지 판단

기타 응용

  • 음성 인식: 음성 스펙트로그램을 이미지처럼 처리
  • 추천 시스템: 상품 이미지 기반 유사 상품 추천
  • 게임 AI: 바둑, 게임 화면을 보고 상황 판단

CNN의 장점

1. 스스로 배운다

사람이 일일이 “귀가 뾰족하면 고양이”라고 프로그래밍할 필요가 없다. 예시만 충분히 보여주면 중요한 특징을 스스로 찾아낸다2.

2. 효율적이다

같은 패턴 인식 방법을 이미지 전체에 재사용해서 학습 시간과 메모리를 절약한다.

3. 이동 불변성 (Translation Invariance)

고양이가 사진 왼쪽에 있든 오른쪽에 있든, 위에 있든 아래에 있든 인식할 수 있다. 이는 같은 필터를 이미지 전체에 슬라이딩하며 적용하기 때문이다.

4. 일반화 능력이 뛰어나다

학습 때 보지 못한 새로운 이미지도 잘 인식한다. 예를 들어 특정 고양이 품종으로만 학습했어도 다른 품종의 고양이를 어느 정도 인식할 수 있다. 다만 학습 데이터와 너무 다른 이미지(예: 만화 그림)는 인식하지 못할 수 있다.

Footnotes

  1. Convolutional neural network - Wikipedia 2 3 4 5

  2. Alzubaidi, L., et al. (2021). “Review of deep learning: concepts, CNN architectures, challenges, applications, future directions”. Journal of Big Data, 8(53). https://journalofbigdata.springeropen.com/articles/10.1186/s40537-021-00444-8 2 3

  3. CS231n Convolutional Neural Networks for Visual Recognition 2 3 4