Gibbs Sampling for Training Restricted Boltzmann Machines (RBMs) | आरबीएम के प्रशिक्षण के लिए गिब्स सैम्पलिंग की प्रक्रिया


आरबीएम (RBM) के प्रशिक्षण के लिए गिब्स सैम्पलिंग की प्रक्रिया

Gibbs Sampling एक प्रायिकता-आधारित (probabilistic) तकनीक है जिसका उपयोग Restricted Boltzmann Machine (RBM) को प्रशिक्षित करने के लिए किया जाता है। यह डेटा वितरण को सीखने का एक तरीका प्रदान करती है जब प्रत्यक्ष गणना (direct computation) कठिन होती है। डीप लर्निंग में यह तकनीक Contrastive Divergence (CD) का आधार है।

📘 गिब्स सैम्पलिंग क्या है?

Gibbs Sampling एक Markov Chain Monte Carlo (MCMC) तकनीक है जो बहु-आयामी वितरण (multi-dimensional distribution) से सैम्पल लेने के लिए प्रयोग की जाती है। यह एक-एक वेरिएबल को अन्य वेरिएबल्स के सशर्त वितरण (conditional distribution) के आधार पर अपडेट करती है।

🧠 RBM में Gibbs Sampling का उपयोग क्यों?

RBM में Hidden और Visible लेयर के बीच पूर्ण कनेक्शन होते हैं। डेटा वितरण P(v, h) को सीधे प्राप्त करना बहुत कठिन है क्योंकि इसमें partition function Z शामिल होता है। इसलिए, Gibbs Sampling का उपयोग करके P(h|v) और P(v|h) के बीच वैकल्पिक अपडेट से नए सैंपल उत्पन्न किए जाते हैं।

⚙️ गिब्स सैम्पलिंग की प्रक्रिया (Step-by-Step):

  1. Visible यूनिट्स को इनपुट डेटा से इनिशियलाइज़ करें।
  2. Hidden यूनिट्स को सक्रिय करें:
    P(h_j = 1 | v) = sigmoid(Σ Wᵢⱼvᵢ + bⱼ)
  3. Hidden यूनिट्स से Visible यूनिट्स को पुनः निर्मित करें:
    P(v_i = 1 | h) = sigmoid(Σ Wᵢⱼhⱼ + aᵢ)
  4. इस प्रक्रिया को कई बार दोहराया जाता है (sampling chain)।
  5. अंततः, Gibbs Sampling के परिणामों से weight updates किए जाते हैं।

📊 गिब्स सैम्पलिंग का उद्देश्य:

  • RBM को वास्तविक डेटा वितरण के समीप लाना।
  • Reconstruction Error को कम करना।
  • Model Parameters (weights & biases) को अद्यतन करना।

🧮 गणितीय रूप:

RBM का energy function:

E(v, h) = - Σᵢ bᵢvᵢ - Σⱼ cⱼhⱼ - Σᵢⱼ vᵢWᵢⱼhⱼ

Probability distributions:

P(h_j = 1 | v) = sigmoid(Σᵢ Wᵢⱼvᵢ + bⱼ)
P(v_i = 1 | h) = sigmoid(Σⱼ Wᵢⱼhⱼ + aᵢ)

Sampling Process:

v(0) → h(0) → v(1) → h(1) → ... → v(k)

जहाँ प्रत्येक स्टेप Gibbs Sampling का एक iteration दर्शाता है।

📗 Python कोड उदाहरण (Gibbs Sampling for RBM):

import numpy as np

def sigmoid(x):
    return 1 / (1 + np.exp(-x))

def gibbs_sampling(v, W, hb, vb, k=1):
    for _ in range(k):
        h_prob = sigmoid(np.dot(v, W) + hb)
        h_state = h_prob > np.random.rand(*h_prob.shape)
        v_prob = sigmoid(np.dot(h_state, W.T) + vb)
        v = v_prob > np.random.rand(*v_prob.shape)
    return v

🚀 Contrastive Divergence (CD) और Gibbs Sampling:

RBM को प्रशिक्षित करने के लिए Gibbs Sampling को Contrastive Divergence (CD) नामक एल्गोरिदम में उपयोग किया जाता है। CD में केवल कुछ Gibbs Steps (k=1 या k=2) का उपयोग करके वज़न अपडेट किए जाते हैं:

ΔW = η * (v₀h₀ᵀ - v_kh_kᵀ)

जहाँ η learning rate है।

🧩 Gibbs Sampling के लाभ:

  • सटीक डेटा वितरण का अच्छा अनुमान देता है।
  • Probabilistic मॉडल्स के लिए लचीला तरीका।
  • अनसुपरवाइज्ड लर्निंग में अत्यंत उपयोगी।

⚠️ सीमाएँ:

  • कई iterations की आवश्यकता हो सकती है।
  • High-dimensional डेटा में Sampling धीमी हो सकती है।
  • Approximations से कभी-कभी Bias उत्पन्न होता है।

📙 निष्कर्ष:

Gibbs Sampling RBM के प्रशिक्षण की रीढ़ है। यह मॉडल को probabilistic तरीके से डेटा वितरण सीखने की अनुमति देता है। 2025 में भी, Energy-Based Models और Generative Architectures जैसे GANs और VAEs में Gibbs Sampling जैसे सिद्धांत आज भी प्रेरणा का स्रोत बने हुए हैं।

Related Post