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ı
  • Benim anladığım kadarıyla Harmonium (Smolensky), ilk restricted Boltzmann machine'di ve “energy”yi minimize etmek yerine “harmony”yi maksimize eden bir kavramdı. Smolensky, Hinton ve Rummelhart birlikte çalışırken buna “goodness of fit” diyorlardı. Harmonium makalesi gerçekten etkileyici bir okuma. Hinton yapay zeka dünyasında bir süperstar oldu, Smolensky ise dilbilimle ilgili uzun bir kitap yazdı. Bu tarih hakkında daha fazlasını bilen var mı merak ediyorum

  • David Ackley hakkında ilginç bir yazı paylaşımı. Ayrıca T2 Tile Project'e de bakmaya değer

    • Asıl önemli nokta, bu tür büyük gelişmelerde gerçekten çok fazla insanın yer alması. Lisansüstü öğrencileri çok büyük katkılar yapıyor ve yaptıkları çalışmalar daha sonra daha da geliştiriliyor. ABD'de neden araştırmanın israf olarak görüldüğünü anlamıyorum; oysa araştırma her şeyi büyük ölçüde ileri taşıdı
  • Yazının yazarıyım. Çok sayıdaki yorum için teşekkürler, bunun bu kadar popüler olacağını beklemiyordum. Yazım hataları, boşluklar, kaydırma sorunları vb. üzerinde düzeltme yapıyorum; bildirdiğiniz için teşekkürler

    • Yazım hataları düzeltildi, artık mobilde çok daha iyi görünüyor
  • Başlığı "A Tiny Boltzmann Brain" diye okudum. Doğal beynim bu karışıklığı anında çözdü. Bunun, çok küçük bir modele rastgele ağırlıklar verip anlamlı bir şey yapıp yapamayacağını test eden bir deney olacağını düşündüm. Model ne kadar küçükse, rastgele üretimde ilginç bir şey çıkma olasılığı göreli olarak o kadar yüksek gibi geliyor. Tahminim yanlış çıktı ama yine de moralimi bozmadım. “Unbiased-Architecture Instant Boltzmann Model” (UA-IBM) adında yeni bir model ailesi öneriyorum. Bir gün yeterince büyük kuantum bilgisayarlar olursa, tüm veri kümesini modelin tüm parametreleri ve mimarisiyle birlikte kuantum durumunda üst üste bindirip tek seferde çıkarım yapabileceğimizi hayal ediyorum. Bunu deneyecek boştaki qubit'leri olan var mı? (Aslında her şeyin kuantum olması ama bunu hâlâ pratikte düzgün kullanamıyor olmamız ironik. Ayrıca bir uzaylı uygarlığın tek bir kuantum sensörden başlayıp tümüyle kuantum sinir sistemine sahip varlıklara dönüşmesi için nasıl bir toplumsal ve teknolojik yol izleyeceğini de hayal ediyorum)

    • Zavallı kuantum yaşam formları. Düşünme hızlarından daha hızlı çalışan hesaplama modellerine erişemedikleri için her zaman uzun süre hesaplama beklemek zorunda kalacaklar
    • Kuantum bilgisayarların böyle çalışmadığını belirtiyor
  • Açıklama çok iyi. Bu arada fareyle kaydırma aşırı hassas (muhtemelen mobilde sorun yoktur). Her kaydırmada ilk ve son sayfaya fırladığı için kullanımı zordu. Neyse ki klavyeyle tümünü normal şekilde okuyabildim

  • Doğru anladıysam, bugün kullandığımız sinir ağlarından farklı olarak, weight update için gradient tabanlı forward/backward pass yerine Gibbs sampling gerekiyor. Bunun nedenini bilen var mı merak ediyorum

    • Benim de anladığım kadarıyla Gibbs sampling, model dağılımı üzerindeki beklenen değeri yaklaşık hesaplamak için kullanılıyor. Log-likelihood gradient'ini hesaplamak için dağılım üzerinde integral almak gerekiyor ama bunu doğrudan yapmak mümkün değil. VAE'de MCMC ile temsili örnekler çekmeye benziyor. Derin öğrenmede veri kümesi batch'leriyle gradient tahmin edilirken, RBM'de açıkça modellenen olasılık dağılımının beklenen değerine ihtiyaç var
    • Uzman değilim ama Bayesian alanında biraz resmi eğitim aldım. Gibbs, gradient'in açık olmadığı ya da dağılımın kendisini yeniden kurmak istediğiniz durumlarda sık kullanılır. Her visible düğüm hidden düğümlere bağlıdır ve hidden düğümler de visible düğümleri etkiler, bu yüzden gradient çok karmaşık hale gelir. Bu yüzden marginal likelihood tabanlı Gibbs örneklemesi kullanmak çok daha basittir
    • Yanılıyor olabilirim ama bunun RBM'in undirected yapısından kaynaklandığını düşünüyorum. Feed-forward network'lerin aksine bir computational graph kurulamıyor
  • Bu yazı bana eski günleri hatırlattı. 1990'da void pointer kullanarak sinir ağı düğümlerini diziler halinde oluşturup C ile Boltzmann machine ve perceptron gerçekleştirmiştim. O zamanlar “AI” kullanımı, MIDI melodilerinde bir sonraki notayı tahmin etmek ya da 5x9 nokta alanında minim, crotchet, quaver gibi nota şekillerini tanımak gibi şeylerdi. %85 tanıma oranı gayet “iyi” sayılıyordu

    • 5x9 nokta alanında nota şekillerini tanıma kısmı ilginç. 3Blue1Brown'un sinir ağı örneklerine benzer şekilde, her şeyi tamamen sıfırdan kendin kuruyormuşsun gibi hissettiriyor. Chuck gibi şeylerle birleştirince bugün bunu tarayıcıda istemci tarafında çalışan bir program olarak bile yapmak mümkün olabilir
    • Ortaya çıkan şeyin müzikal olarak kulağa hoş gelip gelmediğini de merak ediyorum
  • Yazı kolay anlaşılır ve açıktı. Çok nostaljik hissettirdi. Utanmaz bir tanıtım olacak ama, bir zamanlar RBM eğitimi sürecini görselleştiren bir video yapmıştım

  • Gerçekten çok temiz bir demo. Eskiden Geoff Hinton'ın sinir ağları derslerinde Boltzmann machine hakkında birkaç ders dinlediğimi hatırladım. Bir noktaya dikkat çekmek isterim: “restricted Boltzmann machine'de visible ve hidden nöronlar birbirine bağlı değildir” gibi bir açıklama hatalı bir ifade. Çünkü bu, visible düğümler ile hidden düğümlerin birbirine bağlı olmadığı izlenimini verebilir. Doğru ifade, aynı tür içindeki bağlantıların olmadığıdır; yani visible-visible ya da hidden-hidden bağlantıları yoktur. Ya da visible ve hidden düğümlerin kendi türleri içinde iç bağlantıları olmadığı söylenebilir

    • “visible/hidden nöronların kendi içinde bağlantısı yok” ifadesini duyunca, o zaman bunun MLP'den farkı ne diye kafam karıştı. Sonra giriş kısmına geri kaydırmam gerektiğini fark ettim. Ayrıca kaydırma davranışını yeniden yazmanın ya da düzeltmeye çalışmanın pek iyi bir fikir olmadığı yönündeki tespitin de doğru olduğunu düşünüyorum