math - बैकप्रोपैगेशन तंत्रिका नेटवर्क में एक nonlinear सक्रियण समारोह का उपयोग क्यों किया जाना चाहिए?




machine-learning neural-network (6)

मैं तंत्रिका नेटवर्क पर कुछ चीजें पढ़ रहा हूं और मैं एक परत परत तंत्रिका नेटवर्क के सामान्य सिद्धांत को समझता हूं। मैं अतिरिक्त परतों की आवश्यकता को समझता हूं, लेकिन nonlinear सक्रियण कार्यों का उपयोग क्यों किया जाता है?

इस प्रश्न के बाद इसका पालन किया जाता है: बैकप्रोपैगेशन में उपयोग किए गए सक्रियण फ़ंक्शन का व्युत्पन्न क्या होता है?


"वर्तमान पेपर स्टोन-वीयरस्ट्रैस प्रमेय और गैलेंट और व्हाइट के कोसाइन स्क्वायर का उपयोग करता है ताकि यह निर्धारित किया जा सके कि मानक मल्टीलायर फीडफोर्ड नेटवर्क आर्किटेक्चर अनियंत्रित स्क्वैशिंग फ़ंक्शंस का उपयोग करके सटीकता की किसी भी वांछित डिग्री के लिए ब्याज के लगभग किसी भी कार्य का अनुमान लगा सकते हैं, बशर्ते कि बहुत से छिपे हुए हों इकाइयां उपलब्ध हैं। " ( हॉर्निक एट अल।, 1 9 8 9, तंत्रिका नेटवर्क )

एक स्क्वैशिंग फ़ंक्शन उदाहरण के लिए एक nonlinear सक्रियण फ़ंक्शन है जो सिग्मोइड सक्रियण फ़ंक्शन की तरह [0,1] पर नक्शा करता है।


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

वही बात उस मामले के लिए जाती है जहां सभी न्यूरॉन्स में एक्टिन एक्टिवेशन फ़ंक्शन होते हैं (यानी फॉर्म f(x) = a*x + c पर एक सक्रियण फ़ंक्शन, जहां a और c स्थिरांक होते हैं, जो रैखिक सक्रियण कार्यों का सामान्यीकरण होता है) जो इनपुट से आउटपुट तक एक एफ़िन ट्रांसफॉर्मेशन का परिणाम देगा, जो कि बहुत रोमांचक नहीं है।

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


ऐसे समय होते हैं जब एक पूरी तरह से रैखिक नेटवर्क उपयोगी परिणाम दे सकता है। मान लें कि हमारे आकार के साथ तीन परतों का नेटवर्क है (3,2,3)। मध्यम परत को केवल दो आयामों तक सीमित करके, हमें परिणाम मिलता है जो मूल त्रि-आयामी अंतरिक्ष में "सर्वश्रेष्ठ फिट का विमान" होता है।

लेकिन एनएमएफ, पीसीए इत्यादि जैसे इस रूप के रैखिक परिवर्तनों को खोजने के आसान तरीके हैं। हालांकि, यह एक ऐसा मामला है जहां एक बहु-स्तरित नेटवर्क एक परत परत के समान व्यवहार नहीं करता है।


कई न्यूरॉन्स के एक स्तरित एनएन का उपयोग रैखिक रूप से अविभाज्य समस्याओं को जानने के लिए किया जा सकता है। उदाहरण के लिए चरण सक्रियण समारोह के साथ दो परतों के साथ एक्सओआर फ़ंक्शन प्राप्त किया जा सकता है।


यह बिल्कुल एक आवश्यकता नहीं है। वास्तव में, संशोधित रैखिक सक्रियण समारोह बड़े तंत्रिका नेटवर्क में बहुत उपयोगी है। ढाल कंप्यूटिंग बहुत तेज़ है, और यह कम से कम 0 पर सेट करके sparsity प्रेरित करता है।

अधिक जानकारी के लिए निम्नलिखित देखें: https://www.academia.edu/7826776/Mathematical_Intuition_for_Performance_of_Rectified_Linear_Unit_in_Deep_Neural_Networks

संपादित करें:

इस पर कुछ चर्चा हुई है कि संशोधित रैखिक सक्रियण समारोह को रैखिक कार्य कहा जा सकता है या नहीं।

हां, यह तकनीकी रूप से एक nonlinear फ़ंक्शन है क्योंकि यह बिंदु x = 0 पर रैखिक नहीं है, हालांकि, यह कहना अभी भी सही है कि यह अन्य सभी बिंदुओं पर रैखिक है, इसलिए मुझे नहीं लगता कि यह यहां नाइटपिक करने के लिए उपयोगी है,

मैं पहचान समारोह चुन सकता था और यह अभी भी सच होगा, लेकिन मैंने हाल ही में लोकप्रियता के कारण रेएलयू को एक उदाहरण के रूप में चुना है।


सक्रियण समारोह का उद्देश्य नेटवर्क में गैर-रैखिकता पेश करना है

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

गैर-रैखिक का अर्थ है कि आउटपुट को इनपुट के रैखिक संयोजन से पुन: उत्पन्न नहीं किया जा सकता है (जो आउटपुट के समान नहीं है जो सीधी रेखा में प्रस्तुत होता है - इसके लिए शब्द affine है )।

इसके बारे में सोचने का एक और तरीका: नेटवर्क में एक गैर-रैखिक सक्रियण समारोह के बिना, एक एनएन, इससे कोई फर्क नहीं पड़ता कि कितनी परतें थीं, एक परत परत परिक्रमा की तरह व्यवहार करेगी, क्योंकि इन परतों को जोड़ना आपको एक और रैखिक कार्य देगा (ऊपर परिभाषा देखें)।

>>> in_vec = NP.random.rand(10)
>>> in_vec
  array([ 0.94,  0.61,  0.65,  0.  ,  0.77,  0.99,  0.35,  0.81,  0.46,  0.59])

>>> # common activation function, hyperbolic tangent
>>> out_vec = NP.tanh(in_vec)
>>> out_vec
 array([ 0.74,  0.54,  0.57,  0.  ,  0.65,  0.76,  0.34,  0.67,  0.43,  0.53])

बैकप्रॉप ( हाइपरबॉलिक टेंगेंट ) में उपयोग किया जाने वाला एक सामान्य सक्रियण फ़ंक्शन -2 से 2 तक मूल्यांकन किया जाता है:







deep-learning