Contrastive Learning
Karşıtsal öğrenme, eşleşen çiftleri birbirine yaklaştırıp diğer örnekleri birbirinden uzaklaştırarak gömme vektörlerini eğitir. InfoNCE, SimCLR, MoCo, CLIP ve kodu ele alır.
Karşıt öğrenme, eşleşen örnek çiftlerinin (pozitifler) birbirine yakın, eşleşmeyen örneklerin (negatifler) ise birbirinden uzak olduğu gömmeler üretmesi için bir modeli eğitir. Çiftler, aynı fotoğrafın artırılmış iki kırpımı gibi verinin kendisinden veya bir görüntüyle açıklaması gibi doğal olarak eşleşmiş verilerden gelebilir; bu nedenle karşıt öğrenme sınıf etiketi gerektirmez. Görüntüler için öz denetimli öğrenme yöntemlerinin temel ailelerinden biridir ve maskeli yeniden yapılandırma ile öz damıtmanın yanında yer alır. Bu şekilde eğitilen kodlayıcılar, algılama, sınıflandırma ve bilgi getirme görevlerine aktarılabilen özellikler üretir. Aynı amaç, CLIP gibi görsel-dil modellerini de eğitir; bu modeller daha sonra yalnızca metinle, sıfır örnekli öğrenme yoluyla görüntüleri sınıflandırabilir.
Karşıtsal Öğrenme Nasıl Çalışır?#
Karşıtsal bir yöntemin üç bileşeni vardır: pozitif çiftleri oluşturma yöntemi, her örneği normalize edilmiş bir gömüye eşleyen kodlayıcı ve benzerlikleri karşılaştıran bir kayıp. SimCLR yönteminde Ting Chen ve Google'daki çalışma arkadaşları, rastgele kırpma, renk bozulması ve bulanıklaştırmayla her görüntünün iki görünümünü oluşturdu; her iki görünümü de küçük bir izdüşüm başlığının ardından ortak bir ResNet ile kodladı ve yığındaki diğer görüntüleri negatif olarak kabul etti:
Veri artırma, modelin neyi göz ardı etmeyi öğrendiğini belirler. Aynı görüntünün iki kırpımı yakın noktalara eşlenmek zorunda olduğundan kodlayıcı, konum, ölçek ve renk değişimlerinin görüntüde gösterileni değiştirmediğini öğrenir ve bir görüntüyü diğerlerinden ayıran özellikleri korur. Standart bir ResNet-50'den dört kat daha geniş bir ResNet-50 ile, SimCLR'nin dondurulmuş özellikleri üzerinde eğitilen bir doğrusal sınıflandırıcı, ImageNet üzerinde %76.5 ilk-1 doğruluğa ulaşarak denetimli bir ResNet-50 ile eşleşti.
Karşıtsal Kayıp İşlevleri#
- İkili karşıtsal kayıp: Raia Hadsell, Sumit Chopra ve Yann LeCun'un 2006 tarihli kayıp işlevi, her pozitif çifti birbirine yaklaştırır ve her negatif çifti, aralarındaki uzaklık en az m olana kadar birbirinden uzaklaştırır.
- Üçlü kayıp: Bir çapayı bir pozitif ve bir negatifle karşılaştırır ve pozitifin bir marj kadar daha yakın olmasını gerektirir. Google'ın FaceNet'i 2015'te yüz gömülerini bu yöntemle eğitti.
- InfoNCE: Bir pozitif örneği aynı anda birçok negatifle karşılaştırır. τ sıcaklığına bölünmüş s benzerlikleriyle, bir çapa için kayıp −log[exp(s₊/τ) / Σⱼ exp(sⱼ/τ)] biçimindedir; pozitifin tüm adaylar arasındaki doğru sınıf olduğu bir softmax çapraz entropisidir. Aaron van den Oord ve çalışma arkadaşları bu adı 2018'de karşıtsal öngörücü kodlama makalesinde ortaya koydu; SimCLR'nin NT-Xent kaybı ve CLIP'in kaybı da bu türdendir.
- Sigmoid kaybı: SigLIP, her çifti bağımsız bir evet-hayır eşleşmesi olarak sigmoid ile puanlar; böylece kayıp için yığın genelinde normalleştirme gerekmez.
PyTorch içinde InfoNCE, köşegeninde pozitiflerin bulunduğu benzerlik matrisi üzerinde çapraz entropiye indirgenir:
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 ve Unrelated images: loss 2.505 değerlerini yazdırır. Her satırdaki pozitif, en benzer anahtar olduğunda kayıp sıfıra yaklaşır. İlişkisiz anahtarlarla kayıp ln 8 ≈ 2.08'in üzerine çıkar; bu, sekiz aday arasından yapılan rastgele tahminin kaybıdır. Bunun nedeni, 0.1 sıcaklığa bölmenin şans benzerliklerini yüksek güvenli yanlış tahminlere dönüştürmesidir. Daha düşük sıcaklık softmax'ı keskinleştirir ve kaybı en zor negatiflerde yoğunlaştırır. MoCo τ = 0.07 kullanır; CLIP de öğrenilen sıcaklığını başlangıçta aynı değere ayarlar.
Negatifler, Yığın Boyutu ve Varyantlar#
InfoNCE, daha fazla negatifle iyileşir; bu da negatif sayısını temel bir maliyet etkeni yapar. SimCLR negatifleri çok büyük yığınlardan seçti. Facebook AI Research'ten Kaiming He ve çalışma arkadaşlarının geliştirdiği MoCo, yakın tarihli yığınlardan alınan 65,536 gömüden oluşan bir kuyruğu negatif olarak tuttu ve bunları kodlayıcının yavaşça güncellenen momentum kopyasıyla kodladı; bu, negatif sayısını yığın boyutundan bağımsız hale getirdi. Rastgele negatifler, aynı köpek ırkının başka bir fotoğrafı gibi yanlış negatifler olabilir; çok kolay negatifler ise pek bir şey öğretmez. Bu nedenle zor negatif madenciliği, kolayca karıştırılabilecek örnekleri arar. Denetimli karşıtsal öğrenme (SupCon), aynı sınıftaki her örneği pozitif kabul etmek için etiketleri kullanır. BYOL, SimSiam ve DINO gibi karşıtsal olmayan yöntemler negatifleri tamamen kaldırır; asimetrik ağlar, gradyan durdurma veya merkezleme kullanarak her girdinin aynı gömüye çökmesini önler.
Karşıtsal Öğrenme ve İlgili Kavramlar#
- Metrik öğrenme: Karşıtsal ve üçlü kayıpların kaynaklandığı, daha geniş kapsamlı uzaklık işlevi öğrenme görevidir. "Karşıtsal öğrenme" artık genellikle SimCLR ve MoCo'nun popülerleştirdiği, çok sayıda negatif kullanan öz denetimli biçimi ifade eder.
- Otomatik kodlayıcılar: Girdiyi yeniden oluşturarak öğrenirler; bu nedenle özelliklerinin piksel düzeyindeki ayrıntıları koruması gerekir. Karşıtsal özellikler yalnızca bir örneği diğerlerinden ayıran bilgileri korur.
- JEPA: Görüntünün gizli bölgelerinin gömülerini görünen bölgelerden tahmin eder ve negatif çiftler olmadan gömü uzayında öğrenir.
- Denetimli öğrenme: İnsanlarca atanmış sabit bir sınıf kümesini hedefleyerek eğitim yaparken, karşıtsal ön eğitim yalnızca hangi örneklerin eşleştiğini belirleyen bir kurala ihtiyaç duyar.
Uygulamalar#
- Görüntü-dil modelleri: CLIP, 400 milyon görüntü-açıklama çifti ve 32,768 boyutlu yığınlarla bir görüntü kodlayıcı ve bir metin kodlayıcı eğitti; böylece metin istemleri görüntüleri sınıflandırabilir ve getirebilir. Ultralytics YOLOE-26 modelleri, CLIP tarzı karşıtsal amaçla eğitilmiş Apple'ın MobileCLIP2 metin kodlayıcısıyla sınıf adlarını kodlar ve her aday bölgeyi karşıtsal bir başlıkta bu metin gömülerine göre puanlar; böylece
set_classes(["forklift", "pallet"]), aynı ağırlıkları yeni kategoriler için bir algılayıcıya dönüştürür. - Anlamsal arama: Görüntü ve metinlerin karşıtsal olarak eğitilmiş gömüleri bir vektör veri tabanında saklanır ve benzerliğe göre aranır.
- Az etiketli ön eğitim: Uzman etiketlerinin az olduğu tıbbi görüntü analizi gibi alanlarda, etiketsiz taramalar üzerinde yapılan karşıtsal ön eğitim, küçük bir etiketli kümeyle ince ayarın uyarlayabileceği bir omurga sağlar.
- Yüz tanıma ve yeniden tanımlama: Karşıtsal ve üçlü kayıplar, aynı kişi veya nesnenin fotoğraflarının birbirine yakın olduğu gömüleri eğitir. FaceNet'in 128 boyutlu gömüleri, Labeled Faces in the Wild kıyaslamasında %99.63 doğruluğa ulaştı.










