📌 머신러닝의 기초: 대비 학습(Contrastive Learning)
"좀도둑인가.. 알바 정도는 되겠군."
탐정 오스카의 사무실에 택배 도둑을 잡아달라는 의뢰가 접수되었습니다.
C구의 한 동네에서 도어락이 없는 빌라를 중심으로 작은 택배들이 지속적으로 사라지고 있었습니다. 경찰이 일대의 CCTV를 조사한 결과 한 남성이 용의자로 지목되었습니다. 남성은 여러 빌라를 돌아다니며 상습적으로 택배를 훔치는 것 같았습니다. 다만 여러 가지 모습으로 철저히 변장했기 때문에 남성의 신원을 알 수는 없었습니다.
오스카는 택배를 도둑맞은 빌라들을 중심으로 2-3일 간 조사한 끝에 옆 동네에 사는 L씨를 범인으로 특정했습니다. 그러나 확실한 증거가 없으므로, 택배를 훔치는 현장을 덮치기로 했습니다. 도어락이 없는 빌라 중 아직 범행이 발생하지 않은 두 곳을 골라, 자신과 조수인 브라운이 각각 지키기로 했습니다.
"자, L씨 사진이야. 내일은 어떤 모습으로 나타날 지 모르겠군."
오스카는 L씨의 사진을 한 장 입수하여, 조수인 브라운에게 철저히 '학습'하도록 지시했습니다.
'오늘 밤엔 잠자긴 틀렸네..'
브라운이 받은 L씨의 사진은 한여름인 듯 반팔 차림의, 맨 얼굴이 드러난 사진이었습니다. 하지만 내일은 어떻게든 변장을 하고 등장할 테니 얼굴을 외워 봐야 소용없는 일이었습니다.
브라운은 받은 사진을 스캔한 뒤, 여러 가지 옷차림을 한 수십 장의 사본을 생성하여 출력했습니다. 또 CCTV 영상에 찍힌 L씨의 사진들, 그리고 비슷한 체형인 다른 사람의 사진들도 수십 장을 출력했습니다. 그리고는 100장이 넘는 모든 사진들을 테이블에 올려 두고, L씨의 사진만을 꼼꼼히 살펴보며 분류해서 한쪽에 모아두었습니다.
이튿날, 밤을 꼬박 새우며 '학습' 을 완료한 브라운은 L씨가 어떤 모습이라도 알아볼 수 있다는 확신을 갖고 현장으로 출발했습니다.

대비 학습; CCTV 영상 자료에서 용의자 가려내기
대비 학습(Contrastive Learning; CL)은 자기지도학습의 핵심 기법으로, 레이블 없이 데이터를 학습하는 방법입니다. 레이블이 없는 데이터에서 유사한(Positive; 긍정) 쌍과 유사하지 않은(Negative; 부정) 쌍을 정의하고, 이 쌍들을 비교(Contrast)하면서 특징 표현(Feature Representation)을 학습합니다.

이 때 알고리즘은 스스로 정의한 '유사성'과 '비유사성'을 기준으로 데이터를 구조화하는 방법을 배웁니다.
- '유사한 짝(Positive Pair)' 만들기
- 원본 이미지와 이를 약간 변형한(자르기, 회전, 색상 변경 등) 이미지는 서로 같은 대상을 나타냅니다. (예: 똑같은 고양이 사진을 왼쪽으로 조금 옮긴 것)
- 학습 목표: 모델은 이 두 이미지를 봤을 때 "너희 둘은 본질적으로 같은 거야!"라고 인식하도록 학습합니다. 즉, 모델이 추출하는 특징(Feature)이 서로 최대한 비슷해지도록 만듭니다.
- '유사하지 않은 짝(Negative Pair)' 만들기
- 원본 이미지와 완전히 다른 임의의 이미지는 서로 다른 대상을 나타냅니다. (예: 고양이 사진과 강아지 사진)
- 학습 목표: 모델은 이 두 이미지를 봤을 때 "너희 둘은 완전히 다른 거야!"라고 인식하도록 학습합니다. 즉, 특징이 서로 최대한 멀리 떨어져 있도록 만듭니다.
대비 학습은 유사한 짝은 가깝게 만들고, 유사하지 않은 짝은 멀리 밀어내는 방식으로 데이터의 본질적인 특징을 스스로 배웁니다. 이는 고성능의 특징 추출기(Feature Extractor)를 생성하여 표현 학습(Representation Learning)을 강화하고, 레이블이 적은 다운스트림(Downstream) 태스크에 적용해도 높은 성능을 달성할 수 있게 합니다.
위의 이야기에서 경찰이 동네 일대의 CCTV 자료들을 모아서 비교하며, 행동 패턴과 신체적 특징이 유사한 인물을 가려 내어 용의자로 특정한 방식이 바로 대비 학습입니다. 고성능의 '특징 추출기' 가 된 경찰은 새로운 CCTV 자료를 입수해도 같은 용의자를 알아볼 수 있을 거예요.
앵커 샘플을 활용하는 대비 학습; 브라운의 벼락치기


머신러닝 관점에서, CL은 앵커 샘플(Anchor), 유사한 샘플(Positive), 유사하지 않은 샘플(Negative)을 비교하여 임베딩 공간에서 앵커 샘플과 유사한 샘플을 가깝게, 유사하지 않은 샘플을 멀게 배치하도록 학습시키는 것을 목표로 합니다.
브라운이 받은 L씨의 사진이 앵커 샘플입니다. 브라운은 이 원본 사진으로 유사한 샘플 수십 장을 만들고, 유사하지 않은 샘플도 따로 수십 장을 만들어 테이블 위에서 비교하며, L씨와 유사한 사진들을 따로 모았습니다. 유사하지 않은 사진들은 구겨서 멀리 던져버렸습니다.
이 방식은 앵커 샘플을 활용한 대비 학습이라 할 수 있습니다.
요즈음 실무에서는 앵커 샘플을 명시적으로 만들고 관리하는 옛날 방식(SimCLR, MoCo v1/v2)은 거의 안 쓰고, 앵커도 없고 부정 샘플도 안 쓰거나 자동으로 처리되는 BYOL / DINO v2 / Barlow Twins / VICReg 계열을 씁니다. 데이터만 던져주면 끝인데다, 하이퍼파라미터도 거의 없고, 코드도 훨씬 간단하고, 성능은 더 좋고, GPU 메모리도 덜 먹거든요.
참고 1) 앵커 샘플을 쓰지 않는 대비 학습의 종류
| 방법 | 앵커 유무 |
핵심 아이디어 | 장점 |
| BYOL (2020) | 없음 | online ↔ target 네트워크만 비교 (부정 샘플도 안 씀) |
부정 샘플 관리 스트레스 없음, 성능은 SimCLR급 |
| SimSiam (2021) |
없음 | 같은 네트워크 두 브랜치 + stop-gradient만으로 collapse 방지 |
코드 100줄도 안 됨, GPU 1대로도 잘 돌아감 |
| Barlow Twins | 없음 | 두 뷰의 cross-correlation matrix를 identity matrix에 가깝게 만듦 |
하이퍼파라미터 거의 없음, 튜닝 거의 안 해도 됨 |
| VICReg | 없음 | Variance + Invariance + Covariance 정규화만으로 학습 |
수학적으로 가장 깔끔, collapse 방지 보장 |
| DINO v2 (2023~2025) |
없음 | Teacher-Student + centering/sharpening (Knowledge Distillation 스타일) |
ViT 기반 ImageNet 88.5%+ 달성, 현재 비전 SSL 최강 |
| EsViT / iBOT | 없음 | 마스킹된 패치 + 전체 패치 간 distillation (앵커 대신 teacher representation) |
MAE + DINO 합친 형태, 2025년 멀티모달에서도 대세 |
| MST (2025 Meta) |
없음 | Multi-view Subspace Training –> 모든 뷰를 동등하게 취급 |
메타 내부에서 릴스/피드 추천에 실제 적용 중 |
참고 2) 자주 사용되는 손실함수
| 손실함수 이름 | 앵커 유무 |
부정샘플 | 특징 | 주요 모델 |
| InfoNCE (a.k.a. NT-Xent) |
있음 | 필요 | 지금까지 가장 많이 쓰인 전통 손실. SimCLR 논문에서 유명해짐 | SimCLR, MoCo v1/v2 |
| Triplet Loss (with margin) |
있음 | 필요 | 앵커-긍정 거리 + 마진 < 앵커-부정 거리 조건 → 얼굴 인식에서 아직도 많이 씀 | FaceNet, 오래된 CL |
| BYOL Loss (MSE + predictor) |
없음 | 필요 없음 | online ↔ momentum(target) 네트워크 사이의 MSE만으로 학습 → 부정 샘플 0개 | BYOL, Bootstrap Your Own Latent |
| SimSiam Loss (negative cosine similarity + stop-grad) |
없음 | 필요 없음 | 같은 네트워크 두 브랜치 사이의 negative cosine similarity → 코드 50줄 수준 | SimSiam |
| Barlow Twins Loss | 없음 | 필요 없음 | 두 뷰의 cross-correlation 행렬을 identity matrix에 가깝게 → 하이퍼파라미터 거의 0개 | Barlow Twins |
| VICReg Loss | 없음 | 필요 없음 | Variance + Invariance + Covariance 세 항만으로 collapse 완벽 방지 → 수학적으로 가장 깔끔 | VICReg |
| DINO Loss (cross-entropy with centering & sharpening) |
없음 | 필요 없음 | teacher-student distillation + momentum centering → 현재 ViT 기반 비전 SSL 최고 성능 | DINO v1/v2, iBOT |
- 가장 간단하고 성능 좋은 것 -> DINO Loss 또는 VICReg
- 코드 100줄 이하로 빠르게 돌리고 싶으면 -> SimSiam 또는 Barlow Twins
- 여전히 논문 재현할 때만 필요하면 -> InfoNCE (NT-Xent)
- 부정 샘플 없애고 싶으면 -> BYOL, SimSiam, Barlow Twins, VICReg, DINO 중 아무거나
활용 사례
- 구글의 SimCLR(2020, 2025 업데이트 버전)은 대비 학습으로 ImageNet에서 76% 정확도를 달성, 이후 구글 포토의 이미지 검색에 적용되어 검색 속도 30% 향상과 사용자 만족도 18% 증가를 이뤘습니다.
- 페이스북(Meta)의 MoCo는 비디오 추천 시스템에 도입되어, 2025년 기준으로 릴스(Reels) 참여율 22%↑를 기록했습니다.
- 아마존은 대비 학습을 제품 추천에 활용해 재고 회전율 12% 개선과 매출 10% 성장을 달성했습니다.
대비 학습의 장점과 한계
- 장점
| 장점 | 설명 | PM 관점에서 |
| 데이터 효율성 | 대규모의 레이블 없는 데이터(이미지, 텍스트, 음성 등)를 활용하여 강력한 '특징(Feature) 표현' 을 학습합니다. | 레이블링 비용/시간을 획기적으로 절약하고, 데이터 수집의 병목 현상을 완화합니다. |
| 전이 학습 능력 | 비지도 학습으로 얻은 특징은 다양한 다운스트림 작업(분류, 객체 탐지 등)에 매우 잘 전이(Transfer)되어 초기 성능을 높여줍니다. | 적은 레이블로도 지도 학습 모델과 비슷하거나 더 좋은 성능을 달성할 수 있습니다. |
| 강력한 표현 | 다양한 데이터 증강(Augmentation)을 통해 학습하기 때문에, 모델이 사소한 노이즈나 변화에 덜 민감하고 더 본질적인 특징을 파악합니다. | 실제 서비스 환경에서 발생할 수 있는 데이터 변화에 더 안정적인 모델을 구축할 수 있습니다. |
- 한계
| 한계 | 설명 | PM 관점의 고려 사항 |
| 부정 쌍의 품질 | 효과적인 학습을 위해 충분히 다양하고 의미 있는 부정 쌍이 필요합니다. 부정 쌍이 너무 비슷하면 학습이 어렵습니다. | 데이터 분포를 잘 파악하고, 알고리즘이 충분히 다양한 부정 쌍을 샘플링하도록 설계해야 합니다. (예: 대규모 배치 또는 메모리 뱅크 활용) |
| 계산 비용 | 대규모 배치와 복잡한 데이터 증강, 그리고 특징을 비교하는 과정(손실 함수 계산) 자체가 많은 계산 자원(특히 GPU 메모리)을 요구할 수 있습니다. | 초기 모델 학습 단계에서 고성능 컴퓨팅 자원 확보가 필수적입니다. 클라우드 비용을 예측할 때 이를 반영해야 합니다. |
| 데이터 증강 의존성 | 학습의 성공이 어떤 방식으로 데이터를 변형했는지(Augmentation)에 크게 의존합니다. 부적절한 증강은 성능 저하를 가져옵니다. | 사용되는 데이터(이미지, 텍스트 등)의 특성에 맞춰 적절한 증강 전략을 신중하게 선택하고 테스트해야 합니다. |
정리
대비 학습은 대규모 데이터를 효과적으로 활용하여 소량의 레이블만으로도 고성능 모델을 구축할 수 있게 해주는 현대 머신러닝의 핵심 기술입니다.
'AI Study > 머신러닝(ML)' 카테고리의 다른 글
| VAE 참고자료 - "잠재 공간을 확률 분포로 모델링한다" (2) | 2025.12.02 |
|---|---|
| 머신러닝의 기초: 생성 학습(Generative Learning) (2) | 2025.12.01 |
| 머신러닝의 기초: 생성적 적대 신경망(Generative Adversarial Networks; GAN) (3) | 2025.11.26 |
| 머신러닝의 기초: 클러스터링(Clustering) (1) | 2025.11.25 |
| 머신러닝의 기초: 신경망(Neural Network) (1) | 2025.11.24 |