9  Karşıtsal SSL, Sparse Coding ve VAE

İki hocalı hafta — EBM’yi eğitmek enerji fonksiyonunu şekillendirmektir. Yann LeCun (Lecture) bunun iki ailesini kurar: contrastive (karşıtsal) yöntemler veri noktalarında enerjiyi aşağı, üretilmiş negatif örneklerde yukarı iter (push down / push up); non-contrastive (mimari) yöntemler ise negatif örnek üretmeden, modelin yapısını kısıtlayarak düşük-enerji bölgesinin hacmini sınırlar. Alfredo Canziani (Practicum) ikinci ailenin en zarif örneğini gösterir: VAE (değişimsel autoencoder) — encoder bir kod değil bir dağılım üretir, latent reparameterization ile örneklenir ve Gaussian kısıt latent uzayı düzenli, üretken kılar.

NotBölüm bilgisi

9.1 Bu Derste Ne Var?

Hafta 7’de EBM’nin merkezi zorluğunu bırakmıştık: enerji fonksiyonunu veride düşük, dışında yüksek yapmak kolay değil — özellikle “dışarıyı yükseltmek” zor. Bu hafta Yann LeCun bu sorunun iki ailesini çözüyor: contrastive (karşıtsal) yöntemler (negatif örneklerle dışarıyı it) ve architectural/non-contrastive yöntemler (mimariyle enerjiyi kısıtla). Alfredo Canziani ise bu ikinci ailenin en zarif örneğini gösteriyor: VAE (değişimsel autoencoder).

LeCun’un çerçevesi: EBM’yi eğitmek = enerji fonksiyonunu şekillendirmek. İki yol var: (1) contrastive — veride enerjiyi düşür, üretilmiş “negatif” örneklerde yükselt (push down/push up). (2) non-contrastive — modelin yapısını öyle kısıtla ki düşük-enerji bölgesinin “hacmi” sınırlı kalsın (negatif örnek üretmeden). VAE ikinci aileden: latent uzayı düzenli (Gaussian) tutarak enerjiyi kısıtlar.

Bu haftanın üç ana fikri:

  1. EBM eğitimi iki sınıf: contrastive (negatif it) vs non-contrastive/architectural (yapıyla kısıtla).
  2. Contrastive SSL: pozitif çiftleri (uyumlu) aşağı, negatif çiftleri (rastgele) yukarı bas; ama yüksek boyutta gittikçe daha çok negatif gerekir (sınır).
  3. VAE: encoder bir kod değil, bir dağılım (ortalama + varyans) üretir; latent’ten örneklenir — düzenli, üretken bir latent uzay.

flowchart TB
    Egitim["EBM eğitimi = enerji şekillendirme<br/>(Hafta 7'nin merkezi zorluğu)"]

    subgraph Contrastive["(A) Contrastive (karşıt örnekli)"]
        direction TB
        PushDownUp["Push down (veri) / push up (negatif)<br/>= maximum likelihood"]
        Pozitif["Pozitif çift = augmentation<br/>(kırp + renk)"]
        DAE["Denoising AE = maskeleme<br/>(BERT fikri, Hafta 12)"]
        Sinir["SINIR: yüksek boyutta çok negatif<br/>→ non-contrastive (post-2020, KURSTA YOK)"]
        PushDownUp --> Pozitif
        Pozitif --> DAE
        DAE --> Sinir
    end

    subgraph NonContrastive["(B) Non-contrastive (mimari kısıtlı)"]
        direction TB
        VAE["VAE = olasılıksal autoencoder"]
        Dagilim["Encoder bir DAĞILIM üretir<br/>ortalama μ + varyans σ"]
        Reparam["Reparameterization<br/>z = μ + σ⊙ε"]
        Latent["Düzenli, üretken latent<br/>(Gaussian kısıt)"]
        VAE --> Dagilim
        Dagilim --> Reparam
        Reparam --> Latent
    end

    Egitim --> PushDownUp
    Egitim --> VAE
    Sinir -. "negatifsiz çözüm arayışı" .-> VAE

İpucuBuilder Notu — İki Şekillendirme Yolu

Geriye (önkoşul kurslar):

  • Push down/push up = enerji şekillendirme → Hafta 7 EBM (veride düşük/dışında yüksek) + Hafta 1 cross-entropy (negatif örnek = uyumsuz).
  • VAE latent = Gaussian → Stat 110 çok-değişkenli normal (mean + diagonal variance) + Hafta 7 latent EBM.
  • Reparameterization → Calculus zincir kuralı (örneklemeyi türevlenebilir yapmak).

İleriye (production / research):

  • Contrastive SSL → SimCLR/MoCo (MoCo kursta var); “çok negatif” sorunu → post-2020 non-contrastive (BYOL, VICReg) — kursta YOK (Hafta 10 İleriye Köprü).
  • VAE → diffusion modelleri (Hafta 9), üretken modellerin olasılıksal latent’i.

Tek cümleyle: EBM’yi eğitmek enerjiyi şekillendirmektir — contrastive yöntemler veriyi aşağı/negatifi yukarı iter, non-contrastive yöntemler (VAE gibi) yapıyla kısıtlar; VAE, latent’i bir Gaussian dağılıma oturtarak düzenli, üretken bir uzay kurar.

9.2 (LeCun) EBM Eğitimi: İki Sınıf

LeCun, Hafta 7’nin sorusunu — “enerjiyi nasıl şekillendiririz?” — iki temel aileye ayırıyor:

“the first class is contrastive methods, which consist in basically pushing down [on the energy of data points and pushing up elsewhere]… the other [class is architectural methods].” — LeCun, 5:20 / 6:46

  1. Contrastive yöntemler: Veri noktalarında enerjiyi aşağı bas; üretilmiş başka noktalarda yukarı bas. Bir noktayı aşağı basınca gerisi göreli olarak yükselir, ama bu yeterli olmayabilir — bu yüzden aktif olarak negatif noktalarda yukarı basılır.
  2. Architectural / non-contrastive yöntemler: Modelin yapısını öyle kısıtla ki düşük-enerji bölgesinin “hacmi” sınırlı kalsın — negatif örnek üretmeden (örn. bottleneck, sparse coding, VAE).

LeCun bir liste veriyor: contrastive divergence, metric learning, noise contrastive estimation, ratio matching, minimum probability flow — hepsi contrastive ailesinden. Şekil 9.1 bu iki yolu yan yana koyuyor: solda contrastive (veriyi aşağı, negatifi yukarı it), sağda non-contrastive (negatif örnek yok, düşük-enerji hacmini yapıyla — bir darboğazla — sınırla).

Şekil 9.1: EBM eğitiminde iki yol. SOL (contrastive): enerji eğrisi üzerinde veri (pozitif) noktasını aşağı iten ve rastgele (negatif) noktayı yukarı iten karşıt kuvvetler. SAĞ (non-contrastive / mimari kısıtlı): negatif örnek kullanılmadan, düşük-enerji hacmi darboğaz (bottleneck) gibi mimari kısıtlarla sınırlanır. İki yol: negatif örneği it vs enerjiyi yapıyla kısıtla.
İpucuBuilder Notu — İki Sınıf = SSL Haritası

Geriye (Hafta 7): Bu, Hafta 7 Egzersiz 5’in cevabıdır: yalnızca veride enerji düşürürsen model çöker (her yer düşer); contrastive yöntem negatifte yukarı basarak bunu önler.

İleriye: İki sınıf ayrımı, modern SSL’in (Hafta 10) tüm haritasıdır: contrastive (SimCLR, MoCo) vs non-contrastive (BYOL, VICReg — post-2020, kursta yok).

9.3 (LeCun) Contrastive Yöntemler: Aşağı Bas, Yukarı Bas

Contrastive yöntemin mekaniği: enerji fonksiyonunu, gerçek veride (pozitif) aşağı, üretilmiş uyumsuz örneklerde (negatif) yukarı iterek şekillendir.

“push down on the energy [of data points]… and you have to generate random negative samples [and push up on their energy].” — LeCun, 12:38

Akıllı bir ayrıntı: bir negatif örneğin enerjisi ne kadar düşükse (yani model onu yanlışlıkla “iyi” sanıyorsa), o kadar sert yukarı basılır. Bu, modelin en çok karıştırdığı yerleri düzeltir.

Enerjiyi olasılığa çevirirsen (energy = −log p, Stat 110), bu push-down/push-up tam olarak maximum likelihood’un yaptığı şeydir: gerçek veriye olasılık ver, geri kalandan olasılık çek. Şekil 9.2 bu mekaniği iki aşamada gösterir: önce düz/şekillenmemiş bir enerji, sonra veride çukur (aşağı it) ve negatifte tepe (yukarı it) ile şekillenmiş enerji.

Şekil 9.2: Kontrastif mekaniğin iki aşaması: enerji manzarasını şekillendirme. Üst panel başlangıç durumu — düz/şekillenmemiş enerji eğrisi; veri ile dış uzay henüz ayrışmamış, her yer benzer enerjide. Alt panel şekillenmiş durum — energy_1d(y, (−2,0,2)) ile veri noktalarında çukur (violet, aşağı ok = push down) ve aralarda/negatifte tepe (gold, yukarı ok = push up). Düşük-enerjili negatife daha sert basılır; push down/up = maximum likelihood (enerji = −log p).
İpucuBuilder Notu — Push Down/Up = MLE

Geriye (Hafta 1 + Stat 110): Push-down/push-up, Hafta 1’in cross-entropy’sinin EBM dilidir: doğru sınıfa (pozitif) olasılık ver, yanlışlardan (negatif) çek; maximum likelihood (Stat 110).

İleriye: “En düşük-enerjili negatife en sert bas” fikri, hard-negative mining’in temelidir; modern retrieval ve contrastive learning’de kritik.

9.4 (LeCun) Contrastive SSL: Pozitif/Negatif Çiftler

LeCun contrastive fikrini öz-denetimli öğrenmeye (SSL) uyguluyor. Etiket olmadan, veriden pozitif çiftler (uyumlu) ve negatif çiftler (uyumsuz) üretirsin:

  • Pozitif çift: bir örneği al, bozarak/dönüştürerek (data augmentation: kırp, döndür, renk değiştir) ikinci bir versiyonunu üret — ikisi “aynı şey” sayılır, enerjileri aşağı basılır.
  • Negatif çift: rastgele iki farklı örnek — uyumsuz, enerjileri yukarı basılır.

“the energy function for similar pairs [is pushed down], push up on the energy function for dissimilar pairs.” — LeCun, 13:22

Hafta 3’te gördüğümüz PIRL (Ishan Misra, Hafta 10’da derinlemesine) bu yaklaşımı kullanır; kullandığı amaç fonksiyonu noise contrastive estimation’dır. Kursta ayrıca MoCo (momentum contrast) da geçer. Şekil 9.3 bu çift kurgusunu somutlaştırır: aynı görüntünün iki augmentation’ı pozitif çift (enerji aşağı), rastgele başka bir görüntü negatif (enerji yukarı).

Şekil 9.3: Contrastive SSL: aynı görüntünün iki augmentation’ı (kırpma + renk) pozitif çift oluşturur ve enerjisi aşağı çekilir; rastgele başka bir görüntü (köpek) negatif çifttir, enerjisi yukarı itilir. PIRL, NCE ve MoCo bu pozitif/negatif kontrastı üzerine kuruludur.
İpucuBuilder Notu — Augmentation = Pozitif Çift

Geriye (Hafta 3): “Augment et = pozitif çift” fikri, Hafta 3’ün stationarity/invariance sezgisinin SSL hâli: bir kediyi döndürsen de kedidir; model bu değişmezliği öğrenir.

İleriye: Pozitif çift = augmentation, negatif çift = rastgele örnek — SimCLR/MoCo’nun (kursta MoCo var) çekirdeği; ileriye köprü (Bölüm 5).

9.5 (LeCun) Denoising Autoencoder (DAE): Bozulmuşu Yukarı Bas

LeCun ilginç bir contrastive yöntem daha veriyor: denoising autoencoder (DAE). Temiz bir y al, onu boz (x üret) — bir parçasını sil, gürültü ekle, ya da (metinde) bazı kelimeleri maskele. Sonra ağı bozulmuş x’ten temiz y’yi kurmaya zorla.

“the idea of denoising autoencoder is that you take a y, and you generate x by corrupting y… [for text, masking a subset of the input].” — LeCun, 23:17

Bu neden contrastive? Çünkü bozulmuş nokta manifold dışındadır (yüksek enerji olmalı); ağ onu temize (manifolda) çekerek dışarının enerjisini yükseltmiş olur. Metinde “kelime maskeleme” — bu, BERT’in (Hafta 12) tam fikridir: maskelenmiş kelimeyi tahmin et. Şekil 9.4 hem görüntü (temiz → boz → kur) hem metin (maskelenmiş token → tahmin) versiyonunu gösterir.

Şekil 9.4: Gürültü gidermeli otokodlayıcı (denoising AE) ve BERT maskeleme. Üst panel: temiz örnek y manifold üzerinde (pozitif, düşük enerji); BOZ adımı (maskeleme / gürültü ekleme) onu manifold dışına iterek bozuk girdi x üretir (negatif, enerji yukarı bas); ağ bu bozuk girdiden gürültüyü giderip kurulan ŷ örneğini manifolda geri çeker. Alt panel: aynı fikrin metin karşılığı — ‘kedi [MASK] uyuyor’ dizisindeki maskelenmiş token ağ tarafından ‘koltukta’ olarak tahmin edilir. Maskeleme, BERT’in temel fikridir (Hafta 12’de işlenir).
İpucuBuilder Notu — DAE = BERT

Geriye (Hafta 7): DAE = Hafta 7’nin “off-manifold noktayı manifolda geri çek” autoencoder’ının contrastive okuması: bozuk = negatif (yüksek enerji), temiz = pozitif (düşük).

İleriye: Maskeleme-tabanlı DAE → BERT (Hafta 12), masked autoencoder (MAE — post-2020, kursta yok), ve diffusion’ın gürültü-giderme adımları (Hafta 9).

9.6 (LeCun) Contrastive’in Sınırı → (İleriye Köprü: Post-2020)

Contrastive yöntemlerin temel bir sınırı var: boyut arttıkça gittikçe daha çok negatif örnek gerekir.

“as you increase the dimension of the representation, you need more and more negative samples.” — LeCun, 22:54

Yüksek-boyutlu bir temsilde “dışarısı” devasadır; her yeri yukarı basmak için çok sayıda negatif gerekir — bu pahalı ve verimsizdir. İşte bu sınır, kurstan sonra non-contrastive yöntemleri doğurdu. Şekil 9.5 solda bu üstel maliyeti (boyut arttıkça negatif sayısı patlar), sağda ise bu sınırın doğurduğu post-2020 non-contrastive yöntemleri (kursta yok) gösterir.

Şekil 9.5: Kontrastif SSL’in negatif-örnek maliyeti ve non-contrastive çıkış. Sol panel: temsil boyutu (d) arttıkça gerekli negatif örnek sayısı üstel büyür (log ölçekte düz çizgi olarak görünür) — düşük boyut az/ucuz negatif, yüksek boyut çok/pahalı/verimsiz negatif gerektirir. Sağ panel: bu maliyet sınırının doğurduğu, negatif örnek gerektirmeyen post-2020 non-contrastive yöntemler (BYOL, Barlow Twins, VICReg, MAE) — kursta yok, ileriye köprü.
Uyarıİleriye Köprü Notu (post-2020 — KURSTA YOK)

Contrastive’in “çok negatif” sorununu çözen non-contrastive yöntemler DLSP20’den (Mart 2020) sonra geldi ve bu kursta YOKTUR (yalnızca ileriye köprü olarak anılır):

  • BYOL (Grill ve ark., Haz 2020) — negatif örnek olmadan SSL (iki ağın tutarlılığı)
  • Barlow Twins (2021) — çapraz-korelasyon düzenlileştirme
  • VICReg (2021) — variance-invariance-covariance düzenlileştirme
  • MAE (He ve ark., 2021) — masked autoencoder (DAE’nin ViT hâli)

Bunlar LeCun’un “architectural/non-contrastive” sınıfının modern temsilcileridir; kurs içeriğine kurs terimi gibi eklenmez.

İpucuBuilder Notu — Çok Negatif Sınırı

Geriye (Hafta 7 + Bölüm 1): “Çok negatif gerekir” sorunu, LeCun’un iki-sınıf ayrımının (contrastive vs architectural) neden önemli olduğunu gösterir: architectural yöntemler negatif gerektirmez.

İleriye: Bu sınır, LeCun’un bugünkü JEPA programının (negatif-örneksiz, architectural SSL) doğuş gerekçesidir — post-2020, kursta yok.

9.7 Geçiş: LeCun’dan Canziani’ye

LeCun EBM eğitiminin iki ailesini kurdu: contrastive (negatif it) ve architectural/non-contrastive (yapıyla kısıtla). Şimdi Canziani ikinci ailenin en zarif örneğini gösteriyor: VAE (değişimsel autoencoder). VAE, Hafta 7’nin sıradan autoencoder’ını alıp latent uzayı bir olasılık dağılımına oturtur — böylece düşük-enerji bölgesini negatif örnek olmadan, yapıyla düzenler. LeCun çerçeveyi, Canziani somut mekanizmayı veriyor.

9.8 (Canziani) AE vs VAE: Encoder Bir Dağılım Üretir

Canziani sıradan autoencoder’ı (Hafta 7) hatırlatıp tek bir kritik farkla VAE’ye geçiyor. Sıradan AE’de encoder bir kod (tek vektör) üretir. VAE’de encoder iki şey üretir: bir ortalama \(E(z)\) ve bir varyans \(V(z)\) — yani latent değişkenin bir Gaussian dağılımını tanımlar.

“[in a VAE] you have E of Z and V of Z… representing the mean and the variance of this latent variable Z, then we are going to be sampling from this distribution.” — Canziani, 3:12

Sonra bu dağılımdan örneklenir ve elde edilen z decoder’a verilir. D-boyutlu bir latent için encoder D ortalama + D varyans üretir (köşegen kovaryans varsayımı — bileşenler bağımsız). Canziani’nin gözlemi: varyans sıfıra inerse VAE, sıradan (deterministik) bir autoencoder’a çöker. Şekil 9.6 bu farkı yan yana koyar: solda AE tek kod, sağda VAE dağılım + örnekleme (reparameterization).

Şekil 9.6: Sıradan AE vs VAE. Solda sıradan autoencoder: encoder girdiyi daraltıp tek bir kod vektörüne (gold nokta z) sıkıştırır, decoder onu geri açar — latent uzay boşluklu ve düzensiz. Sağda VAE: encoder bir dağılım (μ, σ) üretir; reparameterization hilesiyle z = μ + σ⊙ε örneklenir (ε~N(0,I)), böylece rastgelelik ε’a izole edilir ve gradyan μ ile σ üzerinden geriye akabilir. Sonuç: sürekli, dolu ve örneklenebilir bir latent uzay.
İpucuBuilder Notu — Encoder Bir Dağılım

Geriye (Stat 110 + Hafta 7): \(E(z)\), \(V(z)\) = çok-değişkenli normal’in ortalama + (köşegen) kovaryansı (Stat 110); VAE latent’i, Hafta 7’nin latent değişkeninin olasılıksal hâli.

İleriye: “Encoder bir dağılım üretir” fikri, tüm olasılıksal üretken modellerin (diffusion, normalizing flows) ortak temelidir.

9.9 (Canziani) Latent’ten Örnekleme ve Reparameterization

VAE’nin kalbi örneklemedir: z’yi encoder’ın verdiği \(\mathcal{N}(\mu, \sigma^2)\) dağılımından çekersin. Ama örnekleme rastgeledir — backprop rastgele bir işlemden geçemez. Çözüm reparameterization trick: rastgeleliği dışarı al, z’yi türevlenebilir bir formülle yaz:

\[ z = \mu(x) + \sigma(x) \odot \epsilon, \qquad \epsilon \sim \mathcal{N}(0, I) \]

Artık ε (sabit gürültü) dışında her şey türevlenebilir; gradient μ ve σ üzerinden akar (Hafta 5 autograd). Encoder deterministiktir (Gaussian parametrelerini üretir); tek stokastik kısım ε’dur.

İpucuBuilder Notu — Reparameterization Trick

Geriye (Stat 110 + Calculus + Hafta 5): Reparameterization = konum-ölçek dönüşümü (\(X = \mu + \sigma Z\), Stat 110); türevlenebilirliği koruması Calculus zincir kuralı + Hafta 5 autograd sayesindedir (rastgeleliği sabit ε’a izole et).

İleriye: Reparameterization, VAE’yi eğitilebilir kılan kilit trick’tir; diffusion modelleri de benzer “gürültüyü izole et” fikrini kullanır (Hafta 9).

9.10 (Canziani) VAE Neden? Düzenli, Üretken Latent

Neden sıradan AE yerine VAE? Çünkü VAE latent uzayı düzenli (regularized) tutar. Sıradan AE latent’i dağınık olabilir — aradaki noktalar anlamsız olabilir. VAE, latent’i bir Gaussian’a oturtarak (örnekleme + dağılım kısıtı) latent uzayı sürekli ve doldurulmuş yapar; böylece latent’ten yeni örnek çekip decoder’la yeni veri üretebilirsin (üretken model).

EBM köprüsü (LeCun): VAE bir non-contrastive/architectural yöntemdir — latent’i Gaussian’a kısıtlamak, düşük-enerji bölgesinin hacmini yapıyla sınırlar (negatif örnek üretmeden). Yani VAE, LeCun’un ikinci ailesinin somut hâlidir. Şekil 9.7 bu farkı 2B latent uzayında gösterir: solda AE’nin boşluklu dağınık kümeleri, sağda VAE’nin dolu, sürekli Gaussian bulutu.

Şekil 9.7: İki boyutlu latent uzay: sıradan AE (sol) vs VAE (sağ). Sıradan otokodlayıcının latent uzayı dağınık, boşluklu kümelerden oluşur; kümeler arasındaki bölge (kesikli daire) anlamsızdır — oradan çekilen bir z, decoder ile geçerli bir veri vermez. VAE ise reparameterization trick (z = μ + σ⊙ε) ile latent uzayı dolu ve sürekli bir Gaussian buluta zorlar. Bu sayede herhangi bir z örneği çekip decoder’dan geçirerek YENİ veri üretilebilir — VAE üretkendir, sıradan AE değildir.
İpucuBuilder Notu — Düzenli Latent = Üretken

Geriye (LeCun bu hafta + Hafta 1): VAE’nin latent kısıtı = architectural enerji şekillendirme (LeCun Bölüm 1); düzenli latent = Hafta 1 manifoldunun pürüzsüz, örneklenebilir hâli.

İleriye: VAE → diffusion (Hafta 9 teaser), latent diffusion (Stable Diffusion), ve üretken modellerin tüm ailesi.

9.11 Bu Dersin Özeti

  1. EBM eğitimi iki sınıf: contrastive (veride aşağı bas, negatifte yukarı bas) ve architectural/non-contrastive (yapıyla kısıtla).
  2. Contrastive SSL: pozitif çift (augmentation), negatif çift (rastgele); benzeri aşağı, benzemezi yukarı bas (PIRL/NCE, MoCo).
  3. Denoising AE: temizi boz (maskele), geri kur; bozuk = off-manifold = yukarı bas. (BERT’in fikri.)
  4. Contrastive’in sınırı: yüksek boyutta çok negatif gerekir → post-2020 non-contrastive (BYOL/VICReg/MAE — kursta YOK).
  5. VAE (Canziani): encoder ortalama + varyans üretir; latent \(\mathcal{N}(\mu,\sigma^2)\)’den örneklenir (reparameterization \(z = \mu + \sigma\epsilon\)).
  6. VAE = non-contrastive EBM: latent’i Gaussian’a kısıtlamak enerjiyi yapıyla şekillendirir; düzenli latent → üretken model.
ÖnemliTek Bir Cümle

EBM’yi eğitmek enerjiyi şekillendirmektir: contrastive yöntemler veride enerjiyi düşürüp üretilmiş negatiflerde yükseltir (ama yüksek boyutta çok negatif ister), non-contrastive yöntemler ise yapıyla kısıtlar — VAE bunun zarif örneğidir: latent’i bir Gaussian’a oturtup reparameterization ile eğitilebilir, düzenli, üretken bir uzay kurar.

9.12 Kontrol Soruları

Cevap: (1) Contrastive yöntemler: veri noktalarında enerjiyi aşağı bas, üretilmiş negatif örneklerde yukarı bas (LeCun 5:20). Örnekler: contrastive divergence, NCE, denoising AE. (2) Architectural / non-contrastive yöntemler: modelin yapısını kısıtlayarak düşük-enerji bölgesinin hacmini sınırla — negatif örnek üretmeden (örn. bottleneck, sparse coding, VAE). Temel fark: contrastive negatif örnek üretir ve iter; non-contrastive negatif gerektirmez, enerjiyi mimariyle şekillendirir. (Hafta 7’deki “yalnızca veride düşürürsen model çöker” sorununun iki farklı çözümü.)

Cevap: Pozitif çift: bir örneği al, augmentation ile (kırp/döndür/renk) ikinci versiyonunu üret — ikisi “aynı” sayılır, enerjileri aşağı basılır. Negatif çift: rastgele iki farklı örnek — uyumsuz, enerjileri yukarı basılır (LeCun 13:22). Benzeri aşağı, benzemezi yukarı (PIRL/NCE, MoCo). Sınır: temsil boyutu arttıkça “dışarısı” büyür, enerjiyi her yerde yükseltmek için gittikçe daha çok negatif örnek gerekir (LeCun 22:54) — pahalı ve verimsiz. Bu sınır, post-2020 non-contrastive yöntemleri (BYOL/VICReg — kursta yok) doğurdu.

Cevap: DAE, temiz bir y’yi bozarak (parça silme, gürültü, maskeleme) x üretir ve ağı x’ten y’yi kurmaya zorlar (LeCun 23:17). Bu contrastive’dir çünkü bozulmuş nokta manifold dışındadır (yüksek enerji olmalı); ağ onu temize/manifolda çekerek dışarının enerjisini yukarı basmış olur — pozitif (temiz) aşağı, negatif (bozuk) yukarı. BERT tam bu fikirdir: metinde bazı kelimeleri maskele, modeli onları tahmin etmeye zorla (masked language modeling) — DAE’nin metin hâli. (Hafta 7’nin “off-manifold geri çek” autoencoder’ının contrastive okuması.)

Cevap: Sıradan AE encoder’ı tek bir kod üretir; VAE encoder’ı bir dağılım üretir — ortalama \(\mu(x)\) ve varyans \(\sigma^2(x)\) (Gaussian) — ve z bu dağılımdan örneklenir (Canziani 3:12). Bu, latent’i düzenli/üretken yapar (varyans 0 → sıradan AE’ye çöker). Reparameterization gerekli çünkü backprop rastgele örneklemeden geçemez; rastgeleliği sabit bir ε’a izole edersin:

\[ z = \mu(x) + \sigma(x) \odot \epsilon, \qquad \epsilon \sim \mathcal{N}(0, I) \]

Artık μ, σ türevlenebilir (gradient onlardan akar, Hafta 5 autograd); yalnızca ε stokastiktir (Stat 110 konum-ölçek \(X=\mu+\sigma Z\)). VAE bir non-contrastive EBM’dir: latent’i Gaussian’a kısıtlamak enerjiyi yapıyla şekillendirir.

9.13 Egzersizler

Egzersiz 1 (Push down/up). 1B bir enerji eğrisi düşün. (a) Yalnızca veri noktalarında enerjiyi düşür — ne olur (enerji her yerde düşer, “çöküş”)? (b) Birkaç rastgele negatif noktada enerjiyi yükselt — şekil nasıl düzelir? Contrastive’in neden negatif gerektirdiğini açıkla.

import numpy as np

def energy_1d(y, data=(-2.0, 0.0, 2.0), width=0.35):
    y = np.asarray(y, float)
    F = np.ones_like(y)
    for d in data:                                  # her veri noktasi bir cukur
        F = F - np.exp(-(y - d) ** 2 / (2 * width))
    return F

y = np.linspace(-4, 4, 400)
F = energy_1d(y)
# (a) SADECE veride dusur: tum egriyi asagi cek -> her yer duser = COKUS
# (b) contrastive: veri ASAGI (push down) + rastgele negatif YUKARI (push up)
#     -> veride cukur, aralarda tepe = iyi enerji sekli
neg = np.array([-1.0, 1.0])                          # rastgele negatif noktalar
print("veri enerjisi (dusuk):", np.round(energy_1d(np.array([-2, 0, 2])), 2))
print("negatif enerjisi (yukari basilacak):", np.round(energy_1d(neg), 2))
# negatif olmadan -> collapse; negatif ile -> sekillenmis enerji

Egzersiz 2 (Pozitif çift = augmentation). Bir görüntüye iki farklı augmentation (kırpma + renk) uygula. Bu iki versiyon neden “pozitif çift”tir? Negatif çift nasıl üretilir? Boyut arttıkça neden daha çok negatif gerekir?

import torch

# augment = ayni goruntunun iki gorunumu -> POZITIF cift (ayni sey sayilir)
def augment(img, seed):
    g = torch.Generator().manual_seed(seed)
    crop = img[:, 4:, 4:]                             # kirpma (rastgele konum)
    color = img * (0.8 + 0.4 * torch.rand(1, generator=g))  # renk jitter
    return crop, color

img = torch.rand(3, 32, 32)
view1, _ = augment(img, 0)
_, view2 = augment(img, 1)
# (view1, view2) = POZITIF cift  -> enerji ASAGI (ayni goruntu, iki gorunum)
other = torch.rand(3, 32, 32)                         # rastgele BASKA goruntu
# (view1, other) = NEGATIF cift -> enerji YUKARI (uyumsuz)
# boyut d artarsa: "disarisi" ustel buyur -> her yeri itmek icin COK negatif gerekir

Egzersiz 3 (Denoising AE). Bir görüntüye gürültü/maskeleme uygula, küçük bir DAE ile temizini kur. Bunun (a) Hafta 7’nin “manifolda geri çek”i ve (b) BERT’in maskeleme fikriyle ilişkisini açıkla.

import torch
import torch.nn as nn

class DenoisingAE(nn.Module):
    def __init__(self, d=784, code=64):
        super().__init__()
        self.enc = nn.Sequential(nn.Linear(d, code), nn.ReLU())
        self.dec = nn.Sequential(nn.Linear(code, d), nn.Sigmoid())
    def forward(self, x):                             # x = BOZUK girdi
        return self.dec(self.enc(x))                  # -> temiz kurulan

model = DenoisingAE()
clean = torch.rand(1, 784)                            # temiz y (manifoldda)
mask = (torch.rand(1, 784) > 0.3).float()            # %30 maskele
corrupt = clean * mask                                # bozuk x (off-manifold)
recon = model(corrupt)
loss = ((recon - clean) ** 2).mean()                  # bozuktan temizi kur
# (a) bozuk=off-manifold -> manifolda GERI CEK (Hafta 7)
# (b) maskeleme = BERT fikri (eksik tokeni/pikseli tahmin et, Hafta 12)

Egzersiz 4 (VAE kur). PyTorch’ta bir VAE kur: encoder μ ve log σ² üretsin, reparameterization ile z örnekle, decoder kursun. Reconstruction loss + KL terimini ekle. Latent’ten rastgele z çekip yeni örnek üret (sıradan AE bunu yapamaz — neden?).

import torch
import torch.nn as nn

class VAE(nn.Module):
    def __init__(self, d=784, h=400, zdim=20):
        super().__init__()
        self.enc = nn.Linear(d, h)
        self.fc_mu = nn.Linear(h, zdim)              # ortalama mu
        self.fc_logvar = nn.Linear(h, zdim)          # log varyans
        self.dec1 = nn.Linear(zdim, h)
        self.dec2 = nn.Linear(h, d)
    def reparam(self, mu, logvar):                   # z = mu + sigma * eps
        sigma = torch.exp(0.5 * logvar)
        eps = torch.randn_like(sigma)                # eps ~ N(0, I) (tek stokastik kisim)
        return mu + sigma * eps
    def forward(self, x):
        h = torch.relu(self.enc(x))
        mu, logvar = self.fc_mu(h), self.fc_logvar(h)
        z = self.reparam(mu, logvar)
        recon = torch.sigmoid(self.dec2(torch.relu(self.dec1(z))))
        return recon, mu, logvar

def vae_loss(recon, x, mu, logvar):
    bce = nn.functional.binary_cross_entropy(recon, x, reduction="sum")
    kl = -0.5 * torch.sum(1 + logvar - mu.pow(2) - logvar.exp())   # KL(q||N(0,I))
    return bce + kl                                  # reconstruction + duzenlileme
# Uretim: z = torch.randn(1, 20); ornek = decoder(z)
# AE bunu YAPAMAZ -> latent bosluklu/duzensiz, rastgele z anlamsiz cikti verir

Egzersiz 5 (Hafta 9 habercisi — GAN ve dünya modelleri). VAE veriyi olasılıksal kurar; başka bir üretken yaklaşım GAN’dır (üretici vs ayırıcı). (a) VAE “veriyi yeniden kur” derken GAN “ayırıcıyı kandır” der — bu iki üretken felsefenin farkı nedir? (b) Hafta 9’da LeCun sparse coding, dünya modelleri ve GAN’ı (EBM’nin üçüncü dersi) anlatacak — dünya modeli neden bir EBM’dir (gelecek durumun enerjisi)?

# (a) VAE vs GAN — iki uretken felsefe
#   VAE : encoder->dagilim->decoder; kayip = reconstruction + KL
#         "veriyi olasiliksal YENIDEN KUR"  (likelihood-tabanli)
#   GAN : uretici G (gurultuden veri uretir) vs ayirici D (gercek/sahte ayirir)
#         "ayiriciyi KANDIR"  (adversarial, min-max oyun)
#         min_G max_D  E[log D(x)] + E[log(1 - D(G(z)))]
# (b) dunya modeli = EBM:
#   F(s_t, a_t, s_{t+1}) = gelecek durumun enerjisi
#   uyumlu (gercekci) gecis -> DUSUK enerji; uyumsuz -> YUKSEK enerji
#   -> planlama = gelecek durumun enerjisini minimize et (Hafta 9)
print("VAE: yeniden kur (likelihood) | GAN: ayiriciyi kandir (adversarial)")

9.14 Sonraki Ders İçin Hazırlık

UyarıSonraki Hafta — H9: Sparse Coding, Dünya Modelleri ve GAN

Üretken modeller geliyor. Bu hafta EBM eğitiminin iki yolunu kurduk (contrastive vs non-contrastive) ve VAE’yi gördük. Hafta 9, EBM serisinin üçüncü ve son dersi: LeCun sparse coding, dünya modelleri (world models) ve GAN’ı (hepsi EBM çerçevesinde) anlatacak; Canziani GAN/DCGAN’ı PyTorch’ta gösterecek. Egzersiz 4 (VAE) ve Egzersiz 5 (GAN/dünya modeli habercisi) tam bu derse hazırlar.

Hafta 9: Sparse Coding, Dünya Modelleri ve GAN — LeCun (Lecture) + Canziani (Practicum)

Hafta 9, EBM serisinin üçüncü ve son dersi: LeCun sparse coding, dünya modelleri (world models) ve GAN’ı (hepsi EBM çerçevesinde) anlatacak; Canziani GAN/DCGAN’ı PyTorch’ta gösterecek.

Hafta 9 öncesi yapılacak:

  • Egzersiz 1 (push down/up) ve Egzersiz 4 (VAE) çöz.
  • “Contrastive vs non-contrastive” ayrımını kendi sözcüklerinle yaz.
  • Hafta 7-8’i bağla: EBM çerçevesi (7) → enerji şekillendirme yöntemleri (8) → üretken modeller (9).

9.15 Anahtar Kavramlar (Cheat Sheet)

Kavram Tanım Hoca / timestamp
Contrastive yöntem Veride enerjiyi aşağı, negatifte yukarı bas LeCun 5m20
Architectural / non-contrastive Yapıyla enerji hacmini kısıtla (negatifsiz) LeCun 6m46
Pozitif / negatif çift Augmentation (uyumlu) vs rastgele (uyumsuz) LeCun 13m22
Noise contrastive estimation PIRL’in contrastive amaç fonksiyonu LeCun 16m32
Denoising AE (DAE) Bozulmuşu kur; maskeleme = BERT fikri LeCun 23m17
Contrastive sınırı Yüksek boyutta çok negatif gerekir LeCun 22m54
VAE Encoder ortalama + varyans üretir; latent örneklenir Canziani 3m12
Reparameterization \(z = \mu + \sigma\odot\epsilon\); rastgeleliği ε’a izole et Canziani 3m26
Düzenli latent Gaussian kısıt → sürekli, üretken latent uzay Canziani 4m37
VAE = non-contrastive EBM Latent kısıtı enerjiyi yapıyla şekillendirir Canziani / LeCun

9.16 ML Builder Bağlantıları

Geriye köprüler (önkoşul kurslar):

  1. Push down/up = cross-entropy/MLE → Hafta 1 cross-entropy + Stat 110 (energy = −log p).
  2. VAE latent = Gaussian → Stat 110 çok-değişkenli normal (mean + diagonal covariance).
  3. Reparameterization = konum-ölçek → Stat 110 \(X=\mu+\sigma Z\) + Calculus zincir kuralı + Hafta 5 autograd.
  4. Contrastive SSL = invariance → Hafta 3 (augmentation = stationarity/invariance).
  5. DAE = manifolda geri çek → Hafta 7 autoencoder.

İleriye köprüler (production / research):

  1. Contrastive (MoCo kursta) → SimCLR; “çok negatif” sorunu → BYOL/VICReg/MAE (post-2020, KURSTA YOK).
  2. DAE maskeleme → BERT (Hafta 12), MAE (post-2020).
  3. VAE → diffusion (Hafta 9), latent diffusion (Stable Diffusion).
  4. Non-contrastive EBM → LeCun JEPA programı (post-2020).
ÖnemliBu dersten tek bir şey alıp gideceksen

EBM’yi eğitmek enerji fonksiyonunu şekillendirmektir, ve bunun iki yolu vardır — contrastive (veriyi aşağı, üretilmiş negatifi yukarı it; ama yüksek boyutta çok negatif ister) ve non-contrastive/architectural (yapıyla kısıtla, negatifsiz). VAE ikincisinin zarif örneğidir: encoder bir dağılım üretir, latent reparameterization ile örneklenir (\(z = \mu + \sigma\epsilon\)), ve Gaussian kısıt latent’i düzenli, üretken kılar. LeCun’un “çok negatif gerekir” sınırı ise kurstan sonraki non-contrastive devrimi (BYOL/VICReg/MAE — kursta yok) doğurdu.