एक बहुत छोटा Boltzmann मशीन
(eoinmurray.info)- 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 की टिप्पणियाँ
याद आता है कि 1990 में pure C में void pointer arrays से “neurons” बनाकर Boltzmann machine और perceptron बनाया करते थे
उस समय “AI” से हम MIDI melody का अगला note predict करने, या 5×9 dot grid में whole note, half note, quarter note, eighth note की आकृतियाँ पहचानने जैसी चीज़ें करते थे, और 85% accuracy को “काफी अच्छा” माना जाता था
लाइनों वाली sheet music से notes पढ़ना एक मज़ेदार project जैसा लगता है। खासकर अगर इसे 3Blue1Brown के digit neural network example[1] की तरह scratch से बनाया जाए
इसे Chuck[2] जैसी किसी चीज़ के साथ मिलाएँ तो आज की technology से पूरी तरह client-side पर चलने वाली application भी बनाई जा सकती है
[1] - https://www.3blue1brown.com/lessons/neural-networks
[2] - https://chuck.stanford.edu/
जानना चाहूँगा कि output सच में music जैसा सुनाई देता था या नहीं
मेरी समझ में Harmonium(Smolensky) पहली restricted Boltzmann machine थी, लेकिन “energy” को minimize करने के बजाय “harmony” को maximize करती थी
Smolensky, Hinton, Rummelhart के collaboration के दौरान शायद इसे “fitness” कहा गया था। Harmonium paper[1] पढ़ने में वाकई अच्छा है, Hinton तो जाहिर तौर पर superstar बन गए, और Smolensky ने linguistics पर लंबी किताबें लिखीं। सोच रहा हूँ कि क्या किसी को इस history के बारे में और पता है
[1] https://stanford.edu/~jlmcc/papers/PDP/Volume%201/Chap6_PDP8...
David Ackley पर एक दिलचस्प लेख: https://news.unm.edu/news/24-nobel-prize-in-physics-cited-gr...
T2 Tile Project भी ज़रूर देखने लायक है
grad students की value अक्सर कम आँकी जाती है, लेकिन असल में वे बहुत बड़ा योगदान देते हैं और बाद में research को आगे भी बढ़ाते हैं। research ने इतनी सारी चीज़ों को आगे धकेला है, फिर भी समझ नहीं आता कि अमेरिका research को waste की तरह क्यों देखता है
Title को गलती से “A Tiny Boltzmann Brain” पढ़ लिया[0]
मेरे natural mind ने तुरंत puzzle सुलझा लिया। लगा कि शायद किसी ने बहुत छोटे model में randomly generated weights डाले और test किया कि क्या वह सच में कोई useful काम करता है। आखिर model जितना छोटा हो, simple random generation से size के मुकाबले कुछ interesting बनने की संभावना उतनी ही बढ़ जाती है
correction स्वीकार है, लेकिन हताश नहीं हूँ। मैं “Unbiased-Architecture Instant Boltzmann Model”(UA-IBM) नाम की एक नई model class propose करता हूँ। कभी पर्याप्त बड़ा quantum computer हुआ, तो पूरे dataset को ऐसे model की classical constraints के रूप में set किया जा सकेगा, जो सभी parameters और structure settings को दर्शाने वाली N serialized values से define हो। फिर N qubits वाला quantum system सभी possible parameters और structures को quantum superposition state में रखकर पूरे classical sample पर inference का एक step perform करे, और फिर result को collapse करके सबसे अच्छे या लगभग सबसे अच्छे model के parameters और structure classical form में वापस दे दे
सोच रहा हूँ कि क्या किसी के पास इसे try करने लायक कुछ extra qubits हैं। irony यह है कि सब कुछ quantum होने के बावजूद यह इतना slippery है कि अभी हम इसका बहुत कम उपयोग कर पा रहे हैं
SF setting के तौर पर कल्पना की जा सकती है कि किसी alien species ने one-time quantum sensors evolve किए, उनसे पूरा quantum sensory system और nervous system बना, और फिर शुरुआत से ही पूर्ण quantum intelligence में develop हो गई। ऐसी society और technology trajectory कैसी दिखेगी? उम्मीद है ये black hole के पास orbit में हों, ताकि explosive progress अभी हमें threaten न करे। फिर किसी दिन वे gravity well से निकलेंगे और…
[0] https://en.wikipedia.org/wiki/Boltzmann_brain
Explanation अच्छी है। वैसे, किसी कारण से mouse scroll बहुत sensitive है
मेरा अनुमान है कि mobile पर swipe ठीक होगा, लेकिन check नहीं किया। हर बार scroll करने की कोशिश में पहली “page” से आखिरी “page” पर और फिर वापस उछल जाता था। शुक्र है keyboard input काम कर रहा था, इसलिए पूरा लेख पढ़ पाया
अगर मैंने ठीक समझा है, तो आजकल familiar neural networks की तरह gradient-based forward propagation/backpropagation इस्तेमाल करने के बजाय weight update compute करने के लिए Gibbs sampling चाहिए लगती है
सोच रहा हूँ कि क्या कोई समझता है ऐसा क्यों है
यह value log-likelihood के gradient को compute करने के लिए चाहिए, लेकिन distribution को integrate करना कठिन है। यह कुछ वैसा है जैसे VAE में representative samples निकालने के लिए MCMC का इस्तेमाल करना। deep learning वाले neural networks में explicitly modeled probability distribution नहीं होती, बल्कि dataset के batches पर gradient estimate किया जाता है
आम तौर पर Gibbs तब इस्तेमाल होता है जब direct gradient simple नहीं होता, या जब point estimate के बजाय distribution को ही reproduce करना चाहते हैं। इसके बजाय, जब marginal/conditional likelihoods sample करना आसान हों, तब यह useful होता है। हर visible node हर hidden node पर depend करता है और हर hidden node सभी visible nodes को affect करता है, इसलिए gradient बहुत messy हो जाता है; इसीलिए marginal likelihoods के आधार पर adjust करने वाली Gibbs sampling कहीं अधिक simple हो जाती है
इसलिए feedforward neural network की तरह उसी तरीके से computational graph नहीं बना सकते
साफ़-सुथरी और अच्छी explanation है। बहुत सारी पुरानी यादें ताज़ा हो गईं
शर्मिंदा करने वाला promotion है, लेकिन कुछ साल पहले मैंने RBM learning visualization बनाया था: https://www.youtube.com/watch?v=lKAy_NONg3g
Demo शानदार है। 15 साल पहले university में Geoff Hinton का neural networks course लिया था, और उन्होंने कई lectures में Boltzmann machine समझाई थी
“restricted Boltzmann machine वह special case है जिसमें visible neurons और hidden neurons एक-दूसरे से connected नहीं होते” वाला वाक्य गलत है। यह wording ऐसी लगती है जैसे visible neurons hidden neurons से connected नहीं हैं
सही wording है: “visible neurons आपस में connected नहीं होते, और hidden neurons भी आपस में connected नहीं होते।” या कह सकते हैं, “visible neurons और hidden neurons अपने-अपने type के अंदर connections नहीं रखते”
Edit: ठीक है। मुझे पता नहीं था कि introductory overview देखने के लिए ऊपर scroll करना होगा
0xTJ की [flagged][dead] comment की तरह, scroll को hijack या reinvent करने की कोशिश अच्छी idea नहीं है — यह बात सही है