तंत्रिका नेटवर्क में "मर रहा है ReLU" समस्या क्या है?


119

दृश्य मान्यता के लिए संवैधानिक तंत्रिका नेटवर्क पर स्टैनफोर्ड पाठ्यक्रम नोट्स का उल्लेख करते हुए , एक पैराग्राफ कहता है:

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

यहाँ न्यूरॉन्स के मरने का क्या मतलब है?

क्या आप सरल शब्दों में एक सहज व्याख्या प्रदान कर सकते हैं।


2
क्या कोई "मृत न्यूरॉन्स" के बारे में कुछ वैज्ञानिक लेख का संदर्भ पा सकता है? जैसा कि यह Google प्रयासों पर पहला परिणाम है, यह बहुत अच्छा होगा यदि यह प्रश्न एक संदर्भ के साथ संपादित किया गया था।
मारेक Mareidek

क्या हम इस समस्या को हल करने के लिए नियमितीकरण से पूर्वाग्रह को रोक सकते हैं?
लेन

3
वेव्स, जो मैं वजन के लिए प्रत्येक युग में नए यादृच्छिक (सामान्य वितरित) मान देकर मृत रिले न्यूरॉन्स को पुनर्जीवित करने में कामयाब रहा हूं। मुझे यकीन नहीं है कि यह वही है जिसे हम चरण संक्रमण कहते हैं) अब उच्च सीखने की दरों का उपयोग कर सकते हैं, बेहतर समग्र सटीकता प्राप्त करते हैं (केवल रैखिक प्रतिगमन पर परीक्षण किया जाता है)। इसे लागू करना वास्तव में आसान है।
boli

1
@boli, क्या आप यहां कार्यान्वयन लागू कर सकते हैं?
अनु

जवाबों:


120

एक "मृत" ReLU हमेशा किसी भी इनपुट के लिए समान मान (शून्य होता है, लेकिन यह महत्वपूर्ण नहीं है)। संभवतः इसके वजन के लिए एक बड़े ऋणात्मक पूर्वाग्रह शब्द को सीखकर इसका आगमन हुआ है।

बदले में, इसका मतलब है कि यह आदानों के बीच भेदभाव करने में कोई भूमिका नहीं लेता है। वर्गीकरण के लिए, आप इसे सभी संभावित इनपुट डेटा के बाहर निर्णय विमान के रूप में देख सकते हैं ।

एक बार एक ReLU इस स्थिति में समाप्त हो जाता है, तो यह ठीक होने की संभावना नहीं है, क्योंकि 0 पर फ़ंक्शन ढाल भी 0 है, इसलिए ग्रेडिएंट वंश सीखने से वज़न नहीं बदलेगा। नकारात्मक इनपुट के लिए एक छोटे से सकारात्मक ढाल के साथ "लीक" ReLUs ( y=0.01xजब x <0 कहते हैं) इस मुद्दे को संबोधित करने और पुनर्प्राप्त करने का मौका देने का एक प्रयास है।

सिग्मॉइड और टैन न्यूरॉन्स समान समस्याओं से पीड़ित हो सकते हैं क्योंकि उनके मूल्य संतृप्त होते हैं, लेकिन हमेशा कम से कम एक छोटे से ग्रेडिएंट होते हैं जो उन्हें दीर्घकालिक रूप से ठीक करने की अनुमति देते हैं।


7
अच्छा टिप्पणी और यह भी घातीय रैखिक इकाइयों (ELUS) जो पते पर एक बेहतर तरीके से कि इस मुद्दे को मदद कर सकते हैं के उल्लेख के लायक है: arxiv.org/abs/1511.07289
padura

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

1
@ एलेक्स: मुझे लगता है कि ReLUs में एक छोटा सा सकारात्मक पूर्वाग्रह जोड़ना आम है। मुझे नहीं पता कि "मरती हुई रेउलू समस्या" से मदद मिलती है, लेकिन यह संभवतया क्रमिक मूल्यों को संख्यात्मक रूप से बहुत अधिक नहीं बदलेगा (क्योंकि ढाल रेला के लिए 1 या 0 है, और यह तब है जब यह 1 है कि यह ओवरशूट कर सकता है, छोटे शुरुआती पूर्वाग्रह बहुत कम अंतर करते दिखाई देंगे)। ज्यादातर मुझे लगता है कि यह शुरुआती सीखने के लिए एक छोटा बढ़ावा जोड़ने के लिए सिर्फ एक चाल है - लेकिन यह एक बेहतर शुरुआत प्राप्त करने में मदद कर सकता है, और आमतौर पर कम ग्रेडिएंट्स जल्द ही हो सकता है।
नील स्लेटर

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

1
@anu: धीरे-धीरे वंश द्वारा। एक बड़ा पॉजिटिव ग्रेडिएंट, जो एक बड़ी एरर वैल्यू के कारण होता है, जिसके कारण बायस टर्म का एक भी स्टेप काफी बड़ा हो सकता है कि यह न्यूरॉन को "मारता है", ताकि यह एक स्टेट (वेट और बायस के लिए) तक पहुंच जाए जो कि भविष्य के इनपुट्स ReLU फ़ंक्शन कभी भी 0. से ऊपर नहीं बढ़ता है
नील स्लेटर

102

आइए समीक्षा करें कि ReLU (रेक्टीफाइड लीनियर यूनिट) कैसा दिखता है:

कुछ इनपुट के लिए संशोधक के लिए इनपुट है z n = कश्मीर Σ मैं = 0 डब्ल्यू मैं एक n मैं वजन के लिए डब्ल्यू मैं पिछले परत से, और सक्रियण एक n मैं उस विशेष इनपुट के लिए एक्स एन । रेक्टिफायर न्यूरॉन फंक्शन R e L U = m a x ( 0 , z n ) हैएक्सn

zn=Σमैं=0wमैंमैंn
wमैंमैंnएक्सnआरएलयू=एक्स(0,zn)

एक बहुत ही सरल त्रुटि उपाय मानते हुए

आरआरआर=आरएलयू-y

: संशोधक backpropagation एल्गोरिथ्म के डेल्टा के लिए केवल 2 संभव ढाल मान हैं और इतने एक निश्चित वजन के लिए (यदि हम उचित त्रुटि उपाय का उपयोग करें, तो 1 कुछ और हो जाएगा, लेकिन 0 रहना होगा ही)wj: आरआरआर=आरआरआर

आरआरआरzn=δn={1zn00zn<0
wजे
आरआरआर=आरआरआरwजे=आरआरआरzn×znwजे=δn×जेn={जेnzn00zn<0

एक सवाल जो मन में आता है वह यह है कि वास्तव में ReLU बाईं ओर ढाल 0 के साथ "बिल्कुल" कैसे काम करता है । क्या होगा अगर, इनपुट x n के लिए , वर्तमान वज़न ने ReLU को बाएं सपाट पक्ष पर रखा, जबकि यह विशेष रूप से इनपुट के लिए दाईं ओर होना चाहिए? ढाल 0 है और इसलिए वजन अपडेट नहीं किया जाएगा, एक छोटा सा भी नहीं, इसलिए इस मामले में "सीखने" कहां है?=एक्सn

एक्सnएक्स*

zn<0

आरएलयू=एक्स(0.1एक्स,एक्स)यहां छवि विवरण दर्ज करें


क्या आप सुधारक के लिए इनपुट के सूत्र में पूर्वाग्रह शब्द नहीं भूल रहे हैं?
टॉम हेल

मुझे लगता है कि मैंने कुछ पाठ्यपुस्तकों की धारणा का अनुसरण किया है जो मानती हैं कि सभी परतों के लिए a_0 = 1 है, और w_0 पूर्वाग्रह है। पूर्वाग्रह महत्वपूर्ण नहीं है इसलिए इसे वैसे भी छोड़ देना बेहतर है
मोहम्मद इज़

@ मोहम्मदजी, मुझे आपकी बात समझ में नहीं आई What if, for the input 𝑥𝑛, the current weights put the ReLU on the left flat side while it optimally should be on the right side for this particular input ?, अगर इनपुट नकारात्मक है, तो ग्रेडिएंट 0 होगा? क्या इस मामले के लिए इष्टतम है? क्या आप इसे समझने में मदद कर सकते हैं?
अनु

1
इष्टतम से मेरा मतलब था कि, अगर नेटवर्क को इस इनपुट के लिए बेहतर पूर्वानुमान करने के लिए वज़न को समायोजित करने की आवश्यकता है ताकि ReLU एक सकारात्मक मूल्य दे, तो यह 0 ग्रेडिएंट के कारण यह समायोजन करने में सक्षम नहीं होगा फ्लैट की तरफ।
मोहम्मदीज़

अद्भुत जवाब। धन्यवाद
डेविड रेफेली

13

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

एल(डब्ल्यू)एलएलडब्ल्यूएल

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

एक ReLU MLP में विभिन्न आरंभीकरण रणनीतियों के साथ सक्रियण

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

गणितीय परिशिष्ट

एलएक्सजे(मैं)जेमैं(रों)=अधिकतम(0,रों)रोंजे(मैं)(मैं+1)मैं(मैं+1)

एलwजे(मैं)=एलएक्स(मैं+1)एक्स(मैं+1)wजे(मैं)

wजे(मैं)

एक्स(मैं+1)wजे(मैं)=(रोंजे(मैं))रोंजे(मैं)रोंजे(मैं)wजे(मैं)='(रोंजे(मैं))एक्सजे(मैं)

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


महान व्याख्या!, क्या आप कृपया मुझे यह समझने में मदद कर सकते Therefore, if your inputs are on roughly the same scale, a large step in the direction of the gradient can leave you with weights that give similar inputs which can end up being negative.हैं कि यदि इनपुट को सामान्य किया जाता है तो वज़न कितना नकारात्मक हो रहा है?
अनु

w-λwλww

@ जॉनसनजिया, महान, मुझे यह मिल गया :), एक और स्पष्टीकरण की आवश्यकता है, यह वजन के मुकाबले पूर्वाग्रह के मामले में विशेष रूप से बुरा क्यों है क्योंकि वजन और पूर्वाग्रह दोनों पर नकारात्मक योगदान हो सकता है, मुझे गलत होने पर सही करें?
अनु

z=wएक्स+zएक्स


4

"डाइंग रेएलयू" न्यूरॉन को संदर्भित करता है जो प्रशिक्षण सेट में आपके डेटा के लिए 0 आउटपुट देता है। ऐसा इसलिए होता है क्योंकि सभी इनपुट पैटर्न के लिए एक न्यूरॉन (जिसे सक्रियण भी कहा जाता है ) में भार * इनपुट का योग बनता है। यह ReLU को आउटपुट 0 का कारण बनता है। जैसा कि ReLU का व्युत्पन्न इस मामले में 0 है, कोई भी वेट अपडेट नहीं किया जाता है और न्यूरॉन 0 आउटपुट पर अटक जाता है।

ध्यान देने योग्य बातें:

  1. मरते हुए ReLU का मतलब यह नहीं है कि परीक्षण के समय भी न्यूरॉन का आउटपुट शून्य रहेगा। वितरण के अंतर के आधार पर यह मामला हो सकता है या नहीं भी हो सकता है।
  2. मरते हुए ReLU स्थायी मृत नहीं है। आप नए प्रशिक्षण डेटा जोड़ने या नए प्रशिक्षण के लिए पहले से प्रशिक्षित मॉडल का उपयोग करते हैं, इन न्यूरॉन्स सकता है आराम से बैठ जाएं!
  3. तकनीकी रूप से मरने वाले ReLU में सभी प्रशिक्षण डेटा के लिए 0 आउटपुट नहीं है। ऐसा हो सकता है कि यह कुछ डेटा के लिए गैर-शून्य आउटपुट करता है, लेकिन युगों की संख्या काफी वजन को स्थानांतरित करने के लिए पर्याप्त नहीं है।
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.