पश्चप्रचार

यंत्र अधिगम में, बैकप्रोपैजेशन व्यापक रूप से इस्तेमाल किया जाने वाला  कलन विधि  है, जो फीडफॉरवर्ड न्यूरल नेटवर्क या अलग-अलग नोड्स के साथ अन्य पैरामीटरयुक्त नेटवर्क को प्रशिक्षित करता है। यह गॉटफ्रीड विल्हेम लीबनिज श्रृंखला नियम (1673) का कुशल अनुप्रयोग है ऐसे नेटवर्क के लिए। इसे के रूप में भी जाना जाता है सेप्पो लिनैनमा (1970) के कारण स्वत: विभेदन या रिवर्स संचयन का रिवर्स मोड।     1962 में फ्रैंक रोसेनब्लैट द्वारा बैक-प्रोपेगेटिंग एरर करेक्शन शब्द पेश किया गया था। लेकिन वह यह नहीं जानता था कि इसे कैसे लागू किया जाए, हालांकि हेनरी जे. केली के पास पश्चप्रचार का निरंतर अग्रदूत था पहले से ही 1960 में नियंत्रण सिद्धांत के संदर्भ में।

Backpropagation इनपुट-आउटपुट उदाहरण के लिए ग्राफ थ्योरी टर्म्स # नेटवर्क के वेट की शब्दावली के संबंध में नुकसान फ़ंक्शन के ग्रेडियेंट  की गणना करता है, और ऐसा एल्गोरिथम दक्षता करता है, समय में ग्रेडिएंट की परत की गणना करता है, अंतिम से पीछे की ओर चलना श्रृंखला नियम में मध्यवर्ती शर्तों की अनावश्यक गणना से बचने के लिए परत; यह गतिशील प्रोग्रामिंग के माध्यम से प्राप्त किया जा सकता है।    ढतला हुआ वंश, या वैरिएंट जैसे स्टोकेस्टिक ग्रेडिएंट डिसेंट, आमतौर पर उपयोग किए जाते हैं।

बैकप्रोपैगेशन शब्द केवल ग्रेडिएंट की गणना के लिए एल्गोरिथम को संदर्भित करता है, न कि कैसे ग्रेडिएंट का उपयोग किया जाता है; हालाँकि, इस शब्द का उपयोग अक्सर संपूर्ण शिक्षण एल्गोरिथ्म को संदर्भित करने के लिए किया जाता है, जिसमें ग्रेडिएंट का उपयोग कैसे किया जाता है, जैसे कि स्टोकेस्टिक ग्रेडिएंट डिसेंट द्वारा। 1985 में, डेविड ई. रुमेलहार्ट एट अल। तकनीक का प्रायोगिक विश्लेषण प्रकाशित किया। इसने बैकप्रोपैगेशन को लोकप्रिय बनाने में योगदान दिया और बहुपरत परसेप्ट्रॉन में अनुसंधान की सक्रिय अवधि शुरू करने में मदद की।

सिंहावलोकन
Backpropagation नुकसान समारोह के संबंध में फीडफॉरवर्ड न्यूरल नेटवर्क के पैरामीटर स्थान  में ग्रेडिएंट की गणना करता है। निरूपित करें:
 * $$x$$: इनपुट (सुविधाओं का वेक्टर)
 * $$y$$: लक्ष्य आउटपुट
 * वर्गीकरण के लिए, आउटपुट वर्ग संभावनाओं का वेक्टर होगा (उदाहरण के लिए, $$(0.1, 0.7, 0.2)$$, और लक्ष्य आउटपुट विशिष्ट वर्ग है, जो वन-हॉट/डमी चर (सांख्यिकी) द्वारा एन्कोड किया गया है (उदाहरण के लिए, $$(0, 1, 0)$$).
 * $$C$$: हानि फलन या लागत फलन
 * वर्गीकरण के लिए, यह आमतौर पर क्रॉस एन्ट्रापी (XC, लॉग नुकसान) होता है, जबकि रिग्रेशन के लिए यह आमतौर पर चुकता त्रुटि हानि (SEL) होता है।
 * $$L$$: परतों की संख्या
 * $$W^l = (w^l_{jk})$$: परत के बीच वजन $$l - 1$$ और $$l$$, कहाँ $$w^l_{jk}$$ के बीच वजन है $$k$$परत में -वें नोड $$l - 1$$ और यह $$j$$परत में -वें नोड $$l$$
 * $$f^l$$: सक्रियण परत पर कार्य करता है $$l$$
 * वर्गीकरण के लिए अंतिम परत आमतौर पर बाइनरी वर्गीकरण के लिए रसद समारोह है, और मल्टी-क्लास वर्गीकरण के लिए सॉफ्टमैक्स फ़ंक्शन (सॉफ्टरमैक्स) है, जबकि छिपी हुई परतों के लिए यह पारंपरिक रूप से प्रत्येक नोड (समन्वय) पर सिग्मॉइड फ़ंक्शन (लॉजिस्टिक फ़ंक्शन या अन्य) था ), लेकिन आज अधिक विविध है, जिसमें रेक्टिफायर (तंत्रिका नेटवर्क) (रैंप समारोह, ReLU) आम है।

पश्चप्रचार की व्युत्पत्ति में, अन्य मध्यवर्ती मात्राओं का उपयोग किया जाता है; उन्हें नीचे आवश्यकतानुसार पेश किया गया है। पूर्वाग्रह की शर्तों को विशेष रूप से व्यवहार नहीं किया जाता है, क्योंकि वे 1 के निश्चित इनपुट के साथ वजन के अनुरूप होते हैं। बैकप्रोपैजेशन के उद्देश्य के लिए, विशिष्ट हानि फ़ंक्शन और सक्रियण फ़ंक्शन कोई मायने नहीं रखते हैं, जब तक कि उनका और उनके डेरिवेटिव का मूल्यांकन कुशलतापूर्वक किया जा सकता है। पारंपरिक सक्रियण कार्यों में सिग्मॉइड, टैन और रेक्टिफायर (तंत्रिका नेटवर्क) शामिल हैं, लेकिन इन तक सीमित नहीं हैं। चूंकि, स्विश समारोह, शुद्ध करनेवाला (तंत्रिका नेटवर्क)#Mish, और अन्य सक्रियण कार्य भी प्रस्तावित किए गए थे।

समग्र नेटवर्क फ़ंक्शन संरचना और मैट्रिक्स गुणन का संयोजन है:
 * $$g(x) := f^L(W^L f^{L-1}(W^{L-1} \cdots f^1(W^1 x)\cdots))$$

प्रशिक्षण सेट के लिए इनपुट-आउटपुट जोड़े का सेट होगा, $$\left\{(x_i, y_i)\right\}$$. प्रत्येक इनपुट-आउटपुट जोड़ी के लिए $$(x_i, y_i)$$ प्रशिक्षण सेट में, उस जोड़ी पर मॉडल का नुकसान अनुमानित आउटपुट के बीच अंतर की लागत है $$g(x_i)$$ और लक्ष्य आउटपुट $$y_i$$:
 * $$C(y_i, g(x_i))$$

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

Backpropagation निश्चित इनपुट-आउटपुट जोड़ी के लिए ढाल की गणना करता है $$(x_i, y_i)$$, जहां वजन $$w^l_{jk}$$ भिन्न हो सकती है। ढाल के प्रत्येक व्यक्तिगत घटक, $$\partial C/\partial w^l_{jk},$$ श्रृंखला नियम द्वारा गणना की जा सकती है; हालाँकि, प्रत्येक भार के लिए इसे अलग से करना अक्षम है। Backpropagation प्रत्येक परत के ग्रेडिएंट की गणना करके डुप्लिकेट गणनाओं से बचने और अनावश्यक मध्यवर्ती मानों की गणना न करके कुशलतापूर्वक ग्रेडिएंट की गणना करता है - विशेष रूप से, प्रत्येक परत के भारित इनपुट का ग्रेडिएंट, द्वारा निरूपित $$\delta^l$$ - पीछे से आगे।

अनौपचारिक रूप से, मुख्य बिंदु यह है कि चूंकि एकमात्र तरीका वजन में है $$W^l$$ नुकसान को प्रभावित करता है अगली परत पर इसके प्रभाव के माध्यम से होता है, और यह ऐसा रैखिक रूप से करता है, $$\delta^l$$ वे एकमात्र डेटा हैं जिनकी आपको परत पर वज़न के ग्रेडिएंट की गणना करने के लिए आवश्यकता होती है $$l$$, और फिर आप पिछली परत की गणना कर सकते हैं $$\delta^{l-1}$$ और पुनरावर्ती रूप से दोहराएं। यह दो तरह से अक्षमता से बचा जाता है। सबसे पहले, यह दोहराव से बचा जाता है क्योंकि परत पर ग्रेडिएंट की गणना करते समय $$l$$, आपको बाद की परतों पर सभी डेरिवेटिव की पुनर्गणना करने की आवश्यकता नहीं है $$l+1, l+2, \ldots$$ हर बार। दूसरे, यह अनावश्यक मध्यवर्ती गणनाओं से बचता है क्योंकि प्रत्येक चरण में यह वजन में परिवर्तन के संबंध में छिपी हुई परतों के मूल्यों के डेरिवेटिव की अनावश्यक रूप से गणना करने के बजाय अंतिम आउटपुट (हानि) के संबंध में वजन के ढाल की सीधे गणना करता है। $$\partial a^{l'}_{j'}/\partial w^l_{jk}$$.


 * 1) Matrix गुणन के संदर्भ में, या अधिक सामान्यतः #Adjoint ग्राफ़ के संदर्भ में सरल फ़ीडफ़ॉरवर्ड नेटवर्क के लिए बैकप्रोपैगेशन व्यक्त किया जा सकता है।

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

इनपुट-आउटपुट जोड़ी दी गई है $$(x, y)$$, हानि है:


 * $$C(y, f^L(W^L f^{L-1}(W^{L-1} \cdots f^2(W^2 f^1(W^1 x))\cdots)))$$

इसकी गणना करने के लिए, इनपुट के साथ शुरू होता है $$x$$ और आगे काम करता है; प्रत्येक छिपी हुई परत के भारित इनपुट को निरूपित करें $$z^l$$ और छिपी हुई परत का उत्पादन $$l$$ सक्रियता के रूप में $$a^l$$. बैकप्रोपैजेशन के लिए, सक्रियण $$a^l$$ साथ ही डेरिवेटिव $$(f^l)'$$ (पर मूल्यांकन किया गया $$z^l$$) बैकवर्ड पास के दौरान उपयोग के लिए कैश किया जाना चाहिए।

इनपुट के संदर्भ में नुकसान का व्युत्पन्न श्रृंखला नियम द्वारा दिया गया है; ध्यान दें कि प्रत्येक शब्द कुल व्युत्पन्न है, जिसका मूल्यांकन इनपुट पर नेटवर्क (प्रत्येक नोड पर) के मूल्य पर किया जाता है $$x$$:


 * $$\frac{d C}{d a^L}\circ \frac{d a^L}{d z^L} \cdot \frac{d z^L}{d a^{L-1}} \circ \frac{d a^{L-1}}{d z^{L-1}}\cdot \frac{d z^{L-1}}{d a^{L-2}} \circ \ldots \circ \frac{d a^1}{d z^1} \cdot \frac{\partial z^1}{\partial x},$$

कहाँ $$\circ$$ हैडमार्ड उत्पाद (मैट्रिसेस) है, जो तत्व-वार उत्पाद है।

ये शब्द हैं: हानि फलन का व्युत्पन्न; सक्रियण कार्यों के डेरिवेटिव; और वज़न के आव्यूह:
 * $$\frac{d C}{d a^L}\circ (f^L)' \cdot W^L \circ (f^{L-1})' \cdot W^{L-1} \circ \cdots \circ (f^1)' \cdot W^1.$$

ढाल $$\nabla$$ इनपुट के संदर्भ में आउटपुट के व्युत्पन्न का स्थानान्तरण है, इसलिए मेट्रिसेस को खिसकाना  किया जाता है और गुणन का क्रम उलट दिया जाता है, लेकिन प्रविष्टियाँ समान होती हैं:
 * $$\nabla_x C = (W^1)^T \cdot (f^1)' \circ \ldots \circ (W^{L-1})^T \cdot (f^{L-1})' \circ (W^L)^T \cdot (f^L)' \circ \nabla_{a^L} C.$$

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

सहायक मात्रा का परिचय $$\delta^l$$ आंशिक उत्पादों के लिए (दाएं से बाएं गुणा), स्तर पर त्रुटि के रूप में व्याख्या की गई $$l$$और स्तर पर इनपुट मानों के ग्रेडिएंट के रूप में परिभाषित किया गया है $$l$$:
 * $$\delta^l := (f^l)' \circ (W^{l+1})^T \circ \cdots \circ (W^{L-1})^T \cdot (f^{L-1})' \circ (W^L)^T \cdot (f^L)' \circ \nabla_{a^L} C.$$

ध्यान दें कि $$\delta^l$$ वेक्टर है, जिसकी लंबाई स्तर में नोड्स की संख्या के बराबर है $$l$$; प्रत्येक घटक को उस नोड के लिए (के मूल्य) के कारण लागत के रूप में व्याख्या की जाती है।

परत में भार का ढाल $$l$$ तब है:
 * $$\nabla_{W^l} C = \delta^l(a^{l-1})^T.$$

का कारक $$a^{l-1}$$ है क्योंकि वजन $$W^l$$ स्तर के बीच $$l - 1$$ और $$l$$ प्रभाव स्तर $$l$$ इनपुट्स (एक्टिवेशन्स) के अनुपात में: इनपुट्स फिक्स्ड होते हैं, वेट अलग-अलग होते हैं। $$\delta^l$$ h> आसानी से पुनरावर्ती रूप से गणना की जा सकती है, दाएं से बाएं जा रही है, जैसे:
 * $$\delta^{l-1} := (f^{l-1})' \circ (W^l)^T \cdot \delta^l.$$

इस प्रकार प्रत्येक स्तर के लिए कुछ मैट्रिक्स गुणन का उपयोग करके वजन के ग्रेडियेंट की गणना की जा सकती है; यह पश्चप्रचार है।

भोले-भाले कंप्यूटिंग फॉरवर्ड की तुलना में ( $$\delta^l$$ उदाहरण के लिए):


 * $$\begin{align}

\delta^1 &= (f^1)' \circ (W^2)^T \cdot (f^2)' \circ \cdots \circ (W^{L-1})^T \cdot (f^{L-1})' \circ (W^L)^T \cdot (f^L)' \circ \nabla_{a^L} C\\ \delta^2 &= (f^2)' \circ \cdots \circ (W^{L-1})^T \cdot (f^{L-1})' \circ (W^L)^T \cdot (f^L)' \circ \nabla_{a^L} C\\ &\vdots\\ \delta^{L-1} &= (f^{L-1})' \circ (W^L)^T \cdot (f^L)' \circ \nabla_{a^L} C\\ \delta^L &= (f^L)' \circ \nabla_{a^L} C, \end{align}$$ बैकप्रोपैजेशन के साथ दो प्रमुख अंतर हैं:


 * 1) कम्प्यूटिंग $$\delta^{l-1}$$ के अनुसार $$\delta^l$$ परतों के स्पष्ट डुप्लिकेट गुणन से बचा जाता है $$l$$ और इसके बाद में।
 * 2) से गुणा करना $$\nabla_{a^L} C$$ - त्रुटि को पीछे की ओर प्रचारित करना - इसका अर्थ है कि प्रत्येक चरण केवल सदिश को गुणा करता है ($$\delta^l$$) वज़न के मैट्रिसेस द्वारा $$(W^l)^T$$ और सक्रियण के डेरिवेटिव $$(f^{l-1})'$$. इसके विपरीत, आगे की ओर गुणा करना, पिछली परत में परिवर्तनों से शुरू करना, इसका अर्थ है कि प्रत्येक गुणन मैट्रिक्स द्वारा मैट्रिक्स को गुणा करता है। यह बहुत अधिक महंगा है, और परत में बदलाव के हर संभव पथ को ट्रैक करने के अनुरूप है $$l$$ परत में परिवर्तन के लिए आगे $$l+2$$ (गुणा करने के लिए $$W^{l+1}$$ द्वारा $$W^{l+2}$$, सक्रियण के डेरिवेटिव के लिए अतिरिक्त गुणन के साथ), जो अनावश्यक रूप से मध्यवर्ती मात्रा की गणना करता है कि कैसे वजन परिवर्तन छिपे हुए नोड्स के मूल्यों को प्रभावित करता है।

संलग्न ग्राफ
अधिक सामान्य रेखांकन, और अन्य उन्नत विविधताओं के लिए, बैकप्रोपैगेशन को स्वचालित विभेदन के संदर्भ में समझा जा सकता है, जहां बैकप्रोपैगेशन रिवर्स संचय (या रिवर्स मोड) का विशेष मामला है।

प्रेरणा
किसी भी पर्यवेक्षित शिक्षण एल्गोरिथ्म का लक्ष्य ऐसे फ़ंक्शन को खोजना है जो इनपुट के सेट को उनके सही आउटपुट के लिए सबसे अच्छा मैप करता है। बैकप्रोपैजेशन के लिए प्रेरणा बहु-स्तरित तंत्रिका नेटवर्क को प्रशिक्षित करना है, ताकि यह उचित आंतरिक अभ्यावेदन सीख सके ताकि यह इनपुट से आउटपुट के किसी भी मनमाना मानचित्रण को सीख सके।

अनुकूलन समस्या के रूप में सीखना
बैकप्रोपैगेशन एल्गोरिदम की गणितीय व्युत्पत्ति को समझने के लिए, पहले न्यूरॉन के वास्तविक आउटपुट और किसी विशेष प्रशिक्षण उदाहरण के लिए सही आउटपुट के बीच संबंध के बारे में कुछ अंतर्ज्ञान विकसित करने में मदद मिलती है। दो इनपुट इकाइयों, आउटपुट इकाई और कोई छिपी हुई इकाइयों के साथ साधारण तंत्रिका नेटवर्क पर विचार करें, और जिसमें प्रत्येक न्यूरॉन कृत्रिम न्यूरॉन#रैखिक संयोजन का उपयोग करता है (तंत्रिका नेटवर्क पर अधिकांश काम के विपरीत, जिसमें इनपुट से आउटपुट तक मैपिंग गैर-रैखिक है) that is the weighted sum of its input. प्रारंभ में, प्रशिक्षण से पहले, वजन बेतरतीब ढंग से निर्धारित किया जाएगा। फिर न्यूरॉन प्रशिक्षण सेट से सीखता है, जिसमें इस मामले में टुपल्स का सेट होता है $$(x_1, x_2, t)$$ कहाँ $$x_1$$ और $$x_2$$ नेटवर्क के लिए इनपुट हैं और $t$ सही आउटपुट है (आउटपुट को उन इनपुटों को देखते हुए उत्पादन करना चाहिए, जब इसे प्रशिक्षित किया गया हो)। प्रारंभिक नेटवर्क, दिया गया $$x_1$$ और $$x_2$$, आउटपुट की गणना करेगा $y$ जो संभवतः इससे भिन्न है $t$ (यादृच्छिक भार दिया गया है)। नुकसान समारोह $$ L(t, y) $$ लक्ष्य आउटपुट के बीच विसंगति को मापने के लिए उपयोग किया जाता है $t$ और परिकलित आउटपुट $y$. प्रतिगमन विश्लेषण समस्याओं के लिए चुकता त्रुटि का उपयोग हानि फ़ंक्शन के रूप में किया जा सकता है, सांख्यिकीय वर्गीकरण के लिए क्रॉस एन्ट्रॉपी का उपयोग किया जा सकता है।

उदाहरण के रूप में नुकसान के रूप में वर्ग त्रुटि का उपयोग करके प्रतिगमन समस्या पर विचार करें:
 * $$L(t, y)= (t-y)^2 = E, $$

कहाँ $E$ विसंगति या त्रुटि है। एकल प्रशिक्षण मामले पर नेटवर्क पर विचार करें: $$(1, 1, 0)$$. इस प्रकार, इनपुट $$x_1$$ और $$x_2$$ क्रमशः 1 और 1 हैं और सही आउटपुट, $t$ 0 है। अब यदि नेटवर्क के आउटपुट के बीच संबंध प्लॉट किया जाता है $y$ क्षैतिज अक्ष और त्रुटि पर $E$ ऊर्ध्वाधर अक्ष पर, परिणाम परवलय है। पैराबोला का मैक्सिमा और मिनिमा आउटपुट से मेल खाता है $y$ जो त्रुटि को कम करता है $E$. एकल प्रशिक्षण मामले के लिए, न्यूनतम भी क्षैतिज अक्ष को छूता है, जिसका अर्थ है कि त्रुटि शून्य होगी और नेटवर्क आउटपुट उत्पन्न कर सकता है $y$ जो लक्ष्य आउटपुट से बिल्कुल मेल खाता है $t$. इसलिए, आउटपुट को मैपिंग इनपुट की समस्या को अनुकूलन समस्या में कम किया जा सकता है of finding a function that will produce the minimal error. हालाँकि, न्यूरॉन का आउटपुट उसके सभी इनपुट के भारित योग पर निर्भर करता है:


 * $$y=x_1w_1 + x_2w_2,$$

कहाँ $$w_1$$ और $$w_2$$ इनपुट यूनिट से आउटपुट यूनिट तक कनेक्शन पर भार हैं। इसलिए, त्रुटि न्यूरॉन के आने वाले भार पर भी निर्भर करती है, जो अंततः सीखने को सक्षम करने के लिए नेटवर्क में बदलने की आवश्यकता होती है।

इस उदाहरण में, प्रशिक्षण डेटा को इंजेक्ट करने पर $$(1, 1, 0)$$, loss function बन जाता है

$$ E = (t-y)^2 = y^2 = (x_1w_1 + x_2w_2)^2 = (w_1 + w_2)^2.$$ फिर, हानि समारोह $$E$$ इसके आधार के साथ निर्देशित परवलयिक सिलेंडर का रूप लेता है $$w_1 = -w_2$$. वजन के सभी सेट जो संतुष्ट करते हैं $$w_1 = -w_2$$ नुकसान समारोह को कम करें, इस मामले में अद्वितीय समाधान में अभिसरण करने के लिए अतिरिक्त बाधाओं की आवश्यकता होती है। अतिरिक्त बाधाओं को या तो वजन के लिए विशिष्ट शर्तों को निर्धारित करके या अतिरिक्त प्रशिक्षण डेटा को इंजेक्ट करके उत्पन्न किया जा सकता है।

त्रुटि को कम करने वाले वजन के सेट को खोजने के लिए आमतौर पर इस्तेमाल किया जाने वाला एल्गोरिथ्म ग्रेडिएंट डिसेंट है। बैकप्रोपैजेशन द्वारा, सबसे तेज वंश दिशा की गणना वर्तमान अन्तर्ग्रथनी भार बनाम हानि फ़ंक्शन की की जाती है। फिर, वजन को सबसे तेज वंश दिशा के साथ संशोधित किया जा सकता है, और त्रुटि को कुशल तरीके से कम किया जाता है।

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


 * $$E = L(t, y)$$

कहाँ
 * $$L$$ आउटपुट के लिए नुकसान है $$y$$ और लक्ष्य मूल्य $$t$$,
 * $$t$$ प्रशिक्षण नमूने के लिए लक्ष्य आउटपुट है, और
 * $$y$$ आउटपुट न्यूरॉन का वास्तविक आउटपुट है।

प्रत्येक न्यूरॉन के लिए $$j$$, इसका आउटपुट $$o_j$$ परिभाषित किया जाता है


 * $$o_j = \varphi(\text{net}_j) = \varphi\left(\sum_{k=1}^n w_{kj}x_k\right),$$

जहां सक्रियण कार्य करता है $$\varphi$$ सक्रियण क्षेत्र पर गैर-रैखिक और विभेदक कार्य है (ReLU बिंदु पर भिन्न नहीं है)। ऐतिहासिक रूप से उपयोग किया जाने वाला सक्रियण कार्य रसद कार्य है:


 * $$ \varphi(z) = \frac 1 {1+e^{-z}}$$

जिसका सुविधाजनक व्युत्पन्न है:


 * $$ \frac {d \varphi(z)}{d z} = \varphi(z)(1-\varphi(z)) $$

इनपुट $$\text{net}_j$$ न्यूरॉन के लिए आउटपुट का भारित योग है $$o_k$$ पिछले न्यूरॉन्स की। यदि न्यूरॉन इनपुट परत के बाद पहली परत में है, तो $$o_k$$ इनपुट लेयर के केवल इनपुट होते हैं $$x_k$$ नेटवर्क के लिए। न्यूरॉन में इनपुट इकाइयों की संख्या है $$n$$. चर $$w_{kj}$$ न्यूरॉन के बीच वजन को दर्शाता है $$k$$ पिछली परत और न्यूरॉन की $$j$$ वर्तमान परत की।

त्रुटि का व्युत्पन्न ढूँढना
वजन के संबंध में त्रुटि के आंशिक व्युत्पन्न की गणना करना $$w_{ij}$$ दो बार श्रृंखला नियम का उपयोग करके किया जाता है:

उपर्युक्त के दाहिनी ओर के अंतिम कारक में योग में केवल पद है $$\text{net}_j$$ पर निर्भर करता है $$w_{ij}$$, ताकि

यदि न्यूरॉन इनपुट परत के बाद पहली परत में है, $$o_i$$ बस है $$x_i$$.

न्यूरॉन के आउटपुट का व्युत्पन्न $$j$$ इसके इनपुट के संबंध में केवल सक्रियण फ़ंक्शन का आंशिक व्युत्पन्न है:

जो रसद समारोह के लिए
 * $$\frac{\partial o_j}{\partial\text{net}_j} = \frac {\partial}{\partial \text{net}_j} \varphi(\text{net}_j) = \varphi(\text{net}_j)(1-\varphi(\text{net}_j)) = o_j(1-o_j)$$

यही कारण है कि बैकप्रोपैजेशन के लिए जरूरी है कि एक्टिवेशन फंक्शन डिफरेंशियल फंक्शन हो। (फिर भी, ReLU सक्रियण फ़ंक्शन, जो 0 पर अविभेद्य है, काफी लोकप्रिय हो गया है, उदाहरण के लिए एलेक्सनेट में)

न्यूरॉन आउटपुट लेयर में है या नहीं, इसका मूल्यांकन करने के लिए पहला कारक सीधा है $$o_j = y$$ और

यदि आधे वर्ग त्रुटि का उपयोग हानि फ़ंक्शन के रूप में किया जाता है, तो हम इसे फिर से लिख सकते हैं


 * $$\frac{\partial E}{\partial o_j} = \frac{\partial E}{\partial y} = \frac{\partial}{\partial y} \frac{1}{2}(t - y)^2 = y - t $$

हालांकि, यदि $$j$$ व्युत्पन्न खोजने, नेटवर्क की मनमाना आंतरिक परत में है $$E$$ इसके संबंध में $$o_j$$ कम स्पष्ट है।

मानते हुए $$E$$ सभी न्यूरॉन्स होने वाले इनपुट के साथ फ़ंक्शन के रूप में $$L = \{u, v, \dots, w\}$$ न्यूरॉन से इनपुट प्राप्त करना $$j$$,


 * $$\frac{\partial E(o_j)}{\partial o_j} = \frac{\partial E(\mathrm{net}_u, \text{net}_v, \dots, \mathrm{net}_w)}{\partial o_j}$$

और के संबंध में कुल व्युत्पन्न लेना $$o_j$$व्युत्पन्न के लिए पुनरावर्ती अभिव्यक्ति प्राप्त की जाती है:

इसलिए, के संबंध में व्युत्पन्न $$o_j$$ गणना की जा सकती है यदि आउटपुट के संबंध में सभी डेरिवेटिव $$o_\ell$$ अगली परत के - जो आउटपुट न्यूरॉन के करीब हैं - ज्ञात हैं। [ध्यान दें, यदि सेट में कोई भी न्यूरॉन्स $$L$$ न्यूरॉन से जुड़े नहीं थे $$j$$, वे स्वतंत्र होंगे $$w_{ij}$$ और समन के अंतर्गत संगत आंशिक अवकलज 0 पर लुप्त हो जाएगा।]

स्थानापन्न $$, $$ $$ और $$ में $$ हमने प्राप्त:


 * $$\frac{\partial E}{\partial w_{ij}}

= \frac{\partial E}{\partial o_{j}} \frac{\partial o_{j}}{\partial \text{net}_{j}} \frac{\partial \text{net}_{j}}{\partial w_{ij}}

= \frac{\partial E}{\partial o_{j}} \frac{\partial o_{j}}{\partial \text{net}_{j}} o_i$$
 * $$ \frac{\partial E}{\partial w_{ij}} = o_i \delta_j$$

साथ


 * $$\delta_j

=        \frac{\partial E}{\partial o_j} \frac{\partial o_j}{\partial\text{net}_j} = \begin{cases} \frac{\partial L(o_j, t)}{\partial o_j} \frac {d \varphi(\text{net}_j)}{d \text{net}_j}                   & \text{if } j \text{ is an output neuron,}\\ (\sum_{\ell\in L} w_{j \ell}                            \delta_\ell)\frac {d \varphi(\text{net}_j)}{d \text{net}_j}   & \text{if } j \text{ is an inner neuron.} \end{cases}$$ अगर $$\varphi$$ रसद समारोह है, और त्रुटि वर्ग त्रुटि है:


 * $$\delta_j = \frac{\partial E}{\partial o_j} \frac{\partial o_j}{\partial\text{net}_j} = \begin{cases}

(o_j-t_j)o_j(1-o_{j}) & \text{if } j \text{ is an output neuron,}\\ (\sum_{\ell\in L} w_{j \ell} \delta_\ell)o_j(1-o_j) & \text{if } j \text{ is an inner neuron.} \end{cases}$$ वजन अपडेट करने के लिए $$w_{ij}$$ ग्रेडिएंट डिसेंट का उपयोग करते हुए, सीखने की दर का चयन करना चाहिए, $$\eta >0$$. वजन में परिवर्तन पर प्रभाव को प्रतिबिंबित करने की जरूरत है $$E$$ में वृद्धि या कमी के बारे में $$w_{ij}$$. अगर $$\frac{\partial E}{\partial w_{ij}} > 0$$, में वृद्धि $$w_{ij}$$ बढ़ती है $$E$$; इसके विपरीत, अगर $$\frac{\partial E}{\partial w_{ij}} < 0$$, में वृद्धि $$w_{ij}$$ कम हो जाती है $$E$$. नई $$\Delta w_{ij}$$ पुराने वजन में जोड़ा जाता है, और सीखने की दर और ग्रेडिएंट के उत्पाद को गुणा किया जाता है $$-1$$ इसकी गारंटी देता है $$w_{ij}$$ तरह से बदलता है जो हमेशा घटता है $$E$$. दूसरे शब्दों में, तुरंत नीचे समीकरण में, $$- \eta \frac{\partial E}{\partial w_{ij}}$$ हमेशा बदलता है $$w_{ij}$$ इस तरह से कि $$E$$ घटा है:


 * $$ \Delta w_{ij} = - \eta \frac{\partial E}{\partial w_{ij}} = - \eta o_i \delta_j$$

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

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

अनुमान
हानि फलन की गणितीय अभिव्यक्ति को दो शर्तों को पूरा करना चाहिए ताकि इसे संभवत: बैकप्रोपैजेशन में उपयोग किया जा सके। पहला यह है कि इसे औसत के रूप में लिखा जा सकता है $E=\frac{1}{n}\sum_xE_x$ त्रुटि कार्यों पर $E_x$, के लिए $n$  व्यक्तिगत प्रशिक्षण उदाहरण, $x$. इस धारणा का कारण यह है कि बैकप्रोपैजेशन एल्गोरिथ्म एकल प्रशिक्षण उदाहरण के लिए त्रुटि फ़ंक्शन के ग्रेडिएंट की गणना करता है, जिसे समग्र त्रुटि फ़ंक्शन के लिए सामान्यीकृत करने की आवश्यकता होती है। दूसरी धारणा यह है कि इसे तंत्रिका नेटवर्क से आउटपुट के समारोह के रूप में लिखा जा सकता है।

उदाहरण हानि समारोह
होने देना $$y,y'$$ में वैक्टर हो $$\mathbb{R}^n$$.

त्रुटि समारोह का चयन करें $$E(y,y')$$ दो आउटपुट के बीच अंतर को मापना। मानक विकल्प सदिशों के बीच यूक्लिडियन दूरी का वर्ग है $$y$$ और $$y'$$:$$E(y,y') = \tfrac{1}{2} \lVert y-y'\rVert^2$$त्रुटि कार्य समाप्त हो गया $n$ प्रशिक्षण के उदाहरणों को अलग-अलग उदाहरणों पर नुकसान के औसत के रूप में लिखा जा सकता है:$$E=\frac{1}{2n}\sum_x\lVert (y(x)-y'(x)) \rVert^2$$

सीमाएं
* त्रुटि फ़ंक्शन के मैक्सिमा और मिनिमा को खोजने के लिए बैकप्रोपैजेशन के साथ ग्रेडिएंट डिसेंट की गारंटी नहीं है, लेकिन केवल स्थानीय न्यूनतम है; इसके अलावा, इसे एरर फंक्शन लैंडस्केप में पठार (गणित) को पार करने में परेशानी होती है। उत्तल अनुकूलन | तंत्रिका नेटवर्क में त्रुटि कार्यों की गैर-उत्तलता के कारण होने वाली इस समस्या को लंबे समय से बड़ी कमी माना जाता था, लेकिन वाई एन एल ईसीयू के अंदर  एट अल। तर्क देते हैं कि कई व्यावहारिक समस्याओं में, ऐसा नहीं है।
 * Backpropagation सीखने के लिए इनपुट वैक्टर के सामान्यीकरण की आवश्यकता नहीं होती है; हालाँकि, सामान्यीकरण प्रदर्शन में सुधार कर सकता है।
 * Backpropagation के लिए आवश्यक है कि सक्रियण कार्यों के डेरिवेटिव को नेटवर्क डिज़ाइन समय पर जाना जाए।

इतिहास
नेस्टेड डिफरेंशियल फंक्शन फंक्शन के असतत कनेक्टेड नेटवर्क के लिए आधुनिक बैकप्रॉपैगेशन सेप्पो लिन्नैनमा का रिवर्स मोड ऑफ ऑटोमैटिक डिफरेंशियल (1970) है।   यह श्रृंखला नियम का कुशल अनुप्रयोग है (1673 में गॉटफ्रीड विल्हेम लीबनिज द्वारा व्युत्पन्न) ) ऐसे नेटवर्क के लिए। शब्दावली पश्च-प्रसार त्रुटि सुधार 1962 में फ्रैंक रोसेनब्लैट द्वारा पेश किया गया था, लेकिन वह यह नहीं जानता था कि इसे कैसे लागू किया जाए, हालांकि हेनरी जे. केली के पास पश्चप्रचार का निरंतर अग्रदूत था पहले से ही 1960 में नियंत्रण सिद्धांत के संदर्भ में। स्टोचैस्टिक ग्रेडिएंट डिसेंट द्वारा प्रशिक्षित पहला ध्यान लगा के पढ़ना या सीखना मल्टीलेयर परसेप्ट्रॉन (एमएलपी)। 1967 में शुनिची अमारी द्वारा प्रकाशित किया गया था। कंप्यूटर प्रयोगों में, दो परिवर्तनीय परतों के साथ उनके पांच परत एमएलपी ने गैर-रैखिक रूप से अलग-अलग पैटर्न वर्गों को वर्गीकृत करने के लिए आवश्यक ज्ञान प्रतिनिधित्व सीखा। 1982 में, पॉल वर्बोस ने MLPs के लिए उस तरह से बैकप्रॉपैगैशन लागू किया जो मानक बन गया है। 1985 में, डेविड ई. रुमेलहार्ट एट अल। तकनीक का प्रायोगिक विश्लेषण प्रकाशित किया। इसने बैकप्रोपैगेशन को लोकप्रिय बनाने में योगदान दिया और बहुपरत परसेप्ट्रॉन में अनुसंधान की सक्रिय अवधि शुरू करने में मदद की। केली (1960) और आर्थर ई. ब्रायसन (1961) विधि के उपर्युक्त निरंतर अग्रदूत को प्राप्त करने के लिए गतिशील प्रोग्रामिंग के सिद्धांतों का इस्तेमाल किया। 1962 में, स्टुअर्ट ड्रेफस ने केवल श्रृंखला नियम पर आधारित सरल व्युत्पत्ति प्रकाशित की।  1973 में, उन्होंने त्रुटि ग्रेडिएंट्स के अनुपात में नियंत्रकों के मापदंडों को अनुकूलित किया। लिनेनमा 1970 विधि के विपरीत,  इन अग्रदूतों ने मानक जैकबियन मैट्रिक्स गणनाओं को चरण से पिछले तक उपयोग किया, न तो कई चरणों में सीधे लिंक को संबोधित किया और न ही नेटवर्क दुर्लभता के कारण संभावित अतिरिक्त दक्षता लाभ।

1985 में, पार्कर द्वारा विधि का भी वर्णन किया गया था। यान लेकन ने 1987 में अपनी पीएचडी थीसिस में तंत्रिका नेटवर्क के लिए बैकप्रॉपैगैशन का वैकल्पिक रूप प्रस्तावित किया। 1993 में, एरिक वान ने बैकप्रॉपैगैशन के माध्यम से अंतरराष्ट्रीय पैटर्न मान्यता प्रतियोगिता जीती। 2000 के दशक के दौरान यह पक्ष से बाहर हो गया, लेकिन 2010 के दशक में लौटा, सस्ते, शक्तिशाली जीपीयू-आधारित कंप्यूटिंग सिस्टम से लाभान्वित हुआ। यह विशेष रूप से वाक् पहचान, मशीन दृष्टि, प्राकृतिक भाषा प्रसंस्करण, और भाषा संरचना सीखने के अनुसंधान में ऐसा रहा है (जिसमें इसका उपयोग पहले से संबंधित विभिन्न प्रकार की घटनाओं की व्याख्या करने के लिए किया गया है) और दूसरी भाषा सीखना। ).

मानव मस्तिष्क घटना से संबंधित संभावित घटकों जैसे N400 (न्यूरोसाइंस) और P600 (न्यूरोसाइंस) की व्याख्या करने के लिए त्रुटि बैकप्रॉपैगेशन का सुझाव दिया गया है।

यह भी देखें

 * कृत्रिम तंत्रिका नेटवर्क
 * तंत्रिका सर्किट
 * विपत्तिपूर्ण हस्तक्षेप
 * सीखने को इकट्ठा करो
 * ऐडाबूस्ट
 * ओवरफिटिंग
 * तंत्रिका पश्चप्रसार
 * समय के माध्यम से पश्चप्रचार

बाहरी संबंध

 * Backpropagation neural network tutorial at the Wikiversity