सॉफ्टमैक्स फलन

सॉफ्टमैक्स फलन, जिसे सॉफ्टर्गमैक्स   या सामान्यीकृत घातांकीय फलन  के रूप से भी जाना जाता है, $K$ वास्तविक संख्याओं के वेक्टर को $K$ संभावित परिणामों के  प्रायिकता वितरण  में परिवर्तित करता है। तथा यह कई आयामों के लिए  तार्किक फलन  का सामान्यीकरण है, जो  बहुराष्ट्रीय तार्किक प्रतिगमन  में उपयोग किया जाता है। सॉफ्टमैक्स फलन का उपयोग अधिकांश  कृत्रिम तंत्रिका नेटवर्क  के अंतिम सक्रियण फलन के रूप में किया जाता है, जो लूस की पसंद के स्वयंसिद्ध आधार पर अनुमानित उत्पाद वर्गों पर प्रायिकता वितरण के लिए नेटवर्क के प्रक्षेपण को सामान्य करता है।

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

मानक (यूनिट) सॉफ्टमैक्स फलन $$\sigma : \R^K \to (0, 1)^K$$ परिभाषित किया गया है, जब  $$K \ge 1$$  सूत्र द्वारा$$\sigma(\mathbf{z})_i = \frac{e^{z_i}}{\sum_{j=1}^K e^{z_j}} \ \ \text{ for } i = 1, \dotsc, K \text{ and } \mathbf{z} = (z_1, \dotsc, z_K) \in \R^K.$$सामान्य शब्दों में यह इनपुट वेक्टर  $$\mathbf z$$  के प्रत्येक तत्व  $$z_i$$ के लिए मानक चर घातांकीय फलन लागू करता है, और इन्हें सामान्य करता है। तथा इन सभी घातांकीयों के योग से विभाजित करके मानों का यह सामान्यीकरण सुनिश्चित करता है कि उत्पादित  वेक्टर के घटकों का योग $$\sigma(\mathbf z)$$ 1 है।

$e$ के अतिरिक्त एक भिन्न आधार (घातांक)  $b > 0$  का उपयोग किया जा सकता है। यदि $0 < b < 1$ छोटे इनपुट घटकों के परिणामस्वरूप अधिक प्रक्षेपण की संभावनाएँ होंगी, तथा b के मान को कम करने से प्रायिकता वितरण बनेंगे जो सबसे छोटे इनपुट मानों की स्थिति के चारों ओर अधिक केंद्रित होते हैं। इसके विपरीत, यदि  $b > 1$, बड़े निवेशित घटकों के परिणामस्वरूप अधिक प्रक्षेपण संभावनाएं होंगी, और मूल्य में वृद्धि होगी तथा $b$ प्रायिकता वितरण बनाएगा, जो सबसे बड़े इनपुट मानों की स्थिति के चारों ओर अधिक होते हैं। $$b = e^\beta$$ या  $$b = e^{-\beta}$$ लिखना वास्तव मे $β$ के लिए अभिव्यक्ति उत्पन्न करता है।$$\sigma(\mathbf{z})_i = \frac{e^{\beta z_i}}{\sum_{j=1}^K e^{\beta z_j}} \text{ or } \sigma(\mathbf{z})_i = \frac{e^{-\beta z_i}}{\sum_{j=1}^K e^{-\beta z_j}} \text{ for } i = 1, \dotsc, K .$$कुछ क्षेत्रों में आधार निश्चित होता है, एक निश्चित पैमाने के अनुरूप, जबकि अन्य में पैरामीटर $β$ भिन्न होता है।

समतल आर्ग मैक्स
सॉफ्टमैक्स एक भ्रामक नाम है, जो फलन अधिकतम समतल  (अधिकतम फलन के लिए समतल सन्निकटन) नहीं है, बल्कि आर्ग मैक्स  फलन के लिए एक सरलतम सन्निकटन है। वह फलन जिसका मान एक घातांक जिसमें अधिकतम होता है। वास्तव में सॉफ्टमैक्स शब्द का उपयोग बारीकी से संबंधित  LogSumExp  फलन के लिए भी किया जाता है, जो कि एक सहज अधिकतम है। इस कारण से कुछ अधिक सटीक शब्द सॉफ्टमैक्स को पसंद करते हैं, लेकिन मशीन लर्निंग में सॉफ्टमैक्स शब्द पारंपरिक है।  इस व्याख्या पर महत्व देने के लिए यह खंड सॉफ्टरमैक्स शब्द का उपयोग करता है।

औपचारिक रूप से आर्ग मैक्स को श्रेणीबद्ध उत्पाद वाले फलन के रूप में मानने के अतिरिक्त $$1, \dots, n$$ (सूचकांक के अनुरूप), उत्पाद के एक गर्म प्रतिनिधित्व के साथ अधिकतम फलन पर विचार करें। (मान लीजिए कि एक अद्वितीय अधिकतम तर्क है)
 * $$\operatorname{arg\,max}(z_1,\, \dots,\, z_n) = (y_1,\, \dots,\, y_n) = (0,\, \dots,\, 0,\, 1,\, 0,\, \dots,\, 0),$$

जहां उत्पादित निर्देशांक $$y_i = 1$$ यदि केवल  $$i$$  का तर्क अधिकतम है $$(z_1, \dots, z_n)$$, अर्थ $$z_i$$ का अद्वितीय अधिकतम मूल्य है $$(z_1,\, \dots,\, z_n)$$. उदाहरण के लिए, इस एन्कोडिंग में $$\operatorname{arg\,max}(1, 5, 10) = (0, 0, 1),$$ चूंकि तीसरा तर्क अधिकतम है।

सभी अधिकतम तर्कों के बीच 1 को विभाजित करके इसे एकाधिक तर्क अधिकतम मानों (एकाधिक बराबर $$z_i$$ अधिकतम होने के लिए) के लिए सामान्यीकृत किया जा सकता है; औपचारिक रूप से 1/k जहां k अधिकतम मानने वाले तर्कों की संख्या है। उदाहरण के लिए  $$\operatorname{arg\,max}(1,\, 5,\, 5) = (0,\, 1/2,\, 1/2),$$ चूंकि दूसरा और तीसरा दोनों ही तर्क अधिकतम हैं। इस परिस्थिति में सभी तर्क समान हैं, यह सरल $$\operatorname{arg\,max}(z, \dots, z) = (1/n, \dots, 1/n).$$ अंक $β$ एकाधिक आर्ग अधिकतम मानों के साथ एक बीजीय विविधता या अद्वितीय समूह बनाते हैं जो विलक्षणताओं के बिंदु होते हैं - ये ऐसे बिंदु हैं जहां arg max जंप अनिरंतरता के साथ असंतुलित होते है - जबकि एकल arg max वाले बिंदु को गैर विलक्षण या नियमित बिंदु के रूप में जाना जाता है।

परिचय में दी गई अंतिम अभिव्यक्ति के साथ सॉफ्टरमैक्स अब आर्गमैक्स का एक सहज सन्निकटन है। $β$ आर्गमैक्स में परिवर्तित हो जाता है। किसी फलन के अभिसरण की विभिन्न अवधारणाएँ हैं। सॉफ्टएर्गमैक्स आर्ग को अधिकतम  बिंदुवार अभिसरण  में परिवर्तित करता है, जिसका अर्थ है प्रत्येक निश्चित इनपुट $−β$ के लिए $(1/n, \dots, 1/n)$,

$$\sigma_\beta(\mathbf{z}) \to \operatorname{arg\,max}(\mathbf{z}).$$ हालाँकि, सॉफ्टरमैक्स समान रूप से आर्ग मैक्स में परिवर्तित  नहीं होता है, जिसका अर्थ है कि सहज रूप से विभिन्न बिंदु अलग-अलग दरों पर अभिसरण करते हैं, और मनमाने तरीके से धीरे-धीरे अभिसरण कर सकते हैं। वास्तव में, सॉफ्टरमैक्स निरंतर है, लेकिन एआरजी मैक्स विलक्षण सेट पर निरंतर नहीं होता है जहां दो निर्देशांक समान हैं, जबकि निरंतर कार्यों की समान सीमा निरंतर है। समान रूप से अभिसरण करने में विफल होने का कारण यह है कि इनपुट के लिए जहां दो निर्देशांक लगभग बराबर होते हैं और एक अधिकतम होता है, तर्क अधिकतम एक या दूसरे का सूचकांक होता है, इसलिए इनपुट में एक छोटा सा बदलाव आउटपुट में बड़ा बदलाव देता है। उदाहरण के लिए, $$\sigma_\beta(1,\, 1.0001) \to (0, 1),$$ लेकिन $$\sigma_\beta(1,\, 0.9999) \to (1,\, 0),$$ तथा $$\sigma_\beta(1,\, 1) = 1/2$$ सभी इनपुट के लिए बिंदु विलक्षण समुच्चय  $$(x, x)$$ के जितने करीब होते हैं, उतनी ही धीमी गति से वे अभिसरित होते हैं। हालांकि, सॉफ़्टर्गमैक्स गैर-विलक्षण सेट पर  कॉम्पैक्ट  रूप से अभिसरण करता है।

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

यह भी परिस्थिति है कि, किसी निश्चित के लिए $β$, यदि एक इनपुट $z$ तापमान के सापेक्ष अन्य की तुलना में बहुत बड़ा है, $$T = 1/\beta$$, आउटपुट लगभग arg अधिकतम है। उदाहरण के लिए, 1 के तापमान के सापेक्ष 10 का अंतर बड़ा होता है।

$$\sigma(0,\, 10) := \sigma_1(0,\, 10) = \left(1/\left(1 + e^{10}\right),\, e^{10}/\left(1 + e^{10}\right)\right) \approx (0.00005,\, 0.99995)$$

हालाँकि, यदि अंतर तापमान के सापेक्ष छोटा है, तो मान आर्गमैक्स के करीब नहीं है। उदाहरण के लिए 10 का अंतर 100 के तापमान के सापेक्ष छोटा होता है। $$\sigma_{1/100}(0,\, 10) = \left(1/\left(1 + e^{1/10}\right),\, e^{1/10}/\left(1 + e^{1/10}\right)\right) \approx (0.475,\, 0.525).$$ जैसा $\beta \to \infty$, तापमान शून्य हो जाता है, $$T = 1/\beta \to 0$$, इसलिए अंततः सभी अंतर बड़े हो जाते हैं घटते तापमान के सापेक्ष, जो सीमा व्यवहार के लिए एक और व्याख्या प्रदान है।

प्रायिकता सिद्धांत
प्रायिकता सिद्धांत में, सॉफ्टर्गमैक्स फलन के आउटपुट का उपयोग एक स्पष्ट वितरण का प्रतिनिधित्व करने के लिए किया जा सकता है - अर्थात, एक प्रायिकता वितरण $\beta \to \infty$ विभिन्न संभावित परिणाम होता है।

सांख्यिकीय यांत्रिकी
सांख्यिकीय यांत्रिकी में, सॉफ्टर्गमैक्स फलन को बोल्ट्ज़मान वितरण या गिब्स वितरण  के रूप में जाना जाता है।  सूचकांक सेट $${1,\, \dots,\, k}$$ प्रणाली के  सूक्ष्म अवस्था  हैं। इनपुट $$z_i$$ उस अवस्था की ऊर्जाएँ हैं, जहाँ विभाजक को विभाजन फलन के रूप में जाना जाता है, जिसे अधिकांश निरूपित किया जाता है  $\beta \to -\infty$ और कारक $β$  शीतलता,  थर्मोडायनामिक बीटा, या  विपरीत तापमान  कहा जाता है।

अनुप्रयोग
सॉफ्टमैक्स फलन का उपयोग विभिन्न बहुवर्गीय श्रेणीविभाजन विधियों में किया जाता है, जैसे कि बहुराष्ट्रीय तार्किक प्रतिगमन जिसे सॉफ्टमैक्स तार्किक भी कहा जाता है, बहुवर्गीय  रैखिक विभेदक विश्लेषण,  अनुभवहीन  बेज वर्गीकारक और कृत्रिम नेटवर्क प्रसार। विशेष रूप से बहुराष्ट्रीय तार्किक प्रतिगमन और रैखिक विभेदक विश्लेषण में फलन के इनपुट का परिणाम होता है $z_i$ विशिष्ट रैखिक कार्य और के लिए साधारण वेक्टर $z$ और भार वेक्टर $x$ दिए जाने पर jth वर्ग के लिए अनुमानित प्रायिकता है।


 * $$P(y=j\mid \mathbf{x}) = \frac{e^{\mathbf{x}^\mathsf{T}\mathbf{w}_j}}{\sum_{k=1}^K e^{\mathbf{x}^\mathsf{T}\mathbf{w}_k}}$$

इसे $\beta \to \infty$  रैखिक कार्यों की संरचना के रूप में देखा जा सकता है  $$\mathbf{x} \mapsto \mathbf{x}^\mathsf{T}\mathbf{w}_1, \ldots, \mathbf{x} \mapsto \mathbf{x}^\mathsf{T}\mathbf{w}_K$$ और सॉफ्टमैक्स फलन (जहाँ $$\mathbf{x}^\mathsf{T}\mathbf{w}$$ के आंतरिक उत्पाद को दर्शाता है $$\mathbf{x}$$ तथा $$\mathbf{w}$$). यह ऑपरेशन $$\mathbf{w}$$ द्वारा परिभाषित एक रैखिक ऑपरेटर को वैक्टर $$\mathbf{x}$$ पर लागू करने के बराबर है, इस प्रकार मूल को बदलना, शायद अत्यधिक  $K$ आयामी अंतरिक्ष में वैक्टर के लिए इनपुट $$\mathbb{R}^K$$ है।

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

चूंकि फलन एक वेक्टर और एक विशिष्ट सूचक $$i$$ को एक वास्तविक मान पर मैप करता है, व्युत्पन्न सूचक को ध्यान में रखना चाहिए।

$$\frac{\partial}{\partial q_k}\sigma(\textbf{q}, i) = \sigma(\textbf{q}, i)(\delta_{ik} - \sigma(\textbf{q}, k)).$$ यह व्यंजक अनुक्रमित में सममित है $$i, k$$ को इस प्रकार भी व्यक्त किया जा सकता है


 * $$ \frac{\partial}{\partial q_k}\sigma(\textbf{q}, i) = \sigma(\textbf{q}, k)(\delta_{ik} - \sigma(\textbf{q}, i)).$$

यहाँ क्रोनकर डेल्टा का उपयोग सादगी के लिए किया जाता है (cf. एक  सिग्मॉइड फलन का व्युत्पन्न फलन के माध्यम से ही व्यक्त किया जा रहा है)।

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

यदि फलन $$\beta$$, पैरामीटर के साथ परिबंधित किया गया है, तो इन अभिव्यक्तियों को $$\beta$$ से गुणा किया जाना चाहिए।

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

प्रबलीकरण सीखना
प्रबलीकरण सीखने के क्षेत्र में मानों को क्रिया संभावनाओं में बदलने के लिए एक सॉफ्टमैक्स फलन का उपयोग किया जा सकता है। सामान्य रूप से उपयोग किया जाने वाला फलन है। $$P_t(a) = \frac{\exp(q_t(a)/\tau)}{\sum_{i=1}^n\exp(q_t(i)/\tau)} \text{,}$$

जहां प्रक्रिया मान $$q_t(a)$$ निम्नलिखित प्रक्रिया के अपेक्षित प्रतिफल के अनुरूप है और $$\tau$$ एक तापमान (पैरामीटर सांख्यिकीय यांत्रिकी के संकेत में) कहा जाता है। उच्च तापमान के लिए $$\tau \to \infty$$ सभी क्रियाओं की संभावना लगभग समान होती है और तापमान जितना कम होता है, उतने अधिक अपेक्षित प्रतिफल प्रायिकता को प्रभावित करते हैं। कम तापमान के लिए $$\tau \to 0^+$$ उच्चतम अपेक्षित प्रतिफल के साथ प्रक्रिया की संभावना 1 हो जाती है।

कम्प्यूटेशनल जटिलता और उपचार
तंत्रिका नेटवर्क अनुप्रयोगों में, संभावित परिणामों की संख्या $Z$ अधिकांश बड़ी होती है, उदा। तंत्रिका  भाषा प्रारूप  के मामले में जो एक शब्दावली से सबसे संभावित परिणाम की पूर्वानुमान करता है जिसमें लाखों संभावित शब्द हो सकते हैं। यह सॉफ्टमैक्स परत के लिए गणना कर सकता है अर्थात आव्यूह गुणन को निर्धारित करने के लिए $$z_i$$, इसके बाद सॉफ्टमैक्स फलन का अनुप्रयोग कम्प्यूटेशनल रूप से महंगा है। क्या अधिक है, इस तरह के तंत्रिका नेटवर्क के प्रशिक्षण के लिए  ग्रेडिएंट डिसेंट बैकप्रोपैजेशन  विधि में प्रत्येक प्रशिक्षण उदाहरण के लिए सॉफ्टमैक्स की गणना करना सम्मिलित है,तथा प्रशिक्षण उदाहरणों की संख्या भी बड़ी हो सकती है। सॉफ्टमैक्स के लिए कम्प्यूटेशनल प्रयास बड़े तंत्रिका भाषा प्रारूप के विकास में एक प्रमुख सीमित कारक बन गया, जो प्रशिक्षण समय को कम करने के लिए विभिन्न उपायों को प्रेरित करता है।

अधिक कुशल गणना के लिए सॉफ्टमैक्स परत को पुनर्गठित करने वाले दृष्टिकोणों में पदानुक्रमित सॉफ्टमैक्स और विभेदित सॉफ्टमैक्स सम्मिलित हैं। पदानुक्रमित सॉफ्टमैक्स 2005 में मोरिन और जोशुआ बेंगियो  द्वारा प्रस्तुत किया गया, यह एक बाइनरी ट्री संरचना का उपयोग करता है जहां परिणाम (शब्दावली शब्द) उत्तरदायित्व होते हैं और मध्यवर्ती नोड्स परिणामों के उपयुक्त रूप से चयनित वर्ग होते हैं, जो  अव्यक्त चर  बनाते हैं। एक उत्तरदायी परिणाम की वांछित प्रायिकता सॉफ्टमैक्स मान की गणना तब रूट से उस पत्ते तक के सभी नोड्स की संभावनाओं के उत्पाद के रूप में की जा सकती है। आदर्श रूप से जब ट्री संतुलित होता है, तो इससे कम्प्यूटेशनल जटिलता कम हो जाएगी $$O(K)$$ प्रति $$O(\log_2 K)$$. व्यवहार में, परिणाम कक्षाओं में परिणामों को समूहबद्ध करने के लिए एक अच्छी रणनीति चुनने पर निर्भर करते हैं। मापनीयता प्राप्त करने के लिए Google के  word2vec  प्रारूप (2013 में पेश) में इसके लिए एक  हफमैन ट्री  का उपयोग किया गया था।

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

गणितीय गुण
ज्यामितीय रूप से सॉफ्टमैक्स फलन वेक्टर स्थल  को सम्बद्ध   करता है।  $$\mathbb{R}^K$$ सिम्प्लेक्स मानक की  सीमा (टोपोलॉजी)  के लिए $$(K-1)$$-सिम्प्लेक्स, आयाम को एक से काटकर (श्रेणी $$(K - 1)$$-आयामी सिंप्लेक्स मे  $$K$$-आयामी अंतरिक्ष),  रैखिक बाधा  के कारण कि सभी आउटपुट योग 1 का अर्थ है, कि यह एक  अधिसमतल  पर स्थित होता है।

मुख्य विकर्ण के साथ $$(x,\, x,\, \dots,\, x),$$ सॉफ्टमैक्स आउटपुट पर सिर्फ एक समान वितरण है $$(1/n, \dots, 1/n)$$: समान स्कोर से समान संभावनाएँ प्राप्त होती हैं।

अधिक सामान्यतः, सॉफ्टमैक्स अनुवाद के तहत प्रत्येक समन्वय में समान मान द्वारा अपरिवर्तनीय है। जोड़ना $$\mathbf{c} = (c,\, \dots,\, c)$$ इनपुट के लिए $$\mathbf{z}$$ पैदावार $$\sigma(\mathbf{z} + \mathbf{c}) = \sigma(\mathbf{z})$$, क्योंकि यह प्रत्येक घातांक को उसी कारक से गुणा करता है, $$e^c$$ ($$e^{z_i + c} = e^{z_i} \cdot e^c$$), इसलिए अनुपात नहीं बदलते हैं।


 * $$\sigma(\mathbf{z} + \mathbf{c})_j = \frac{e^{z_j + c}}{\sum_{k=1}^K e^{z_k + c}} = \frac{e^{z_j} \cdot e^c}{\sum_{k=1}^K e^{z_k} \cdot e^c} = \sigma(\mathbf{z})_j.$$

ज्यामितीय रूप से, सॉफ्टमैक्स विकर्णों के साथ स्थिर है। यह वह आयाम है जो समाप्त हो गया है, और सॉफ्टमैक्स आउटपुट इनपुट स्कोर में अनुवाद से स्वतंत्र होने के अनुरूप है (0 स्कोर का विकल्प)। कोई यह मानकर इनपुट स्कोर को सामान्य कर सकता है कि योग शून्य है (औसत घटाएं: $$\mathbf{c}$$ जहाँ पर $c = \frac{1}{n} \sum z_i$ ), और फिर सॉफ्टमैक्स उन बिंदुओं का अधिसमतल लेता है।  जिनका योग शून्य होता है, $\sum z_i = 0$, घनात्मक मानों के खुले सिंप्लेक्स के लिए जिसका योग 1 है $\sum \sigma(\mathbf{z})_i = 1$ , उसी प्रकार जैसे घातांक 0 से 1 लेता है, $$e^0 = 1$$ और घनात्मक होता है। इसके विपरीत सॉफ्टमैक्स स्केलिंग के तहत अपरिवर्तनीय नहीं होते है।

उदाहरण के लिए, $$\sigma\bigl((0,\, 1)\bigr) = \bigl(1/(1 + e),\, e/(1 + e)\bigr)$$ लेकिन $$\sigma\bigl((0, 2)\bigr) = \bigl(1/\left(1 + e^2\right),\, e^2/\left(1 + e^2\right)\bigr).$$

मानक तार्किक फलन 2-आयामी अंतरिक्ष में 1-आयामी अक्ष के लिए विशेष परिस्थिति होती है, x -अक्ष में कहें $w$ समतल एक चर 0 पर तय किया गया है। (माना $$z_2 = 0$$), इसलिए $$e^0 = 1$$, और अन्य चर भिन्न हो सकते हैं, इसे निरूपित करें $$z_1 = x$$, इसलिए $e^{z_1}/\sum_{k=1}^2 e^{z_k} = e^x/\left(e^x + 1\right),$  मानक तार्किक फलन $e^{z_2}/\sum_{k=1}^2 e^{z_k} = 1/\left(e^x + 1\right),$  इसका  अनुपूरण (जिसका अर्थ है कि वे 1 तक जोड़ते हैं)। 1-आयामी इनपुट को वैकल्पिक रूप से रेखा के रूप में व्यक्त किया जा सकता है $$(x/2,\, -x/2)$$, आउटपुट के साथ $$e^{x/2}/\left(e^{x/2} + e^{-x/2}\right) = e^x/\left(e^x + 1\right)$$ तथा $$e^{-x/2}/\left(e^{x/2} + e^{-x/2}\right) = 1/\left(e^x + 1\right).$$

सॉफ्टमैक्स फलन भी LogSumExp फलन का ग्रेडिएंट है, एक सहज अधिकतम-


 * $$\frac{\partial}{\partial z_i} \operatorname{LSE}(\mathbf{z}) = \frac{\exp z_i}{\sum_{j=1}^{K} \exp z_j} = \sigma(\mathbf{z})_i, \quad \text{ for } i = 1, \dotsc, K, \quad \mathbf{z} = (z_1,\, \dotsc,\, z_K) \in\R^K,$$

जहाँ LogSumExp फलन को इस रूप में परिभाषित किया गया है $$\operatorname{LSE}(z_1,\, \dots,\, z_n) = \log\left(\exp(z_1) + \cdots + \exp(z_n)\right)$$.

इतिहास
सॉफ्टमैक्स फलन का उपयोग सांख्यिकीय यांत्रिकी में बोल्ट्जमैन वितरण के रूप में फाउंडेशनल पेपर में किया गया था, प्रभावशाली पाठ्यपुस्तक. में औपचारिक और लोकप्रिय हुआ।

निर्णय सिद्धांत में सॉफ्टमैक्स के उपयोग का श्रेय ,  को दिया जाता है, जिन्होंने तर्कसंगत पसंद सिद्धांत में  अप्रासंगिक विकल्पों की स्वतंत्रता  के स्वयंसिद्ध सिद्धांत का उपयोग करके सापेक्षिक प्राथमिकताओं के लिए लूस की पसंद के स्वयंसिद्ध सॉफ्टमैक्स को निकाला गया।

मशीन लर्निंग में, सॉफ्टमैक्स शब्द का श्रेय जॉन एस. ब्रिडल को 1989 के दो सम्मेलन पत्रों मे :  और : में दिया जाता है।

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

"किसी भी इनपुट के लिए, सभी आउटपुट धनात्मक होने चाहिए तथा उनका योग मे एकता होना चाहिए। अनियंत्रित मानों के एक सेट को देखते हुए, $β$, हम सामान्यीकृत घातीय परिवर्तन का उपयोग करके दोनों स्थितियों को सुनिश्चित कर सकते हैं। $Q_j(x) = \left. e^{V_j(x)} \right/ \sum_k e^{V_k(x)} $ इस परिवर्तन को तार्किक का एक बहु-इनपुट सामान्यीकरण माना जा सकता है, जो संपूर्ण आउटपुट परत पर काम करता है। तथा यह अपने इनपुट मानों के स्थिति क्रम को संरक्षित करता है, और अधिकतम मान चुनने के विनर-टेक-ऑल' ऑपरेशन का एक अलग-अलग सामान्यीकरण होता है। इस कारण से हम इसे सॉफ्टमैक्स के रूप में संदर्भित करना पसंद करते हैं।"

उदाहरण
यदि हम $(x, y)$ का इनपुट लेते हैं तो उसका सॉफ्टमैक्स $[1, 2, 3, 4, 1, 2, 3]$ है। आउटपुट का अधिकांश वजन वहीं होता है जो 4 मूल इनपुट में था। यह वह है जिसके लिए फलन का सामान्य रूप से उपयोग किया जाता है: सबसे बड़े मानों को उजागर करने और उन मानों को दबाने के लिए जो अधिकतम मूल्य से काफी नीचे हैं। लेकिन सॉफ्टमैक्स स्केल अपरिवर्तनीय नहीं होते है, इसलिए यदि इनपुट $[0.024, 0.064, 0.175, 0.475, 0.024, 0.064, 0.175]$ (जो 1.6 के बराबर है) थे तो सॉफ्टमैक्स $[0.1, 0.2, 0.3, 0.4, 0.1, 0.2, 0.3]$ होगा। इससे पता चलता है कि 0 और 1 सॉफ्टमैक्स के बीच के मूल्यों के लिए, वास्तव में, अधिकतम मान पर महत्व दिया जाता है। (कि 0.169 न केवल 0.475 से कम है, यह 0.4/1.6 = 0.25 के प्रारंभिक अनुपात से भी कम है)।

पायथन (प्रोग्रामिंग भाषा) कोड का उपयोग करके इस उदाहरण की गणना:

>>> import numpy as np

>>> a = [1.0, 2.0, 3.0, 4.0, 1.0, 2.0, 3.0]

>>> np.exp(a) / np.sum(np.exp(a))

array([0.02364054, 0.06426166, 0.1746813, 0.474833, 0.02364054,       0.06426166, 0.1746813]) यह जूलिया (प्रोग्रामिंग भाषा) कोड का एक उदाहरण दिया गया है। julia> A = [1.0, 2.0, 3.0, 4.0, 1.0, 2.0, 3.0]; # semicolon to suppress interactive output julia> exp.(A) ./ sum(exp.(A)) 7-element Array{Float64,1}: 0.0236405 0.0642617  0.174681  0.474833  0.0236405  0.0642617 यह R (प्रोग्रामिंग भाषा) कोड का एक उदाहरण दिया गया है।

> z <- c(1.0, 2.0, 3.0, 4.0, 1.0, 2.0, 3.0)

> softmax <- exp(z)/sum(exp(z))

> softmax

[1] 0.02364054 0.06426166 0.17468130 0.47483300 0.02364054 0.06426166 0.17468130

यह अमृत (प्रोग्रामिंग भाषा) कोड का एक उदाहरण है।

iex> t = Nx.tensor(1, 2], [3, 4)

iex> Nx.divide(Nx.exp(t), Nx.sum(Nx.exp(t))

Nx.Tensor<

f64[2][2]

[

[0.03205860328008499, 0.08714431874203257],

[0.23688281808991013, 0.6439142598879722]

]

>

यह राकू (प्रोग्रामिंग भाषा) कोड का एक उदाहरण है।

> my @z = [1.0, 2.0, 3.0, 4.0, 1.0, 2.0, 3.0];

> say @z.map: {exp($_)/sum(@z.map: {exp($_)})}

(0.023640543021591385 0.06426165851049616 0.17468129859572226 0.4748329997443803 0.023640543021591385 0.06426165851049616 0.17468129859572226)

यह भी देखें

 * सॉफ्टप्लस
 * बहुराष्ट्रीय तार्किक प्रतिगमन
 * डिरिचलेट वितरण - श्रेणीबद्ध वितरण का प्रतिरूप लेने का एक वैकल्पिक तरीका
 * विभाजन फलन (सांख्यिकीय यांत्रिकी)
 * घातीय झुकाव - अधिक सामान्य प्रायिकता वितरण के लिए सॉफ्टमैक्स का सामान्यीकरण।