Tüm yazılar
Matematik8 Haziran 2025

Contrastive Learning: Modern Temsil Öğrenmenin Omurgası

"Benzeri yakına, zıttı uzağa" basit fikri, CLIP'ten DINO'ya, embed modellerinin altında yatan temel motor.

Matematik Karavanı 7 dk okuma 5 soru
İki kuş — benzeri yakın tutma metaforu

Temsilin sorunu

Bir resmin "iyi bir vektörü" nedir? Resmi 768 boyutlu bir sayı dizisine sıkıştırmak istiyorsanız, hangi vektör "iyidir"?

İdeal cevap: benzer resimleri yakın, farklıları uzak tutan vektör. Bu vektörler embedding ya da temsil (representation) denir. Üzerine her şey kurulur: arama, kümeleme, sınıflandırma, RAG.

Sorun: nasıl öğretirsin? "Benzer" ne demek? "Kedi" diyen etiketle eğitmek lükstür — milyarlarca etiket gerek.

Self-supervised devrim

2020'lerde temsil öğrenme paradigması değişti: etiket gerek değil. Veriden kendiliğinden öğren. Ana fikir: contrastive learning.

Temel slogan:

"Benzeri birbirine yaklaştır, farkı birbirinden uzaklaştır."

Aynı resmin iki farklı kırpılmış versiyonu = benzer. Farklı resimden gelen = farklı. Bu pretex görev, gerçek görevden bağımsız ama temsilleri anlamlı hale getirir.

SimCLR (2020) — şablon

Google Brain'den Chen ve ark. SimCLR ile alana standart şablon getirdi:

  1. Mini-batch al: NN resim (N=4096N=4096 tipik).
  2. Her resim için iki farklı augmentation uygula (kırpma, renk dönüşümü, blur). 2N2N resim.
  3. Sinir ağıyla her resmi vektöre dönüştür.
  4. Her resim, kendi augmente edilmiş eşi ile pozitif çift; diğer 2N22N-2 resimle negatif.
  5. Kayıp fonksiyonu: pozitif çift birbirine yakın olsun, negatifler uzak.

Kayıp: InfoNCE (Noise Contrastive Estimation):

L=logexp(sim(zi,zj)/τ)kexp(sim(zi,zk)/τ)L = -\log \frac{\exp(\text{sim}(z_i, z_j)/\tau)}{\sum_{k} \exp(\text{sim}(z_i, z_k)/\tau)}

Burada sim\text{sim} kosinüs benzerliği, τ\tau sıcaklık (genelde 0.07).

Bu kayıp aslında "N1N-1 negatif arasında doğru pozitifi bulan softmax sınıflandırması".

Neden işe yarar — sezgi

Şunu yap: bir kediyi yatay çevir. Hâlâ kedi. Renk filtrele. Hâlâ kedi. Köpeği yatay çevir. Hâlâ köpek. İki augmentation aynı içeriği farklı şekilde gösterir; iki farklı resim farklı içeriğe sahip.

Model bu farkı yakalayan vektörler üretmek zorunda — yoksa kayıp düşmez.

Sonuçta öğrenilen vektörler anlamsal olur: kediler kediler ile, köpekler köpekler ile yakın.

Önemli detay: büyük batch

SimCLR için büyük batch zorunlu: N=8192+N=8192+. Çünkü her pozitif çift, 2N22N-2 negatife karşı yarışır. Az negatifle kayıp gürültülü.

Bu nedenle SimCLR Google'ın 8x V100 TPU'larla eğitildi.

MoCo (2019) ve sonra

Facebook AI'dan MoCo (Momentum Contrast): büyük batch yerine bellek bankası kullanır. Negatif örnekler önceki batchlerden saklanır. Daha az GPU gerek.

Sonra BYOL (2020) ve SimSiam (2021): negatif örneklere bile gerek yok! "Sadece pozitifle eğitilen" varyantlar. Matematiksel olarak şaşırtıcı — neden çalıştığı 2022'ye kadar tam çözülmedi.

CLIP (2021) — vision-language köprüsü

Contrastive learning'in en büyük etki yaratan uygulaması: CLIP (Radford ve ark., OpenAI). Resim ve metni aynı vektör uzayında öğret:

  • 400M resim-altyazı çifti topla (internetten).
  • Resim encoder + metin encoder.
  • Bir batchteki gerçek çift = pozitif, karışık çift = negatif.
  • InfoNCE ile eğit.

Sonuç: "resim ile metin aynı uzayda". "Kırmızı bir kedi" metni hangi resme yakın? Direkt sorgulanır. Bu yapı zero-shot sınıflandırma, resim arama, DALL-E, Stable Diffusion dahil pek çok uygulamanın temeli.

DINO (2021) ve self-distillation

Facebook'tan DINO (DIstillation with NO labels): contrastive learning'in fikrini self-distillation ile birleştirir. Vision Transformer ile birlikte: ortaya çıkan attention map'leri nesne segmentasyonu yapıyor — etiket olmadan!

DINOv2 (2023) bu yaklaşımı geliştirdi: tıbbi görüntülerden uydu fotoğraflarına kadar çok dilli ev bir görsel encoder.

Modern embedding modelleri

Modern arama ve RAG için kullanılan embedding modeller hep contrastive eğitildi:

  • OpenAI text-embedding-3: Bilinmiyor ama büyük olasılıkla contrastive + sentence pair.
  • Cohere Embed: Contrastive + multi-task.
  • BGE (BAAI): Açık kaynak, contrastive learning + sentence pair veri.
  • E5 (Microsoft): İki aşamalı: contrastive pretrain + fine-tune.

Tümü temelde aynı paradigmayı kullanır.

Sınırlamalar

  1. Augmentation seçimi kritik. Yanlış augmentation öğrenmeyi öldürür. Resim için renk + kırpma standart; metin için zor.
  2. Hard negative mining gerek. "Kedi" ile "köpek" arasındaki ince farkı öğretmek için yakın ama farklı örnekleri seçmek gerek.
  3. Hesap pahalı. Büyük batch ve milyarlarca çift.

Klasik benzetme

Bir çocuğa kedi-köpek farkı öğret. Dolaylı yöntem: "bu kediler hep birlikte", "bu köpekler hep birlikte". Etiket yok, sadece gruplandırma. Çocuk farkı kendiliğinden çıkarır.

Contrastive learning bunu otomatikleştirir: "aynı resmin varyantları birlikte, farklılar değil." Veri zaten doğal gruplandırma sağlar.

Sade ders

Contrastive learning hikâyesinden iki şey:

  1. Etiket olmadan büyük şey öğrenilir. Modern CV ve NLP'nin temsilleri çoğunlukla contrastive (etiketsiz) pre-training ile başlar; etiketli görev fine-tuning'tedir.
  2. Sade fikir tüm bir alan tanımlar. "Benzeri yakın, farkı uzak" cümlesi bir kuşak temsil öğrenme literatürünün özüdür.

Bağlam

CLIP için: [[clip-resim-metin-eslestirme]] (varsa). Embedding altyapısı için: [[vektor-veritabanlari-faiss-pinecone-rag-in-omurgasi]]. Self-supervised için: [[self-supervised-learning-veriden-ogren]] (varsa). Stable Diffusion bağlantısı: [[flow-matching-diffusion-un-daha-temiz-kardesi]].

Etiketler

contrastive learningSimCLRCLIPtemsil öğrenmeself-supervised

Kendinizi Test Edin

Cevaplarınız profilinizde istatistik olarak saklanır.

1. Contrastive learning'in temel cümlesi nedir?

2. SimCLR'da pozitif çift nedir?

3. CLIP nasıl eğitilir?

4. BYOL'un şaşırtıcı özelliği nedir?

5. Modern embedding modelleri (OpenAI, Cohere, BGE) ne ile eğitilir?