सॉफ्टमैक्स / क्रॉस एंट्रोपी के साथ बैकप्रोपेगेशन


40

मैं समझने की कोशिश कर रहा हूं कि सॉफ्टपैक्स / क्रॉस-एन्ट्रापी आउटपुट लेयर के लिए बैकप्रॉपैगैशन कैसे काम करता है।

क्रॉस एन्ट्रापी एरर फंक्शन है

E(t,o)=−∑jtjlog⁡oj

साथ और न्यूरॉन में लक्ष्य और आउटपुट के रूप में , क्रमशः। आउटपुट लेयर में प्रत्येक न्यूरॉन के ऊपर योग होता है। स्वयं सॉफ्टमैक्स फ़ंक्शन का परिणाम है:tojoj

oj=softmax(zj)=ezj∑jezj

पुन आउटपुट लेयर में प्रत्येक न्यूरॉन के ऊपर योग होता है और न्यूरॉन का इनपुट होता है :zjj

zj=∑iwijoi+b

यही कारण है कि पिछली परत में सभी न्यूरॉन्स पर उनके इसी उत्पादन और वजन साथ न्यूरॉन प्लस एक पूर्वाग्रह ।oiwijjb

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

∂E∂wij=∂E∂oj∂oj∂zj∂zj∂wij

न्यूरॉन के इनपुट के रूप में साथ ।zjj

अंतिम शब्द काफी सरल है। चूंकि और बीच केवल एक भार है , इसलिए व्युत्पन्न है:ij

∂zj∂wij=oi

पहला शब्द आउटपुट संबंध में त्रुटि फ़ंक्शन की व्युत्पत्ति है :oj

∂E∂oj=−tjoj

मध्य अवधि सॉफ्टमैक्स फ़ंक्शन की व्युत्पत्ति है, जिसके इनपुट संबंध में कठिन है:zj

∂oj∂zj=∂∂zjezj∑jezj

मान लें कि हमारे पास वर्गों के अनुरूप तीन आउटपुट न्यूरॉन्स हैं फिर है:a,b,cob=softmax(b)

ob=ezb∑ez=ezbeza+ezb+ezc

और भागफल नियम का उपयोग करके इसकी व्युत्पत्ति:

∂ob∂zb=ezb∗∑ez−(ezb)2(∑jez)2=ezb∑ez−(ezb)2(∑ez)2
=softmax(b)−softmax2(b)=ob−ob2=ob(1−ob)
backpropagation के लिए मध्य अवधि के लिए इसका अर्थ है:
∂oj∂zj=oj(1−oj)

यह सब मुझे एक साथ मिल रहा है

∂E∂wij=−tjoj∗oj(1−oj)∗oi=−tj(1−oj)∗oi

जिसका अर्थ है, यदि इस वर्ग के लिए लक्ष्य , तो मैं इसके लिए भार को अद्यतन नहीं करूंगा। यह सही नहीं लगता।tj=0

इस पर जांच करने पर मैंने पाया कि लोगों को सॉफ्टमैक्स व्युत्पत्ति के लिए दो वेरिएंट मिलते हैं, एक जहाँ और दूसरा , जैसे यहाँ या यहाँ ।i=ji≠j

लेकिन मुझे इससे कोई मतलब नहीं है। इसके अलावा, मुझे यकीन नहीं है कि यह मेरी त्रुटि का कारण है, यही वजह है कि मैं अपनी सभी गणना पोस्ट कर रहा हूं। मुझे उम्मीद है कि कोई मुझे स्पष्ट कर सकता है कि मैं कुछ याद कर रहा हूं या गलत हो रहा हूं।


आपके द्वारा दिए गए लिंक व्युत्पन्न के सापेक्ष व्युत्पन्न की गणना कर रहे हैं, जबकि आप वजन के सापेक्ष व्युत्पन्न की गणना कर रहे हैं।
— जेनकर

जवाबों:


35

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

मैंने आपकी व्युत्पत्ति में कुछ विसंगतियों पर ध्यान दिया। मैं वास्तव में तंत्रिका नेटवर्क नहीं करता हूं, इसलिए निम्नलिखित गलत हो सकता है। हालांकि, यहाँ है कि मैं समस्या के बारे में कैसे जाऊँगा।

सबसे पहले, आपको में समन का ध्यान रखना होगा , और आप प्रत्येक शब्द को केवल एक भार पर निर्भर नहीं कर सकते। इसलिए घटक के संबंध में की ग्रेडिएंट लेते हुए , हमारे पास EEkz

E=−∑jtjlog⁡oj⟹∂E∂zk=−∑jtj∂log⁡oj∂zk

फिर, व्यक्त रूप हमारे पास जहां है क्रोनकर डेल्टा । फिर सॉफ्टमैक्स-डिनोमिनेटर का ग्रेडिएंट जो या, लॉग विस्तार करके ध्यान दें कि व्युत्पन्न सम्मान के साथ है। , एक मनमानाoj

oj=1Ωezj,Ω=∑iezi⟹log⁡oj=zj−log⁡Ω
∂log⁡oj∂zk=δjk−1Ω∂Ω∂zk
δjk
∂Ω∂zk=∑ieziδik=ezk
∂log⁡oj∂zk=δjk−ok
∂oj∂zk=oj(δjk−ok)
zk घटक , जो पद देता है ( केवल जब )।zδjk=1k=j

तो संबंध में का ग्रेडिएंट तब जहां स्थिर है (किसी दिए गए वेक्टर के लिए)।Ez

∂E∂zk=∑jtj(ok−δjk)=ok(∑jtj)−tk⟹∂E∂zk=okτ−tk
τ=∑jtjt

यह आपके परिणाम से पहला अंतर दिखाता है: अब गुणा नहीं करता है । ध्यान दें कि विशिष्ट मामले के लिए जहां "वन-हॉट" है हमारे पास (जैसा कि आपके पहले लिंक में बताया गया है)।tkoktτ=1

एक दूसरी असंगति, अगर मैं सही ढंग से समझूं , तो यह है कि " " जो कि का इनपुट है लगता है कि सॉफ्टमैक्स से आउटपुट " " होने की संभावना नहीं है । मुझे लगता है कि यह अधिक समझ में आता है कि यह वास्तव में नेटवर्क आर्किटेक्चर में "आगे पीछे" है?ozo

इस वेक्टर कॉल करते हुए , हमारे पास तब y

zk=∑iwikyi+bk⟹∂zk∂wpq=∑iyi∂wik∂wpq=∑iyiδipδkq=δkqyp

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

∂E∂wpq=∑k∂E∂zk∂zk∂wpq=∑k(okτ−tk)δkqyp=yp(oqτ−tq)
tτ=1
∂E∂wij=yi(oj−tj)
y

इस शो के अपने परिणाम से एक दूसरे का अंतर तो: " " शायद नीचे के स्तर से होना चाहिए , जो मैं फोन ऊपर के स्तर के बजाय (जो )।oizyzo

उम्मीद है कि यह मदद करता है। क्या यह परिणाम अधिक सुसंगत लगता है?

अद्यतन: टिप्पणियों में ओपी की एक क्वेरी के जवाब में, यहां पहले चरण का विस्तार है। सबसे पहले, ध्यान दें कि वेक्टर श्रृंखला नियम में सारांश की आवश्यकता है ( यहां देखें )। दूसरा, सभी ढाल घटकों को प्राप्त करने के लिए निश्चित होने के लिए , आपको हमेशा आंशिक व्युत्पन्न के भाजक में घटक के लिए एक नया सबस्क्रिप्ट पत्र पेश करना चाहिए । तो पूर्ण श्रृंखला नियम के साथ ढाल को पूरी तरह से लिखने के लिए, हमारे पास और तो

∂E∂wpq=∑i∂E∂oi∂oi∂wpq
∂oi∂wpq=∑k∂oi∂zk∂zk∂wpq
∂E∂wpq=∑i[∂E∂oi(∑k∂oi∂zk∂zk∂wpq)]
अभ्यास में पूर्ण योग कम हो जाते हैं, क्योंकि आपको बहुत सारे शब्द हैं। हालांकि इसमें बहुत सारे "अतिरिक्त" योग और सदस्यता शामिल हैं, पूर्ण श्रृंखला नियम का उपयोग करके यह सुनिश्चित करेगा कि आपको हमेशा सही परिणाम मिलेगा।δab

मुझे यकीन नहीं है कि "बैकप्रॉप / ऑटोडिफ" समुदाय इन समस्याओं को कैसे करता है, लेकिन मुझे लगता है कि जब भी मैं शॉर्टकट लेने की कोशिश करता हूं, तो मैं गलतियां करने के लिए उत्तरदायी हूं। इसलिए मैं अंत में यहाँ कर रहा हूँ, पूर्ण सबस्क्रिप्टिंग के साथ योगों के संदर्भ में सब कुछ लिख रहा हूं, और हमेशा हर व्युत्पन्न के लिए नए सदस्यता पेश कर रहा हूं। (मेरे उत्तर के समान यहां ... मुझे आशा है कि मैं कम से कम अंत में सही परिणाम दे रहा हूं!)
— जियोमैट

मुझे व्यक्तिगत रूप से लगता है कि आप नीचे सब कुछ लिख रहे हैं, इसका पालन करना बहुत आसान है। परिणाम मुझे सही लगते हैं।
— जेनकर

यद्यपि मैं अभी भी आपके प्रत्येक चरण को पूरी तरह से समझने की कोशिश कर रहा हूं, मुझे कुछ मूल्यवान अंतर्दृष्टि मिलीं जिससे मुझे समग्र तस्वीर के साथ मदद मिली। मुझे लगता है कि मुझे व्युत्पन्न और रकम के विषय में और अधिक पढ़ने की आवश्यकता है। लेकिन ई में समन का हिसाब लेने के लिए आपकी सलाह लेते हुए, मैं इसके साथ आया:
— micha

दो आउटपुट के लिए और with क्रॉस एन्ट्रापी त्रुटि है तब व्युत्पन्न जो आपके परिणाम के अनुरूप है ... यह ध्यान में रखते हुए कि त्रुटि राशि से पहले आपके पास ऋण चिह्न नहीं थाoj1=ezj1Ωoj1=ezj1Ω
Ω=ezj1+ezj2
E=−(t1logoj1+t2logoj2)=−(t1(zj1−log(Ω))+t2(zj2−log(Ω)))
∂E∂(zj1=−(t1−t1ezj1Ω−t2ezj2Ω)=−t1+oj1(t1+t2)
— micha

लेकिन एक और प्रश्न मेरे पास है: इसके बजाय जो आम तौर पर आपके होता है, आपने गणना की: रूप में को रद्द करने के लिए । इस तरह से सही परिणाम क्यों है?
∂E∂wij=∂E∂oj∂oj∂zj∂zj∂wij
∂E∂wij=∂E∂zj∂zj∂wij
∂oj
— माइक

12

जबकि @ GeoMatt22 का उत्तर सही है, मैंने व्यक्तिगत रूप से इसे एक खिलौना उदाहरण के लिए समस्या को कम करने और चित्र बनाने के लिए बहुत उपयोगी पाया:

चित्रमय मॉडल।

मैंने तब ऑपरेशन को परिभाषित किया था जो प्रत्येक नोड कंप्यूटिंग कर रहा था, जो कि "नेटवर्क" के इनपुट के रूप में और का इलाज कर रहा है ( एक हॉट-वेक्टर है जो डेटा बिंदु के वर्ग लेबल का प्रतिनिधित्व करता है):hwt

L=−t1log⁡o1−t2log⁡o2
o1=exp⁡(y1)exp⁡(y1)+exp⁡(y2)
o2=exp⁡(y2)exp⁡(y1)+exp⁡(y2)
y1=w11h1+w21h2+w31h3
y2=w12h1+w22h2+w32h3

मान कि मैं संबंध में नुकसान की व्युत्पत्ति की गणना करना चाहता हूं । मैं सिर्फ वजन मैं में दिलचस्पी रखता हूँ करने के लिए नुकसान से पथ वापस ट्रेस करने के लिए मेरी तस्वीर का उपयोग कर सकते (हटाया के दूसरे स्तंभ 'स्पष्टता के लिए ओं):w21w

पीछे की ओर हाइलाइट किए गए ग्राफिकल मॉडल।

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

∂L∂o1=−t1o1
∂L∂o2=−t2o2
∂o1∂y1=exp⁡(y1)exp⁡(y1)+exp⁡(y2)−(exp⁡(y1)exp⁡(y1)+exp⁡(y2))2=o1(1−o1)
∂o2∂y1=−exp⁡(y2)exp⁡(y1)(exp⁡(y1)+exp⁡(y2))2=−o2o1
∂y1∂w21=h2

अंत में, श्रृंखला नियम को एक साथ

∂L∂w21=∂L∂o1∂o1∂y1∂y1∂w21+∂L∂o2∂o2∂y1∂y1∂w21=−t1o1[o1(1−o1)]h2+−t2o2(−o2o1)h2=h2(t2o1−t1+t1o1)=h2(o1(t1+t2)−t1)=h2(o1−t1)

ध्यान दें कि अंतिम चरण में, क्योंकि वेक्टर एक गर्म वेक्टर है।t1+t2=1t


यह वही है जो अंत में मेरे लिए यह मंजूरी दे दी! बहुत बढ़िया और सुरुचिपूर्ण विवरण !!!!
— संतोषगुप्त

2
मुझे खुशी है कि आप दोनों को मेरी पोस्ट पढ़ने से मज़ा आया और फायदा हुआ! मेरे लिए इसे लिखना और उसकी व्याख्या करना भी सहायक था।
— विवेक सुब्रमण्यन

@VivekSubramanian यह होना चाहिए ?
=−t1o1[o1(1−o1)]h2+−t2o2(−o2o1)h2
— koryakinp

आप सही कह रहे हैं - यह एक टाइपो था! मैं बदलाव लाऊंगा।
— विवेक सुब्रमण्यन

जो बात मुझे समझ में नहीं आ रही है, वह यह है कि आप कुछ न्यूरॉन्स को लॉगिट्स (अनकल्ड स्कोर) भी असाइन करते हैं। (ओ सॉफ्टमैक्स किए गए लॉगिट्स (भविष्यवाणियां) हैं और वाई आपके मामले में लॉगिट्स हैं)। हालांकि, यह सामान्य रूप से मामला नहीं है, है ना? पर देखो इस तस्वीर तो कैसे यह कैसे आप y1 के संबंध में O2 के आंशिक व्युत्पन्न पा सकते हैं इस मामले में संभव है (o_out1 भविष्यवाणी और o_in1 logits है)?
— एआरएटी

6

के स्थान में मैं एक पत्र जिसका अपरकेस अपने लोअरकेस से चाक्षुष रूप से भिन्न है चाहता हूँ। इसलिए मुझे स्थानापन्न । इसके अलावा, पिछली परत से को नामित करने के लिए चर का उपयोग करें ।{oi},{yi}{pi}{oi}

चलो विकर्ण मैट्रिक्स जिसका विकर्ण वेक्टर के बराबर होती है हो , यानी इस नए मैट्रिक्स चर का उपयोग करना Frobenius इनर उत्पाद हम की ढाल गणना कर सकते हैं wrt । Yy

Y=Diag(y)
EW
z=Wp+bdz=dWpy=softmax(z)dy=(Y−yyT)dzE=−t:log⁡(y)dE=−t:Y−1dydE=−t:Y−1(Y−yyT)dz=−t:(I−1yT)dz=−t:(I−1yT)dWp=(y1T−I)tpT:dW=((1Tt)ypT−tpT):dW∂E∂W=(1Tt)ypT−tpT

6

यहां मैं सबसे साफ और अच्छी तरह से लिखे गए नोटों में से एक है जो मुझे वेब पर आया था, जो "क्रॉस एन्ट्रापी लॉस फंक्शन के साथ बैकप्रोपेगैग एल्गोरिथ्म में डेरिवेटिव की गणना" के बारे में बताता है ।


दिए गए pdf में समीकरण 22 समीकरण 23 कैसे बने? जैसे कि समन (k! = I) को नकारात्मक संकेत कैसे मिला। क्या इसे सकारात्मक संकेत नहीं मिलना चाहिए? जैसे Summation(Fn)(For All K) = Fn(k=i) + Summation(Fn)(k!=i)मेरी समझ के अनुसार हो रहा होना चाहिए।
— faizan

1

यहाँ एक लिंक दिया गया है जो सॉफ्टमैक्स और उसके व्युत्पन्न की व्याख्या करता है।

यह i = j और i = = j का उपयोग करने का कारण बताता है।


यदि भविष्य में लिंक टूट जाता है, तो न्यूनतम, स्टैंड-अलोन उत्तर देने की सिफारिश की जाती है। अन्यथा, यह अब भविष्य में अन्य उपयोगकर्ताओं की मदद नहीं कर सकता है।
— ल्यूकोनाचो

0

अन्य उत्तरों ने व्युत्पन्न की गणना करने का सही तरीका प्रदान किया है, लेकिन वे इस बात को इंगित नहीं करते हैं कि आप कहाँ गलत हो गए हैं। वास्तव में, आपके अंतिम समीकरण में हमेशा 1 होता है, क्योंकि आपने मान लिया है कि आपके आउटपुट में लक्ष्य 1 का नोड लेता है; अन्य नोड्स के में प्रायिकता फ़ंक्शन के विभिन्न रूप होते हैं, इस प्रकार व्युत्पन्न के विभिन्न रूप होते हैं, इसलिए अब आपको यह समझना चाहिए कि अन्य लोगों ने और अलग-अलग व्यवहार क्यों किया है ।tjojoji=ji≠j

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