2 puan yazan GN⁺ 2025-05-17 | 1 yorum | WhatsApp'ta paylaş
  • Boltzmann makinesinin yapısı ve amacı hakkında kısa bir giriş sunuluyor
  • Enerji fonksiyonu ve olasılık dağılımı formüllerle tanımlanıyor
  • Ağırlıklar ve bias'ların güncelleme kuralları türev yoluyla çıkarılıyor
  • Pozitif/negatif aşamalar ve Gibbs örneklemesi ile model beklentisinin nasıl yaklaşıklandığı açıklanıyor
  • Son olarak Contrastive Divergence algoritması bütünlüklü biçimde özetleniyor

Boltzmann makinesi ve Contrastive Divergence kavramı

  • Boltzmann makinesinde giriş katmanı (visible layer) ve gizli katman (hidden layer) ile bunları bağlayan ağırlık matrisi ve her iki katman için ayrı bias vektörleri bulunur

Enerji fonksiyonu ve olasılık dağılımı

  • Enerji fonksiyonu matris biçiminde şu şekilde tanımlanır

    E(v, h) = -ΣiΣj wij vi hj - Σi bi vi - Σj cj hj
    • v: görünür katman vektörü, h: gizli katman vektörü, w: ağırlıklar, b/c: her katmanın bias'ı
  • Boltzmann makinesinin birleşik dağılımı

    P(v, h) = (1/Z) * exp(-E(v, h))
    • Z (bölüm fonksiyonu), olasılık dağılımını normalize etme görevini üstlenir

Log-likelihood ve türev

  • Eğitim verisinin olabilirliği maksimize edilerek öğrenme yürütülür

    log(P(v)) = log(Σh exp(-E(v, h))) - log(Z)
  • Log-likelihood'in ağırlık wij için kısmi türevi

    ∂(log P(v))/∂wij = <vi hj>veri - <vi hj>model
    • < · >veri: gerçek veriye ilişkin beklenti
    • < · >model: modelin ürettiği veriye ilişkin beklenti

Ağırlık ve bias öğrenme kuralları

  • Ağırlıklar ve bias'lar şu şekilde güncellenir
    • Δwij = η(<vi hj>veri - <vi hj>model)
    • Δbi = η(<vi>veri - <vi>model)
    • Δcj = η(<hj>veri - <hj>model)
    • η öğrenme oranıdır

Contrastive Divergence algoritması

  • Model beklentisi < · >model doğrudan hesaplanması zor olduğu için Gibbs örneklemesi kullanılır
  • Contrastive Divergence bunu şu prosedürle yaklaşıklar
    1. Pozitif aşama: gizli katman h(0), P(h | v(0)=veri) dağılımından örneklenir
    2. Negatif aşama: Gibbs örneklemesi k kez tekrarlanır
    • Sırayla v(t+1) ~ P(v | h(t)), h(t+1) ~ P(h | v(t)) şeklinde örnekleme yapılır
  • Güncelleme sırasında veri beklentisi ile model beklentisi arasındaki fark kullanılır
    • Δwij = η(<vi hj>veri - <vi hj>model)
    • Δbi = η(<vi>veri - <vi>model)
    • Δcj = η(<hj>veri - <hj>model)

Özet

  • Boltzmann makinesinde öğrenmenin özü, bir enerji tabanlı model olarak gerçek veri ile modelin ürettiği dağılım arasındaki beklenti farkını azaltmaktır
  • Contrastive Divergence, bu farkın hızlı ve verimli biçimde yaklaşıklanmasını sağlayan temel eğitim yöntemidir
  • Gibbs örneklemesi aracılığıyla model dağılımı ile gerçek veri arasında köprü kurar; bu süreç tekrarlandıkça Boltzmann makinesinin veriyi iyi temsil edebilmesi için ağırlıklar ve bias'lar güncellenir

1 yorum

 
GN⁺ 2025-05-17
Hacker News yorumları
  • 1990’da saf C’de void pointer dizileriyle “nöronlar” oluşturup Boltzmann makineleri ve perceptron’lar yaptığım zamanları hatırlattı
    O dönemde “AI” ile yaptığımız işler, MIDI melodisinde bir sonraki notayı tahmin etmek ya da 5×9 noktalı bir ızgarada birlik, ikilik, dörtlük ve sekizlik nota şekillerini tanımak gibiydi; %85 doğruluk “yeterince iyi” sayılırdı

    • Çizgili porte üzerindeki notaları okumak eğlenceli bir proje gibi geliyor. Özellikle 3Blue1Brown’un sayı sinir ağı örneği[1] gibi sıfırdan kendin yapınca daha da öyle
      Chuck[2] gibi bir şeyle birleştirince, günümüz teknolojisiyle tamamen istemci tarafında çalışan bir uygulama bile yapılabilir

      [1] - https://www.3blue1brown.com/lessons/neural-networks

      [2] - https://chuck.stanford.edu/

    • Çıktının müzik gibi duyulup duyulmadığını merak ediyorum

  • Anladığım kadarıyla Harmonium (Smolensky) ilk kısıtlı Boltzmann makinesiydi, ama “enerjiyi” en aza indirmek yerine “uyumu” en üst düzeye çıkarıyordu
    Smolensky, Hinton ve Rummelhart birlikte çalışırken buna sanırım “uygunluk” diyorlardı. Harmonium makalesi[1] gerçekten okunması keyifli; Hinton elbette süperstar oldu, Smolensky ise dilbilim üzerine uzun kitaplar yazdı. Bu tarih hakkında daha fazlasını bilen var mı merak ediyorum

    [1] https://stanford.edu/~jlmcc/papers/PDP/Volume%201/Chap6_PDP8...

  • David Ackley hakkında ilginç bir yazı: https://news.unm.edu/news/24-nobel-prize-in-physics-cited-gr...
    T2 Tile Project de kesinlikle görülmeye değer

    • Önemli nokta şu: böyle atılımların ortaya çıkmasında pek çok insan rol oynuyor
      Lisansüstü öğrencilerin değeri sık sık hafife alınıyor, oysa gerçekte muazzam katkı sağlıyorlar ve daha sonra araştırmayı daha da ileri taşıyorlar. Araştırma bu kadar çok şeyi ileriye taşımışken ABD’nin neden araştırmayı israf gibi gördüğünü anlamıyorum
  • Başlığı yanlışlıkla “A Tiny Boltzmann Brain” diye okudum[0]
    Doğal zihnim hemen bilmecenin cevabını verdi. Çok küçük bir modele rastgele üretilmiş ağırlıklar koyup gerçekten işe yarar bir şey yapıp yapmadığını test eden bir durum sandım. Sonuçta model ne kadar küçükse, basit rastgele üretimin boyutuna kıyasla ilginç bir şey üretme olasılığı o kadar artar
    Düzeltmeyi kabul ediyorum ama moralim bozulmadı. “Unbiased-Architecture Instant Boltzmann Model” (UA-IBM) adlı yeni bir model sınıfı öneriyorum. Bir gün yeterince büyük kuantum bilgisayarlar ortaya çıktığında, tüm veri kümesini, tüm parametre ve yapı ayarlarını temsil eden N adet serileştirilmiş değerle tanımlanan modelin klasik kısıtları olarak ayarlayabileceğiz. Ardından N kübitli bir kuantum sisteminin olası tüm parametreleri ve yapıları kuantum süperpozisyonunda tutup tüm klasik örnekler üzerinde bir çıkarım adımı çalıştırmasını, sonra sonucu çökertip en iyi ya da en iyiye yakın modelin parametrelerini ve yapısını klasik biçimde geri vermesini sağlayacağız
    Bunu deneyecek birkaç boş kübiti olan var mı merak ediyorum. Her şey kuantum olmasına rağmen aşırı kaygan olduğu için hâlâ neredeyse hiç yararlanamıyor olmamızda bir ironi var
    Bilimkurgu ortamı olarak, tek kullanımlık bir kuantum sensörü evrimleştirmiş, bunun da bütün bir kuantum duyusal sisteme ve sinir sistemine yol açıp en baştan eksiksiz bir kuantum zekâya evrildiği bir uzaylı türü hayal edilebilir. Böyle bir toplum ve teknoloji rotası nasıl görünürdü? Patlayıcı ilerlemeleri henüz bizi tehdit etmesin diye kara delik yakınındaki bir yörüngede olmalarını umuyorum. Sonra bir gün kütleçekim kuyusundan kaçarlar ve…

    [0] https://en.wikipedia.org/wiki/Boltzmann_brain

    • Kuantum bilgisayarlar böyle çalışmaz
    • Zavallı kuantum varlıklar. Kendi düşüncelerinden daha hızlı bir hesaplama modeline erişemedikleri için, hesaplamanın bitmesini sonsuz denecek kadar uzun süre beklemeye mahkûmlar
  • Açıklama iyi. Bu arada nedense fare tekerleğiyle kaydırma fazla hassas
    Mobilde kaydırmanın iyi olacağını tahmin ediyorum ama kontrol etmedim. Kaydırmaya her çalıştığımda ilk “sayfadan” son “sayfaya”, sonra da tersine zıplıyordu. Neyse ki klavye girişi çalıştı da yazının tamamını okuyabildim

  • Doğru anladıysam, bugün alışık olduğumuz sinir ağlarındaki gibi gradyan tabanlı ileri besleme ve geri yayılım kullanmak yerine, ağırlık güncellemesini hesaplamak için Gibbs örneklemesi gerekiyor gibi görünüyor
    Bunun nedenini anlayan var mı merak ediyorum

    • Gibbs örneklemesi, model dağılımına ilişkin beklenen değeri yaklaştırmak için kullanılıyor gibi
      Bu değer log-olabilirliğin gradyanını hesaplamak için gerekli, ama dağılımı entegre etmek başa çıkılması zor olduğu için böyle yapılıyor. VAE’lerde temsili örnekler çekmek için MCMC kullanmaya benziyor. Derin öğrenme tipi sinir ağlarında ise açıkça modellenmiş bir olasılık dağılımı yerine veri kümesindeki batch’ler üzerinden gradyan tahmin ediliyor
    • Uzman değilim ama benzer meselelerle uğraşan Bayes tarafında biraz resmi eğitim aldım
      Genelde Gibbs, doğrudan gradyanın basit olmadığı ya da nokta tahmini değil dağılımın kendisini yeniden üretmek istediğiniz durumlarda kullanılır. Buna karşılık örneklemesi kolay marjinal/koşullu olabilirlikler olduğunda işe yarar. Her görünür düğüm her gizli düğüme bağımlı ve her gizli düğüm de tüm görünür düğümleri etkilediği için gradyan çok karmaşık hale gelir; bu yüzden marjinal olabilirliğe dayanarak ayarlama yapan Gibbs örneklemesi çok daha basit olur
    • Yanılıyor olabilirim ama bunun kısmen RBM’nin yönsüz yapısından kaynaklandığını düşünüyorum
      Bu yüzden ileri beslemeli sinir ağlarındaki gibi aynı şekilde bir hesaplama grafiği kurulamıyor
  • Temiz ve iyi bir açıklama. Eski anıları çok canlandırdı
    Utanarak biraz kendimi tanıtayım: birkaç yıl önce bir RBM eğitim görselleştirmesi yapmıştım: https://www.youtube.com/watch?v=lKAy_NONg3g

  • Demo harika. 15 yıl önce üniversitede Geoff Hinton’ın sinir ağları dersini almıştım; birkaç ders boyunca Boltzmann makinelerini anlatmıştı
    “Kısıtlı Boltzmann makinesi, görünür nöronlar ile gizli nöronların birbirine bağlı olmadığı özel bir durumdur” ifadesi yanlış. Bu ifade, görünür nöronların gizli nöronlarla bağlantılı olmadığı anlamına geliyormuş gibi duruyor
    Doğru ifade şu olmalı: “Görünür nöronlar kendi aralarında bağlı değildir ve gizli nöronlar da kendi aralarında bağlı değildir.” Ya da “görünür nöronlar ve gizli nöronlar, kendi türleri içinde bağlantılara sahip değildir” denebilir

    • Böyle bakınca bunun sıradan bir çok katmanlı perceptrondan farkının ne olduğunu pek anlamıyorum. Boltzmann makinesinin farkı ne?
      Düzenleme: Tamam. Giriş düzeyindeki özeti görmek için yukarı kaydırmam gerektiğini bilmiyordum
      0xTJ’nin [flagged][dead] yorumunda dediği gibi, kaydırmayı ele geçirme ya da yeniden icat etme girişimlerinin iyi olmadığı tespiti doğru