- 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 करता है
- positive phase: hidden layer h(0) को P(h | v(0)=डेटा) से sample किया जाता है
- 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 टिप्पणियां
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 भी देखना चाहिए
मैं इस लेख का लेखक हूँ। इतने सारे comments के लिए धन्यवाद, मैंने नहीं सोचा था कि यह इतना लोकप्रिय होगा। टाइपो, spacing, scrolling issues वगैरह ठीक कर रहा हूँ, बताने के लिए धन्यवाद
मैंने शीर्षक को "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 वाले प्राणी बन जाए, तो उसकी सामाजिक और तकनीकी प्रगति का रास्ता कैसा होगा)
यह व्याख्या बहुत अच्छी है। बस एक बात, mouse scroll बहुत ज़्यादा sensitive है (हालाँकि शायद mobile पर ठीक होगा)। स्क्रॉल करते समय यह हर बार पहले और आख़िरी पेज पर उछल जाता था, जिससे असुविधा हुई। अच्छी बात यह रही कि keyboard input से मैं सामान्य रूप से पूरा पढ़ सका
अगर मेरी समझ सही है, तो आजकल के neural networks के विपरीत, weight update के लिए gradient-based forward/backward pass की जगह gibbs sampling चाहिए। क्या कोई जानता है कि ऐसा क्यों है
इस लेख ने मुझे पुरानी बातें याद दिला दीं। 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 को तब काफ़ी “अच्छा” माना जाता था
लेख आसान और स्पष्ट था। बहुत सारी पुरानी यादें ताज़ा हो गईं। थोड़ी बेशर्म 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 नहीं होते