2 पॉइंट द्वारा GN⁺ 2025-05-17 | 1 टिप्पणियां | WhatsApp पर शेयर करें
  • Boltzmann मशीन की संरचना और उद्देश्य का संक्षिप्त परिचय
  • energy function और probability distribution को सूत्रों के साथ परिभाषित किया गया है
  • weights और bias के update rules को differentiation के माध्यम से निकाला गया है
  • positive·negative phase और Gibbs sampling के जरिए model expectation का approximation कैसे किया जाता है, यह समझाया गया है
  • अंत में Contrastive Divergence algorithm का समग्र रूप से सार प्रस्तुत किया गया है

Boltzmann मशीन और Contrastive Divergence की अवधारणा

  • Boltzmann मशीन में input layer (visible layer) और hidden layer होती हैं, और इन्हें जोड़ने वाला weight matrix तथा दोनों layers के लिए अलग-अलग bias vectors होते हैं

Energy function और probability distribution

  • energy function को matrix form में इस प्रकार परिभाषित किया जाता है

    E(v, h) = -ΣiΣj wij vi hj - Σi bi vi - Σj cj hj
    • v: visible layer vector, h: hidden layer vector, w: weights, b/c: प्रत्येक layer के bias
  • Boltzmann मशीन का joint distribution है

    P(v, h) = (1/Z) * exp(-E(v, h))
    • Z (partition function) probability distribution को normalize करने का काम करता है

Log-likelihood और differentiation

  • training data की likelihood को maximize करके learning की जाती है

    log(P(v)) = log(Σh exp(-E(v, h))) - log(Z)
  • weight wij के लिए log-likelihood का partial derivative है

    ∂(log P(v))/∂wij = <vi hj>डेटा - <vi hj>मॉडल
    • < · >डेटा: वास्तविक data पर expectation
    • < · >मॉडल: model द्वारा उत्पन्न data पर expectation

Weights और bias के learning rules

  • weights और bias को इस प्रकार update किया जाता है
    • Δwij = η(<vi hj>डेटा - <vi hj>मॉडल)
    • Δbi = η(<vi>डेटा - <vi>मॉडल)
    • Δcj = η(<hj>डेटा - <hj>मॉडल)
    • η learning rate है

Contrastive Divergence algorithm

  • model expectation < · >मॉडल को सीधे गणना करना कठिन होता है, इसलिए Gibbs sampling का उपयोग किया जाता है
  • Contrastive Divergence इसे निम्न प्रक्रिया से approximate करता है
    1. positive phase: hidden layer h(0) को P(h | v(0)=डेटा) से sample किया जाता है
    2. negative phase: Gibbs sampling को k बार दोहराया जाता है
    • बारी-बारी से v(t+1) ~ P(v | h(t)), h(t+1) ~ P(h | v(t)) से sampling की जाती है
  • update के समय data expectation और model expectation के अंतर का उपयोग किया जाता है
    • Δwij = η(<vi hj>डेटा - <vi hj>मॉडल)
    • Δbi = η(<vi>डेटा - <vi>मॉडल)
    • Δcj = η(<hj>डेटा - <hj>मॉडल)

सारांश

  • Boltzmann मशीन की learning का मूल उद्देश्य energy-based model के रूप में वास्तविक data और model द्वारा उत्पन्न distribution के बीच expectation के अंतर को कम करना है
  • Contrastive Divergence इस अंतर का तेज़ और कुशल approximation संभव बनाने वाली मुख्य training method है
  • Gibbs sampling के माध्यम से यह model distribution और वास्तविक data को जोड़ने का काम करता है, और इस प्रक्रिया को दोहराकर Boltzmann मशीन data को बेहतर ढंग से represent करने के लिए weights और bias को update करती है

1 टिप्पणियां

 
GN⁺ 2025-05-17
Hacker News राय
  • मेरी समझ के अनुसार, Harmonium(Smolensky) पहला restricted Boltzmann machine था, और इसमें “energy” को minimize करने के बजाय “harmony” को maximize करने की अवधारणा थी। जब Smolensky, Hinton, और Rummelhart साथ काम कर रहे थे, तब वे इसे “goodness of fit” कहते थे। Harmonium पेपर सच में बहुत प्रभावशाली पढ़ाई है। Hinton AI दुनिया के सुपरस्टार बन गए, और Smolensky ने भाषाविज्ञान से जुड़ी एक लंबी किताब लिखी। क्या कोई है जो इस इतिहास के बारे में और जानता हो

  • David Ackley पर एक दिलचस्प लेख का परिचय। साथ ही T2 Tile Project भी देखना चाहिए

    • असली बात यह है कि ऐसे महत्वपूर्ण विकासों में बहुत सारे लोग शामिल होते हैं। graduate students बहुत बड़ा योगदान देते हैं, और उनका किया हुआ शोध बाद में और आगे बढ़ता है। समझ नहीं आता कि अमेरिका में शोध को बर्बादी क्यों माना जाता है, जबकि शोध ने हर चीज़ को बहुत आगे बढ़ाया है
  • मैं इस लेख का लेखक हूँ। इतने सारे comments के लिए धन्यवाद, मैंने नहीं सोचा था कि यह इतना लोकप्रिय होगा। टाइपो, spacing, scrolling issues वगैरह ठीक कर रहा हूँ, बताने के लिए धन्यवाद

    • टाइपो ठीक कर दिए गए हैं, अब यह mobile पर काफी बेहतर दिखता है
  • मैंने शीर्षक को "A Tiny Boltzmann Brain" पढ़ लिया था। मेरे प्राकृतिक दिमाग ने तुरंत इस भ्रम को सुलझा लिया। मैंने अंदाज़ा लगाया कि यह शायद एक ऐसा प्रयोग होगा जिसमें बहुत छोटे model को random weights देकर देखा जाए कि क्या वह कुछ अर्थपूर्ण कर सकता है। मेरा विचार था कि model जितना छोटा होगा, random generation से कुछ दिलचस्प निकलने की संभावना उतनी ही अधिक होगी। मेरा अंदाज़ा गलत निकला, लेकिन मैं अब भी हिम्मत नहीं हारा हूँ। मैं “Unbiased-Architecture Instant Boltzmann Model” (UA-IBM) नाम के नए model family का प्रस्ताव करता हूँ। कल्पना है कि किसी दिन जब पर्याप्त बड़ा quantum computer होगा, तब पूरे dataset को model के सभी parameters और architecture के साथ quantum state में superposition करके एक ही बार में inference किया जा सकेगा। क्या किसी के पास ऐसे प्रयोग के लिए extra qubit पड़े हैं? (वैसे, यह विडंबना है कि सब कुछ quantum है, लेकिन अभी उसे वास्तव में ठीक से इस्तेमाल करना कठिन है। और मैं यह भी सोचता हूँ कि अगर कोई alien civilization एक single quantum sensor से विकसित होकर पूरे quantum nervous system वाले प्राणी बन जाए, तो उसकी सामाजिक और तकनीकी प्रगति का रास्ता कैसा होगा)

    • बेचारे quantum lifeforms। वे ऐसे computation models तक पहुँच नहीं बना पाएँगे जो उनकी अपनी सोच की गति से तेज हों, इसलिए हमेशा बहुत लंबी गणना का इंतज़ार करना उनकी नियति होगी
    • यह बताया गया कि quantum computers ऐसे काम नहीं करते
  • यह व्याख्या बहुत अच्छी है। बस एक बात, mouse scroll बहुत ज़्यादा sensitive है (हालाँकि शायद mobile पर ठीक होगा)। स्क्रॉल करते समय यह हर बार पहले और आख़िरी पेज पर उछल जाता था, जिससे असुविधा हुई। अच्छी बात यह रही कि keyboard input से मैं सामान्य रूप से पूरा पढ़ सका

  • अगर मेरी समझ सही है, तो आजकल के neural networks के विपरीत, weight update के लिए gradient-based forward/backward pass की जगह gibbs sampling चाहिए। क्या कोई जानता है कि ऐसा क्यों है

    • मेरी समझ से, gibbs sampling का उपयोग model distribution के expectation को approximate करने के लिए होता है। log likelihood के gradient को निकालने के लिए distribution पर integration चाहिए, जिसे सीधे compute करना संभव नहीं है। यह कुछ वैसा है जैसे VAE में MCMC से representative samples लेना। deep learning में हम dataset batches के ज़रिए gradient estimate करते हैं, लेकिन RBM में explicitly modeled probability distribution के expectation की ज़रूरत पड़ती है
    • मैं expert नहीं हूँ, लेकिन Bayesian क्षेत्र में थोड़ा औपचारिक प्रशिक्षण लिया है। gibbs अक्सर तब उपयोग होता है जब gradient स्पष्ट नहीं होता या जब आप खुद distribution को reconstruct करना चाहते हैं। हर visible node hidden nodes पर निर्भर करता है, और hidden nodes भी visible nodes को प्रभावित करते हैं, इसलिए gradient बहुत जटिल हो जाता है। इसलिए marginal likelihood के आधार पर gibbs sampling का उपयोग करना कहीं ज़्यादा सरल है
    • मैं गलत हो सकता हूँ, लेकिन मुझे लगता है कि इसकी वजह RBM की undirected संरचना है। feed-forward network के विपरीत इसमें computational graph नहीं बनाया जा सकता
  • इस लेख ने मुझे पुरानी बातें याद दिला दीं। 1990 में मैंने void pointer का उपयोग करके neural network nodes का array बनाया था, फिर C में Boltzmann machine और perceptron implement किया था। उस समय “AI” का उपयोग MIDI melody में अगला note predict करने या 5x9 dot grid में minim, crotchet, quaver जैसे note shapes पहचानने जैसी चीज़ों के लिए होता था। 85% recognition rate को तब काफ़ी “अच्छा” माना जाता था

    • 5x9 dot grid में note shapes पहचानना काफ़ी मज़ेदार लगता है। यह कुछ वैसा महसूस होता है जैसे 3Blue1Brown के neural network उदाहरण की तरह पूरी तरह शुरुआत से खुद implement करना। अगर Chuck जैसी किसी चीज़ को जोड़ा जाए, तो आजकल browser में client-side पर भी ऐसा प्रोग्राम बनाया जा सकता है
    • यह भी जानने की जिज्ञासा है कि उसका output सुनने में वास्तव में musical लगता था या नहीं
  • लेख आसान और स्पष्ट था। बहुत सारी पुरानी यादें ताज़ा हो गईं। थोड़ी बेशर्म self-promotion है, लेकिन मैंने कभी RBM training process को visualize करने वाला एक वीडियो बनाया था

  • सच में बहुत साफ-सुथरा demo है। Geoff Hinton के neural network lectures में Boltzmann machine पर कई lectures सुनने की याद आ गई। एक बात बतानी है: “restricted Boltzmann machine में visible और hidden neurons एक-दूसरे से connected नहीं होते” जैसी व्याख्या गलत है। इससे ऐसा लग सकता है कि visible nodes और hidden nodes के बीच connection ही नहीं है। सही बात यह है कि एक ही प्रकार के भीतर, यानी visible-से-visible या hidden-से-hidden connections नहीं होते। या यूँ कह सकते हैं कि visible और hidden nodes के अपने ही type के भीतर internal connections नहीं होते

    • “visible/hidden neurons के भीतर internal connections नहीं होते” यह सुनकर मैं उलझ गया कि फिर यह साधारण MLP से अलग कैसे है। लेकिन बाद में समझ आया कि मुझे introduction section तक वापस ऊपर scroll करना चाहिए था। और हाँ, scrolling implementation को नए सिरे से बनाना या उसे ठीक करना आम तौर पर बहुत अच्छा विचार नहीं होता, इस बात से भी मैं सहमत हूँ