거리 기반 학습과
퓨샷
kNN과 K-means의 거리 기반 계산을 살펴보고, 메트릭 러닝과 프로토타입 네트워크로 확장한다. 의사결정트리의 분할 기준과 퓨샷 학습 방법도 비교한다.
학습 데이터가 적은 문제
의료 영상처럼 레이블을 수집하기 어려운 분야에서는 새로운 클래스의 학습 데이터가 적을 수 있다. 이런 조건에서는 대규모 학습을 처음부터 수행하기 어렵다.
퓨샷 학습은 클래스당 소수의 예제로 새로운 클래스를 구분하는 문제를 다룬다. 이전 데이터에서 학습한 표현이나 유사도 계산 방법을 활용한다.
데이터 사이의 거리를 사용하는 kNN과 K-means를 살펴본 뒤, 유사한 데이터를 가깝게 표현하는 메트릭 러닝과 퓨샷 분류를 알아본다.
kNN 분류
가장 단순한 분류기: 그리고 k라는 손잡이 하나에 판정이 뒤집히는 분류기.
최근접 이웃을 이용한 예측
새 데이터가 들어오면, 가장 가까운 k개의 학습 데이터를 찾아 다수결로 클래스를 정한다. 유사도는 유클리드 거리, 또는 벡터 방향을 비교하는 코사인 유사도로 잰다.
별을 옮기고 k를 돌려 보기
실습 목표: k와 질의점의 위치에 따른 분류 결과를 비교한다. 캔버스를 클릭하면 질의점이 이동한다.
실습 방법: 두 클래스의 경계 부근에 질의점을 놓고 k를 1부터 15까지 바꾼다. 확인할 내용: 다수결과 거리 가중 투표의 예측이 언제 달라지는지 비교한다. 경계에서 멀리 떨어진 위치에서도 확인한다.
kNN은 일반적으로 학습 데이터를 저장하고 예측 시 이웃을 검색한다. 참조 데이터가 많으면 거리 계산과 메모리 비용이 커질 수 있다. 데이터 전처리, 거리 선택, 검색 방법에 따라 준비 시간과 예측 성능이 달라진다.
생각해 볼 질문: k를 짝수로 두면 무슨 문제가 생기는가? k=전체 데이터 수로 두면 이 분류기는 무엇과 같아지는가?
K-means 군집화
비지도 군집의 대표: 할당과 갱신, 두 동작의 반복이 알아서 멈춘다.
군집 할당과 중심 갱신
K-means는 레이블 없이 n개 관측값을 k개 군집으로 나눈다. 예를 들어 고객의 키와 체중을 이용해 비슷한 체형의 군집을 찾을 수 있다.
- 데이터에서 k개를 임의로 뽑아 각 클러스터의 중심(centroid)으로 삼는다.
- 할당: 모든 데이터에 대해 k개 중심과의 거리를 재고, 가장 가까운 중심의 클러스터로 배정한다.
- 갱신: 클러스터별 소속 데이터의 평균 위치로 중심을 다시 계산한다.
- 소속이 더 이상 바뀌지 않을 때까지 2~3을 반복한다.
K-means를 한 동작씩 굴려 보기
실습 목표: 군집 할당과 중심 갱신을 반복하며 SSE가 어떻게 변하는지 확인한다.
실습 방법: [할당+갱신 1회]를 반복하고, 수렴 후 [새 초기값]으로 다시 실행한다. 확인할 내용: 반복 중 SSE의 변화와 초기값에 따른 최종 군집의 차이를 비교한다. k를 바꿀 때의 결과도 확인한다.
kNN 분류는 레이블이 있는 이웃을 이용해 새로운 데이터의 범주를 예측한다. K-means는 레이블 없이 데이터를 군집화한다. kNN의 k는 참고할 이웃 수, K-means의 k는 군집 수다.
생각해 볼 질문: K-means의 갱신 단계가 "평균"인 이유를 SSE 최소화와 연결해 설명할 수 있는가? 평균 대신 중앙값을 쓰면 무엇이 달라지는가?
엘보우 방법과 군집 수 선택
여러 k에 대해 K-means를 실행하고 SSE를 비교한다. k를 늘려도 SSE 감소 폭이 작아지기 시작하는 지점을 후보로 고려한다.
엘보우가 뚜렷하지 않으면 실루엣 계수 등 다른 기준도 함께 살펴본다. K-means는 유클리드 거리와 평균 중심을 사용하므로 길게 휘어진 군집이나 크기가 크게 다른 군집에서 적합하지 않을 수 있다.
생각해 볼 질문: 배달 거점 문제에서 SSE 말고 현실적으로 함께 고려해야 할 제약은 무엇인가? (거점당 처리 용량, 강 건너기…)
의사결정트리
의사결정트리는 분할 전후 불순도의 감소량을 기준으로 특징과 임계값을 선택한다.
특징과 임계값에 따른 분할
의사결정트리는 특징의 값에 따라 데이터를 반복해서 나눈다. 이 예제는 한 특징과 임계값을 사용하는 분할이며, 2차원 그림에서 좌표축과 평행한 경계로 나타난다. 분류와 회귀에 모두 사용할 수 있다.
분류 트리는 각 노드에서 클래스 혼합이 많이 줄어드는 특징과 임계값을 선택한다. 아래에서 엔트로피와 정보이득으로 분할 후보를 비교한다.
분류 트리에는 엔트로피나 지니 불순도 등의 기준을 사용한다. 깊이가 과도하게 커지면 과대적합이 발생할 수 있으므로 깊이 제한, 최소 샘플 수, 가지치기 등을 적용한다. 랜덤 포레스트는 여러 트리를 결합하는 방법이다.
생각해 볼 질문: "성별을 먼저 묻는 트리"가 성능이 좋게 나왔다. 배포해도 되는가? 해석 가능성이 오히려 문제를 드러내는 상황을 생각해 보자.
클래스가 섞인 정도
엔트로피는 노드 안의 클래스 분포가 얼마나 불확실한지를 나타낸다. 한 클래스만 있으면 0이고, 두 클래스가 절반씩 섞여 있으면 가장 크다.
출처: 기존 강의자료 「인공지능13주차」 24쪽, 「불순도의 지표」 그림.
분류 트리는 분할 후의 클래스 혼합이 줄어드는 질문을 찾는다. 엔트로피와 지니 불순도는 이 혼합을 수치로 나타내는 대표적인 기준이다.
5:5, 9:1, 10:0의 엔트로피
샘플 10개를 클래스 A와 B로 나눈다. p는 A의 비율이며, B의 비율은 1 − p다. 엔트로피는 클래스를 알기 전의 불확실성이며, 알게 될 때 얻는 평균 정보량이다.
가능성이 같은 두 결과를 0과 1로 구분하는 정보량이 1비트(bit)다. 이 기준에 맞춰 밑이 2인 로그를 사용한다.
- A 5개, B 5개
- A 9개, B 1개
- A 10개, B 0개모든 샘플의 클래스가 같다.
log₂ 0.5 = −1이므로 5:5의 엔트로피는 0.5 + 0.5 = 1이다. 0 log₂ 0은 극한값 0으로 정의하며 log₂ 0을 직접 계산하지 않는다.
밑이 2인 로그를 쓰면 단위는 비트이고, 자연로그를 쓰면 나트(nat)다. 0.469비트는 평균 정보량이므로 비트 단위의 저장 칸을 쪼갠다는 뜻이 아니다. 의사결정트리에서는 엔트로피를 클래스가 섞인 정도인 불순도의 지표로 사용한다. 한 클래스만 남아 순도가 높아질수록 엔트로피는 낮아진다.
출처 C. E. Shannon (1948), A Mathematical Theory of Communication, 로그의 밑과 정보 단위.
여러 클래스에서는 H = −Σₖ pₖ log₂ pₖ를 사용한다. pₖ는 해당 노드에서 클래스 k의 비율이다. 최대값 1비트는 두 클래스일 때의 값이며, K개 클래스가 같은 비율이면 최대값은 log₂ K다. 위의 10개 샘플은 계산을 위해 별도로 구성한 예제다.
분할 전후 엔트로피 비교
정보이득은 질문으로 데이터를 나눈 뒤 엔트로피가 얼마나 줄었는지를 나타낸다. 자식 노드의 엔트로피는 각 노드의 샘플 수에 따라 가중평균한다.
같은 부모 노드에서 후보를 비교할 때는 분할 후 엔트로피의 가중평균이 낮을수록 정보이득이 크다.
후보 1: 빨간색인가?
사과 2개와 바나나 2개가 있다. 이 가상 데이터에서는 사과는 모두 빨간색, 바나나는 모두 노란색이다. 클래스 비율이 반반이므로 분할 전 엔트로피는 1비트다.
- 예: 사과 2개. 한 클래스만 있으므로 엔트로피는 0이다.
- 아니오: 바나나 2개. 이쪽도 엔트로피는 0이다.
- 두 노드의 샘플 수는 각각 전체의 절반이다.
엔트로피 1비트가 최대인 것은 두 클래스에 대한 결과다. 이 예제의 색상과 길이는 계산을 위한 가상 설정이며, 실제 과일 전체의 특성을 나타내지 않는다.
후보 2: 길이가 10cm 이상인가?
같은 과일을 길이로 나눴더니, 예 쪽에는 사과 1개와 바나나 2개, 아니오 쪽에는 사과 1개가 남았다고 하자.
- 예: 사과 1개, 바나나 2개.
- 아니오: 사과 1개. 엔트로피는 0이다.
- 샘플 수가 3개와 1개이므로 가중치도 다르다.
두 후보 중에서는 정보이득이 1비트인 색상 질문을 선택한다.
반올림 전 엔트로피는 0.9182958…, 분할 후 가중평균은 0.6887219…, 정보이득은 0.3112781…이다. 계산은 중간값을 반올림하지 않고 표시할 때만 소수 셋째 자리로 줄였다.
숫자 데이터의 분할 기준 찾기
같은 네 과일의 길이를 사과 8cm·12cm, 바나나 14cm·18cm로 두자. 값을 정렬한 뒤 서로 다른 인접 값의 중간값을 분할 후보로 삼을 수 있다.
후보 기준값: 10, 13, 16cm
- 10cm: 사과 1개 / 사과 1개·바나나 2개. 정보이득 ≈ 0.311비트.
- 13cm: 사과 2개 / 바나나 2개. 정보이득 = 1비트.
- 16cm: 사과 2개·바나나 1개 / 바나나 1개. 정보이득 ≈ 0.311비트.
각 기준값 t에서 길이 ≤ t와 길이 > t로 나눈다. 길이 기준 중에서는 13cm가 가장 좋으며, 이 데이터에서는 색상 질문과 정보이득이 같다.
10cm는 (8 + 12) ÷ 2다. 8과 12 사이에서는 분할 결과가 같으므로 모든 실수를 하나씩 검사할 필요가 없다. 앞 예제의 “10cm 이상인가?”도 이 데이터에서 같은 두 집단을 나누며, 예·아니오의 방향만 바뀐다. 실제 구현은 정렬과 누적 통계 등을 이용해 후보 비교를 효율적으로 수행한다.
질문 선택과 분할 반복
- 후보 구성: 현재 노드에서 사용할 특징과 분할 기준을 정한다.
- 정보이득 비교: 각 후보로 나눠 클래스 수를 세고, 분할 후 엔트로피의 가중평균을 계산한다.
- 질문 선택: 조건을 만족하는 후보 중 정보이득이 가장 큰 질문으로 나눈다.
- 반복과 종료: 자식 노드에서 같은 과정을 반복한다. 한 클래스만 남거나, 최대 깊이·최소 샘플 수 등 종료 조건에 도달하면 멈춘다.
각 노드에서 좋은 분할을 선택하는 탐욕적 방법이다. 가능한 나무 전체를 전부 비교해 최적의 나무를 보장하는 방법은 아니다. 후보 특징 수를 제한하거나 분할을 무작위로 선택하는 변형도 있다. 분할할 수 없거나 설정된 개선 기준을 만족하지 못하면 엔트로피가 0보다 커도 종료한다.
불순도 기준과 트리 알고리즘을 구분한다. ID3는 엔트로피 기반 정보이득을 사용한다. scikit-learn의 DecisionTreeClassifier는 CART 기반 이진 분할에서 criterion="entropy" 또는 "gini"를 선택할 수 있다. 엔트로피를 선택한다고 ID3로 바뀌지는 않는다.
출처 기존 강의자료 「인공지능13주차」 23~24쪽. 과일 예제는 수업용 가상 데이터다. 분할과 종료 조건: scikit-learn 의사결정트리 문서 (2026-10-13 확인).
메트릭 러닝
원본 데이터의 거리와 의미적 유사도는 다를 수 있다. 메트릭 러닝은 과제에 적합한 거리를 계산할 수 있도록 표현을 학습한다.
유사한 것은 가깝게, 다른 것은 멀리
메트릭 러닝은 데이터 간 유사도·거리를 효과적으로 잴 수 있는 임베딩 공간을 학습하는 방법론이다. 신경망 f가 입력을 벡터로 바꾸고, 같은 클래스는 가깝게, 다른 클래스는 멀게 표현하도록 훈련한다. 여기서는 거리 비교의 원리를 먼저 살펴본다. 신경망과 역전파의 계산은 다음 모듈(M6)에서 배운다.
기준(anchor)–같은 클래스(positive)–다른 클래스(negative) 세 샘플 — "positive보다 negative가 여유(m)만큼 더 멀어야 벌점이 0"
메트릭 러닝으로 학습한 표현은 새로운 데이터와 기존 데이터의 유사도를 비교하는 데 사용할 수 있다. 얼굴 인증과 유사 이미지 검색이 대표적인 활용 예다. RAG의 의미 검색에서도 문장이나 문서의 벡터 표현을 비교한다.
생각해 볼 질문: Triplet 훈련에서 "너무 쉬운 negative"(이미 충분히 먼 샘플)만 뽑으면 학습이 왜 멈추는가? 어떤 negative를 골라야 하는가?
출처 FaceNet: Schroff 외, 2015: arxiv.org · Contrastive: Hadsell 외, 2006: ieeexplore.ieee.org
대조학습을 이용한 표현 학습
대조학습은 관련된 쌍과 그렇지 않은 쌍을 구분하도록 표현을 학습한다. 여기서는 같은 이미지의 서로 다른 증강을 양성 쌍으로 사용하는 자기지도 학습을 다룬다.
- Positive pair: 같은 이미지에 다른 증강(자르기, 색 왜곡)을 가한 두 버전. 임베딩이 가까워지도록.
- Negative pair: 서로 다른 이미지들. 임베딩이 멀어지도록.
- 데이터 증강이 핵심: 무엇을 "같다"로 정의할지가 증강의 설계에 달려 있다.
자기지도 학습은 사람이 부여한 레이블 없이 데이터에서 표현을 학습하고, 이후 소량의 레이블로 과제를 학습하는 데 활용할 수 있다. 증강 방식도 중요하다. 예를 들어 색을 바꾼 이미지를 같은 대상으로 처리하면 색 변화에 덜 민감한 표현을 학습할 수 있다.
생각해 볼 질문: 의료 영상에서 "좌우 반전" 증강이 위험할 수 있는 이유는? (심장의 위치를 생각해 보라)
출처 SimCLR: Chen 외, 2020: arxiv.org
프로토타입 네트워크
클래스별 지원 샘플의 임베딩 평균을 대표 벡터로 사용한다.
프로토타입 계산과 분류
각 클래스를 프로토타입(대표 벡터) 하나로 표현하고, 쿼리와 프로토타입 사이의 거리로 분류한다. 프로토타입은 지원 집합(support set) 임베딩의 평균이다: cₖ = (1/|Sₖ|) Σ f(xᵢ).
- 에피소드 샘플링: N개 클래스 × 클래스당 K개 샘플로 미니 과제를 만든다 (N-way K-shot).
- 프로토타입 계산: 지원 집합 임베딩의 클래스별 평균.
- 거리 기반 분류: 쿼리와 각 프로토타입의 유클리드 거리를 잰다.
- 손실 계산: 거리를 확률로 변환하고 교차엔트로피로 임베딩을 학습할 수 있다. 소프트맥스와 교차엔트로피의 계산은 M6에서 다룬다: p(y=k|x) = exp(−d(f(x),cₖ)) / Σⱼ exp(−d(f(x),cⱼ)).
에피소드 훈련은 클래스 N개와 클래스당 지원 샘플 K개로 구성한 소규모 분류 과제를 반복하는 방식이다. 일반적인 퓨샷 평가에서는 훈련 클래스와 평가 클래스를 분리한다. 새로운 클래스의 소수 샘플로 분류할 수 있는 표현을 학습하는 것이 목적이다.
생각해 볼 질문: 클래스당 영상 5장으로 새 질환을 식별하는 시스템을 가정한다. 이 문제에서 지원 집합과 쿼리는 각각 무엇인가?
출처 Snell, Swersky & Zemel, "Prototypical Networks for Few-shot Learning", NeurIPS 2017: arxiv.org
퓨샷 학습 방법 비교
Prototypical Networks, Matching Networks, Relation Networks가 비교 대상과 유사도를 계산하는 방식을 정리한다.
| Prototypical Net | Matching Net | Relation Net | |
|---|---|---|---|
| 비교 대상 | 클래스당 프로토타입 1개 | 모든 지원 샘플과 비교 | 쿼리·지원 쌍을 모듈에 입력 |
| 거리/유사도 | 유클리드 거리 (고정) | 코사인 + 어텐션 가중 | 거리 함수 자체를 학습 (비선형) |
| 강점 | 계산 효율 · 해석 용이 · Zero-shot 확장 | 유연한 가중치 | 복잡한 관계 모델링 |
Prototypical Networks는 클래스별 평균 벡터와의 거리를, Matching Networks는 지원 샘플과의 유사도에 따른 가중치를 사용한다. Relation Networks는 두 표현의 관계 점수를 학습한다. 알고리즘을 선택할 때는 레이블의 유무, 클래스 구성, 지원 샘플 수를 함께 확인한다.
생각해 볼 질문: Prototypical이 Zero-shot(샘플 0개)으로 확장 가능한 이유는? 프로토타입을 이미지가 아닌 무엇으로 만들 수 있는가?
요약 정리
거리 기반 분류와 군집화, 표현 학습, 퓨샷 분류의 차이를 정리한다.
핵심 내용
- kNN과 K-means는 목적이 다르다. kNN 분류는 레이블이 있는 이웃을 참고해 예측하고, K-means는 레이블 없이 데이터를 군집으로 나눈다.
- 분류 트리는 정보이득으로 분할을 비교할 수 있다. 부모 노드의 엔트로피에서 자식 노드 엔트로피의 가중평균을 뺀다.
- 거리 기반 방법에서는 표현과 거리의 선택이 중요하다. 메트릭 러닝은 과제에 적합한 유사도를 계산하도록 표현을 학습한다.
- 퓨샷 분류는 이전에 학습한 표현을 활용한다. 프로토타입 네트워크는 새로운 클래스의 소수 샘플로 대표 벡터를 만들고 질의점을 분류한다.
다음 장에서는 신경망과 역전파를 다룬다. 순전파, 손실함수, 가중치 갱신을 배우고, 이 장에서 소개한 임베딩을 어떻게 학습하는지 연결해 본다.
참고문헌
공개 원문 링크를 제공한다. 엔트로피와 정보이득 관련 설명은 2026년 10월 13일 보완했다.
1차 문헌
- Cover, T., & Hart, P. (1967). Nearest Neighbor Pattern Classification. IEEE Trans. Information Theory, 13(1). ieeexplore.ieee.org
- Lloyd, S. (1982). Least Squares Quantization in PCM. IEEE Trans. Information Theory, 28(2). (1957년 벨연구소 내부 보고서의 출판본: K-means의 원형) ieeexplore.ieee.org
- Quinlan, J. R. (1986). Induction of Decision Trees (ID3). Machine Learning, 1, 81–106. springer.com
- Hadsell, R., Chopra, S., & LeCun, Y. (2006). Dimensionality Reduction by Learning an Invariant Mapping. CVPR. ieeexplore.ieee.org
- Schroff, F., Kalenichenko, D., & Philbin, J. (2015). FaceNet: A Unified Embedding for Face Recognition and Clustering. CVPR. arxiv.org
- Vinyals, O., et al. (2016). Matching Networks for One Shot Learning. NeurIPS. arxiv.org
- Snell, J., Swersky, K., & Zemel, R. (2017). Prototypical Networks for Few-shot Learning. NeurIPS. arxiv.org
- Sung, F., et al. (2018). Learning to Compare: Relation Network for Few-Shot Learning. CVPR. arxiv.org
- Chen, T., et al. (2020). A Simple Framework for Contrastive Learning of Visual Representations (SimCLR). ICML. arxiv.org
교재 · 도구 문서
- scikit-learn. Decision Trees: Classification criteria. 엔트로피, 지니 불순도, 분할 후 가중평균의 정의. 2026-10-13 확인.
- 천인국 (2023). 인공지능: 파이썬으로 배우는 머신러닝과 딥러닝 (2판). 인피니티북스.: 9주차 강의 교재 (kNN·K-means·의사결정트리).
그림 1~4, 6의 데이터·판정 수치는 스크립트로 생성해 계산했다. 그림 5는 기존 강의자료 「인공지능13주차」 24쪽의 원본 그림이다. K-means의 기원은 Lloyd(1957 보고서/1982 출판)로 표기해 발표와 출판 연도의 차이를 병기했다.