Ultralytics YOLO27: 대기자 명단에 등록하세요.
YOLO 라이선스 받기
Ultralytics 용어집으로 돌아가기

Contrastive Learning

대조 학습은 서로 일치하는 쌍을 가깝게 하고 다른 샘플은 멀어지게 하여 임베딩을 학습합니다. InfoNCE, SimCLR, MoCo, CLIP 및 코드 예제를 다룹니다.

대조 학습은 서로 일치하는 샘플 쌍인 양성 쌍을 가까이, 일치하지 않는 음성 쌍을 멀리 배치하는 임베딩을 모델이 생성하도록 학습합니다. 쌍은 동일한 사진을 증강한 두 크롭처럼 데이터 자체에서 만들거나, 이미지와 캡션처럼 자연스럽게 연결된 데이터에서 가져올 수 있으므로 클래스 라벨이 필요하지 않습니다. 대조 학습은 마스크 재구성 및 자기 증류와 함께 이미지 분야의 주요 자기 지도 학습 방법 중 하나입니다. 이러한 방식으로 학습한 인코더는 탐지, 분류, 검색에 전이할 수 있는 특징을 생성합니다. 또한 같은 목표를 CLIP과 같은 비전-언어 모델 학습에도 사용하며, 이러한 모델은 제로샷 학습을 통해 텍스트만으로 이미지를 분류할 수 있습니다.

대조 학습의 작동 방식#

대조 학습 방법은 세 부분으로 구성됩니다. 긍정 쌍을 만드는 방법, 각 샘플을 정규화된 임베딩으로 변환하는 인코더, 그리고 유사도를 비교하는 손실 함수입니다. SimCLR에서 Ting Chen과 Google의 동료들은 무작위 크롭, 색상 왜곡, 블러를 적용해 이미지마다 두 가지 뷰를 만들었습니다. 두 뷰를 공유 ResNet과 작은 투영 헤드로 인코딩하고, 배치의 나머지 이미지를 부정 샘플로 취급했습니다.

데이터 증강은 모델이 무시하도록 학습할 대상을 정합니다. 한 이미지에서 만든 두 크롭을 가까운 지점에 매핑해야 하므로, 인코더는 위치, 크기, 색상 변화가 이미지의 내용을 바꾸지 않는다고 학습하고 다른 모든 이미지와 구별되는 특징을 유지합니다. 표준보다 너비가 4배 큰 ResNet-50을 사용했을 때, SimCLR의 고정된 특징으로 학습한 선형 분류기는 ImageNet에서 상위 1개 정확도 76.5%를 달성해 지도 학습 ResNet-50과 동등한 성능을 보였습니다.

대조 손실 함수#

  • 쌍별 대조 손실: Raia Hadsell, Sumit Chopra, Yann LeCun이 2006년에 제안한 손실 함수로, 각 긍정 쌍을 서로 당기고 각 부정 쌍을 서로 밀어내 두 쌍 사이의 거리가 최소 m 이상이 되도록 합니다.
  • 트리플렛 손실: 기준 샘플을 긍정 샘플 하나 및 부정 샘플 하나와 비교하고, 긍정 샘플이 마진만큼 더 가까워야 한다고 요구합니다. Google의 FaceNet은 2015년에 이 손실로 얼굴 임베딩을 학습했습니다.
  • InfoNCE: 긍정 샘플 하나를 여러 부정 샘플과 한 번에 비교합니다. 유사도 s를 온도 τ로 나누면 기준 샘플의 손실은 −log[exp(s₊/τ) / Σⱼ exp(sⱼ/τ)]입니다. 이는 모든 후보 중 긍정 샘플을 정답 클래스로 취급하는 소프트맥스 교차 엔트로피입니다. Aaron van den Oord와 동료들은 2018년 대조 예측 부호화 논문에서 이 이름을 사용했으며, SimCLR의 NT-Xent 손실과 CLIP의 손실은 InfoNCE의 형태입니다.
  • 시그모이드 손실: SigLIP은 각 쌍이 독립적으로 일치하는지 여부를 시그모이드로 점수화하므로, 배치 전체에 대한 정규화가 필요하지 않습니다.

PyTorch에서 InfoNCE는 대각선에 긍정 샘플이 있는 유사도 행렬에 대한 교차 엔트로피로 단순화됩니다.

import torch
import torch.nn.functional as F

torch.manual_seed(0)
# Stand-in embeddings for 8 images, a second view of each (row i of both is a positive pair),
# and 8 unrelated images
view1 = F.normalize(torch.randn(8, 128), dim=1)
view2 = F.normalize(view1 + 0.1 * torch.randn(8, 128), dim=1)
unrelated = F.normalize(torch.randn(8, 128), dim=1)

# InfoNCE: cosine similarities divided by a temperature, then cross-entropy where
# each row's positive (the diagonal) is the correct class among all 8 candidates
temperature = 0.1
targets = torch.arange(8)
for name, keys in [("Augmented views", view2), ("Unrelated images", unrelated)]:
    logits = view1 @ keys.T / temperature
    print(f"{name}: loss {F.cross_entropy(logits, targets):.3f}")

Augmented views: loss 0.016과 Unrelated images: loss 2.505을 출력합니다. 각 행의 긍정 샘플이 가장 유사한 키인 경우 손실은 0에 가까워집니다. 관련 없는 키만 있을 때는 손실이 ln 8 ≈ 2.08보다 커지는데, 이는 온도 0.1로 나누면 우연한 유사도가 확신에 찬 오답으로 바뀌기 때문입니다. 온도를 낮추면 소프트맥스가 더 뾰족해지고 손실이 가장 어려운 부정 샘플에 집중됩니다. MoCo는 τ = 0.07을 사용하고, CLIP은 학습 가능한 온도를 같은 값으로 초기화합니다.

부정 샘플, 배치 크기, 변형#

InfoNCE는 부정 샘플이 많을수록 성능이 좋아지므로 부정 샘플 수가 핵심 비용 요소입니다. SimCLR은 매우 큰 배치에서 부정 샘플을 가져왔습니다. Kaiming He와 Facebook AI Research의 동료들이 만든 MoCo는 최근 배치에서 얻은 임베딩 65,536개를 큐에 보관해 부정 샘플로 사용하고, 인코더를 천천히 갱신하는 모멘텀 복사본으로 임베딩을 인코딩했습니다. 이 방식은 부정 샘플 수를 배치 크기와 분리합니다. 무작위 부정 샘플에는 같은 견종의 다른 사진처럼 잘못된 부정 샘플이 포함될 수 있으며, 너무 쉬운 부정 샘플은 학습에 도움이 되지 않습니다. 따라서 하드 부정 샘플 마이닝은 혼동하기 쉬운 샘플을 찾아냅니다. 지도 대조 학습(SupCon)은 레이블을 사용해 같은 클래스의 모든 샘플을 긍정 샘플로 취급합니다. BYOL, SimSiam, DINO와 같은 비대조 방법은 부정 샘플을 완전히 제거하고 비대칭 네트워크, 그래디언트 중단 또는 중심화를 사용해 모든 입력이 동일한 임베딩으로 붕괴하는 것을 방지합니다.

  • 메트릭 학습: 거리 함수를 학습하는 더 넓은 범위의 작업으로, 대조 손실과 트리플렛 손실이 여기에서 비롯되었습니다. 오늘날 "대조 학습"은 일반적으로 SimCLR과 MoCo가 널리 알린 자기 지도 방식의 다중 부정 샘플 학습을 가리킵니다.
  • 오토인코더: 입력을 재구성하며 학습하므로 특징이 픽셀 수준의 세부 정보를 유지해야 합니다. 대조 특징은 샘플을 다른 샘플과 구별하는 데 필요한 정보만 유지합니다.
  • JEPA: 보이는 영역을 기반으로 숨겨진 이미지 영역의 임베딩을 예측하며, 부정 쌍 없이 임베딩 공간에서 학습합니다.
  • 지도 학습: 사람이 지정한 고정된 클래스 집합을 대상으로 학습하지만, 대조 사전 학습에는 어떤 샘플끼리 일치하는지 정하는 규칙만 필요합니다.

응용 분야#

  • 비전-언어 모델: CLIP은 이미지-캡션 쌍 4억 개와 32,768개 크기의 배치를 사용해 이미지 인코더와 텍스트 인코더를 학습했으므로, 텍스트 프롬프트로 이미지를 분류하고 검색할 수 있습니다. Ultralytics YOLOE-26 모델은 CLIP 방식의 대조 목적 함수로 학습된 Apple의 MobileCLIP2 텍스트 인코더를 사용해 클래스 이름을 인코딩하고, 대조 헤드에서 각 후보 영역을 해당 텍스트 임베딩과 비교해 점수를 계산합니다. 따라서 set_classes(["forklift", "pallet"])을 사용하면 동일한 가중치를 새로운 범주를 탐지하는 모델로 바꿀 수 있습니다.
  • 시맨틱 검색: 이미지와 텍스트의 대조 학습 임베딩을 벡터 데이터베이스에 저장하고 유사도를 기준으로 검색합니다.
  • 레이블이 적은 사전 학습: 전문가 레이블이 부족한 의료 영상 분석과 같은 분야에서는 레이블이 없는 스캔으로 대조 사전 학습을 수행해 백본을 만들고, 소량의 레이블 데이터로 미세 조정합니다.
  • 얼굴 인식 및 재식별: 대조 손실과 트리플렛 손실을 사용해 같은 사람이나 객체의 사진이 서로 가까이 위치하는 임베딩을 학습합니다. FaceNet의 128차원 임베딩은 Labeled Faces in the Wild 벤치마크에서 정확도 99.63%를 달성했습니다.

솔루션 살펴보기

스포츠 분야의 컴퓨터 비전

스포츠 분야의 컴퓨터 비전

Ultralytics YOLO가 선수 및 공 추적, 경기력 분석, 코칭 인사이트, 선수 재활을 통해 스포츠 비전을 구현하는 방법을 알아보세요.
자세히 알아보기
항공 이미지 컴퓨터 비전

항공 이미지 컴퓨터 비전

Ultralytics YOLO를 활용해 드론 및 항공 이미지를 농업, 양식업, 보전, 지리 공간 분석을 위한 실시간 인사이트로 전환하세요.
자세히 알아보기
항공우주 분야의 컴퓨터 비전

항공우주 분야의 컴퓨터 비전

Ultralytics YOLO를 활용해 항공기 검사, 활주로 FOD 감지, 공항 지상 운영, 복합재 결함 감지 등 항공우주 분야에 컴퓨터 비전을 적용하세요.
자세히 알아보기
보안 분야의 컴퓨터 비전

보안 분야의 컴퓨터 비전

Ultralytics YOLO 모델로 모든 시설을 보호하세요. Vision AI는 경계 모니터링, 위협 감지, 번호판 인식, 작업장 안전을 지원합니다.
자세히 알아보기
로보틱스 분야의 컴퓨터 비전

로보틱스 분야의 컴퓨터 비전

Ultralytics YOLO 모델로 더 스마트한 머신을 구현하세요. 로보틱스 분야의 Vision AI는 자율 주행, 인식, 객체 추적, 실시간 제어를 지원합니다.
자세히 알아보기
물류 분야의 컴퓨터 비전

물류 분야의 컴퓨터 비전

Ultralytics YOLO 모델로 물류를 간소화하세요. 비전 AI는 화물 검사, 분류, 차량 추적, 실시간 창고 안전 모니터링을 지원합니다.
자세히 알아보기
리테일 분야의 컴퓨터 비전

리테일 분야의 컴퓨터 비전

Ultralytics YOLO 모델로 리테일의 새로운 가능성을 열어 보세요. 비전 AI는 재고 추적, 선반 모니터링, 대기열 관리, 더욱 심층적인 고객 인사이트를 지원합니다.
자세히 알아보기
의료 분야의 컴퓨터 비전

의료 분야의 컴퓨터 비전

Ultralytics YOLO 모델로 의료 솔루션을 구축하세요. 의료 분야의 비전 AI는 의료 영상 판독을 가속화하고, 진단을 개선하며, 환자 모니터링을 지원합니다.
자세히 알아보기
제조 분야의 컴퓨터 비전

제조 분야의 컴퓨터 비전

Ultralytics YOLO 모델로 제조 공정을 최적화하세요. 비전 AI는 품질 관리, 결함 탐지, PPE 규정 준수, 조립 라인 자동화를 지원합니다.
자세히 알아보기
자동차 분야의 컴퓨터 비전

자동차 분야의 컴퓨터 비전

Ultralytics YOLO 모델로 자동차 분야에 컴퓨터 비전을 적용하세요. 비전 AI는 도로 안전, 운전자 지원, 차량 자동화를 개선해 더 스마트한 도로를 구현합니다.
자세히 알아보기
농업 분야의 컴퓨터 비전

농업 분야의 컴퓨터 비전

Ultralytics YOLO 모델로 스마트 농업에 비전 AI를 도입하세요. 작물 모니터링, 가축 추적, 정밀 농업을 지원하여 더 높은 수확량과 더 스마트한 농업을 실현합니다.
자세히 알아보기

함께 AI의 미래를 만들어 가세요!

머신러닝의 미래와 함께 여정을 시작하세요