courses
데이터 레이블링은 비용이 많이 들고, 느리며, 도메인별 전문성이 필요합니다. 그리고 대부분의 팀은 충분한 레이블 데이터를 보유하지 못합니다.
모델을 학습하려면 항상 레이블이 필요하지만, 정확히 레이블링하는 데는 시간과 종종 도메인 전문가가 필요합니다. 예를 들어, 의료 이미지는 영상의학과 전문의가, 법률 문서는 변호사가 필요합니다. 감성 분석처럼 단순해 보이는 작업도 누군가가 앉아서 각 예시를 일일이 태깅해야 합니다. 그 결과 대부분의 ML 팀은 아주 작은 레이블 데이터셋과 활용하지 못하는 방대한 비레이블 데이터만 남게 됩니다.
준지도학습은 둘 다로 학습함으로써 이 문제를 해결합니다. 소량의 레이블 데이터셋을 대규모 비레이블 데이터와 결합해 모델이 패턴을 학습하도록 합니다.
이 글에서는 준지도학습의 작동 방식, 가장 흔한 기법들, 그리고 언제 사용하는 것이 합리적인지 살펴보겠습니다.
그런데 지도학습이 정확히 무엇인지 궁금하신가요? 블로그 글에서 필수 지도학습 알고리즘의 작동 방식을 알아보세요.
준지도학습이란?
준지도학습은 레이블이 있는 데이터와 없는 데이터를 혼합해 학습하는 머신러닝 접근법입니다.
이름에서 알 수 있듯 지도학습과 비지도학습의 중간에 위치합니다. 지도학습은 모든 샘플에 레이블이 필요합니다. 비지도학습은 레이블 없이도 작동합니다. 준지도학습은 소량의 레이블 예시와 대량의 비레이블 예시를 함께 사용합니다.
레이블 데이터는 모델에 무엇을 찾아야 하는지 알려줍니다. 비레이블 데이터는 데이터의 구조를 보여줍니다. 둘을 결합하면 어느 한쪽만 사용할 때보다 모델이 더 많은 정보를 활용할 수 있습니다.
준지도학습의 작동 방식
프로세스는 소량의 레이블 데이터셋에서 시작합니다. 정답을 아는 몇백 개의 예시 정도일 수 있습니다.
그다음 훨씬 큰 비레이블 데이터셋을 가져옵니다. 수천에서 수백만 개 샘플에 레이블이 전혀 없을 수도 있습니다. 모델은 이 비레이블 데이터를 사용해 데이터 포인트 간의 근본적인 패턴과 관계를 학습합니다.
이후 레이블 예시가 그 구조를 올바른 정답으로 이끕니다. 모델은 이미 비레이블 샘플에서 데이터가 어떻게 구성되는지 파악했습니다. 레이블은 그 구조의 어떤 영역이 어떤 출력에 해당하는지 알려줍니다.
간단한 예시를 보겠습니다.
이메일이 스팸인지 아닌지 분류한다고 가정해 보세요. 레이블이 있는 이메일은 100개, 비레이블 이메일은 1만 개가 있습니다. 모델은 먼저 단어 패턴과 구조를 기준으로 이메일이 어떻게 묶이는지 학습합니다. 그런 다음 100개의 레이블 예시를 사용해 어떤 그룹이 스팸인지 아닌지를 파악합니다. 그 결과는 100개의 레이블 이메일만으로 학습했을 때보다 더 나은 성능을 보입니다.
준지도 vs 지도 vs 비지도학습
각 학습 접근법을 살펴보며 준지도학습이 두 다른 방법과 비교해 어디에 위치하는지 보겠습니다.
지도학습
지도학습은 완전히 레이블된 데이터로 학습합니다. 데이터셋의 모든 샘플은 입력과 알려진 출력을 갖습니다. 모델은 둘 사이의 매핑을 학습합니다.
충분한 레이블 예시가 있으면 잘 작동합니다. 하지만 과제에 따라 "충분"의 기준은 수천에서 수백만 개 샘플일 수 있습니다. 생산 비용이 많이 들고 때로는 불가능하기도 합니다.
비지도학습
비지도학습은 레이블을 전혀 사용하지 않습니다. 모델은 원시 데이터를 보고 스스로 구조를 찾습니다. 대표적인 예는 클러스터링과 차원 축소입니다.
장점은 레이블 데이터가 전혀 필요 없다는 점입니다. 단점은 실제로 무엇이 중요한지 모델이 모른다는 것입니다. 패턴은 찾겠지만, 그 패턴이 해결하려는 문제와 맞지 않을 수 있습니다.
준지도학습
준지도학습은 두 방법의 장점을 결합합니다. 작업을 정의할 소량의 레이블 데이터셋과 데이터 구조를 학습할 대규모 비레이블 데이터셋을 모델에 제공합니다.
레이블 데이터는 모델의 방향을 잡아줍니다. 비레이블 데이터는 샘플 간의 관계를 보여줍니다. 이 조합은 같은 소량 레이블만 사용한 지도학습보다 종종 더 나은 성능을 냅니다. 비레이블 데이터가 없었다면 놓쳤을 패턴을 모델이 포착하기 때문입니다.
다음은 세 가지 접근법의 간단한 비교입니다:

머신러닝 접근 방식 비교 표
정리하자면, 레이블링에는 시간이 너무 많이 들고 비레이블 데이터가 많다면 준지도학습을 고려할 가치가 있습니다. 이제 흔한 기법들을 살펴보겠습니다.
일반적인 준지도학습 기법
준지도학습을 구현하는 방법은 여러 가지가 있습니다. 각 기법은 레이블-비레이블 분할을 다르게 다루므로, 가장 일반적인 방법들을 살펴보겠습니다.
자기 학습(self-training)
가장 단순한 접근입니다. 레이블 데이터로 모델을 학습한 후, 그 모델로 비레이블 샘플의 레이블을 예측합니다. 가장 확신이 높은 예측을 의사 레이블로 레이블 집합에 추가하고, 확장된 데이터셋으로 모델을 다시 학습합니다.
이 과정을 모델의 성능 향상이 멈추거나 비레이블 데이터가 소진될 때까지 반복합니다. 구현이 쉽지만, 초기에 잘못 예측하면 그 오류가 데이터셋에 포함된다는 위험이 있습니다.
공동 학습(co-training)
공동 학습은 하나 대신 두 개의 모델을 사용합니다. 각 모델은 데이터의 서로 다른 "뷰"(특징 하위 집합)로 학습합니다.
예를 들어 웹페이지 분류를 생각해 봅시다. 한 모델은 페이지의 본문 텍스트를 보고, 다른 모델은 그 페이지로 향하는 링크의 앵커 텍스트를 봅니다. 각 모델은 다른 모델을 위해 비레이블 샘플에 레이블을 달아 주고, 여러 라운드에 걸쳐 서로를 학습시킵니다.
핵심 아이디어는 한 모델의 강점이 다른 모델의 약점을 보완한다는 것입니다. 각 뷰만으로도 충분한 정보가 있다면, 공동 학습은 자기 학습보다 나은 성능을 낼 수 있습니다. 한 모델의 오류를 다른 모델이 교정하기 때문입니다.
레이블 전파(label propagation)
이 방법은 각 데이터 포인트를 노드로 하고 유사한 포인트를 간선으로 연결한 그래프를 구축합니다. 이후 레이블이 레이블된 노드에서 이웃으로 "퍼져나갑니다".
유사한 데이터 포인트는 동일한 레이블을 공유한다는 가정을 둡니다. 레이블된 샘플이 비레이블 샘플 군집에 가깝게 위치한다면, 그 비레이블 샘플도 같은 클래스일 가능성이 큽니다. 모든 노드가 레이블을 가질 때까지 레이블이 그래프를 따라 전파됩니다.
데이터에 명확한 군집 구조가 있을 때 잘 작동하지만, 클래스 간 경계가 흐릿하면 실패할 수 있습니다.
준지도 신경망
딥러닝에는 자체적인 준지도 기법들이 있습니다. 가장 흔한 몇 가지는 다음과 같습니다:
- 일관성 정규화: 입력에 노이즈나 증강 같은 작은 변형을 주더라도 동일한 출력을 내도록 모델을 유도합니다. 좋은 모델이라면 입력을 약간 바꿨다고 예측이 달라지지 않아야 한다는 생각에 기반합니다
- 신경망에서의 의사 레이블링: 자기 학습과 유사하지만 배치 수준에서 작동합니다. 학습 중 모델이 비레이블 샘플의 레이블을 생성하고, 실제 레이블과 함께 손실 함수에 사용합니다.
FixMatch와 MixMatch 같은 방법은 이러한 아이디어를 결합했으며, 매우 적은 레이블 예시만으로도 벤치마크에서 좋은 결과를 보여주었습니다.
준지도학습이 중요한 이유
준지도학습을 신경 써야 하는 가장 큰 이유는 비용입니다.
데이터 레이블링에는 데이터, 도메인 전문가, 시간, 비용이 필요합니다. 준지도학습은 적은 레이블로 더 많은 성과를 내어 비용을 줄여줍니다.
그리고 성능 측면이 있습니다. 500개의 레이블 샘플과 5만 개의 비레이블 샘플로 학습한 모델은, 동일한 모델을 500개 레이블만으로 학습한 것보다 종종 더 뛰어납니다. 비레이블 데이터가 데이터 분포에 대한 더 완전한 그림을 제공해 더 나은 예측으로 이어지기 때문입니다.
또 현실적인 이유가 있습니다. 비레이블 데이터는 어디에나 있습니다. 모든 회사가 로그, 이미지, 문서, 녹음 데이터를 쌓아두고 있지만 레이블링할 시간이 없습니다. 준지도학습은 그 데이터에서 유용한 가치를 만들어 냅니다.
준지도학습의 활용 분야
준지도학습은 레이블을 얻기 어려운 도메인에서 자주 등장합니다.
이미지 분류는 가장 흔한 사용 사례 중 하나입니다. 수천 장의 이미지를 레이블링하는 일은 지루하지만, 비레이블 이미지를 수집하는 건 쉽습니다. 준지도 기법을 사용하면 수백 장의 레이블만으로도 정확한 분류기를 학습할 수 있습니다.
텍스트 분류도 마찬가지입니다. 수백만 건의 고객 리뷰나 지원 티켓이 있을 수 있지만, 수동 레이블이 있는 것은 일부뿐입니다. 준지도학습은 전체 데이터셋에 일반화되는 분류기를 구축하는 데 도움을 줍니다.
음성 인식도 흥미로운 영역입니다. 오디오를 수작업으로 전사하는 데는 많은 노력이 들지만, 원시 오디오 데이터는 풍부합니다. 비레이블 녹음은 모델이 음향적 패턴을 학습하도록 돕고, 전사된 샘플은 올바른 매핑을 가르칩니다.
의료 데이터 분석은 도메인 특화 과제로 특히 적합합니다. 의사가 스캔 이미지나 환자 기록에 레이블을 다는 일은 비싸고 느립니다. 하지만 병원에는 방대한 비레이블 임상 데이터가 있습니다. 준지도 방법은 완전한 레이블 데이터셋 없이도 진단 모델을 구축하는 데 도움을 줍니다.
준지도학습의 장점
준지도학습이 많은 프로젝트에 적합한 이유는 다음과 같습니다:
- 적은 레이블로도 충분합니다: 완전한 지도 접근법이 요구하는 레이블의 일부만으로도 좋은 결과를 얻을 수 있습니다
- 일반화 성능 향상: 비레이블 데이터가 더 다양한 예시에 모델을 노출해, 보지 못한 데이터에 대한 성능을 향상시킵니다
- 비용 효율적입니다: 레이블링이 비싸거나 시간이 많이 들 때(대부분 그렇습니다), 보유한 데이터를 최대한 활용해 시간과 예산을 절약합니다
따라서 데이터는 많고 레이블은 적다면, 이제 준지도학습을 고려할 때입니다.
준지도학습의 한계
준지도학습에는 알아두어야 할 몇 가지 트레이드오프가 있습니다.
- 비레이블 데이터의 품질이 중요합니다: 비레이블 데이터가 레이블 데이터와 동일한 분포에서 오지 않으면, 모델은 잘못된 패턴을 학습합니다
- 잘못된 의사 레이블: 자기 학습 같은 방법에서는 확신이 높지만 틀린 예측이 정답처럼 취급됩니다. 모델이 그 잘못된 레이블로 학습하며 오류가 강화되고, 이후 예측이 더 나빠질 수 있습니다
- 지도학습보다 복잡합니다: 조정해야 할 하이퍼파라미터가 더 많고, 설계 선택지도 더 많으며, 실패 지점도 많습니다. 지도 모델은 구축하고 설명하기가 더 간단합니다. 준지도 방법은 복잡성을 더하는데, 레이블 데이터셋이 이미 충분히 크다면 그 복잡성이 항상 가치 있는 것은 아닙니다
이 어느 것도 치명적인 단점은 아니지만, 시작하기 전에 알아둘 필요가 있습니다.
실전 준지도학습 (파이썬 예제)
scikit-learn의 LabelSpreading 알고리즘을 사용해 간단한 파이썬 예제로 준지도학습을 직접 살펴보겠습니다.
데이터셋을 만들고, 그중 일부만 레이블링한 뒤, 나머지는 모델이 스스로 알아내도록 하겠습니다.
데이터 준비
먼저 데이터셋을 생성하고, 대부분의 레이블을 마스킹해 준지도 시나리오를 모사하겠습니다:
import numpy as np
from sklearn.datasets import make_moons
from sklearn.semi_supervised import LabelSpreading
from sklearn.metrics import accuracy_score
# Generate a dataset with 500 samples
X, y_true = make_moons(n_samples=500, noise=0.2, random_state=42)
# Keep only 10%, mask the rest as -1
rng = np.random.RandomState(42)
labeled_idx = rng.choice(500, size=50, replace=False)
y_train = np.full(500, -1) # -1 means unlabeled in scikit-learn
y_train[labeled_idx] = y_true[labeled_idx]
print(f"Labeled samples: {np.sum(y_train != -1)}")
print(f"Unlabeled samples: {np.sum(y_train == -1)}")

레이블 및 비레이블 데이터 샘플 수
scikit-learn에서는 -1이 샘플이 비레이블임을 표시합니다. 500개 샘플 중 레이블이 있는 것은 50개뿐입니다. 모델은 나머지 450개를 알아내야 합니다.
학습 및 예측
이제 LabelSpreading 모델을 학습하고, 비레이블 데이터를 얼마나 잘 레이블링하는지 확인해 보겠습니다:
model = LabelSpreading(kernel="knn", n_neighbors=7)
model.fit(X, y_train)
y_pred = model.transduction_
# Check accuracy on the originally unlabeled samples
unlabeled_mask = y_train == -1
accuracy = accuracy_score(y_true[unlabeled_mask], y_pred[unlabeled_mask])
print(f"Accuracy on unlabeled samples: {accuracy:.2%}")

비레이블 샘플에 대한 정확도
모델은 데이터의 10%만 레이블 예시로 사용했음에도 대부분의 비레이블 샘플을 올바르게 레이블링했습니다. 이것이 핵심 아이디어입니다.
결과 시각화
정확도는 높습니다(거의 96%). 하지만 어떤 샘플이 오분류되었는지 시각적으로 확인해 보겠습니다:

실제 레이블과 예측 레이블
예측 레이블은 실제 레이블과 거의 완벽하게 일치합니다. 모델은 500개 중 50개의 레이블 예시만 보았음에도 말이죠. 오른쪽 차트에서 빨간색으로 표시된 점이 오분류된 샘플입니다.
준지도학습에서 흔한 실수
준지도학습이 얼마나 강력한지 보셨겠지만, 모든 상황에 완벽한 것은 아닙니다. 가장 흔한 실수와 이를 피하는 방법은 다음과 같습니다.
- 비레이블 데이터가 항상 도움이 된다고 가정하기: 그렇지 않습니다. 비레이블 데이터가 레이블 데이터와 다른 분포에서 왔다면, 모델은 실제 과제에 적용되지 않는 패턴을 학습합니다. 레이블과 비레이블 데이터가 같은 출처이며 동일한 문제를 대표하는지 항상 확인하세요
- 부실한 초기 모델: 준지도 방법은 초기 지도 모델 위에 쌓입니다. 첫 모델이 약하면(샘플이 너무 적거나 하이퍼파라미터가 나쁘면) 이후 모든 단계가 그 문제를 이어받습니다. 비레이블 데이터를 추가하기 전에 가능한 최선의 지도 기준선을 마련하세요
- 의사 레이블에 과도한 의존: 의사 레이블의 품질은 그것을 생성한 모델 수준에 불과합니다. 모든 의사 레이블을 신뢰하면 학습 라운드마다 오류가 누적될 수 있습니다. 높은 신뢰 임곗값을 설정해, 모델이 확신하는 의사 레이블만 사용하고 나머지는 버리세요
- 데이터 분포 무시: 준지도 방법은 비레이블 데이터의 구조가 레이블에 유용한 정보를 담는다고 가정합니다. 데이터에 명확한 군집이나 매끄러운 결정 경계가 없다면 이 가정은 성립하지 않습니다
이 네 가지를 피하려면, 강한 지도 기준선에서 시작하고, 비레이블 데이터를 점진적으로 추가하며, 매 단계에서 실제로 성능이 향상되는지 확인하세요.
준지도학습을 사용할 때
다음 세 가지 상황에서 준지도학습이 적합합니다:
- 레이블 데이터가 제한적일 때: 소량의 레이블 데이터만 있고 추가 레이블 확보가 비싸거나 느리다면, 준지도학습이 정확도를 한 단계 더 끌어올려 줍니다
- 비레이블 데이터가 풍부할 때: 이 방법이 작동하려면 대량의 비레이블 데이터가 필요합니다. 비레이블 데이터가 적으면 모델이 충분한 구조를 학습하지 못해 차이가 나지 않습니다. 레이블과 비레이블 데이터셋의 크기 격차가 클수록 준지도 방법의 효과가 커집니다
- 데이터에 명확한 구조가 있을 때: 유사한 데이터 포인트가 같은 레이블을 공유하는 경우에 가장 잘 작동합니다. 데이터가 군집을 이루거나 클래스 간 경계가 매끄럽다면, 비레이블 데이터가 그 패턴을 더욱 뚜렷하게 만듭니다. 반대로 클래스가 뒤섞여 분리가 어렵다면, 비레이블 데이터가 크게 도움이 되지 않습니다.
이 세 조건이 모두 해당한다면, 준지도학습을 시도해 볼 가치가 있습니다.
결론
간단히 말해, 준지도학습은 모든 것에 레이블을 달지 않고도 더 나은 모델을 학습하는 방법입니다. 소량의 레이블 데이터셋과 대규모 비레이블 데이터셋을 결합해 모델이 둘 다에서 학습하도록 합니다.
이점은 명확합니다. 레이블링 시간 단축, 출시까지의 시간 단축, 비용 절감, 그리고 제한된 레이블만으로 학습했을 때보다 더 나은 성능. 특히 의학, 법률, NLP처럼 레이블링에 도메인 전문가가 필요한 분야에서는 큰 의미가 있습니다.
비레이블 데이터가 매우 많다면 준지도학습을 시도해 보세요. 좋은 지도 기준선에서 시작하고, 데이터 구조에 맞는 기법을 선택한 뒤, 비레이블 데이터가 실제로 도움이 되는지 측정하세요. scikit-learn의 LabelSpreading 은 첫 실험으로 좋고, FixMatch와 MixMatch 같은 방법도 시험해 보세요.
2026년에 취업 준비를 마치고 싶다면, Machine Learning Engineer 트랙을 수강해 보세요. 기초부터 MLOps까지 모두 다룹니다.
FAQs
준지도학습이란 무엇인가요?
준지도학습은 소량의 레이블 데이터와 대량의 비레이블 데이터를 함께 사용해 모델을 학습하는 머신러닝 접근법입니다. 레이블 데이터는 모델에 무엇을 찾아야 하는지 알려주고, 비레이블 데이터는 전체적인 데이터 구조를 이해하도록 돕습니다. 이를 통해 레이블 데이터만으로 학습하는 것보다 더 나은 결과를 얻을 수 있습니다.
준지도학습은 지도학습 및 비지도학습과 어떻게 다른가요?
지도학습은 모든 샘플에 알려진 출력이 있는 레이블 데이터만 사용합니다. 비지도학습은 레이블이 전혀 없는 데이터를 사용해 스스로 패턴을 찾습니다. 준지도학습은 작업을 정의할 소량의 레이블 데이터셋과 데이터 구조를 학습할 대규모 비레이블 데이터셋을 함께 사용합니다.
언제 준지도학습을 사용해야 하나요?
레이블 데이터가 적고 비레이블 데이터가 많으며, 자연스러운 군집이나 부드러운 클래스 경계 등 데이터에 명확한 구조가 있을 때 사용하세요. 레이블링이 비싸거나 도메인 전문가가 필요한 경우(예: 의료 영상, 법률 텍스트 분석) 준지도학습은 모든 데이터에 레이블을 달지 않고도 정확한 모델을 구축하는 데 도움이 됩니다.
준지도학습에서 자기 학습(self-training)이란 무엇인가요?
자기 학습은 먼저 레이블 데이터로 모델을 학습한 다음, 그 모델로 비레이블 샘플의 레이블을 예측하는 기법입니다. 가장 확신이 높은 예측을 의사 레이블로 레이블 집합에 추가하고, 확장된 데이터셋으로 모델을 재학습합니다. 초기의 잘못된 예측이 이후 라운드에서 강화될 위험이 있으므로, 높은 신뢰 임곗값을 설정하는 것이 좋습니다.