बैकप्रोपेगेशन हमें ग्रेडिएंट्स देता है - लेकिन किसके ग्रेडिएंट्स? बैकप्रोप चलने से पहले, हमें एक ऐसी संख्या चाहिए जो बताए कि मॉडल कितना गलत है। वह संख्या लॉस फंक्शन से आती है। एक बार ग्रेडिएंट्स मिल जाने पर, एक ऑप्टिमाइज़र तय करता है कि वेट्स को कैसे अपडेट करना है। मिलकर, ये सीखने का लूप बनाते हैं।
लॉस फंक्शन (जिसे कॉस्ट फंक्शन भी कहते हैं) मॉडल की प्रेडिक्शन और सही उत्तर लेता है, और "गलतता" मापने वाली एक संख्या लौटाता है। ट्रेनिंग का लक्ष्य इस संख्या को न्यूनतम करना है।
इसे गोल्फ के स्कोर की तरह सोचें - कम बेहतर है। 0 का लॉस मतलब एकदम सही प्रेडिक्शन।
जब निरंतर मान (घर की कीमतें, तापमान) की प्रेडिक्शन करनी हो, तो हम Mean Squared Error (MSE) उपयोग करते हैं:
MSE = (1/n) × Σ(predicted - actual)²
स्क्वेयर करना दो काम करता है: यह सभी त्रुटियों को पॉज़िटिव बनाता है, और बड़ी त्रुटियों को अनुपातहीन रूप से दंडित करता है। घर की कीमत में £100k की गलती का स्क्वेयर एरर £10k की गलती से 100× बुरा होता है।
MSE का इतिहास 1795 में Carl Friedrich Gauss तक जाता है - न्यूरल नेटवर्क से दो सदियों से भी पहले। उन्होंने इसका उपयोग क्षुद्रग्रह Ceres की कक्षा को ट्रैक करने के लिए किया था।
जब श्रेणियों की प्रेडिक्शन करनी हो (स्पैम या नहीं, बिल्ली बनाम कुत्ता), तो हम cross-entropy लॉस उपयोग करते हैं। यह मापता है कि मॉडल की प्रेडिक्टेड प्रोबेबिलिटीज़ सही लेबल से कितनी दूर हैं।
अगर सही उत्तर "बिल्ली" है और मॉडल 99% बिल्ली कहता है, तो लॉस बहुत कम है। अगर 10% बिल्ली कहता है, तो लॉस बहुत ज़्यादा है। Cross-entropy की एक उपयोगी विशेषता है: जब मॉडल आत्मविश्वास से गलत होता है तो यह अनंत रूप से नाराज़ हो जाता है, गलती सुधारने के लिए एक मज़बूत ग्रेडिएंट बनाता है।
Binary cross-entropy दो-क्लास समस्याओं के लिए है। Categorical cross-entropy प्रोबेबिलिटी डिस्ट्रीब्यूशन की तुलना करके कई क्लासेज़ को संभालता है।
MSE क्लासिफिकेशन कार्यों के लिए खराब विकल्प क्यों है?
Sign in to join the discussion
लॉस फंक्शन परिभाषित होने पर, हम लॉस लैंडस्केप की कल्पना कर सकते हैं - एक ऐसी सतह जहाँ हर बिंदु वेट्स के एक सेट को दर्शाता है और ऊँचाई लॉस है। ट्रेनिंग का मतलब है सबसे गहरी घाटी ढूँढना।
ग्रेडिएंट डिसेंट वह एल्गोरिदम है जो हमें वहाँ पहुँचाता है:
हर कदम का आकार लर्निंग रेट द्वारा नियंत्रित होता है - डीप लर्निंग में शायद सबसे महत्वपूर्ण हाइपरपैरामीटर।
कल्पना करें कि आप एक कोहरे वाले पहाड़ से नीचे उतर रहे हैं जहाँ आप केवल अपने पैरों के नीचे की ढलान महसूस कर सकते हैं। आप नीचे की ओर कदम बढ़ाते हैं, लेकिन पूरा लैंडस्केप नहीं देख सकते। आप एक छोटे गड्ढे में कैसे फँस सकते हैं जो सबसे गहरी घाटी नहीं है? यही लोकल मिनिमम की समस्या है।
हर अपडेट से पहले पूरे डेटासेट का उपयोग करके ग्रेडिएंट की गणना करता है। सटीक लेकिन बड़े डेटासेट के लिए बहुत धीमा - कल्पना करें कि एक स्पेलिंग की गलती सुधारने से पहले लाइब्रेरी की हर किताब दोबारा पढ़ें।
हर एक उदाहरण के बाद वेट्स अपडेट करता है। तेज़ लेकिन शोरगुल वाला - रास्ता ज़िगज़ैग चलता है। शोर वास्तव में लोकल मिनिमा से बाहर निकलने में मदद कर सकता है, जो एक आश्चर्यजनक लाभ है।
व्यावहारिक स्वीट स्पॉट। एक छोटे बैच (आमतौर पर 32–512 उदाहरण) पर ग्रेडिएंट्स की गणना करता है। गति और स्थिरता के बीच संतुलन बनाता है, और लगभग सभी आधुनिक ट्रेनिंग में यही उपयोग होता है।
साधारण SGD की सीमाएँ हैं। शोधकर्ताओं ने ऐसे स्मार्ट ऑप्टिमाइज़र विकसित किए हैं जो चलते-चलते अनुकूलित होते हैं।
एक भारी गेंद की तरह जो ढलान से नीचे लुढ़कती है, momentum एक सुसंगत दिशा में वेग संचित करता है और दोलन को कम करता है। अगर ग्रेडिएंट एक ही दिशा में इशारा करता रहता है, तो momentum तेज़ करता है। अगर दिशा बदलती रहती है, तो momentum इसे सुचारू करता है।
प्रति पैरामीटर लर्निंग रेट को अनुकूलित करता है। बार-बार अपडेट होने वाले वेट्स को छोटे कदम मिलते हैं; कम अपडेट होने वाले वेट्स को बड़े कदम मिलते हैं। विरल डेटा (जैसे टेक्स्ट) के लिए बढ़िया, लेकिन समय के साथ लर्निंग रेट शून्य तक सिकुड़ सकता है।
Momentum और प्रति-पैरामीटर अनुकूली दरों को जोड़ता है। यह ग्रेडिएंट (पहला मोमेंट) और स्क्वेयर्ड ग्रेडिएंट (दूसरा मोमेंट) दोनों के रनिंग एवरेज बनाए रखता है। Adam आज अधिकांश प्रैक्टिशनर्स के लिए डिफ़ॉल्ट चुनाव है।
बेसिक SGD की तुलना में Adam का क्या फ़ायदा है?
लर्निंग रेट को स्थिर रखने के बजाय, आधुनिक ट्रेनिंग अक्सर इसे शेड्यूल करती है:
अंतर्ज्ञान: शुरू में व्यापक रूप से एक्सप्लोर करने के लिए बड़े कदम उठाएँ, फिर बाद में फ़ाइन-ट्यून के लिए छोटे कदम।
कभी-कभी ग्रेडिएंट्स विस्फोट करते हैं (जैसा बैकप्रोपेगेशन पाठ में देखा)। ग्रेडिएंट क्लिपिंग अपडेट स्टेप से पहले ग्रेडिएंट के परिमाण को सीमित करता है। अगर ग्रेडिएंट एक सीमा से अधिक है, तो इसे आनुपातिक रूप से कम किया जाता है। RNN और Transformer ट्रेनिंग में यह मानक प्रथा है।
ग्रेडिएंट क्लिपिंग किसे रोकता है?
Adam ऑप्टिमाइज़र का पेपर (Kingma & Ba, 2014) के 150,000 से अधिक साइटेशन हैं, जो इसे कंप्यूटर साइंस में सबसे अधिक उद्धृत पेपरों में से एक बनाता है।
अगर आप एक मॉडल ट्रेन कर रहे थे और कुछ एपॉक्स के बाद लॉस कम होना बंद हो गया, तो आप सबसे पहले क्या जाँचेंगे - लर्निंग रेट, लॉस फंक्शन, या डेटा? क्यों?