लॉजिस्टिक क्लासिफायर में सॉफ्टमैक्स बनाम सिग्मोइड फ़ंक्शन?


62

एक लॉजिस्टिक क्लासिफायरियर में फ़ंक्शन (सॉफ्टमैक्स बनाम सिग्मॉइड) का विकल्प क्या तय करता है?

मान लीजिए कि 4 आउटपुट क्लास हैं। उपरोक्त फ़ंक्शन में से प्रत्येक प्रत्येक वर्ग की संभावनाओं को सही आउटपुट देता है। तो क्लासिफायर के लिए कौन सा लेना है?


16
सॉफ्टमैक्स फ़ंक्शन सिग्मॉइड के सामान्यीकरण के अलावा कुछ भी नहीं है, इसलिए यह पूरी तरह से स्पष्ट नहीं है कि आप "सॉफ्टमैक्स बनाम सिग्मॉइड" से क्या मतलब है।
— 15

2
यह सिग्मोयड के मामले में है। जब हम sigmoid का उपयोग करते हैं, तो एक वर्ग में प्रायिकता और दूसरे में प्रायिकता । exp⁡(βTx)/(exp⁡(βTx)+1)1/(exp⁡(βTx)+1)
— dsaxton

3
रेडिट पोस्टर एक ऐसा भेद बना रहा है जो मुझे लगता है कि गलत है या कम से कम अप्रासंगिक है। कक्षाओं में से किसी एक का वजन है या नहीं, यह केवल अंकों को शिफ्ट करने का मामला है, जिसका संभावनाओं पर कोई प्रभाव नहीं पड़ता है।
— dsaxton 19


3
"यह पूरी तरह से स्पष्ट नहीं है कि आपको" सॉफ्टमैक्स बनाम सिग्मॉइड "से क्या मतलब है।" " शीर्षक के ठीक नीचे, सवाल का शरीर है - बहुत आसान याद करने के लिए, मुझे पता है। इसके अलावा, यह एक अच्छा शीर्षक है कि आप जो पूछें, उसका उत्तर देने के लिए यहां आने के लिए Google प्रश्नों को निर्देशित करें।
— माइकल

जवाबों:


77

अवग्रह समारोह , दो स्तरीय रसद प्रतिगमन के लिए प्रयोग किया जाता है, जबकि softmax समारोह multiclass रसद प्रतिगमन (उर्फ MAXENT, बहुपद रसद प्रतिगमन, softmax प्रतिगमन, अधिकतम Entropy वर्गीकरणकर्ता) के लिए प्रयोग किया जाता है।


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

Pr(Yi=0)=e−β⋅Xi1+e−β0⋅XiPr(Yi=1)=1−Pr(Yi=0)=11+e−β⋅Xi

वर्गों के साथ, बहुस्तरीय लॉजिस्टिक रिग्रेशन में, अनुमानित संभावनाएँ इस प्रकार हैं, सॉफ्टमैक्स फ़ंक्शन का उपयोग करते हुए:K

Pr(Yi=k)=eβk⋅Xi ∑0≤c≤Keβc⋅Xi

कोई यह देख सकता है कि सॉफ्टमैक्स फ़ंक्शन मल्टीक्लास केस के सिग्मॉइड फ़ंक्शन का विस्तार है, जैसा कि नीचे बताया गया है। आइए वर्गों के साथ बहुस्तरीय लॉजिस्टिक रिग्रेशन को देखें :K=2

Pr(Yi=0)=eβ0⋅Xi ∑0≤c≤Keβc⋅Xi=eβ0⋅Xieβ0⋅Xi+eβ1⋅Xi=e(β0−β1)⋅Xie(β0−β1)⋅Xi+1=e−β⋅Xi1+e−β⋅XiPr(Yi=1)=eβ1⋅Xi ∑0≤c≤Keβc⋅Xi=eβ1⋅Xieβ0⋅Xi+eβ1⋅Xi=1e(β0−β1)⋅Xi+1=11+e−β⋅Xi

साथ । हम देखते हैं कि हम सिग्माइड फ़ंक्शन का उपयोग करके दो-वर्ग लॉजिस्टिक प्रतिगमन में समान संभावनाएं प्राप्त करते हैं। विकिपीडिया उस पर थोड़ा और विस्तार करता है।β=−(β0−β1)


1
मैं इस एक में अनुभवहीन हूँ, लेकिन मैं इसे बहुत बार देखता हूं (= - (ive0 − could1) इसके बारे में संभावित व्याख्या क्या हो सकती है? जहाँ तक मुझे पता है कि सिगमोइड्स में in एक वेक्टर होगा। और वे आम तौर पर दिए गए रन के लिए एक हैं। फिर तस्वीर में Then0 और β1 कैसे आते हैं?
— इशान भट्ट

1
@IshanBhatt इस टिप्पणी से मदद मिल सकती है।
— टॉम हेल

काफी अजीब है, मैं अभी भी सिर्फ
— सिग्मोइड

15

वे, वास्तव में, समतुल्य हैं, इस अर्थ में कि एक को दूसरे में बदला जा सकता है।

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

(z0z1)=(w0Tw1T)x+(b0b1),
P(Ci|x)=softmax(zi)=eziez0+ez1,i∈{0,1}.

आइए इसे एक समतुल्य बाइनरी क्लासिफायर में बदल दें जो सॉफ्टमैक्स के बजाय सिग्मॉइड का उपयोग करता है। सबसे पहले, हमें यह तय करना होगा कि कौन सी संभावना है कि हम उत्पादन के लिए चाहते हैं (जो कि कक्षा या लिए हो सकता है )। यह विकल्प बिल्कुल मनमाना है और इसलिए मैं कक्षा चयन करता । फिर, मेरा क्लासिफायर फॉर्म होगा:C0C1C0

z′=w′Tx+b′,
P(C0|x)=σ(z′)=11+e−z′,
P(C1|x)=1−σ(z′).

यदि संभावनाएं समान हैं, तो क्लासीफायर बराबर हैं, इसलिए हमें इसे लागू करना चाहिए:

σ(z′)=softmax(z0)

जगह , और के मामले में अपने भाव से और और कुछ सरल कर बीजगणितीय हेरफेर, आप यह सत्यापित कर सकते हैं कि ऊपर समानता है अगर और केवल अगर और द्वारा दिए गए हैं:z0z1z′w0,w1,w′,b0,b1,b′xw′b′

w′=w0−w1,
b′=b0−b1.

@null ठीक है, अगर आप मुझसे पूछते हैं, तो आप मेरी समझ में नहीं आए। मुझे आपकी विशिष्ट समस्या का समाधान करने दें: यदि आप मुझे बताते हैं कि आप अपने डेटा को सिग्मोइड में फीड कर रहे हैं, तो यह एक आयामी संख्या, होना चाहिए । इसे , आपको अपने दो वर्गों में से एक में होने की संभावना मिलती है , उदाहरण के लिए : । फिर, में होने की संभावना है: । अब अपने सिग्मॉइड को सॉफ्टमैक्स द्वारा बदलें। (जारी रहती है)। xxC0P(C0|x)=σ(x)xC1P(C1|x)=1−P(C0|x)=σ(x)
— डी ...

(निरंतरता)। दो वर्गों के साथ एक वर्गीकरण समस्या में सॉफ्टमैक्स लागू करने के लिए, आपको अपने एक आयामी डेटा को दो आयामी वेक्टर में बदलने की आवश्यकता है। इसलिए, हमें अपने और को परिभाषित करने की आवश्यकता है । चलो । चूंकि को , से होना चाहिए , इसलिए हमारे पास , इसलिए । अब, हमारे पास और । इसका उपयोग करके, आप तुरंत उस सत्यापित कर सकते हैं । w0w1w0=1w1w′=w0−w11=1−w1w1=0z0=w0x=xz1=w1x=0σ(x)=softmax(z0)
— डी ...

इसके अलावा, और का कोई भी संयोजन जो संतुष्ट करता है (अर्थात, ) ठीक उसी परिणाम को जन्म देगा। इससे पता चलता है कि सॉफ्टमैक्स में एक निरर्थक पैरामीटर है। यद्यपि यह मूर्खतापूर्ण लग सकता है, यह वास्तव में एक दिलचस्प संपत्ति है, क्योंकि यह मापदंडों के सामान्यीकरण की अनुमति देता है , जो सीखने के एल्गोरिथ्म और अनुमान के संख्यात्मक स्थिरता को बढ़ावा देता है। लेकिन यह सिर्फ एक अतिरिक्त टिप्पणी है, आपके सवाल का जवाब देना महत्वपूर्ण नहीं है :)w0w1w′=w0−w11=w1−w0wi
— डी ...

बहुत बहुत धन्यवाद। मैं समझ गया। आपकी पहली टिप्पणी में प्रायिकता संभवतः होनी चाहिए । मैं अब समझता हूं कि परिवर्तन के पीछे क्या विचार है। P(C1|x)1−σ(x)
— नल

खुशी है कि आप इसे समझ गए;) हाँ, यह एक टाइपो है, यह स्पष्ट रूप से । इस पर ध्यान दिलाने के लिए धन्यवाद! P(C1|x)=1−σ(x)
— D ...

8

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

  • यदि आपके पास मल्टी-लेबल वर्गीकरण समस्या है = एक से अधिक "सही उत्तर" = आउटपुट परस्पर अनन्य नहीं हैं, तो स्वतंत्र रूप से प्रत्येक कच्चे आउटपुट पर एक सिग्मोइड फ़ंक्शन का उपयोग करें। सिग्मॉइड आपको अपनी सभी कक्षाओं, उनमें से कुछ या उनमें से किसी के लिए उच्च संभावना रखने की अनुमति देगा। उदाहरण: छाती की एक्स-रे छवि में बीमारियों को वर्गीकृत करना। छवि में निमोनिया, वातस्फीति और / या कैंसर, या उन निष्कर्षों में से कोई भी हो सकता है।
  • यदि आपके पास एक बहु-श्रेणी वर्गीकरण समस्या है = केवल एक "सही उत्तर" है = आउटपुट परस्पर अनन्य हैं, तो सॉफ्टएक्स फ़ंक्शन का उपयोग करें। सॉफ्टमैक्स लागू करेगा कि आपके आउटपुट वर्गों की संभावनाओं का योग एक के बराबर है, इसलिए किसी विशेष वर्ग की संभावना बढ़ाने के लिए, आपके मॉडल को अन्य वर्गों की कम से कम एक की संभावना को कम करना चाहिए। उदाहरण: हस्तलिखित अंकों के MNIST डेटा सेट से छवियों को वर्गीकृत करना। किसी अंक के एक एकल चित्र की केवल एक सही पहचान होती है - चित्र एक ही समय में 7 और 8 नहीं हो सकता है।

संदर्भ: उदाहरणों की गणना सहित तंत्रिका नेटवर्क डिजाइन में सिग्मॉइड बनाम सॉफ्टमैक्स का उपयोग करने के बारे में अधिक विस्तृत विवरण के लिए, कृपया इस लेख को देखें: "वर्गीकरण: सिग्मॉइड बनाम सॉफ्टमैक्स।"


-1

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

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

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

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


कार्य हैं नहीं क्योंकि softmax नेटवर्क आउटपुट के रूप में कक्षाओं से अधिक एक प्रायिकता वितरण का उत्पादन करने विवश है बराबर: वेक्टर गैर नकारात्मक है और 1. करने के लिए रकम अवग्रह इकाइयों गैर नकारात्मक हैं, लेकिन वे किसी भी नंबर पर जोड़ सकते हैं 0 और बीच ; यह एक वैध संभावना वितरण नहीं है। यह अंतर यह दर्शाने के लिए महत्वपूर्ण है कि दोनों कार्य कैसे भिन्न हैं। CC
— मोनिका

समकक्ष की आपकी परिभाषा क्या है? मेरा है: आप किसी भी समस्या के बिना या तो मल्टीकाचर्स वर्गीकरण के लिए उपयोग कर सकते हैं। इसके अलावा - सॉफ्टमैक्स का उपयोग करने वाले किसी भी मल्टीकालास वर्गीकरण को एक-बनाम-सभी बाइनरी वर्गीकरण में परिवर्तित किया जा सकता है जो सिग्मॉयड का उपयोग करते हैं। मुझे आउटपुट 1 के योग के वितरण के बारे में क्यों ध्यान रखना चाहिए?
— डेविड रेफेली

मल्टी-लेबल वर्गीकरण के बारे में आपका तर्क बताता है कि सिग्मॉइड और सॉफ्टमैक्स बराबर क्यों नहीं हैं। सॉफ्टमैक्स का उपयोग करते समय, एक वर्ग की संभावना बढ़ने से अन्य सभी वर्गों की कुल संभावना घट जाती है (क्योंकि राशि-से -1)। सिग्मॉइड का उपयोग करके, एक वर्ग की संभावना बढ़ाने से अन्य वर्गों की कुल संभावना नहीं बदलती है। यह अवलोकन कारण है कि सिग्मोइड मल्टी-लेबल वर्गीकरण के लिए प्रशंसनीय है: एक एकल उदाहरण वर्गों से संबंधित हो सकता है। Sum-to-1 भी कारण है कि सॉफ्टमैक्स मल्टी-लेबल वर्गीकरण के लिए उपयुक्त नहीं है। 0,1,2,…,C
— मोनिका

मैंने तुम्हें खो दिया। उन सभी व्यावहारिक उद्देश्यों के लिए जो मुझे पता है, कई सिग्मोइड्स = 1 सॉफ्टमैक्स। मैंने नकारात्मक नमूने के मामले को भी जोड़ा, जहां कई सिग्मोइड्स का वास्तव में सॉफ्टमैक्स पर एक फायदा होता है।
— डेविड रेफेली
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.