Backpropagation तकनीकों के बीच अंतर


17

बस मनोरंजन के लिए, मैं एक तंत्रिका नेटवर्क विकसित करने की कोशिश कर रहा हूं।

अब, बैकप्रोपेगेशन के लिए मैंने दो तकनीकों को देखा।

पहले एक का उपयोग यहां और कई अन्य स्थानों पर भी किया जाता है।

यह क्या करता है:

  • यह प्रत्येक आउटपुट न्यूरॉन के लिए त्रुटि की गणना करता है।
  • यह इसे नेटवर्क में बैकप्रॉपैगेट करता है (प्रत्येक आंतरिक न्यूरॉन के लिए एक त्रुटि की गणना)।
  • यह सूत्र के साथ भार को अद्यतन करता है: (जहां वजन में परिवर्तन, सीखने की गति, अन्तर्ग्रथन से इनपुट प्राप्त करने और अन्तर्ग्रथन पर भेजे गए आउटपुट होने में न्यूरॉन की त्रुटि )।
  • यह डाटासेट के प्रत्येक प्रवेश के लिए दोहराता है, जितनी बार आवश्यक हो।

हालाँकि, इस ट्यूटोरियल में प्रस्तावित न्यूरल नेटवर्क (GitHub पर भी उपलब्ध है) एक अलग तकनीक का उपयोग करता है:

  • यह एक त्रुटि फ़ंक्शन का उपयोग करता है (अन्य विधि में एक त्रुटि फ़ंक्शन है, लेकिन यह प्रशिक्षण के लिए इसका उपयोग नहीं करता है)।
  • इसका एक और फ़ंक्शन है जो वज़न से शुरू होने वाली अंतिम त्रुटि की गणना कर सकता है।
  • यह उस कार्य को कम करता है (ग्रेडिएंट डिसेंट के माध्यम से)।

अब, किस विधि का उपयोग किया जाना चाहिए?

मुझे लगता है कि पहला सबसे अधिक इस्तेमाल किया जाने वाला एक है (क्योंकि मैंने इसका उपयोग करते हुए विभिन्न उदाहरण देखे), लेकिन क्या यह भी काम करता है?

विशेष रूप से, मुझे नहीं पता:

  • क्या यह स्थानीय न्यूनतम के अधीन नहीं है (क्योंकि यह द्विघात कार्यों का उपयोग नहीं करता है)?
  • चूंकि प्रत्येक वजन की भिन्नता उसके आउटपुट न्यूरॉन के आउटपुट मूल्य से प्रभावित होती है, इसलिए डेटासेट की प्रविष्टियां नहीं होती हैं जो कि न्यूरॉन्स में उच्च मूल्यों का उत्पादन करने के लिए होती हैं (न केवल आउटपुट वाले) अन्य प्रविष्टियों की तुलना में अधिक भार को प्रभावित करते हैं?

अब, मैं पहली तकनीक को प्राथमिकता देता हूं, क्योंकि मुझे इसे लागू करने में सरल और सोचने में आसान लगता है।

हालांकि, अगर यह मेरे द्वारा बताई गई समस्याएं हैं (जो मुझे आशा है कि यह नहीं है), तो क्या इसका दूसरा तरीका इस्तेमाल करने का कोई वास्तविक कारण है?

जवाबों:


6

दो उदाहरण अनिवार्य रूप से एक ही ऑपरेशन प्रस्तुत करते हैं:

  • दोनों ही मामलों में नेटवर्क को आउटपुट पर गणना किए गए बैकप्रॉपैगेटेड स्क्वेर एरर का उपयोग करके ग्रेडिएंट डिसेंट के साथ प्रशिक्षित किया जाता है।
  • दोनों उदाहरण नोड सक्रियण के लिए लॉजिस्टिक फ़ंक्शन का उपयोग करते हैं (लॉजिस्टिक फ़ंक्शन sका s(1 - s)व्युत्पन्न है । यह व्युत्पन्न स्पष्ट रूप से गणना करने के लिए बहुत आसान है, और यह इस कारण का हिस्सा है कि क्यों इसे व्यापक रूप से उपयोग किया गया था (इन दिनों ReLU सक्रियण फ़ंक्शन अधिक लोकप्रिय है) , विशेष रूप से दृढ़ नेटवर्क के साथ)।
  • पहली विधि भी गति का उपयोग करती है

मुख्य अंतर जो मैं देख सकता हूं, वह यह है कि पहले मामले में बैकप्रॉपैजेशन पुनरावृत्त है, जबकि दूसरे उदाहरण में यह बैच मोड में किया जाता है।

वेल्च लैब्स द्वारा श्रृंखला में अंतिम वीडियो एक अर्ध-न्यूटोनियन पद्धति का परिचय देता है जो हेसियन (वजन के संबंध में त्रुटि के दूसरे क्रम के डेरिवेटिव का मैट्रिक्स) की गणना करके लागत फ़ंक्शन का न्यूनतम पता लगाने का लाभ प्रदान करता है । हालांकि, यह सेब और संतरे की तुलना करने जैसा लगता है - वेनिला ढाल वंश दूसरे क्रम की जानकारी का उपयोग नहीं करता है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.