math - तंत्रिका नेटवर्क बैकप्रोपैगेशन में पूर्वाग्रह को कैसे अपडेट करें?




machine-learning artificial-intelligence (2)

प्रत्येक व्यक्तिगत वजन और पूर्वाग्रह को बदलने वाली राशि प्रत्येक व्यक्तिगत वजन और प्रत्येक व्यक्तिगत पूर्वाग्रह के संबंध में आपके लागत कार्य का आंशिक व्युत्पन्न होगा।

∂C/∂(index of bias in network)

चूंकि आपका लागत कार्य शायद व्यक्तिगत वजन और मूल्यों पर स्पष्ट रूप से निर्भर नहीं होता है (उदाहरण के लिए लागत बराबर हो सकती है (नेटवर्क आउटपुट - अपेक्षित आउटपुट) ^ 2, उदाहरण के लिए), आपको प्रत्येक वजन और पूर्वाग्रह के आंशिक डेरिवेटिव को कुछ करने की आवश्यकता होगी पता है, यानी न्यूरॉन्स के सक्रियण मान (आउटपुट)। ऐसा करने के लिए यहां एक महान मार्गदर्शिका दी गई है:

https://medium.com/@erikhallstrm/backpropagation-from-the-beginning-77356edf427d

यह गाइड बताता है कि इन चीजों को स्पष्ट रूप से कैसे करें, लेकिन कभी-कभी स्पष्टीकरण की कमी हो सकती है। मैंने इस पुस्तक के अध्याय 1 और 2 को पढ़ने में बहुत मददगार पाया क्योंकि मैंने उपरोक्त मार्गदर्शिका को पढ़ा है:

http://neuralnetworksanddeeplearning.com/chap1.html (आपके प्रश्न के उत्तर के लिए आवश्यक पृष्ठभूमि प्रदान करता है)

http://neuralnetworksanddeeplearning.com/chap2.html (आपके प्रश्न का उत्तर दें)

असल में, पूर्वाग्रहों को उसी तरह अद्यतन किया जाता है जैसे वजन अपडेट होते हैं: एक परिवर्तन एक बहु-आयामी बिंदु पर लागत फ़ंक्शन के ढाल के आधार पर निर्धारित किया जाता है।

उस समस्या के बारे में सोचें जो आपका नेटवर्क बहु-आयामी पहाड़ियों और घाटियों (ग्रेडियंट्स) के परिदृश्य के रूप में हल करने की कोशिश कर रहा है। यह परिदृश्य एक ग्राफिकल प्रतिनिधित्व है कि वजन घटाने और पूर्वाग्रहों के साथ आपकी लागत में परिवर्तन कैसे होता है। एक तंत्रिका नेटवर्क का लक्ष्य इस परिदृश्य में सबसे निचले बिंदु तक पहुंचना है, जिससे छोटी लागत और कम से कम त्रुटि मिल रही है। यदि आप अपने नेटवर्क को इन ग्रेडियंट्स (यानी ग्रेडियेंट डेसेंट) के नीचे पहुंचने की कोशिश कर रहे यात्री के रूप में कल्पना करते हैं, तो उस राशि को आप प्रत्येक वजन (और पूर्वाग्रह) को बदल देंगे, जो कि इनलाइन (ढांचे के ढाल) की ढलान से संबंधित है। कि यात्री वर्तमान में चढ़ रहा है। यात्री का सटीक स्थान बहु-आयामी समन्वय बिंदु (भार 1, भार 2, वजन 3, ... weight_n) द्वारा दिया जाता है, जहां पूर्वाग्रह को किसी अन्य प्रकार के वजन के रूप में माना जा सकता है। नेटवर्क के वजन / पूर्वाग्रह के बारे में सोचते हुए नेटवर्क के लागत समारोह के चर के रूप में यह स्पष्ट करता है कि ∂C / ∂ (नेटवर्क में पूर्वाग्रह की अनुक्रमणिका) का उपयोग किया जाना चाहिए।

क्या कोई मुझे बता सकता है कि बैकप्रोपैगेशन में पूर्वाग्रह को कैसे अपडेट किया जाए?

मैंने कुछ किताबें पढ़ी हैं, लेकिन पूर्वाग्रह अद्यतन नहीं मिल रहा है!

मैं समझता हूं कि पूर्वाग्रह इसके साथ जुड़े वजन के साथ 1 का एक अतिरिक्त इनपुट है (प्रत्येक न्यूरॉन के लिए)। एक सूत्र होना चाहिए।

धन्यवाद,

@msw

सबसे दिलचस्प। धन्यवाद, मुझे लगता है कि दो अच्छे अंक हैं: 1. "बहुविकल्पीय अनुमानों" की संपत्ति "बहुविकल्पीय अनुमान" संपत्ति का उपयोग आमतौर पर उपयोग किए जाने वाले छिपे हुए परत सक्रियण कार्यों के साथ नहीं होता है यदि आप पूर्वाग्रह शर्तों को छोड़ देते हैं। लेकिन हॉर्निक (1 99 3) से पता चलता है कि पक्षपात के बिना सार्वभौमिक अनुमान संपत्ति के लिए पर्याप्त शर्त यह है कि सक्रियण समारोह का कोई व्युत्पन्न उत्पत्ति पर गायब हो जाता है, जिसका अर्थ है कि सामान्य सिग्मोइड सक्रियण कार्यों के साथ, एक प्रशिक्षित पूर्वाग्रह के बजाय एक निश्चित गैरजनो पूर्वाग्रह शब्द का उपयोग किया जा सकता है। " 2. पूर्वाग्रह शब्दों को अन्य वजनों की तरह ही सीखा जा सकता है। "तो मैं या तो 'स्थिर वजन' में जोड़ूंगा या इस वजन को सभी अन्य लोगों की तरह ढाल वंश का उपयोग कर प्रशिक्षित करूंगा।

क्या मैं सही समझ रहा हूँ?


Rojas 1996, अध्याय 7 के संकेत के बाद, बैकप्रोपैगेशन त्रुटि समारोह E (उर्फ लागत, उर्फ ​​नुकसान) के आंशिक डेरिवेटिव की गणना करता है

∂E/∂w[i,j] = delta[j] * o[i]

जहां w[i,j] न्यूरॉन्स i और j बीच कनेक्शन का भार है, i नेटवर्क की तुलना में एक परत अधिक है, और o[i] (आउटपुट) (आउटपुट) के मामले में " इनपुट परत ", यह केवल प्रशिक्षण के नमूने में विशेषता के मूल्य के मूल्य है)। delta को किसी भी पाठ्यपुस्तक में कैसे निर्धारित किया जाता है और सक्रियण फ़ंक्शन पर निर्भर करता है, इसलिए मैं इसे दोहराना नहीं चाहूंगा।

इन मानों का उपयोग वजन अपडेट में किया जा सकता है, उदाहरण के लिए

// update rule for vanilla online gradient descent
w[i,j] -= gamma * o[i] * delta[j]

जहां gamma सीखने की दर है।

पूर्वाग्रह भार के लिए नियम बहुत समान है, सिवाय इसके कि पिछले परत से कोई इनपुट नहीं है। इसके बजाए, पूर्वाग्रह (अवधारणात्मक रूप से) 1 के एक निश्चित सक्रियण के साथ एक न्यूरॉन से इनपुट के कारण होता है। इसलिए, पूर्वाग्रह भार के लिए अद्यतन नियम है

bias[j] -= gamma_bias * 1 * delta[j]

जहां bias[j] न्यूरॉन j पर पूर्वाग्रह का भार है, 1 के साथ गुणा स्पष्ट रूप से छोड़ा जा सकता है, और gamma_bias gamma या एक अलग मूल्य पर सेट किया जा सकता है। अगर मुझे सही याद है, तो कम मूल्यों को प्राथमिकता दी जाती है, हालांकि मुझे इसके सैद्धांतिक औचित्य के बारे में निश्चित नहीं है।





neural-network