2012-10-27 12 views
10

मैंने हाल ही में Coursera पर प्रोफेसर एनजी के मशीन लर्निंग कोर्स को पूरा कर लिया है, और जब मैं पूरे कोर्स से प्यार करता था, तो मैंने तंत्रिका नेटवर्क प्रशिक्षण के लिए बैकप्रोपैगेशन एल्गोरिदम को कभी भी समझने में कामयाब नहीं रहा।क्या कोई मुझे बैकप्रोपैगेशन एल्गोरिदम समझा सकता है?

इसे समझने में मेरी समस्या यह है कि वह केवल पूरी तरह से जुड़े फ़ीड-फ़ॉरवर्ड नेटवर्क के लिए इसे सदिशित कार्यान्वयन सिखाता है। मेरा रैखिक बीजगणित जंगली है, और मुझे लगता है कि अगर कोई मुझे सामान्य उद्देश्य एल्गोरिदम सिखा सकता है तो यह समझना बहुत आसान होगा। शायद एक नोड उन्मुख फैशन में।

मैं कोशिश करता हूँ और वाक्यांश समस्या बस, लेकिन मैं गलत समझ कैसे काम करता है backprop इसलिए यदि इस मतलब नहीं है, यह उपेक्षा हो सकता है,:

किसी भी नोड एन के लिए, इनपुट भार दिया/मान, आउटपुट वजन/मान, और एन नोड्स के सभी नोड्स की त्रुटि/लागत, मैं एन की "लागत" की गणना कैसे करूं और इनपुट वजन को अपडेट करने के लिए इसका उपयोग कैसे करूं?

+0

यह एक बहुत व्यापक सवाल है। आप http://dsp.stackexchange.com पर बेहतर भाग्य प्राप्त कर सकते हैं। – mtrw

+6

आप चित्रों के साथ http://galaxy.agh.edu.pl/~vlsi/AI/backp_t_en/backprop.html –

+1

पर एक बहुत अच्छी स्पष्टीकरण पा सकते हैं यह एक महान स्पष्टीकरण मार्क है! मुझे यकीन नहीं है कि मैं अंतर बिट समझता हूं। क्या डीएफ (ई)/डी का अर्थ पूरे भारित योग (ई) के संबंध में व्युत्पन्न है या केवल उस कनेक्शन का इनपुट जो वजन है जिसे हम अपडेट करने का प्रयास कर रहे हैं? तो कहें कि नोड में रैखिक सक्रियण फ़ंक्शन है, डीएफ (ई)/डी हमेशा बराबर 1 (एफ (ई) = ई -> डीएफ (ई)/डी = 1) होगा? या यह हमेशा वज़न के बराबर होगा जो हम अपडेट कर रहे हैं (एफ (ई) = w1x1 + w2x2 -> डीएफ (ई)/डीएक्स 1 = डब्ल्यू 1) –

उत्तर

14

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

प्रत्येक नोड में पूर्वाग्रह मान होता है, θ। आप इसे एक आंतरिक, स्थिर 1.0 मूल्यवान इनपुट के लिए वजन के रूप में सोच सकते हैं।

सक्रियण भारित इनपुट और पूर्वाग्रह मान का सारांश है। चलिए जे के रूप में ब्याज के हमारे नोड को संदर्भित करते हैं, पिछली परत में नोड्स के मानों के साथ, और के परतों के साथ सफल परत में नोड्स। हमारे नोड j की सक्रियता तो है:

शुद्ध जे = Σ मैं (ओ मैं × डब्ल्यू ij) + θ जे

है यही कारण है कि, जे के लिए सक्रियण मूल्य नोड I से आउटपुट के उत्पादों का योग है और इसी वजन को जोड़ने वाले नोड I और j, साथ ही पूर्वाग्रह मान भी है।

च आमतौर पर अवग्रह समारोह है

जे = f (शुद्ध जे):

हमारे नोड j के उत्पादन में सक्रियण के हस्तांतरण समारोह है।

च (शुद्ध जे) = 1/(1 + ई -net जे)

अवग्रह समारोह एक आसान पहले व्युत्पन्न निर्दिष्ट करने के लिए है:

एफ '(नेट जे) = एफ (नेट जे) × (1।0 - च (शुद्ध जे))

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

अब तक, हम जानते हैं कि इनपुट मान कैसे प्राप्त करें, सक्रियण की गणना करें, आउटपुट की गणना करें, और सक्रियण के पहले व्युत्पन्न की गणना करें। अब हमें त्रुटियों और वजन समायोजन से निपटने की जरूरत है।

बीपी में नोड त्रुटि अनुमान के लिए उपयोग किया जाने वाला मान δ कहा जाता है। नोड के लिए δ नोड के सक्रियण के पहले व्युत्पन्न और इसे प्राप्त होने वाली त्रुटि अवधि के आनुपातिक है। प्राप्त त्रुटि अवधि के लिए दो फॉर्मूलेशन हैं, आउटपुट नोड्स के लिए एक और छुपा नोड्स के लिए एक।

Generically,

δ = च '(शुद्ध) × (प्राप्त त्रुटि)

एक निर्गम नोड के लिए,

δ उत्पादन = च' (शुद्ध) × (टी - ओ)

जहां टी उस आउटपुट नोड पर अपेक्षित मूल्य है, और ओ उस आउटपुट नोड का वास्तविक आउटपुट मान है।

हमारे छिपा नोड जे के लिए, यह इस तरह है:

δ जे = च '(शुद्ध जे) Σ × कश्मीर कश्मीर × डब्ल्यू जेके)

हमारे नोड जे के लिए δ, जे δ, हमारे ट्रॅन के पहले व्युत्पन्न का उत्पाद है कार्यप्रणाली के समय को सुरक्षित कार्य अगली परत (आउटपुट के नजदीक) में डेल्टा के योग को जोड़ने वाले वजन के मूल्य के साथ प्रत्येक गुणा किया जाता है। हाथ में, हम गणना कर सकते हैं कि नोड्स की पिछली परत (इनपुट के करीब) पर जाने वाले वजन को कैसे समायोजित किया जाए।

DW ij = एल × ओ मैं × δ जे

यहाँ DW "वजन में परिवर्तन" का प्रतिनिधित्व करता है, तो क्या समीकरण कहते है कि से एक वजन में परिवर्तन हमारे नोड जे के लिए नोड मैं सीखने के पैरामीटर एल (आमतौर पर नेटवर्क में सभी नोड्स के लिए समान मूल्य) के उत्पाद के बराबर है, नोड i का आउटपुट मान, और हमारे नोड जे के लिए δ (त्रुटि शब्द)।

पूर्वाग्रह मान समायोजित करना वजन को समायोजित करने के समान है।

जे = × च एल (θ जे) × δ जे

dθ यहाँ "θ में परिवर्तन" का प्रतिनिधित्व करता है। हमें नोड से आउटपुट की तरह शब्द प्राप्त करने के लिए पूर्वाग्रह मान θ j पर स्थानांतरण फ़ंक्शन को लागू करना होगा। अन्यथा, यह अन्य समीकरण की तरह दिखता है।

मुझे ध्यान रखना चाहिए कि वजन परिवर्तन की गणना नेटवर्क-व्यापी की जानी चाहिए, और फिर उन सभी की गणना के बाद परिवर्तन लागू करें।

+0

क्या यह समझाया जा सकता है कि पिछली परत के लिए उद्देश्य कार्य का व्युत्पन्न क्यों मनाया गया और अनुमानित मूल्यों के बीच अंतर है? आइए मान लें कि हम इनपुट लेने और इसे nonlinear मान में बदलने के लिए सिग्मोइड फ़ंक्शन का उपयोग कर रहे हैं ... – user2543622

+0

मेरा मतलब है कि मैंने लॉजिस्टिक रिग्रेशन के उद्देश्य कार्य के व्युत्पन्न को देखा और मैं समझता हूं कि व्युत्पन्न बराबर है (भविष्यवाणी के बीच अंतर) * x_varaiable .. तो क्यों न्यूरल नेटवर्क के मामले में हम x_variable से छुटकारा पाएं और केवल (भविष्यवाणी के बीच अंतर) भाग रखें? – user2543622

+0

@ user2543622, उद्देश्य कार्य का व्युत्पन्न वास्तव में इस उद्देश्य कार्य का ढाल है, जो एमएसई (आमतौर पर उपयोग किए जाने वाले उद्देश्य समारोह) के व्युत्पन्न का वेक्टर है। –

0
किसी भी नोड एन के लिए

, इनपुट वजन/मूल्यों को देखते हुए उत्पादन वजन/मूल्यों, और त्रुटि/सभी नोड्स की लागत कि एन आउटपुट, मैं कैसे की "लागत" की गणना करते हैं करने के लिए एन और इनपुट वजन को अद्यतन करने के लिए इसका उपयोग करें?

आप वास्तव में व्यक्तिगत न्यूरॉन्स के मध्यवर्ती लागत कार्यों में कभी दिलचस्पी नहीं रखते हैं। इसके बजाय आप अंतिम आउटपुट की लागत में रूचि रखते हैं; हमेशा। फिर पीछे परतों में न्यूरॉन्स द्वारा आवश्यक परिवर्तन की दर को आगे बढ़ाने के लिए इसका उपयोग करें।

संबंधित मुद्दे