
전처리가 도움이 될 때와 해가 될 때: 이미지 분류 모델의 정확도가 크게 차이 나는 이유
요약
CIFAR-10 데이터셋을 활용한 CNN 모델 실험을 통해 데이터 전처리가 모델 정확도에 미치는 결정적인 영향을 분석합니다. 정규화, 표준화, 입력 균일성 등 전처리 기법에 따라 정확도가 65%에서 87%까지 변화함을 보여줍니다.
핵심 포인트
- 데이터 전처리는 모델 성능을 결정하는 핵심 요소임
- 픽셀 스케일링과 정규화는 그래디언트 안정성에 필수적임
- 채널별 표준화는 특정 색상이나 밝기에 대한 편향을 방지함
- 입력 텐서의 크기 조정과 패딩은 신경망 연산의 필수 조건임
Convolutional Neural Networks (CNN)를 사용하여 CIFAR-10 데이터셋에서 65%에서 87%의 정확도를 달성하기까지 — 그리고 그 과정에서 무엇이 잘못되었는가.
서론 — 목적
이미지 분류 모델 (Image Classification Models)을 구축할 때, 대부분의 관심은 일반적으로 모델 아키텍처 (Model Architecture), 하이퍼파라미터 (Hyperparameters), 또는 학습 전략 (Training Strategies)에 집중됩니다. 하지만 입력 데이터의 품질과 준비 상태는 모델 성능에 그에 못지않게, 어쩌면 그보다 더 중요한 영향을 미칠 수 있습니다. 실제로 동일한 데이터셋으로 학습된 동일한 모델이라 할지라도, 데이터를 어떻게 전처리 (Preprocessing) 하느냐에 따라 완전히 다른 결과를 낼 수 있습니다.
이는 중요한 질문을 던집니다: 데이터 전처리는 실제로 모델 성능에 얼마나 큰 영향을 미치는가?
이에 답하기 위해, 저는 다양한 전처리 기술을 체계적으로 적용하는 일련의 통제된 실험을 설계했으며, 그 결과는 놀라웠습니다. 전처리와 학습 전략만을 변경했을 뿐인데도 모델의 정확도는 약 65%에서 87% 이상까지 범위가 형성되었고, 한 사례에서는 거의 20%까지 떨어지기도 했습니다. 이러한 관찰 결과는 저의 초기 가설에 의문을 제기했으며, 종종 과소평가되는 진실을 강조했습니다: 전처리는 단순한 예비 단계가 아니라, 모델의 동작을 크게 결정할 수 있는 결정적인 요소입니다.
이미지 데이터 처리 — 왜 중요한가?
1. 그래디언트 안정성 (Gradient Stability - 정규화 (Normalization)):
이는 픽셀 스케일링 (Pixel Scaling) 과정입니다. 픽셀 값(0–255)을 더 작은 범위(0–1 또는 Z-score)로 스케일링하지 않으면
3. 피처 스케일링 일관성 (Feature Scaling Consistency, 표준화 (Standardization)):
컬러 이미지에서 Red, Green, Blue 채널은 서로 다른 분포를 가질 수 있습니다. 표준화 (Standardization)는 모든 입력 피처 (Feature)가 최종 예측에 동일하게 기여하도록 보장합니다. 이를 통해 모델이 특정 색상이나 밝기 수준에 편향되는 것을 방지합니다.
4. 입력 균일성 (Input Uniformity, 차원 (Dimensionality)):
신경망 (Neural networks)은 고정된 크기의 입력 텐서 (Input tensor) (예: 32 * 32 * 3)를 필요로 합니다. 데이터 처리 과정은 모든 이미지가 원래 크기나 종횡비에 관계없이 올바르게 크기가 조정(Resized)되고 패딩(Padded)되도록 보장합니다. 이러한 "정렬 (Alignment)"이 없다면, CNN 레이어 내부의 행렬 곱셈 (Matrix multiplications)은 수학적으로 불가능할 것입니다.
설정 (Setup)
본 연구의 모든 실험은 GPU 가속을 통해 딥러닝 모델을 학습시키기에 편리한 환경을 제공하는 Google Colab을 사용하여 수행되었습니다. 이를 통해 더 빠른 실험이 가능했으며, 서로 다른 전처리 기법 간에 일관된 학습 조건을 유지할 수 있었습니다.
실험 전반에 걸쳐 사용된 데이터셋은 이미지 분류 (Image classification) 분야에서 널리 알려진 벤치마크인 CIFAR-10입니다. 이 데이터셋은 비행기, 자동차, 새, 고양이, 배와 같은 10개의 클래스로 나뉘어 있는 32×32 픽셀 크기의 컬러 이미지 60,000장으로 구성되어 있습니다. 데이터셋은 50,000장의 학습 이미지와 10,000장의 테스트 이미지로 분할됩니다.
공정한 비교를 위해, 대부분의 실험에서 다음과 같은 조건을 유지했습니다:
- 초기 단계에서는 동일한 기본 합성곱 신경망 (Convolutional Neural Networks, CNN) 아키텍처를 사용했습니다.
- 옵티마이저 (Optimizer)는 기본 파라미터를 가진 Adam으로 설정했습니다.
- 사용된 손실 함수 (Loss function)는 희소 범주형 교차 엔트로피 (Sparse categorical cross-entropy)였습니다.
- 성능은 테스트 정확도 (Test accuracy)를 사용하여 평가했습니다.
각 실험은 입력 데이터에 적용된 전처리 기법만 달랐습니다.
1. 베이스라인 설정: 원본 데이터로 학습하기 (Establishing a Baseline: Training on Raw Data)
데이터 처리 단계를 설명하는 이미지. (이미지 출처: 저자 | Google Gemini으로 생성)
전처리의 진정한 영향을 이해하기 위해, 저는 간단한 질문에서 시작했습니다: 전처리를 전혀 하지 않았을 때 모델은 얼마나 잘 작동할까?
CIFAR-10 데이터셋을 사용하여, 가공되지 않은 픽셀 값(raw pixel values) 그대로 기본적인 합성곱 신경망 (Convolutional Neural Network (CNN)) 모델을 학습시켰습니다. 이는 정규화 (normalization), 스케일링 (scaling), 또는 어떠한 형태의 데이터 증강 (augmentation)도 없이 이미지를 있는 그대로 모델에 입력했음을 의미합니다.
모델 아키텍처 (model architecture)는 의도적으로 단순하게 유지했습니다:
- 맥스 풀링 (max-pooling)이 뒤따르는 두 개의 합성곱 계층 (convolutional layers)
- 완전 연결 밀집 계층 (fully connected dense layer)
- 분류를 위한 소프트맥스 (softmax) 출력 계층
이러한 설정은 나중에 관찰되는 성능 차이가 모델의 복잡성보다는 주로 전처리에 기인하도록 보장합니다.
# 1. 데이터 로드 (Raw 상태: 스케일링/정규화 없음)
(X_train, y_train), (X_test, y_test) = datasets.cifar10.load_data()
...
모델을 10 에포크 (epochs) 동안 학습시킨 결과는 다음과 같았습니다:
최종 테스트 정확도 (Raw): 65.47%
픽셀에서 예측까지: Keras CNN 모델 내에서 공간적 특징 (spatial features)이 어떻게 추출되고 평탄화 (flattened)되는지에 대한 구조적 분석.
데이터 변환 (Data Transformation):
-
원본 입력 (Raw Input) 이미지 (32 * 32 * 3)는 원래 형태(0–255)로 네트워크에 입력됩니다. 전처리나 정규화 (Normalization)가 전혀 이루어지지 않으면, 모델은 높은 강도의 값들을 처리해야 하며, 이는 역전파 (Backpropagation) 과정에서 불안정한 수학적 그래디언트 (Gradients)를 초래할 수 있습니다.
-
그 다음 3 * 3 커널 (Kernel)이 원본 이미지 위를 슬라이딩하며 기본적인 가장자리 (Edges)와 색상 그래디언트 (Color Gradients)를 포착하는 "특징 맵 (Feature Maps)"을 생성합니다. ReLU 아이콘은 음수가 0으로 변하는 것을 보여주며, 이어서 맥스 풀링 (MaxPooling)이 수행되어 가장 두드러진 특징에 집중할 수 있도록 데이터를 축소합니다.
-
64개의 필터로 구성된 두 번째 레이어는 이러한 초기 가장자리 맵을 처리하여 비행기 날개의 곡선이나 타이어의 둥근 모양과 같은 복잡한 형태를 식별합니다. 이후의 ReLU 및 맥스 풀링 (MaxPooling) 단계는 중요한 구조적 패턴을 보존하면서 복잡성을 더욱 감소시킵니다.
-
(평탄화 (Flattening)): 3D 데이터 블록이 하나의 거대한 1D 벡터 (Vector)로 "펼쳐집니다". 이 시각화는 의사 결정 단계 직전에 발생하는 상당한 데이터 확장을 강조합니다.
-
밀집 레이어 (Dense, 64개 뉴런 (Neurons)): 이 완전 연결 네트워크 (Fully Connected Network)는 어떤 특징이 중요한지를 학습합니다. 만약 "날개"와 "하늘"을 본다면, "비행기 (Airplane)" 확률에 매우 높은 가중치 (Weight)를 할당합니다.
-
소프트맥스 출력 (Softmax Output): 이 마지막 레이어는 분류기 (Classifier)의 원시 점수 (Raw Scores)를 합계가 100%가 되는 10개의 깔끔한 확률로 변환합니다. 이 경우 "비행기: 85%", "새: 5%"와 같이 나타날 수 있으며, 이는
np.argmax()를 통한 최종 선택으로 이어집니다.
데이터 처리가 전혀 없는 상태에서 모델은 65.47%의 정확도를 달성했습니다. 이 베이스라인 (Baseline)은 중요한 기준점 역할을 합니다. 이후 실험에서 발생하는 모든 성능 향상 또는 저하는 이 초기 결과와 비교하여 측정될 것입니다.
2. 정규화 (Normalization)를 통한 안정성 향상
베이스라인 정확도가 설정되었으므로, 다음 단계는 머신러닝 (Machine Learning)에서 가장 기본적인 전처리 기술 중 하나인 **정규화 (Normalization)**를 적용하는 것이었습니다.
이 실험에서 저는 모델 구조와 학습 설정(training setup)을 베이스라인 실험과 동일하게 유지하면서, CIFAR-10 이미지의 픽셀 값을 기존의 [0, 255] 범위에서 정규화된 [0, 1] 범위로 스케일링(scaling)했습니다. 이는 모델에 입력하기 전에 모든 픽셀 값을 단순히 255.0으로 나눔으로써 수행되었습니다.
# 2. 기본 전처리: 정규화 (0–1 범위)
X_train = X_train / 255.0
...
최종 테스트 정확도 (Final Test Accuracy): 69.38%
이 이미지는 정규화 (Normalization)를 적용한 후의 결과를 보여줍니다. (이미지 출처: 저자)
1. 변환 (The Transformation)
정규화 (Min-Max Scaling)는 원래의 픽셀 값을 고정된 범위인 [0, 1]로 매핑합니다. 이미지의 경우, 최대 픽셀 값은 255이고 최소 값은 0입니다.

이를 통해 입력 특성(input feature) x'이 항상 0 ≤ x' ≤ 1 사이의 분수 값이 되도록 보장합니다.
2. 기울기 안정성 증명 (The Gradient Stability Proof)
신경망 (neural network)에서 우리는 경사 하강법 (Gradient Descent)을 사용하여 가중치 (w)를 업데이트합니다.

연쇄 법칙 (Chain Rule)을 사용하여 기울기 (gradient)를 분해할 수 있습니다.

뉴런의 출력은 z = wx + b이므로, 미분값 ∂z/∂w는 단순히 입력값 x가 됩니다:
스케일링(Scaling)의 영향:
-
원시 데이터 (x = 255): 기울기(gradient) $\partial L/\partial w$는 $255 \times \delta$가 됩니다. 아주 작은 오차($\delta$)만으로도 거대한 가중치 업데이트가 발생합니다. 이는 옵티마이저(optimizer)가 최솟값을 지나쳐 버리는 "오버슈팅(overshoot)"을 유발하며, 진동과 불안정성을 초래합니다.
-
정규화된 데이터 (x = 1.0): 기울기는 $1 \times \delta$가 됩니다. 가중치 업데이트가 작고 제어 가능하며 오차에 비례하므로, 매끄러운 수렴(convergence)이 가능해집니다.
3. 데이터 증강(Data Augmentation)을 통한 일반화(Generalization) 탐구
정규화(normalization)를 통해 명확한 개선을 관찰한 후, 저는 더 발전된 전처리 기술인 데이터 증강(data augmentation)으로 넘어갔습니다. 입력 데이터의 스케일을 조정하는 정규화와 달리, 증강은 이미지에 무작위 변환(random transformations)을 적용하여 훈련 데이터셋의 다양성을 인위적으로 높이는 기법입니다.
이번 실험을 위해 저는 CIFAR-10 이미지에 다음과 같은 일련의 기하학적 변환(geometric transformations)을 적용했습니다:
- 무작위 수평 뒤집기 (Random horizontal flips)
- 작은 회전 (Small rotations)
- 미세한 줌 변화 (Minor zoom variations)
증강으로 인해 증가된 변동성을 수용하기 위해, 모델을 10 에포크(epoch) 대신 20 에포크 동안 훈련시켰습니다. 이 변경 사항 외에 핵심 아키텍처(architecture)는 이전 실험과 동일하게 유지되었습니다.
# 2. 데이터 정규화
X_train = X_train / 255.0
X_test = X_test / 255.0
...
하지만 결과는 다소 예상 밖이었습니다:
최종 테스트 정확도: 67.13%
데이터 증강은 어떻게 작동하는가?
데이터 증강이 수학적으로 어떻게 작동하는지 증명하기 위해서는 이를 좌표 변환(Coordinate Transformation) 함수로 바라봐야 합니다. 이미지를 "회전"하거나 "뒤집을" 때, 여러분은 단순히 픽셀을 이동시키는 것이 아니라 아핀 변환(Affine Transformation)이라 불리는 선형 대수(linear algebra) 연산을 적용하는 것입니다.
1. 무작위 뒤집기 (반사 행렬, Reflection Matrix)
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기

