धीरे-धीरे वंश आपके द्वारा सुझाए गए तरीके से बहुत काम नहीं करता है लेकिन एक समान समस्या हो सकती है।
हम बैच से औसत नुकसान की गणना नहीं करते हैं, हम नुकसान फ़ंक्शन के औसत ग्रेडिएंट्स की गणना करते हैं। ग्रेडिएंट्स वजन के संबंध में नुकसान के व्युत्पन्न हैं और तंत्रिका नेटवर्क में एक वजन के लिए ढाल उस विशिष्ट उदाहरण के इनपुट पर निर्भर करता है और यह मॉडल में कई अन्य भारों पर भी निर्भर करता है।
यदि आपके मॉडल में 5 वज़न है और आपके पास 2 के आकार का मिनी-बैच है तो आपको यह मिल सकता है:
उदाहरण 1. हानि = 2,ग्रेडिएंट = ( 1.5 , - 2.0 , 1.1 , 0.4 , - 0.9 )
उदाहरण 2. हानि = 3,ग्रेडिएंट = ( 1.2 , 2.3 , - 1.1 , - 0.8 , - 0.7 )
इस मिनी-बैच में ग्रेडिएंट्स की औसत गणना की जाती है, वे हैं( 1.35 , 0.15 , 0 , - 0.2 , - 0.8 )
कई उदाहरणों पर औसत का लाभ यह है कि ग्रेडिएंट में भिन्नता कम है, इसलिए शिक्षण अधिक सुसंगत है और एक उदाहरण की बारीकियों पर कम निर्भर है। ध्यान दें कि तीसरे वजन के लिए औसत ढाल , यह भार इस वजन अद्यतन को नहीं बदलेगा, लेकिन यह संभवतः अगले उदाहरणों के लिए गैर-शून्य होगा जो विभिन्न भारों के साथ गणना करते हैं।0
टिप्पणियों के जवाब में संपादित करें:
ग्रेडियरों के औसत से ऊपर मेरे उदाहरण में गणना की गई है। के एक मिनी-बैच आकार के लिए जहां हम प्रत्येक उदाहरण के लिए नुकसान गणना करते हैं, जिसका उद्देश्य वजन संबंध में नुकसान के औसत ग्रेडिएंट को प्राप्त करना है ।L i w jकएलमैंwजे
जिस तरह से मैंने इसे अपने उदाहरण में लिखा है मैंने प्रत्येक ग्रेडिएंट को औसतन लिखा है:∂एल∂wजे= 1कΣकमैं = १∂एलमैं∂wजे
टिप्पणियों में आपके द्वारा लिंक किया गया ट्यूटोरियल कोड औसत हानि को कम करने के लिए टेन्सरफ्लो का उपयोग करता है।
Tensorflow का उद्देश्य1कΣकमैं = १एलमैं
इसे कम करने के लिए यह प्रत्येक वजन के संबंध में औसत हानि के ग्रेडिएंट्स की गणना करता है और वजन को अद्यतन करने के लिए ढाल-वंश का उपयोग करता है:
∂एल∂wजे= ∂∂wजे1कΣकमैं = १एलमैं
अंतर को योग के अंदर लाया जा सकता है, इसलिए यह मेरे उदाहरण में दृष्टिकोण से अभिव्यक्ति के समान है।
∂∂wजे1कΣकमैं =१एलमैं=1कΣकमैं = १∂एलमैं∂wजे