딥러닝 모델을 학습할 때에는 정답 데이터(ground truth)가 필요하다. 이 정답 데이터는 사람이 직접 annotation을 통해 만든다. 하지만 사람 역시 완벽하지 않기 때문에, 이러한 정답 데이터에는 어느 정도의 오류가 포함될 수밖에 없다. 오늘은 object detection을 예시로, 이러한 오류가 모델 학습에 미치는 영향을 어떻게 줄일 수 있는지 살펴보도록 하겠다.
Object detection에서 정답 데이터는 사람이 직접 bounding box를 그려 만들어진다. 쉽게 말해, PPT에서 사각형을 마우스로 드래그해 그리는 방식과 거의 동일하다고 보면 된다.

사람은 완벽하지 않기 때문에, 당연히 bounding box 역시 이상적인 형태로 그려지지 않을 수 있다. 즉, 실제 object의 경계를 약간 벗어난 위치에 ground truth가 설정되는 경우가 발생한다.
기존의 고전적인 object detection 모델들은 bounding box를 예측할 때, 물체의 중심을 기준으로 한 (left, right, top, bottom) 값을 사람이 annotation한 값을 그대로 target으로 삼아 regression 문제로 접근했다. 하지만 이 방식은 불완전한 annotation 값, 즉 실제 경계가 아닐 수도 있는 값을 유일한 정답으로 간주해 모델이 학습하게 만든다. 그 결과, 모델은 이러한 annotation noise까지 함께 학습하게 되고 성능 저하가 발생할 수 있다.
Solution
이 문제를 완화하기 위한 대표적인 접근법은 left, right, top, bottom 각각의 ground truth를 단일 스칼라 값이 아니라 확률분포로 표현하는 것이다. 핵심 아이디어는, 사람이 만든 annotation에는 불확실성이 존재하므로 “경계가 특정 거리에서 나타날 확률” 자체를 모델이 학습하게 만드는 것이다. 즉, 가로축은 distance, 세로축은 probability인 형태로 ground truth를 확률분포로 구성하는 방식이다. (다르게 말하면, 사람이 표시한 그 ‘정확한 한 픽셀’만 정답으로 강제하지 않고, 그 주변도 정답일 가능성이 있다고 모델이 자연스럽게 학습하도록 만드는 것이다.) 구체적인 과정은 다음과 같다.
먼저 중심에서 경계까지의 최대 거리를 dmax로 두고, 0부터 dmax까지의 구간을 균등하게 나누어 N개의 스칼라 값을 만든다. 이 N개의 값이 확률분포의 정의역이 된다. 그다음 annotated ground truth 스칼라 값이 주어지면, 그 값과 가장 가까운 두 정의역을 선택한 뒤, 거리에 반비례하도록 확률을 할당한다. 예를 들어 ground truth가 7.3이고, 가장 가까운 두 정의역이 7과 8이라면, 7쪽에는 70%, 8쪽에는 30%의 확률을 주는 방식이다.
이처럼 구성된 확률분포를 새로운 ground truth로 사용하고, 모델 역시 동일한 형태의 확률분포로 예측을 출력하도록 만든 뒤, left, right, top, bottom 각각에 대해 KL divergence 또는 cross-entropy loss를 적용해 학습한다.
Inference 단계에서는 모델이 출력한 확률분포의 **기댓값(평균)**을 사용해 최종 스칼라 값을 얻는다.

Caution
확률분포 자체를 직접 예측하는 것은, 단순한 스칼라 값을 회귀하는 것보다 일반적으로 훨씬 어려운 작업이다. 따라서 실무적인 관점에서는 먼저 스칼라 기반으로 coarse하게 scalar 값을 예측한 뒤, 그 뒤에 distribution-based fine-grained adjustment module을 얹어 정밀하게 보정하는 방식이 훨씬 안정적이다. 물론 모델이 초기부터 확률분포를 안정적으로 예측할 수 있다면 이상적이지만,
실제 학습 환경에서는 coarse→fine 구조가 수렴성과 성능 면에서 더 실용적이라는 점을 주의할 필요가 있다.
Comment
결론적으로, 사람이 만든 annotation의 불완전성을 완화하는 한 가지 효과적인 방법은 ground truth를 단일 스칼라 값이 아니라 확률분포로 표현하는 것이다.
'AI 기본 지식' 카테고리의 다른 글
| High-level Server Architecture for LLM Inference (0) | 2025.12.15 |
|---|---|
| What's happening on the CPU and GPU When you train a Deep Learning Model? (진짜 강추) (0) | 2025.12.05 |
| Flow Models (0) | 2025.11.28 |
| What is Domain Generalization & Inductive Bias? (0) | 2025.11.28 |
| Vision 딥러닝 훈련 trend : pre-training -> fine-tuning (0) | 2025.11.26 |