Noise Contrastive Estimation Nedir?
Noise Contrastive Estimation (NCE), normalize edilmemiş bir olasılık modelini eğitmek için gerçek veri örneklerini bilinen bir gürültü dağılımından çekilen yapay örneklerle karşılaştıran istatistiksel bir kestirim ilkesidir. Michael Gutmann ve Aapo Hyvärinen'in 2010 tarihli çalışmasında önerilen yöntem, yoğunluk kestirimi problemini bir lojistik regresyon görevine indirger: her örnek için model, "bu örnek gerçek veriden mi yoksa gürültüden mi geldi" sorusuna cevap verir. Bu soruya doğru cevap verebilmek için modelin gerçek veri dağılımının biçimini öğrenmesi gerekir; dolayısıyla sınıflandırma başarısı arttıkça parametreler gerçek dağılımı temsil etmeye yaklaşır. NCE'yi özel kılan şey, bu süreçte bölüşüm fonksiyonunun hiç hesaplanmamasıdır. Yöntem, dil modellemeden enerji tabanlı modellere kadar geniş bir alanda kullanılır ve modern karşıtlıklı öğrenmenin matematiksel temelini oluşturur.
Neden Gerekli? Normalizasyon Sabiti Sorunu
Bir olasılık modeli p(x) = f(x; θ) / Z(θ) biçiminde yazıldığında Z(θ) bölüşüm fonksiyonu, f'nin tüm olası x değerleri üzerindeki toplamı ya da integralidir. Dil modellerinde bu toplam kelime dağarcığındaki her token için bir skor hesaplamak anlamına gelir; 100 bin kelimelik bir dağarcıkta her eğitim adımı 100 bin çarpım gerektirir ve softmax katmanı hesaplamanın büyük kısmını tek başına yutar. Sürekli uzaylarda çalışan enerji tabanlı modellerde ise integralin kapalı biçimi çoğu zaman yoktur. NCE bu sabiti hesaplamak yerine ya öğrenilebilir bir parametre olarak modele ekler ya da 1'e sabitler. Mnih ve Teh'in 2012'de gösterdiği gibi, sinirsel dil modellerinde sabitleme yaklaşımı performansı bozmaz; model kendini normalize etmeyi öğrenir ve çıktıları toplamı 1'e yakın kalır.
Nasıl Çalışır? Gürültü ile İkili Sınıflandırma
NCE'de her gerçek veri örneği için gürültü dağılımından k adet örnek çekilir. Model, verilen bir örneğin gerçek veriden gelme olasılığını p_m(x) / (p_m(x) + k · p_n(x)) biçiminde hesaplar; burada p_m modelin normalize edilmemiş skoru, p_n ise gürültü dağılımının bilinen olasılığıdır. Amaç fonksiyonu, gerçek örnekler için bu olasılığı, gürültü örnekleri için ise tersini büyütmeye çalışan standart ikili çapraz entropi kaybıdır. Gürültü dağılımı seçimi kritik önem taşır: gerçek veriye çok uzak bir dağılım ayrımı fazla kolaylaştırır ve öğrenme sinyali zayıflar; çok yakın bir dağılım ise ayrımı zorlaştırıp eğitimi yavaşlatır. Dil modellerinde unigram dağılımı ya da Word2Vec'teki gibi unigram dağılımının 3/4 kuvveti yaygın tercihtir. Gutmann ve Hyvärinen'in kanıtladığı gibi k büyüdükçe NCE kestiricisi maksimum olabilirlik çözümüne yakınsar; k sonsuza giderken iki yöntem eşdeğer hale gelir.
NCE Ailesi ve Türevleri
- check_circle Orijinal NCE (2010): Gutmann ve Hyvärinen'in yoğunluk kestirimi için önerdiği çerçeve; normalizasyon sabitini öğrenilebilir parametre olarak modele katar ve tutarlı bir kestirici sunar.
- check_circle Negative Sampling (2013): Mikolov ve ekibinin Word2Vec için tasarladığı basitleştirilmiş sürüm; gürültü dağılımı terimi amaç fonksiyonundan atılır, her hedef için 5 ile 20 arası negatif kelime örneklenir.
- check_circle InfoNCE (2018): van den Oord ve arkadaşlarının Contrastive Predictive Coding ile tanıttığı kayıp; pozitif çifti k negatif arasından seçen çok sınıflı bir softmax biçimi alır ve karşılıklı bilginin alt sınırını büyütür.
- check_circle Sampled Softmax: Jean ve arkadaşlarının 2015'te çeviri modelleri için popülerleştirdiği yaklaşım; softmax'ı rastgele seçilmiş bir alt küme üzerinde hesaplar ve örnekleme sapmasını logQ düzeltmesiyle giderir.
- check_circle Ranking NCE ve Conditional NCE: Sıralama temelli ve koşullu dağılımlar için uyarlanmış varyantlar; öneri sistemlerinde ve yapılandırılmış tahmin problemlerinde kullanılır.
Word2Vec ve Dil Modellerindeki Rolü
NCE'nin yaygın benimsenmesi sinirsel dil modelleriyle başladı. Mnih ve Teh 2012'de NCE ile eğitilen dil modellerinin tam softmax'a kıyasla çok daha hızlı öğrendiğini ve kalite kaybı yaşamadığını gösterdi. Bir yıl sonra Word2Vec'in Skip-gram mimarisi, NCE'yi Negative Sampling adıyla sadeleştirerek milyarlarca kelimelik derlemlerin tek bir işlemcide saatler içinde işlenmesini mümkün kıldı. Bu yaklaşım "kral eksi erkek artı kadın eşittir kraliçe" gibi analojik ilişkileri yakalayan 300 boyutlu kelime vektörlerini üretti. Günümüz büyük dil modelleri, GPU belleğinin ve füzyonlu çekirdeklerin gelişmesiyle 32 bin ile 256 bin arası token içeren dağarcıklarda tam softmax hesaplayabildiğinden NCE'ye ihtiyaç duymaz. Ancak dağarcık yerine milyonlarca ürün ya da belge üzerinde çalışan öneri ve geri getirim modellerinde NCE ve sampled softmax hâlâ standarttır.
Karşıtlıklı Öğrenme ve Gömme Modellerinde NCE
NCE ilkesi, InfoNCE kaybı aracılığıyla modern temsil öğreniminin merkezine yerleşti. SimCLR ve MoCo, aynı görüntünün iki farklı artırılmış halini pozitif çift, mini-batch'teki diğer görüntüleri negatif olarak kullanarak etiketsiz veriden güçlü görsel temsiller öğrenir. CLIP aynı yapıyı görüntü ve metin çiftlerine uygular; 400 milyon çift üzerinde eğitilen model sıfır atışlı sınıflandırma yapabilir. Metin gömme modellerinde Sentence-Transformers kütüphanesinin MultipleNegativesRankingLoss kaybı ve E5, BGE gibi geri getirim modellerinin eğitimi de InfoNCE temeline dayanır. Bu modellerde sıcaklık parametresi ve batch içi negatiflerin sayısı, NCE'deki k ve gürültü dağılımı seçiminin doğrudan karşılığıdır; büyük batch'ler daha fazla negatif içerdiğinden genellikle daha iyi temsiller üretir.
Sık Sorulan Sorular
- check_circle NCE ile Negative Sampling arasındaki fark nedir? NCE, gürültü dağılımının olasılığını sınıflandırıcıya dahil eder ve normalizasyon sabitini öğrenir; bu yüzden tutarlı bir olasılık kestiricisidir. Negative Sampling gürültü terimini atar ve yalnızca sigmoid skorlarla çalışır; olasılık kestirimi için tutarlı değildir ama kelime gömmesi öğrenmek için yeterlidir ve daha hızlıdır.
- check_circle Gürültü örnekleri nasıl seçilir? En yaygın tercih, kelime frekanslarından türetilen unigram dağılımıdır. Word2Vec bu dağılımın 3/4 kuvvetini kullanarak nadir kelimelere daha fazla şans verir. Karşıtlıklı öğrenmede ise negatifler genellikle aynı mini-batch'teki diğer örneklerden alınır; MoCo gibi yöntemler bunu bir bellek kuyruğuyla genişletir.
- check_circle Kaç gürültü örneği (k) kullanmalıyım? Teorik olarak k arttıkça kestirim iyileşir, ancak maliyet k ile doğru orantılı büyür. Word2Vec küçük veri kümelerinde 5 ile 20, büyük derlemlerde 2 ile 5 negatif önerir. InfoNCE tabanlı modellerde negatif sayısı batch boyutuna bağlıdır; SimCLR 4096'lık, CLIP 32768'lik batch'lerle eğitilmiştir.
- check_circle NCE günümüz büyük dil modellerinde kullanılıyor mu? Çıkış katmanında hayır. GPT, Llama ve benzeri modeller tam softmax ile eğitilir çünkü modern GPU'lar 100 binlik dağarcıkları verimli işleyebilir. NCE ailesi ise gömme modelleri, geri getirim sistemleri, öneri motorları ve CLIP gibi çok modlu modellerde InfoNCE biçiminde aktif olarak kullanılır.
- check_circle NCE'yi kodda nasıl uygularım? TensorFlow'da tf.nn.nce_loss ve tf.nn.sampled_softmax_loss hazır fonksiyonları vardır. PyTorch'ta yerleşik bir NCE kaybı bulunmaz; model skorları ile gürültü örneklerinin log olasılıklarını birleştirip BCEWithLogitsLoss ile ikili sınıflandırma kaybı yazmak yeterlidir. InfoNCE için ise benzerlik matrisi üzerinde CrossEntropyLoss kullanmak yaygın yaklaşımdır.