- यह एक गणितीय डीप लर्निंग परिचय-पुस्तक है, जिसे इस तरह तैयार किया गया है कि बिना पृष्ठभूमि-ज्ञान वाले छात्र और वैज्ञानिक, तथा अधिक कठोर समझ चाहने वाले प्रैक्टिशनर, डीप लर्निंग एल्गोरिद्म की बुनियाद मजबूत कर सकें
- कृत्रिम न्यूरल नेटवर्क को activation function और affine function की बार-बार होने वाली composition के रूप में परिभाषित किया जाता है, और composition की गहराई बढ़ने पर यह उन function classes तक पहुँचता है जिन्हें deep ANN के रूप में देखा जाता है
- पूरी संरचना ANN की बनावट और calculus से शुरू होकर approximation theory, optimization, generalization error, कुल error analysis, और PDE solving तक जाती है
- optimization भाग में gradient flow ODE, GD, SGD, backpropagation, Kurdyka–Łojasiewicz approach, batch normalization, और random initialization को साथ में लिया गया है
- Python source code खुले GitHub repository और arXiv पेज से प्राप्त किया जा सकता है, और हर listing caption में दिए गए file name के ज़रिए किताब की सामग्री और code को आपस में मिलाया जा सकता है
डीप लर्निंग को गणितीय रूप से परिभाषित करने का तरीका
- यह पुस्तक डीप लर्निंग एल्गोरिद्म को deep ANN और डेटा का बार-बार उपयोग करके किसी विशेष संबंध, function, या quantity का approximation करने वाली computational विधि के रूप में देखती है
- ANN एक ऐसा function class है जो किसी विशेष nonlinear activation function और affine function की कई compositions से बना होता है
- ANN की depth, composition की पुनरावृत्ति की संख्या के अनुरूप होती है, और जब nonlinear function तथा affine function की compositions 2 से अधिक हो जाती हैं, तब उसे deep ANN कहा जाने लगता है
- लक्षित पाठक वे छात्र और वैज्ञानिक हैं जिनकी डीप लर्निंग में कोई पृष्ठभूमि नहीं है लेकिन जिन्हें ठोस बुनियाद चाहिए, और वे प्रैक्टिशनर भी जो डीप लर्निंग की objects और methods को अधिक स्पष्ट रूप से समझना चाहते हैं
Part I–II: न्यूरल नेटवर्क संरचना और approximation theory
- छोटे परिचय के बाद मुख्य पाठ Part I–VI के 6 भागों में विभाजित है
-
Part I: कृत्रिम न्यूरल नेटवर्क
- Chapter 1 कई प्रकार के ANN का गणितीय परिचय देता है
- fully-connected feedforward ANN
- convolutional ANN(CNN)
- recurrent ANN(RNN)
- residual ANN(ResNet)
- Chapter 2 fully-connected feedforward ANN के calculus पर केंद्रित है
- Chapter 1 कई प्रकार के ANN का गणितीय परिचय देता है
-
Part II: approximation
- इसमें कई गणितीय परिणामों पर चर्चा है जो विश्लेषण करते हैं कि ANN किसी दिए गए function का approximation कितनी अच्छी तरह कर सकता है
- Chapter 3 सुलभता के लिए पहले real numbers से real numbers में जाने वाले 1-dimensional functions पर ध्यान देता है
- Chapter 4 दायरे को multivariable functions के लिए ANN approximation results तक बढ़ाता है
Part III: optimization और learning algorithms
- डीप लर्निंग एल्गोरिद्म का मूल इस बात में है कि समस्या को deep ANN शामिल करने वाली उपयुक्त optimization problem के रूप में model या reformulate किया जाए
- यह भाग optimization problems और उन्हें लगभग हल करने वाले algorithms पर चर्चा करता है, और आम तौर पर minimization problems को gradient-आधारित optimization methods से हल किया जाता है
- gradient-आधारित methods ऐसी computational विधियाँ हैं जो optimize किए जाने वाले function के negative gradient की दिशा पर आधारित लगातार चरणों से समस्या हल करती हैं
- Chapter 5 gradient flow(GF) ODE और उसके उपयोगों को लेता है, ताकि GD-प्रकार और SGD-प्रकार methods को समझा जा सके
- Chapter 6 gradient descent(GD) जैसे deterministic gradient-आधारित optimization methods की समीक्षा और विश्लेषण करता है
- Chapter 7 stochastic gradient descent(SGD) जैसे stochastic gradient-आधारित optimization methods की समीक्षा और विश्लेषण करता है
- Chapter 8 ANN training में gradient को स्पष्ट रूप से compute करने की व्यापक रूप से प्रयुक्त विधि backpropagation को व्युत्पन्न करता है और विस्तार से समझाता है
- Chapter 5–7 का विश्लेषण अधिकतर मामलों में ANN training optimization problems को संभालने के लिए सीमित है, लेकिन Chapter 9 का Kurdyka–Łojasiewicz(KL) approach ऐसे problems को संभाल सकता है
- Chapter 10 data-driven learning problems में ANN training procedure को तेज करने की विधि batch normalization(BN) की कठोर समीक्षा करता है
- Chapter 11 अलग-अलग random initialization के साथ objective function को optimize करने वाले approaches का अध्ययन करता है
Part IV–VI: error analysis और PDE applications
-
Part IV: generalization error
- डीप लर्निंग का गणितीय विश्लेषण केवल ANN की approximation क्षमता और optimization methods की error estimation तक सीमित नहीं है
- जब learning problem के probability distribution तक स्पष्ट पहुँच नहीं होती और finite realizations तथा data के ज़रिए approximation किया जाता है, तब generalization error का estimation आवश्यक हो जाता है
- Chapter 12 stochastic generalization error estimates की समीक्षा करता है
- Chapter 13 strong Lp-प्रकार generalization error estimates को लेता है
-
Part V: कुल error analysis
- यह उदाहरणों के माध्यम से दिखाता है कि Part II के approximation error, Part III के optimization error, और Part IV के generalization error estimates को कैसे जोड़ा जा सकता है
- उदाहरण कई independent random initializations का उपयोग करने वाले SGD-प्रकार optimization methods पर आधारित ANN training का है
- Chapter 14 supervised learning problems के लिए उपयुक्त कुल error decomposition प्रस्तुत करता है
- Chapter 15 Parts II, III, IV के कुछ परिणामों को साथ लेकर एक उदाहरणात्मक कुल error analysis स्थापित करता है
-
Part VI: PDE के लिए डीप लर्निंग
- डीप लर्निंग methods का उपयोग केवल data-driven learning problems में ही नहीं, बल्कि partial differential equations(PDE) को लगभग हल करने में भी होता है
- Part VI PDE के लिए 3 लोकप्रिय डीप लर्निंग methods की समीक्षा और इम्प्लीमेंटेशन करता है
- Chapter 16 physics-informed neural networks(PINNs) और deep Galerkin methods(DGMs) को लेता है
- Chapter 17 deep Kolmogorov methods(DKMs) को लेता है
कोड और सामग्री तक पहुँचने का तरीका
- पुस्तक में कई Python source code शामिल हैं
- source code खुले GitHub repository introdeeplearning/book से डाउनलोड किए जा सकते हैं
- arXiv पेज पर भी “Other formats” दबाने के बाद “Download source” चुनकर source code प्राप्त किया जा सकता है
- हर source listing के caption में संबंधित source file name दिया गया है, जिससे पुस्तक के सूत्रों, उदाहरणों और code को साथ-साथ समझना आसान हो जाता है
1 टिप्पणियां
Hacker News टिप्पणियाँ
यह स्टैंडर्ड मशीन लर्निंग techniques का एक अच्छा संकलन लगता है, जिसमें काफ़ी एकरूप mathematical notation और बहुत सारे proofs हैं, लेकिन 600 पन्नों की होने के कारण यह सचमुच एक बहुत बड़ा काम है
फिर भी, ऐसा लगता है कि इसमें उन हिस्सों पर ज़्यादा ज़ोर है जिन्हें formalize करना आसान है, बजाय उन हिस्सों के जो समझने पर अधिक रोचक लगें
उदाहरण के लिए, SGD वाला अध्याय शायद इसलिए चुना गया है क्योंकि optimization वह क्षेत्र है जहाँ mathematicians मशीन लर्निंग में वास्तव में प्रभावशाली योगदान दे सकते हैं, लेकिन ज़्यादातर proofs bias-variance decomposition या Jensen inequality जैसी बुनियादी बातों पर हैं, और convergence से जुड़े रोचक theorems बस literature का हवाला देते हैं, पहले के lemmas से जुड़ते नहीं हैं, जबकि ADAM जैसी वास्तव में रोचक methods पर लगभग कोई proof या theory नहीं है
इस अध्याय को पढ़ने के बाद आधुनिक SGD methods और उनके विकास की प्रक्रिया तो अच्छी तरह समझ आ सकती है, लेकिन ये methods क्यों काम करती हैं, यह numerical experiments से मिली intuition से आगे समझ पाना मुश्किल लगता है
ऐसे में, independent random variables के लिए E(XY)=E(X)E(Y) जैसी बुनियादी बातों को बार-बार prove करने के बजाय, पहले से मौजूद ADAM convergence proofs पर जगह खर्च करना अधिक उपयोगी होता
ANN वाला अध्याय भी बुनियादी और कम रोचक सामग्री को लंबाई से prove करने से भरा लगा, और physics-informed neural networks पर paper अच्छा है, लेकिन उसमें भी कुछ ऐसा ही मुद्दा है
मशीन लर्निंग methods को अधिक rigorous और एकरूप ढंग से समझाने की दिशा अपने-आप में अच्छी है, लेकिन क्या शामिल करना है और क्या छोड़ना है, इसकी रेखा जिस तरह खींची गई है, उस पर सवाल उठता है
ADAM का convergence proof भी यह नहीं बताता कि ADAM अक्सर दूसरी methods से बेहतर क्यों काम करता है
जिसे अभी कोई नहीं समझता, उसे न समझा पाने के लिए दोष देना मुश्किल है, लेकिन अगर theory वास्तव में महत्वपूर्ण चीज़ों की भविष्यवाणी ही नहीं कर सकती, तो theory-केंद्रित education का विचार ही कमज़ोर पड़ जाता है
जो लोग deep learning को गणितीय रूप से गहराई से देखना चाहते हैं, वे Francois Fleuret की किताब https://fleuret.org/francois/lbdl.html भी देख सकते हैं
PDF मुफ़्त है, और printed copy काफ़ी प्यारी है
जब भी कोशिश करता हूँ, duplex printer में हर दूसरे पन्ने पर ऊपर-नीचे उलटने की समस्या आ जाती है
सोचता हूँ कि क्या लोग सच में ऐसी किताबें शुरू से अंत तक पूरी पढ़ते हैं
मैं Bishop की PRML देख रहा हूँ, और किताब को ठीक से खत्म करने और सारे exercises हल करने में बहुत समय लग रहा है
मैंने एक ब्लॉग पोस्ट देखी थी जिसमें किसी ने यही किया था, और उसे 1500 घंटे से ज़्यादा लगे थे
मेरे master's program में किसी ने भी ऐसी किताब पूरी नहीं की; बस classes लीं और बाकी ज़रूरत की चीज़ें Google कर लीं
जिनकी programming knowledge गणित से ज़्यादा गहरी है, उनके नज़रिये से यहाँ की mathematical notation को समझना code से भी कठिन है
यहाँ तक कि किसी अनजानी programming language में लिखे code से भी ज़्यादा कठिन लगता है
जिन लोगों की math background ज़्यादा मज़बूत है, क्या उन्हें ऐसे गणितीय expressions source code से अधिक आसानी से समझ आते हैं?
मैंने concepts को जितना संभव हो सके उतना सटीक गणितीय रूप में पेश करने की कोशिश की, लेकिन अंततः इस किताब जैसी भारी notation से बचा और छात्रों को industry में काम आने लायक बनाने के लिए बहुत-सा math हटा दिया; असल classes में formulas से कहीं ज़्यादा code था
हर चीज़ को पूरी तरह सटीक लिखने की कोशिश करो तो बहुत जल्दी सब कुछ बेतरतीब हो जाता है
math में नए concepts के लिए अच्छी notation ढूँढना बहुत कठिन है, और Einstein notation, Feynman diagrams, या matrix notation जैसी चीज़ें, जिन्हें बाद में सबने स्पष्ट माना, शुरुआत में अक्सर बहुत प्रतिभाशाली लोगों ने गढ़ी थीं
A क्षेत्र को B क्षेत्र की notation में लिख देने भर से वह उपयोगी नहीं हो जाता, और quantum mechanics को C* algebras जैसी mathematics में translate करना भी बहुत बड़ा काम था, और आज भी कुछ हद तक खुला research area है
इसलिए इस किताब को लिखने में मेहनत बहुत बड़ी रही होगी, लेकिन वास्तविक उपयोगिता कम होने की संभावना ज़्यादा लगती है
जो लोग ऐसे equations को आराम से पढ़ सकते हैं, उन्हें आम तौर पर उन equations की ज़रूरत नहीं होती; उदाहरण के लिए, अगर कोई affine transformations जानता है, तो उसे 4-dimensional tensor के ijkl indices सब खोलकर देखने की शायद ही ज़रूरत पड़े
और जो नहीं जानते, वे डरकर पीछे हट सकते हैं
इसका एक कारण यह है कि यह handwriting के लिए optimized है
program code को हाथ से लिखना बहुत उबाऊ होता है, इसलिए समझ आता है कि गणितीय notation ऐसी क्यों बनी
और इसके अलावा, mathematical notation के लिए कोई एक “उसका code” जैसी चीज़ होती भी नहीं
mathematical notation का उद्देश्य mathematical facts या propositions को व्यक्त करना है, जो deep learning algorithms को implement करने वाले code के उद्देश्य से अलग है
इसलिए विषय और समझाने का तरीका ऐसे लोगों की ओर झुका हुआ है
उदाहरण के लिए, वास्तविक deep learning में gradient-based optimization algorithms की existence और uniqueness conditions की चिंता करते मैंने लगभग कभी नहीं देखा, लेकिन ऐसे results वही विषय हैं जिनमें ये लोग रुचि लेकर papers लिखते हैं
शीर्षक से ही साफ़ है कि यह इस क्षेत्र की theoretical foundations पर किताब है, इसलिए यह तरीका अपने-आप में चौंकाने वाला नहीं है
ऐसी किताबें आम तौर पर शुरू से अंत तक नहीं पढ़ी जातीं; लोग अपने research से जुड़ी techniques वाले कुछ chapters ही गहराई से पढ़ते हैं
मैंने भी research के दौरान ऐसा ही एक लंबा-चौड़ा paper collection लिखा था, लेकिन उसमें मेरी असली रुचि की चीज़ लगभग 20~30 पन्नों की थी
rigor और सामग्री की मात्रा, दोनों ही अर्थों में, यह मेरे स्वाद से बहुत ज़्यादा verbose है
उदाहरण के लिए, इसमें Gronwall inequality को lemma के रूप में रखकर prove किया गया है; इस्तेमाल किया गया version सामान्य से थोड़ा अधिक general ज़रूर है, लेकिन Gronwall inequality ordinary differential equations के analysis का बहुत standard tool है, और मेरे पास जो rigorous control theory की किताबें हैं, वे भी बिखराव से बचने के लिए proof छोड़कर सिर्फ references देती हैं
proof के standards जितने ऊँचे हों और assumptions जितनी कम रखनी हों, उतनी ही ऐसी verbosity पैदा होती है
“students और scientists” जैसा target audience आख़िर ठीक-ठीक कौन है, यह सोचने वाली बात है
chapter 1 के शुरुआती हिस्से से ही subscript के भीतर subscript, superscript के भीतर subscript वाले sums, और functions की विशाल composition chains आ जाती हैं
आगे बढ़ने पर subscript की गहराई 4 स्तर तक पहुँच जाती है, कम-से-कम 3 नए infix operators बना दिए जाते हैं, और तीन अलग alphabets से 30 नए symbols define कर दिए जाते हैं, जबकि अभी 600 पन्नों में 100 पन्ने भी पूरे नहीं हुए हैं
समझ नहीं आता यह किसके लिए बनाया गया है कि कोई इसे follow करे और आत्मसात करे
मैंने deep learning को गणितीय नज़रिए से समझाने की कोशिश करने वाली कई किताबें देखी हैं, लेकिन यह हमेशा चौंकाता है
अभी deep learning साफ़ तौर पर एक अनुभवजन्य विज्ञान है, और मेरे हिसाब से ऐसा बहुत ज़्यादा सैद्धांतिक काम नहीं है जिसका असर इतना बड़ा हो कि उसे किताब में रखा जाए
उन किताबों में भी यह किताब काफ़ी हद तक सबसे ख़राब के करीब लगती है
यह अतिरिक्त समझ लगभग नहीं देती, और deep learning से सिर्फ़ ढीले तौर पर जुड़ी सहायक प्रमेयों को सिद्ध करने में काफ़ी जगह खर्च करती है, जबकि कोड का बड़ा हिस्सा ऐसा graph बनाने वाला code है जिसे शामिल करने की वजह समझ नहीं आती
मुझे लगता है कि इस किताब का बड़ा हिस्सा बहुत कम लोग पढ़ेंगे
फिर भी मुझे लगता है कि अब भी सबसे अच्छी पाठ्यपुस्तकें Goodfellow आदि की Deep Learning और अधिक आधुनिक Understanding Deep Learning(https://udlbook.github.io/udlbook/) हैं
भले ही deep learning की अग्रिम पंक्ति बहुत अनुभवजन्य हो, फिर भी सिर्फ़ कौन-सी तकनीक काम करती है यह नहीं, बल्कि यह क्यों काम करती है इसे समझने की दिलचस्प research भी है
यह कहना कि proofs समझ हासिल करने का अच्छा तरीका नहीं हैं, ठीक नहीं है
यह सबके लिए अच्छा तरीका नहीं है, लेकिन “x के लिए गणितीय परिचय” शीर्षक वाली किताब स्वाभाविक रूप से कुछ हद तक गणितीय प्रशिक्षण वाले लोगों के लिए होती है, और ऐसे पाठकों के लिए सहायक प्रमेय और उनके proofs समझ बनाने का स्वाभाविक तरीका हैं
गणित सिर्फ़ proofs नहीं, संचार का एक तरीका भी है
neural network कैसे काम करते हैं, इसे समझाने के तरीकों में चित्र, code, शब्द, और काफ़ी सघन गणितीय notation सब शामिल हैं
theory से intuition बनाने के बजाय, पहले intuition पाना और फिर technical हिस्सों को समझना आम तौर पर आसान होता है
यह सटीक विज्ञानों, खासकर गणित, में अक्सर सही बैठता है, और इसी वजह से examples मदद करते हैं
क्या deep learning के अनुभवजन्य विज्ञान होने की वजह पूरी तरह गणित से डर है, यह जानने की जिज्ञासा है
यह आधुनिक physics जितना समृद्ध क्षेत्र है, लेकिन अजीब तरह से ज़्यादातर practitioners अब भी इसे frontier era की तरह देखना चाहते हैं
बहुत से deep learning researchers ऐसे हैं जिनका झुकाव गणित की ओर बहुत मज़बूत है
deep learning के अनुभवजन्य विज्ञान होने की वजह यह है कि हमारे पास मौजूद गणितीय tools इतने पर्याप्त नहीं हैं कि देखी जाने वाली घटनाओं को एक एकीकृत theory से समझा और predict किया जा सके
किसी क्षेत्र का अनुभवजन्य विज्ञान होना यह नहीं बताता कि वह “frontier era” में है
deep learning models दोहराए जा सकने वाले नियंत्रित experiments का विषय बन सकते हैं, और इससे अधिकतर मामलों में क्या होगा इसकी समझ बेहतर की जा सकती है
अच्छे practitioners यह जानते हैं
linear algebra, calculus, और undergraduate स्तर की probability से आगे बहुत ज़्यादा गणित के बिना भी बहुत काम किया जा सकता है, और वह ज्ञान भी ज़्यादातर intuition देने और जिस समस्या पर काम हो रहा है उसे थोड़ा formalize करने में काम आता है
लगभग बिना गणित किए भी प्रभावशाली नतीजों सहित उपलब्धियाँ हासिल की जा सकती हैं
नतीजा यह है कि लोग नए problems को अनुभवजन्य रूप से बहुत तेज़ी से दिखाते और हल करते हैं, और यह गति इस बात की theoretical व्याख्या देने वाले results आने की गति से कहीं ज़्यादा है कि चीज़ें काम क्यों करती हैं
theory कठिन होने की कई वजहें हैं, लेकिन एक बड़ी वजह यह भी है कि deep learning की कई सफलताएँ statistics या optimal control जैसे मौजूदा ढाँचों में ठीक से फिट नहीं बैठतीं, इसलिए उन्हें समझाना मुश्किल है
क्या कोई वास्तव में इस गणित का इस्तेमाल करता है, यह जानने की जिज्ञासा है
मेरा अंदाज़ा लगभग नहीं की तरफ़ है, और उदारता से देखें तो यह deep learning researchers को बस यह भरोसा दिलाने वाली मानसिक सहारा जैसी चीज़ लगती है कि जो वे करना चाहते हैं वह असंभव नहीं है
अगर मैं ग़लत हूँ तो मानने में खुशी होगी
अच्छा model बनाने के लिए गणित ज़रूरी नहीं है, लेकिन model ग़लत क्यों है यह जानने के लिए गणित जानना ज़रूरी है
इसलिए गणित ज़रूरी है
गणित के बिना आप खुद को यह भरोसा दिलाने लगेंगे कि सिर्फ़ scale बढ़ाकर AGI तक पहुँचा जा सकता है
क्योंकि सब इस्तेमाल कर रहे हैं, आप हर जगह Transformer इस्तेमाल करेंगे, और activation functions के बीच उलझ जाएंगे
आप काम करने वाला model बना सकते हैं, लेकिन काम करने वाला model बनाना और यह अनुमान लगा पाना कि वह कहाँ fail करेगा तथा उसकी सीमाएँ समझना, दोनों बहुत अलग बातें हैं
लगता है बहुत से लोग सिर्फ़ test set के results देखकर उम्मीद करते हैं कि model overfit नहीं है
test set results से hyperparameters tune करने की बात तो छोड़ ही दें
ज़रा ऐसे computer science की कल्पना कीजिए जिसमें sorting algorithms, search algorithms जैसी correctness-proven और ज्ञात गुणों वाली theory ही न हो
यह गणित computer science theory जैसी ही भूमिका निभाता है
अगर आप सिर्फ़ Keras जैसी libraries में model fit कर रहे हैं, तो आप वास्तव में उस गणित का “इस्तेमाल” नहीं कर रहे
अगर dataset एक निश्चित आकार से छोटा है, problem एक निश्चित जटिलता से कम है, और model कई वर्षों से deploy किया गया है तथा उसके गुण अच्छी तरह अध्ययन किए जा चुके हैं, तो गणित को बस मोटे तौर पर जानकर भी बहुत काम किया जा सकता है
यह वैसा ही है जैसे Python या Java runtime अंदर से कैसे काम करता है यह जाने बिना भी पूरी तरह functional web app बना लेना
लेकिन अगर असली working principles नहीं जानते, तो library में पहले से शामिल न होने वाली situation मिलने पर आप काफ़ी बुरी तरह अटक जाते हैं
बुनियादी गणित न जानने पर क्या होता है, यह देखना हो तो गणित और statistics की बुनियाद से अनजान मौजूदा पीढ़ी के “data science” graduates को देख लीजिए
hiring से जुड़ी समस्याएँ भी बहुत हैं, लेकिन आखिर में उन्हें नौकरी न मिलने की वजह यह है कि उन्हें यह सीखने के लिए मजबूर ही नहीं किया गया, इसलिए वे वास्तव में नहीं जानते कि वे क्या कर रहे हैं
इसलिए इसका इस्तेमाल करने वाले लोग हैं
इस मामले में यह practitioners को अलग-अलग methods के बीच physical consistency की जाँच करने का तरीका देता है
तो फिर क्या यह वही चीज़ें नहीं हैं जिन्हें machine learning करने वाला व्यक्ति रोज़ इस्तेमाल करता है
क्या किताबों को, ख़ासकर अभी-अभी आई किताबों को, सीधे ArXiv पर डालना आम बात है, यह जानने की जिज्ञासा है
कम से कम गणित और computer science की पाठ्यपुस्तकों में यह समय-समय पर दिख जाता है