Supplementary Materials
- 인공지능 08_Image Data & CNN
- PyTorch 05_MNIST (CNN)
- 딥러닝의 역사적 배경 → 이미지의 수치적 표현 → 완전연결망의 한계 → 이를 극복한 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) 등의 특징을 추출할 수 있다.
-
-
연산 과정
- 입력 데이터의 특정 영역과 필터의 각 요소를 원소별로 곱한다.
- 곱한 결괏값들을 모두 더하고, 편향(Bias)을 더하여 최종 특징 맵(Feature Map)의 한 원소를 결정한다.
- 필터를 일정 간격(Stride) 이동하며(Shift) 이 과정을 반복한다.
-
필터 (Filter / Kernel)
- 일반적으로 또는 크기를 가진다.
- 입력 데이터의 특징을 감지하는 가중치(Weight) 파라미터이다.
- 필터에 따라 identity, blur, sharpen, edge detector 등 다양한 특징을 추출할 수 있다. 단, 실제 딥러닝에서는 이런 필터값을 개발자가 지정하지 않고 데이터로부터 자동으로 학습된다.
-
주요 하이퍼파라미터
- 스트라이드 (Stride, )
- 필터를 한 번에 얼마나 이동시킬지 결정하는 간격이다.
- 스트라이드가 커질수록 출력 특징 맵의 크기는 작아진다.
- 패딩 (Padding, )
- 합성곱 연산 후 출력의 크기가 작아지는 것을 방지하고, 이미지 가장자리의 정보를 보존하기 위해 입력 데이터 주위를 특정 값(보통 0)으로 채우는 기법이다.
- 스트라이드 (Stride, )
-
출력 크기 결정 공식
-
입력 데이터의 크기가 , 필터 크기가 ,
-
패딩이 , 스트라이드가 일 때,
-
출력 특징 맵의 크기 는 다음과 같이 계산된다.
-
(단, 결과는 정수여야 함)
-
-
-
(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)
- 지정된 영역의 평균값을 계산한다.
- 정보를 부드럽게 압축할 때 사용된다.
- 맥스 풀링 (Max 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(전체 객체)