Backpropagation में शून्य करने के लिए सभी प्रारंभिक वजन सेट करने का खतरा


30

शून्य के साथ वजन को शुरू करना खतरनाक क्यों है? क्या कोई सरल उदाहरण है जो इसे प्रदर्शित करता है?


ऐसा लगता है कि शास्त्रीय XOR 2-1 नेट अच्छा उदाहरण है, लेकिन मैं कुछ सैद्धांतिक तर्क की सराहना करूंगा।
user8078

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

वहाँ पहले से ही अच्छे जवाब उपलब्ध हैं, क्यों न वज़न को शून्य से शुरू करें। निम्नलिखित लिंक 'कैसे प्रारंभिक वजन का चयन किया जाना चाहिए पर कुछ और प्रकाश फेंकता है? Staff.itee.uq.edu.au/janetw/cmc/chapters/BackProp/index2.html आशा है कि यह अन्य पाठकों की मदद करता है।
doer_uvc

@ निकोटॉक्स यहाँ के वज़न, वज़न की अगली परत के गुणक हैं, और अंतिम परत किसी भी अन्य वज़न की एक से अधिक नहीं है - इसलिए यह यहाँ लागू नहीं है।
डेविड रेफेली

जवाबों:


21

नीचे देखें अल्फा की टिप्पणी को संपादित करें । मैं तंत्रिका जाल का विशेषज्ञ नहीं हूं, इसलिए मैं उसे टाल दूंगा।

मेरी समझ यहाँ पोस्ट किए गए अन्य उत्तरों से अलग है।

मुझे पूरा यकीन है कि बैकप्रॉपैगैशन में मौजूदा वज़न को जोड़ना शामिल है , गुणा नहीं। आपके द्वारा जोड़ी जाने वाली राशि डेल्टा नियम द्वारा निर्दिष्ट है । ध्यान दें कि समीकरण के दाईं ओर विज दिखाई नहीं देता है।

मेरी समझ यह है कि शुरुआती वज़न को शून्य पर सेट न करने के कम से कम दो अच्छे कारण हैं:

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

  • दूसरा, यदि न्यूरॉन्स एक ही वजन के साथ शुरू होते हैं, तो सभी न्यूरॉन्स एक ही ढाल का पालन करेंगे, और हमेशा एक दूसरे के रूप में एक ही काम करते हुए समाप्त हो जाएंगे।


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

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

दूसरा कारण झूठा है? open.wolframcloud.com/env/…
user3180

अलग-अलग इनपुट वजन समरूपता को
तोड़ते हैं

आप डेरिवेटिव जोड़ते हैं , और डेरिवेटिव चेन नियम के माध्यम से गुणा किया जाता है।
डेविड रेफेली

7

यदि आप एक बायेसियन नेटवर्क के रूप में, पुजारी के रूप में वजन के बारे में सोचते हैं, तो आपने किसी भी संभावना को खारिज कर दिया है कि वे इनपुट संभवतः सिस्टम को प्रभावित कर सकते हैं। एक और व्याख्या यह है कि बैकप्रॉपैगैशन वजन के सेट की पहचान करता है जो लक्ष्य और मनाया मूल्यों (ई) के बीच भारित वर्ग अंतर को कम करता है। फिर सिस्टम की दिशा निर्धारित करने के संदर्भ में कोई भी ढाल मूलक एल्गोरिदम कैसे उन्मुख हो सकता है? आप पैरामीटर स्पेस की काठी बिंदु पर खुद को रख रहे हैं।


1
यह सबसे अच्छा जवाब है। यह एक काठी बिंदु है। Backpropagation आधारित अनुकूलन एल्गोरिदम आमतौर पर तुरंत बंद हो जाएगा। क्रमिक की गणना करने के लिए हम वजन के साथ डेल्टा को गुणा करते हैं और परिणाम हमेशा शून्य होगा।
अल्फा

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

6

In each iteration of your backpropagation algorithm, you will update the weights by multiplying the existing weight by a delta determined by backpropagation. If the initial weight value is 0, multiplying it by any value for delta won't change the weight which means each iteration has no effect on the weights you're trying to optimize.


2
>you will update the weights by multiplying the existing weight by a value determined by backpropagation - I don't think so, it's not just multiplication.
user8078

1
My general point is that if the initial weights are zero they will stay at zero after each iteration of back propagation.
Idr

The 'value determined by backpropagation' is a delta (see e. g. the original paper "Learning representations by back-propagating errors", equation 7). The answer is poorly phrased but it is not completely wrong.
alfa

1
This is just a wrong answer. The weights will change, but they will change together. This is bad because all hidden units will be identical throughout training and no learning can occur.
Amin Sammara

I think this depends on activation function. If you choose tanh, then the final output will be 0, and hence the final layer weights will be 0's, and all the other weights as well. But if you choose a logit, the final output will be θ(0)=0.5 and hence the final gradient of weights won't be 0, and eventually all the other weights will also won't be 0.
David Refaeli

2

It seems to me that one reason why it's bad to initialize weights to the same values (not just zero) is because then for any particular hidden layer all the nodes in this layer would have exactly the same inputs and would therefore stay the same as each other.


1

The answer to this is not entirely "Local Minima/Maxima".

When you have more than 1 Hidden Layer and every weight are 0's, no matter how big/small a change in Weight_i will not cause a change in the Output.

This is because delta Weight_i will be absorbed by the next Hidden Layer.

When there is no change in the Output, there is no gradient and hence no direction.

This shares the same traits as a Local Minima/Maxima, but is actually because of 0's, which is technically different


0

Main problem with initialization of all weights to zero mathematically leads to either the neuron values are zero (for multi layers) or the delta would be zero. In one of the comments by @alfa in the above answers already a hint is provided, it is mentioned that the product of weights and delta needs to be zero. This would essentially mean that for the gradient descent this is on the top of the hill right at its peak and it is unable to break the symmetry. Randomness will break this symmetry and one would reach local minimum. Even if we perturb the weight(s) a little we would be on the track. Reference: Learning from data Lecture 10.


0

It's a bad idea because of 2 reasons:

  1. If you have sigmoid activation, or anything where g(0)0 then it will cause weights to move "together", limiting the power of back-propagation to search the entire space to find the optimal weights which lower the loss/cost.

  2. If you have tanh or ReLu activation, or anything where g(0)=0 then all the outputs will be 0, and the gradients for the weights will always be 0. Hence you will not have any learning at all.

Let's demonstrate this (for simplicity I assume a final output layer of 1 neuron):

Forward feed: If all weights are 0's, then the input to the 2nd layer will be the same for all nodes. The outputs of the nodes will be the same, though they will be multiplied by the next set of weights which will be 0, and so the inputs for the next layer will be zero etc., etc. So all the inputs (except the first layer which takes the actual inputs) will be 0, and all the outputs will be the same (0.5 for sigmoid activation and 0 for tanh and ReLu activation).

Back propagation: Let's examine just the final layer. The final loss (L) depends on the final output of the network (aL, where L denotes the final layer), which depends on the final input before activation (zL=WLaL1), which depends on the weights of the final layer (WL). Now we want to find:

dWL:=LWL=LaLaLzLzLWL
La is the derivative of the cost function, az is the derivative of the activation function. Regardless of what their (Laaz) value is, zW simply equals to the previous layer outputs, i.e. to aL1, but since they are all the same, you get that the final result dWL is a vector with all element equal. So, when you'll update WL=WLαdWL it will move in the same direction. And the same goes for the previous layers.

Point 2 can be shown from the fact that aL1 will be equal to zero's. Hence your dWL vector will be full of zeros, and no learning can be achieved.

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