मानक सामान्यीकरण के विपरीत सॉफ्टमैक्स का उपयोग क्यों करें?


159

तंत्रिका नेटवर्क के आउटपुट स्तर में, प्रायिकता वितरण को अनुमानित करने के लिए सॉफ्टमैक्स फ़ंक्शन का उपयोग करना विशिष्ट है:

यहां छवि विवरण दर्ज करें

घातांक के कारण यह गणना करना महंगा है। बस एक Z ट्रांसफॉर्म क्यों नहीं किया जाता है ताकि सभी आउटपुट पॉजिटिव हों, और फिर सभी आउटपुट के योग द्वारा सभी आउटपुट को विभाजित करके सामान्य करें?


8
फॉलोवर्स की वजह से फंक्शन की गणना करना महंगा नहीं है, बल्कि इसलिए कि आपको हर क्यूज की गणना करने की जरूरत है। आवश्यक मात्रा की कुल मात्रा की तुलना में घातांक सस्ता है।
सेप्पो एनरवी

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

इसे भी देखें: आँकड़े। ई
मार्टिन

जवाबों:


166

मानक सामान्यीकरण की तुलना में सॉफ्टमैक्स की एक अच्छी विशेषता है।

यह एक समान वितरण के साथ अपने तंत्रिका जाल की कम उत्तेजना (धुंधली छवि) के लिए प्रतिक्रिया करता है और 0 और 1 के करीब संभावनाओं के साथ उच्च उत्तेजना (यानी बड़ी संख्या, कुरकुरा छवि लगता है) के लिए।

जबकि मानक सामान्यीकरण तब तक देखभाल नहीं करता है जब तक कि अनुपात समान न हो।

एक नज़र डालें कि क्या होता है जब नरम अधिकतम में 10 गुना बड़ा इनपुट होता है, यानी आपके तंत्रिका जाल को एक कुरकुरा छवि मिली और बहुत सारे न्यूरॉन्स सक्रिय हो गए।

>>> softmax([1,2])              # blurry image of a ferret
[0.26894142,      0.73105858])  #     it is a cat perhaps !?
>>> softmax([10,20])            # crisp image of a cat
[0.0000453978687, 0.999954602]) #     it is definitely a CAT !

और फिर इसे मानक सामान्यीकरण के साथ तुलना करें

>>> std_norm([1,2])                      # blurry image of a ferret
[0.3333333333333333, 0.6666666666666666] #     it is a cat perhaps !?
>>> std_norm([10,20])                    # crisp image of a cat
[0.3333333333333333, 0.6666666666666666] #     it is a cat perhaps !?

16
यह उत्तर सैद्धांतिक आधार पर ध्यान केंद्रित करने के बजाय घातांक का उपयोग करने के प्रभाव को दिखाता है । (जो माहान है)। इसे शीर्ष उत्तर की शुरुआत में शामिल किया जाना चाहिए। यह देखने के बाद कि कैसे, और किस हद तक, घातांक मानों को फैलाता है, शीर्ष उत्तर यह समझाने में मदद करता है कि आप ऐसा क्यों चाहते हैं।
इयान डैनफोर्थ 20

@IanDanforth मैं आपसे सहमत हूँ। भीख माँगनी चाहिए।
हितेश

11
निश्चित नहीं है कि यह उत्तर सबसे अधिक मतदान क्यों है। [१,२] एक धुंधली छवि के अनुरूप क्यों है जबकि [१०,२०] एक तेज छवि के अनुरूप हैं? यह केवल स्केलिंग का मामला है और दोनों मामले अनिवार्य रूप से समान हैं। यदि कुछ भी हो, तो यह मानक सामान्यीकरण का समर्थन करना चाहिए, जो दो मामलों को बराबर मानता है।
user118967

जब मूल्यों को पहले से ही [0, 1] में होने की गारंटी दी जाती है, क्या अभी भी राशि द्वारा विभाजित करने के बजाय सॉफ्टमैक्स लेने का कोई फायदा है?
मार्टिन थोमा

58

मैंने महीनों तक यह सवाल किया है। ऐसा लगता है जैसे हमने सॉफ्टमैक्स को केवल एक आउटपुट फ़ंक्शन के रूप में अनुमान लगाया है और फिर लॉग-प्रायिकता के रूप में सॉफ्टमैक्स पर इनपुट की व्याख्या करते हैं। जैसा कि आपने कहा, क्यों नहीं सभी योगों को उनकी राशि से विभाजित करके सामान्य किया जाए? मुझे दीप लर्निंग पुस्तक में गुडफेलो, बेंगियो और कोर्टविल (2016) द्वारा खंड 6.2.2 में उत्तर मिला।

मान लीजिए कि हमारी अंतिम छिपी हुई परत हमें सक्रियण के रूप में z देती है। फिर सॉफ्टमैक्स को परिभाषित किया गया है

बहुत छोटी व्याख्या

सॉफ्टमैक्स फंक्शन में विस्तार, क्रॉस-एन्ट्रापी लॉस में लॉग को लगभग रद्द कर देता है, जिससे नुकसान z_i में लगभग रैखिक हो जाता है। यह मोटे तौर पर निरंतर ढाल की ओर जाता है, जब मॉडल गलत होता है, जिससे यह जल्दी से सही होने की अनुमति देता है। इस प्रकार, एक गलत संतृप्त सॉफ्टमैक्स एक लुप्तप्राय ढाल का कारण नहीं बनता है।

संक्षिप्त व्याख्या

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

अब, हम केवल पहले से दिए गए z के साथ यहां सॉफ्टमैक्स पर ध्यान केंद्रित करते हैं, इसलिए हम बदल सकते हैं

मैं kth नमूने का सही वर्ग होने के साथ। अब, हम देखते हैं कि जब हम नमूने के लॉग-लिक्विडिटी की गणना करने के लिए सॉफ्टमैक्स का लॉगरिदम लेते हैं, तो हम:

, जो z में बड़े अंतर के लिए लगभग सन्निकट है

सबसे पहले, हम यहाँ रैखिक घटक z_i देखते हैं। दूसरे, हम दो मामलों के लिए अधिकतम (z) के व्यवहार की जांच कर सकते हैं:

  1. यदि मॉडल सही है, तो अधिकतम (z) z_i होगा। इस प्रकार, z-i और z में अन्य प्रविष्टियों के बीच बढ़ते अंतर के साथ लॉग-लाइबिलिटी asymptotes शून्य (अर्थात 1 की संभावना) है।
  2. यदि मॉडल गलत है, तो अधिकतम (z) कुछ अन्य z_j> z_i होगा। तो, z_i का जोड़ पूरी तरह से -z_j को रद्द नहीं करता है और लॉग-लाइबिलिटी लगभग (z_i - z_j) है। यह स्पष्ट रूप से मॉडल को बताता है कि लॉग-लाइक बढ़ाने के लिए क्या करना चाहिए: z_i बढ़ाएं और z_j घटाएं।

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

लंबी व्याख्या

यदि सॉफ्टमैक्स आपको अभी भी एक मनमानी पसंद लगता है, तो आप लॉजिस्टिक रिग्रेशन में सिग्मोइड का उपयोग करने के औचित्य पर एक नज़र डाल सकते हैं:

कुछ और के बजाय सिग्मोइड फ़ंक्शन क्यों?

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


नमस्ते, क्या आप कृपया इस कथन की व्याख्या कर सकते हैं और आप कैसे अनुमान लगाने में सक्षम थे? ", जो z में बड़े अंतर के लिए लगभग सन्निकट है"
लंदन लड़का

45

मुझे स्पष्टीकरण बहुत अच्छा लगने लगा है: CS231n: विजुअल रिकॉग्निशन के लिए कन्वर्नल न्यूरल नेटवर्क्स।

सतह पर सॉफ्टमैक्स एल्गोरिथ्म एक साधारण गैर-रेखीय लगता है (हम घातांक के साथ डेटा फैला रहे हैं) सामान्यीकरण। हालाँकि, इससे कहीं अधिक है।

विशेष रूप से कुछ अलग-अलग विचार हैं ( ऊपर जैसा ही लिंक ):

  1. सूचना सिद्धांत - सूचना सिद्धांत के दृष्टिकोण से सॉफ्टमैक्स फ़ंक्शन को भविष्यवाणियों और सच्चाई के बीच क्रॉस-एंट्रोपी को कम करने की कोशिश के रूप में देखा जा सकता है।

  2. संभाव्य दृश्य - इस दृष्टिकोण से हम वास्तव में लॉग-संभाव्यता को देख रहे हैं, इस प्रकार जब हम प्रदर्शन करते हैं तो हम कच्ची संभावनाओं के साथ समाप्त होते हैं। इस मामले में सॉफ्टमैक्स समीकरण MLE (अधिकतम संभावना अनुमान) लगता है

सारांश में, भले ही सॉफ्टमैक्स समीकरण ऐसा लगता है कि यह मनमाना हो सकता है यह नहीं है। यह वास्तव में भविष्यवाणियों और सत्य के बीच क्रॉस-एन्ट्रापी / नकारात्मक संभावना को कम करने के लिए वर्गीकरण को सामान्य करने का एक बल्कि प्रधान तरीका है।


2
पिछली टिप्पणियों में जोड़ने के लिए, सॉफ्टमैक्स फ़ंक्शन का व्युत्पन्न सिर्फ सॉफ्टमैक्स (1-सॉफ्टमैक्स) है
रूजबेह

11
मुझे क्रॉस-एन्ट्रॉपी लॉस का उपयोग करने के कारण मिलते हैं, लेकिन यह सॉफ्टमैक्स से कैसे संबंधित है? आपने कहा "सॉफ्टमैक्स फ़ंक्शन को भविष्यवाणियों और सच्चाई के बीच क्रॉस-एंट्रोपी को कम करने की कोशिश के रूप में देखा जा सकता है"। मान लीजिए, मैं मानक / रैखिक सामान्यीकरण का उपयोग करूंगा, लेकिन फिर भी क्रॉस-एंट्रॉपी लॉस का उपयोग करूंगा। फिर मैं क्रॉस-एंट्रॉपी को कम से कम करने की भी कोशिश करूंगा। तो संख्यात्मक लाभों को छोड़कर सॉफ्टमैक्स को क्रॉस-एन्ट्रॉपी से कैसे जोड़ा जाता है?
किलियन बैट्ज़नर

18
संभावित दृष्टिकोण के लिए: लॉग संभावनाओं को देखने के लिए प्रेरणा क्या है? रीज़निंग थोड़ा सा लगता है जैसे "हम सॉफ्टमैक्स में e ^ x का उपयोग करते हैं, क्योंकि हम x को लॉग-प्रोबैबिलिटी के रूप में व्याख्या करते हैं"। उसी तर्क के साथ हम कह सकते हैं, हम सॉफ्टमैक्स में e ^ e ^ e ^ x का उपयोग करते हैं, क्योंकि हम x को लॉग-लॉग-लॉग-प्रायिकता (यहां अतिशयोक्ति) के रूप में व्याख्या करते हैं। मुझे सॉफ्टमैक्स के संख्यात्मक लाभ मिलते हैं, लेकिन इसका उपयोग करने के लिए सैद्धांतिक प्रेरणा क्या है?
काइलियन बत्ज़नेर

5
@KilianBatzner यदि एक न्यूरॉन का आउटपुट एक लॉग प्रायिकता है, तो कई न्यूरॉन्स के आउटपुट का योग उनकी संभावनाओं का गुणन है। यह आमतौर पर संभावनाओं के योग से अधिक उपयोगी है।
ऑलटॉम

1
@KilianBatzner यदि आपकी विशेषताएं विभिन्न गाऊसी समूहों (प्रति वर्ग क्लस्टर पर) से आती हैं, तो आप एक आदर्श क्लासिफायर (लॉजिस्टिक रिग्रेशन) प्राप्त कर सकते हैं। कुछ अतिरिक्त शर्तें हैं, लेकिन अनिवार्य रूप से आप सॉफ्टमैक्स को न्यायोचित / व्युत्पन्न कर सकते हैं और इस धारणा के साथ लॉग इन कर सकते हैं कि आप गाऊसी समूहों को अलग करना चाहते हैं।
अधिकतम

16

Q_i का मान लॉग-लाइबिलिटी को दर्शाता है। संभाव्यता मानों को पुनर्प्राप्त करने के लिए, आपको उन्हें प्रतिपादक करने की आवश्यकता है।

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

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

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


12
q_i स्पष्ट रूप से लॉग-लाइलीहुड का प्रतिनिधित्व नहीं करता है। यह केवल तब होता है जब हम सॉफ्टमैक्स का उपयोग करते हैं जिसे हम स्पष्ट रूप से मानते हैं कि वे करते हैं।
टॉम

6

हम एक मल्टीस्कूलर वर्गीकरण समस्या को देख रहे हैं। यही है, अनुमानित चर श्रेणियों में से yएक को ले जा सकता है k, जहां k > 2। प्रायिकता सिद्धांत में, यह आमतौर पर एक बहुराष्ट्रीय वितरण द्वारा प्रतिरूपित होता है। बहुराष्ट्रीय वितरण घातीय परिवार वितरण का एक सदस्य है। हम P(k=?|x)घातीय परिवार के वितरण के गुणों का उपयोग करके संभावना को फिर से संगठित कर सकते हैं , यह सॉफ्टमैक्स सूत्र के साथ मेल खाता है।

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

अधिक जानकारी और एक औपचारिक व्युत्पत्ति के लिए कृपया CS229 लेक्चर नोट्स (9.3 सॉफ्टमैक्स रिग्रेशन) देखें

इसके अतिरिक्त, आमतौर पर सॉफ्टमैक्स के लिए एक उपयोगी ट्रिक है: सॉफ्टमैक्स (x) = सॉफ्टमैक्स (x + c) , सॉफ्टमैक्स इनपुट में निरंतर ऑफसेट के लिए अपरिवर्तनीय है।

छवि विवरण दर्ज करें


यह सक्रियण फ़ंक्शन के रूप में कैसे काम करता है, क्योंकि यह 'x' और 'x + c' के लिए समान मान लौटा रहा है?
सुरेश पोखरेल

1
सख्ती से बोलना, softmaxसक्रियण कार्य नहीं है। एक्टिवेशन फंक्शन एक तत्व-वार ऑपरेशन है - एक टेंसर तत्व-बुद्धिमानी से एक गैर-लीनियर ऑपरेशन करके दूसरे टेंसर का उत्पादन करना। लेकिन softmaxएक वेक्टर ऑपरेशन है, यह आपको एक सामान्यीकृत वेक्टर का उत्पादन करता है, प्रत्येक तत्व के बीच आंतरिक निर्भरता है।
गेब्रियलचू

5

मुझे लगता है कि इसका एक कारण शून्य से नकारात्मक संख्या और विभाजन से निपटना हो सकता है, क्योंकि एक्सप (एक्स) हमेशा सकारात्मक और शून्य से अधिक होगा।

उदाहरण के a = [-2, -1, 1, 2]लिए योग 0 होगा, हम सॉफ्टमैक्स का उपयोग शून्य से विभाजन से बचने के लिए कर सकते हैं।


3
आम तौर पर आप न्यूनतम को घटाते हैं और अधिकतम / योग से विभाजित करते हैं। आपके मामले में जो [0, 1, 3, 4]तब विभाजित होगा।
ubershmekel

1
@ubershmekel इस समस्या में चलता है कि सबसे छोटे स्कोर वाले वर्ग को हमेशा 0. की संभावना सौंपी जाएगी
एलेसेंड्रो पावर

4

मान लीजिए कि हम सॉफ्टमैक्स फ़ंक्शन को बदलते हैं, तो आउटपुट एक्टिविटीज़ द्वारा दी जाती हैं यहां छवि विवरण दर्ज करें

जहां cएक सकारात्मक स्थिरांक है। ध्यान दें कि c=1मानक सॉफ्टमैक्स फ़ंक्शन से मेल खाती है। लेकिन अगर हम एक अलग मूल्य का उपयोग करते हैं, तो हमें cएक अलग फ़ंक्शन मिलता है, जो कि सॉफ्टमैक्स के समान गुणात्मक रूप से होता है। विशेष रूप से, दिखाते हैं कि आउटपुट एक्टिविटीज प्रायिकता वितरण का निर्माण करती है, जैसे कि सामान्य सॉफ्टमैक्स के लिए। मान लीजिए कि हम cबड़े बनने की अनुमति देते हैं , अर्थात c→∞। आउटपुट सक्रियण के लिए सीमित मूल्य क्या है a^L_j? इस समस्या को हल करने के बाद आपको यह स्पष्ट होना चाहिए कि हम c=1फ़ंक्शन को अधिकतम फ़ंक्शन के "नरम" संस्करण के रूप में क्यों सोचते हैं । यह "सॉफ्टमैक्स" शब्द की उत्पत्ति है। आप इस स्रोत से विवरण का अनुसरण कर सकते हैं (समीकरण 83)।


मेरे लिए, अधिकतम फ़ंक्शन के "नरम" संस्करण का विचार सॉफ्टमैक्स के उपयोग को सही ठहराने का सबसे सरल तरीका है।
tashuhka

3

Piotr Czapla उत्तर को जोड़ने, अधिक से अधिक इनपुट मान, अधिकतम इनपुट के लिए अधिक संभावना, उसी अनुपात में और अन्य इनपुट की तुलना में:

यहां छवि विवरण दर्ज करें


2

सॉफ्टमैक्स फ़ंक्शन का विकल्प किसी भी तरह से मनमाना लगता है क्योंकि कई अन्य संभावित सामान्यीकरण कार्य हैं। इस प्रकार यह स्पष्ट नहीं है कि लॉग-सॉफ्टमैक्स लॉस अन्य नुकसान विकल्पों की तुलना में बेहतर प्रदर्शन क्यों करेगा।

" सॉफ्टमैक्स अल्टरनेटिव्स की खोज से गोलाकार नुकसान परिवार से संबंधित " से https://arxiv.org/abs/1511.05042

लेखकों ने कुछ अन्य कार्यों का पता लगाया जिनके बीच टेलर विस्तार expऔर तथाकथित गोलाकार सॉफ्टमैक्स हैं और पता चला है कि कभी-कभी वे सामान्य से बेहतर प्रदर्शन कर सकते हैं softmax

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