Supplementary Materials

  • 딥러닝의 역사적 배경 → 이미지의 수치적 표현 → 완전연결망의 한계 → 이를 극복한 CNN의 핵심 구조라는 흐름으로 CNN의 등장 필요성과 작동 원리를 설명하고 있다.

1. 딥러닝(DNN)의 역사

  • 2006년 Geoffrey Hinton이 많은 층(layer)을 학습할 수 있는 방법을 제시하면서 딥러닝이 본격화되었고, 그 이전에는 2개 이상의 층을 학습하기가 거의 불가능했다.

  • 신경망 발전사를 시대순으로 보면

    • 전자두뇌(1943) → 퍼셉트론(1957) → ADALINE → XOR 문제로 인한 침체기(Dark Age) → 다층 퍼셉트론과 역전파(Backpropagation) → SVM → Pretraining 기반 심층 신경망(2006)으로 이어진다.
  • 이 과정에서 vanishing gradient와 오버피팅 문제가 해결 과제로 등장했고,

    • 이후 Adagrad(2011), ReLU 적용(2013), Adam·Dropout(2014) 등의 기법이 개발되었다.
  • 2006년 NVIDIA의 G80 GPU 등장도 중요한 전환점이었다.

2. 이미지 데이터

2.1. 이미지 데이터의 표현 방식

  • 입력 데이터
    • 이미지 데이터는 대개 (높이, 너비, 채널)의 3차원 텐서로 표현된다.
    • (예: RGB 이미지는 채널 수가 3)

  • 흑백 이미지

    • 2차원 행렬(Width × Height)로 표현되며,
    • 각 원소(픽셀)는 흑백의 농담을 실수 값으로 나타낸다.
    • 비트 심도에 따라
      • 8bit는 1~256,
      • 16bit는 1~65,536 단계로 톤을 표현한다.
  • 컬러 이미지

    • 여기에 색상 차원이 더해져

    • 3차원 텐서(Width × Height × RGB)로 표현되며,

    • Red·Green·Blue 각각의 행렬이 색의 강도를 담는다.

    • 예를 들어

      • 형태의 컬러 이미지는
      • R, G, B 세 개의 행렬로 분해된다.

cf. 이미지 인식 작업

  • Classification, Classification+Localization, Object Detection, Instance Segmentation으로 나뉘는데, 이 과정에서는 단일 객체를 다루는 Classification(분류)에 집중한다.

3. 완전 연결 신경망(FCN/MLP)의 한계

이미지 데이터 처리에서 Fully Connected Network(FCN, 전결합층 또는 MLP)가 CNN(합성곱 신경망)에 비해 가지는 주요 한계점은 크게 세 가지로 요약할 수 있다.

3.1. 과도한 파라미터 수와 연산량 (과적합 위험)

  • 한계

    • FCN은 앞 층의 모든 노드와 뒤 층의 모든 노드가 1:1로 전부 연결된다.
    • 예를 들어 가로 100, 세로 100, 채널 3인 이미지(개의 픽셀)를 입력받아 단순히 1,000개의 은닉 노드로 보낼 때 필요한 가중치(Weight)의 개수만 3천만 개에 달한다.
    • 파라미터 수가 이처럼 급격히 늘어나면 학습 속도가 느려질 뿐만 아니라 모델이 쉽게 **과적합(Overfitting)**될 수 있다.
  • 대비

    • CNN은 필터 하나를 이미지 전체에 슬라이딩하며 재사용하는 **가중치 공유(Weight Sharing)**와 주변 픽셀들만 연결하는 국소적 연결(Local Connectivity) 방식을 사용하여 파라미터 수를 대폭 줄여준다.

FCN은 각 뉴런이 자신만의 가중치를 갖는 가중치합 연산 중심인 반면, CNN은 뉴런들이 필터 가중치를 공유하므로 연산량이 더 적다.

3.2. 공간 정보(Spatial Information)의 유실

  • 한계

    • FCN에 이미지를 입력하려면 2차원(또는 3차원) 형태의 이미지를 1차원 벡터로 일렬로 늘어뜨리는 Flatten(평탄화) 과정을 거쳐야 한다.
    • 이 과정에서 인접한 픽셀끼리 가졌던 가로, 세로 방향의 공간적 위치 관계와 국소적인 패턴(예: 선, 면, 경계 등)이 모두 무너진다.
  • 대비

    • CNN은 이미지의 원래 차원을 그대로 유지하면서 합성곱(Convolution) 필터를 사용해 공간적 구조를 보존한다.

3.3. 이동 및 왜곡에 대한 취약성 (Translation Invariance 부족)

  • 한계

    • FCN은 위치에 대한 감각이 없기 때문에, 이미지 안에서 찾고자 하는 객체의 위치가 조금만 이동하거나 크기가 달라져도 완전히 새로운 입력 데이터로 인식한다.
    • 따라서 이미지 내의 동일한 객체를 탐지하기 위해서는 해당 객체가 모든 위치에 존재할 때의 데이터를 각각 학습해야 하는 비효율성이 존재한다.
  • 대비

    • CNN은 필터 연산을 통해 객체가 이미지의 어느 위치에 있든 동일한 특징을 감지할 수 있는 이동 불변성(Translation Invariance) 특징을 갖고 있다.

4. CNN의 구조

  • 합성곱 신경망(Convolutional Neural Network, CNN)
    • 이미지나 영상, 텍스트 등 격자 구조의 데이터에서 공간적인 특징(Spatial Features)을 효과적으로 추출하기 위해 고안된 딥러닝 네트워크 구조

4.1. 특징 추출 영역 (Feature Extraction)

(1) 합성곱 계층

  • 합성곱 연산 (Convolution Operation; nn.Conv2d)

    • 입력 데이터 위로 일정 크기의 필터(Filter 또는 Kernel)를 일정 간격(Stride)으로 이동(Shift)시키며, 대응하는 원소끼리 곱한 후 그 합을 구하는 연산이다.

    • 연산 결과로 특징 맵(Feature Map)을 생성한다.

    • 딥러닝 관점에서는 이 연산을 통해 이미지의 에지(Edge), 질감(Texture) 등의 특징을 추출할 수 있다.

  • 연산 과정

    1. 입력 데이터의 특정 영역과 필터의 각 요소를 원소별로 곱한다.
    2. 곱한 결괏값들을 모두 더하고, 편향(Bias)을 더하여 최종 특징 맵(Feature Map)의 한 원소를 결정한다.
    3. 필터를 일정 간격(Stride) 이동하며(Shift) 이 과정을 반복한다.
  • 필터 (Filter / Kernel)

    • 일반적으로 또는 크기를 가진다.
    • 입력 데이터의 특징을 감지하는 가중치(Weight) 파라미터이다.
    • 필터에 따라 identity, blur, sharpen, edge detector 등 다양한 특징을 추출할 수 있다. 단, 실제 딥러닝에서는 이런 필터값을 개발자가 지정하지 않고 데이터로부터 자동으로 학습된다.
  • 주요 하이퍼파라미터

    • 스트라이드 (Stride, )
      • 필터를 한 번에 얼마나 이동시킬지 결정하는 간격이다.
      • 스트라이드가 커질수록 출력 특징 맵의 크기는 작아진다.
    • 패딩 (Padding, )
      • 합성곱 연산 후 출력의 크기가 작아지는 것을 방지하고, 이미지 가장자리의 정보를 보존하기 위해 입력 데이터 주위를 특정 값(보통 0)으로 채우는 기법이다.
  • 출력 크기 결정 공식

    • 입력 데이터의 크기가 , 필터 크기가 ,

    • 패딩이 , 스트라이드가 일 때,

    • 출력 특징 맵의 크기 는 다음과 같이 계산된다.

    • (단, 결과는 정수여야 함)

(2) 활성화 함수

  • 활성화 함수 (Activation Function)

    • 합성곱 연산이 끝난 출력값에 비선형성을 추가하기 위해 사용한다.
    • 활성화 함수가 없으면 아무리 층을 깊게 쌓아도 하나의 선형 연산으로 수렴하므로, 복잡한 패턴을 학습할 수 없다.
  • ReLU (Rectified Linear Unit; nn.ReLU)가 가장 널리 쓰인다.

    • 의 형태로 연산이 빠르고 기울기 소실(Vanishing Gradient) 문제를 완화해 준다.

(3) 풀링 계층

  • 풀링 계층 (Pooling Layer; nn.MaxPool2d)

    • 합성곱 계층을 거쳐 나온 특징 맵의 공간적 크기(가로, 세로)를 줄이는 다운샘플링(Down-sampling) 역할을 한다.
    • 파라미터 수를 줄여 과적합(Overfitting)을 방지하고 연산량을 줄인다.
    • 입력 이미지의 미세한 위치 변화(평행이동 등)에 강인한(Robust) 특성을 갖게 한다.
    • 학습해야 할 가중치가 없다.
  • 종류

    • 맥스 풀링 (Max Pooling)
      • 지정된 영역에서 가장 큰 값을 선택한다.
      • 주로 이미지의 강한 특징을 잘 보존하여 CNN에서 가장 흔하게 쓰인다.
    • 평균 풀링 (Average Pooling)
      • 지정된 영역의 평균값을 계산한다.
      • 정보를 부드럽게 압축할 때 사용된다.

4.2. 분류 영역 (Classification)

  • 평탄화/플래튼(Flatten; nn.Flatten)

    • 다차원 특징 맵을 1차원 벡터로 변환한다.
  • 완전 연결 계층 (Fully Connected Layer, Dense Layer; nn.Linear)

    • 일반적인 다층 퍼셉트론(MLP)처럼 연결되어 가중치 합을 구하고 활성화 함수를 통과시킨다. (클래스 분류)
  • 출력 계층 (Output Layer)

    • 마지막 출력층에서 Softmax(다중 분류) 또는 Sigmoid(이진 분류) 등의 함수를 사용하여 입력 이미지가 각 클래스에 속할 확률(최종 예측값)을 출력한다.

    • CrossEntropyLoss를 쓸 때는 Softmax가 손실 함수에 포함되어 있어 따로 추가하지 않는다.

cf. 계층적 특징 추출

  • 계층적 특징 추출 (Hierarchical Feature Extraction) - Zeiler & Fergus 2014
    • 이와 같은 일련의 연산 과정을 통해, CNN은 저수준의 특징(선, 면)부터 고수준의 특징(눈, 코, 전체 사물 형태)까지 단계적으로 학습하며 정밀한 이미지 인식을 수행하게 된다.
    • 낮은 계층: edge(엣지) 등 단순한 특징 추출
    • 중간 계층: 단순한 특징들이 모여 구성된 object parts(부분)
    • 높은 계층: objects(전체 객체)