TensorFlow में लॉग इन शब्द का अर्थ क्या है?


250

निम्नलिखित TensorFlow फ़ंक्शन में, हमें अंतिम परत में कृत्रिम न्यूरॉन्स की सक्रियता को खिलाना चाहिए। वह मैं समझता हूं। लेकिन मुझे समझ नहीं आता कि इसे लॉगिट्स क्यों कहा जाता है? क्या यह गणितीय कार्य नहीं है?

loss_function = tf.nn.softmax_cross_entropy_with_logits(
     logits = last_layer,
     labels = target_output
)

जवाबों:


215

लॉग्स एक अतिभारित शब्द है जिसका अर्थ कई अलग-अलग चीजें हो सकती हैं:


गणित में , Logit एक समारोह है कि संभावनाओं (नक्शे है [0, 1]() आर (-inf, inf))

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

0.5 की संभावना 0. के लॉग से मेल खाती है। नकारात्मक लॉगिट 0.5 से कम संभावनाओं के अनुरूप है, सकारात्मक 0.5 से।

एमएल में , यह हो सकता है

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

लॉग भी कभी-कभी सिग्मोइड फ़ंक्शन के तत्व-वार व्युत्क्रम का उल्लेख करते हैं।


127
Tensorflow के लिए: यह एक ऐसा नाम है, जिसका अर्थ यह माना जाता है कि यह Tensor वह मात्रा है, जिसे सॉफ्टमैक्स द्वारा प्रायिकताओं में मैप किया जा रहा है।
थर्टवे

1
क्या यह वैसा ही है जैसा कि सॉफ्टमैक्स से पहले एक्सपेक्टेड हो जाता है? यानी softmax(logit) = exp(logit)/Z(logit)तब logit = h_NN(x)? तो लॉगिट "स्कोर" के समान है?
चार्ली पार्कर

4
व्यक्तिगत समझ, TensorFlow डोमेन में, लॉगिट्स सॉफ्टमैक्स के इनपुट के रूप में उपयोग किए जाने वाले मान हैं। मुझे इस समझ के आधार पर यह टेंसरफ्लो ट्यूटोरियल आया।
डायनेशेंग

2
मुझे यकीन नहीं है कि यह सवाल का जवाब देता है। शायद इसीलिए इसे कभी स्वीकार नहीं किया गया। मैं समझता हूं कि लॉगिट फ़ंक्शन क्या है, लेकिन यह भी मेरी पहेली है कि टेंसोरफ्लो इन तर्कों को कॉल क्यों करता है। यह तन्सोरफ्लो के कार्यों में कई मापदंडों के लिए एक ही पदनाम भी है
dleal

1
ग्रेट! क्या आप एक सरल उदाहरण बना सकते हैं? क्या यह सही है? [1, 0.5, 0.5]सामान्यीकरण के माध्यम से [0.5, 0.25, 0.25]और फिर नरम हो जाते हैं [0,]अगर एक गर्म [1, 0, 0]? या सिर्फ बाहर रखा [1, 0, 0]कारण उत्पादन एक वेक्टर होना चाहिए?
टीना लियू

91

बस इस स्पष्टीकरण को जोड़ना ताकि जो कोई भी इसे नीचे स्क्रॉल करता है वह कम से कम इसे ठीक से प्राप्त कर सके, क्योंकि बहुत सारे गलत उत्तर हैं।

डायनेशेंग का जवाब और जेकेज का जवाब सही है। शीतल शाह द्वारा पोस्ट किया गया
एक नया उत्तर और भी बेहतर और पूर्ण उत्तर है।


हां, आंकड़ों में logit गणितीय फ़ंक्शन के रूप में, लेकिन logitतंत्रिका नेटवर्क के संदर्भ में उपयोग अलग है। सांख्यिकीय logitभी यहाँ कोई मतलब नहीं है।


मुझे कहीं भी एक औपचारिक परिभाषा नहीं मिली, लेकिन logitमूल रूप से इसका मतलब है:

कच्ची भविष्यवाणियां जो तंत्रिका नेटवर्क की अंतिम परत से निकलती हैं।
1. यह बहुत ही टेंसर है जिस पर आप argmaxपूर्वानुमानित वर्ग प्राप्त करने के लिए फ़ंक्शन को लागू करते हैं ।
2. यह बहुत ही टेंसर है जो आप softmaxअनुमानित कक्षाओं के लिए संभावनाओं को प्राप्त करने के लिए फ़ंक्शन में फ़ीड करते हैं।


इसके अलावा, आधिकारिक टेंसरफ़्लो वेबसाइट पर एक ट्यूटोरियल से :

लॉग्स लेयर

हमारे तंत्रिका नेटवर्क में अंतिम परत लॉगिट्स परत है, जो हमारे पूर्वानुमानों के लिए कच्चे मूल्यों को वापस कर देगी। हम रैखिक सक्रियण (डिफ़ॉल्ट) के साथ 10 न्यूरॉन्स (प्रत्येक लक्ष्य वर्ग 0–9 के लिए एक) के साथ एक घनी परत बनाते हैं:

logits = tf.layers.dense(inputs=dropout, units=10)

यदि आप अभी भी भ्रमित हैं, तो स्थिति इस प्रकार है:

raw_predictions = neural_net(input_layer)
predicted_class_index_by_raw = argmax(raw_predictions)
probabilities = softmax(raw_predictions)
predicted_class_index_by_prob = argmax(probabilities)

जहां, predicted_class_index_by_rawऔर predicted_class_index_by_probबराबर होगा।

raw_predictionsउपरोक्त कोड में एक और नाम हैlogit


के रूप में क्यों logit ... मुझे पता नहीं है। माफ़ करना।
[संपादित करें: शब्द के पीछे ऐतिहासिक प्रेरणाओं के लिए यह उत्तर देखें ।]


सामान्य ज्ञान

हालांकि, अगर आप चाहते हैं तो आपको सांख्यिकीय आवेदन कर सकते हैं logitकरने के लिए probabilitiesहै कि से बाहर आने के softmaxकार्य करते हैं।

यदि एक निश्चित वर्ग की संभावना है p,
तो उस वर्ग का लॉग-ऑड है L = logit(p)

इसके अलावा, फ़ंक्शन p = sigmoid(L)का उपयोग करके उस वर्ग की संभावना को पुनर्प्राप्त किया जा सकता है sigmoid

हालांकि लॉग-ऑड्स की गणना करने के लिए बहुत उपयोगी नहीं है।


80

Logit एक ऐसा फंक्शन है जो संभावनाओं [0, 1]को मैप करता है [-inf, +inf]

Softmax एक समारोह है कि नक्शे है [-inf, +inf]करने के लिए [0, 1]अवग्रह रूप में इसी तरह। लेकिन सॉफ्टमैक्स 1 के मान (आउटपुट वेक्टर) के योग को भी सामान्य करता है।

Tensorflow "logit के साथ" : इसका मतलब है कि आप इसे सामान्य करने के लिए logit नंबर पर सॉफ्टमैक्स फ़ंक्शन लागू कर रहे हैं। Input_vector / logit सामान्यीकृत नहीं है और [-inf, inf] से बड़े पैमाने पर हो सकता है।

इस सामान्यीकरण का उपयोग मल्टीलैस्कल वर्गीकरण समस्याओं के लिए किया जाता है। और मल्टीलेबल वर्गीकरण समस्याओं के लिए सिग्मॉइड सामान्यीकरण का उपयोग किया जाता हैtf.nn.sigmoid_cross_entropy_with_logits


10
तो लॉगिट "स्कोर" के समान है
चार्ली पार्कर

1
मैं आपके उत्तर में स्पष्ट रूप से विभेदी Logitक्रिया (आँकड़े) और logitsपरत (टेंसरफ़्लो) में एक रेखा जोड़ने का सुझाव देता हूँ
AneesAhmed777

62

सारांश

गहरी सीख के संदर्भ में लॉग्स लेयर का अर्थ है वह परत जो सॉफ्टमैक्स (या ऐसे अन्य सामान्यीकरण) को खिलाती है। सॉफ्टमैक्स का आउटपुट वर्गीकरण कार्य के लिए संभाव्यताएं हैं और इसका इनपुट लॉग्स लेयर है। लॉग की परत आम तौर पर -infinity से + अनंत तक मान उत्पन्न करती है और सॉफ्टमैक्स परत इसे 0 से 1 तक मानों में बदल देती है।

ऐतिहासिक संदर्भ

यह शब्द कहाँ से आता है? 1930 और 40 के दशक में, कई लोग संभावित संभावनाओं की समस्या के लिए रैखिक प्रतिगमन को अनुकूलित करने की कोशिश कर रहे थे। हालाँकि रेखीय प्रतिगमन -infinity से + इनफिनिटी तक आउटपुट उत्पन्न करता है जबकि संभावनाओं के लिए हमारा वांछित आउटपुट 0 से 1. है। ऐसा करने का एक तरीका यह है कि किसी तरह से संभावनाओं को मैप करके 0 से 1-इनफिनिटी से + अनंत तक और फिर हमेशा की तरह रैखिक रेजिनिटी का उपयोग करें। ऐसा ही एक मानचित्रण संचयी सामान्य वितरण है जिसका उपयोग 1934 में चेस्टर इटनर ब्लिस द्वारा किया गया था और उन्होंने इस "प्रोबेट" मॉडल को "प्रायिकता इकाई" के लिए लघु कहा। हालांकि बहु-वर्गीय वर्गीकरण के लिए कुछ वांछनीय गुणों की कमी करते हुए यह फ़ंक्शन कम्प्यूटेशनल रूप से महंगा है। 1944 में जोसेफ बर्कसन ने समारोह का उपयोग कियाlog(p/(1-p))इस मैपिंग को करने के लिए और इसे "लॉजिस्टिक यूनिट" के लिए लघु कहा जाता है। शब्द लॉजिस्टिक रिग्रेशन इसी से निकला है।

दुविधा

दुर्भाग्य से गहरी सीखने में लॉग शब्द का दुरुपयोग किया जाता है। शुद्ध गणितीय दृष्टिकोण से लॉगिट एक ऐसा कार्य है जो मानचित्रण के ऊपर होता है। गहरी शिक्षा में लोगों ने "लोगिट लेयर" परत को कॉल करना शुरू कर दिया, जो लॉगिट फ़ंक्शन को खिलाती है। तब लोगों ने इस परत के आउटपुट मानों को "लॉगिट" कहना शुरू कर दिया, जिससे लॉगिट फ़ंक्शन के साथ भ्रम पैदा हो गया ।

TensorFlow कोड

दुर्भाग्य से TensorFlow कोड आगे जैसे नामों से भ्रम में डालता है tf.nn.softmax_cross_entropy_with_logits। यहाँ लॉग का क्या मतलब है? इसका अर्थ केवल यह है कि फ़ंक्शन के इनपुट को अंतिम न्यूरॉन परत का आउटपुट माना जाता है जैसा कि ऊपर वर्णित है। _with_logitsप्रत्यय है , निरर्थक भ्रामक और व्यर्थ । ऐसे बहुत विशिष्ट संदर्भों के संबंध में कार्यों को नाम दिया जाना चाहिए क्योंकि वे केवल गणितीय कार्य हैं जो कई अन्य डोमेन से प्राप्त मानों पर किए जा सकते हैं। वास्तव में TensorFlow का एक और समान कार्य है sparse_softmax_cross_entropyजहाँ वे सौभाग्य से _with_logitsअसंगति पैदा करने वाले प्रत्यय और भ्रम को जोड़ना भूल गए । दूसरी ओर PyTorch इस प्रकार के प्रत्ययों के बिना अपने कार्य को नाम देता है।

संदर्भ

Logit / PROBIT व्याख्यान स्लाइड्स logit को समझने के लिए सबसे अच्छा संसाधन से एक है। मैंने उपरोक्त कुछ जानकारी के साथ विकिपीडिया लेख को भी अद्यतन किया है ।


31

व्यक्तिगत समझ, TensorFlow डोमेन में, लॉग इन मानों का उपयोग सॉफ्टमैक्स के इनपुट के रूप में किया जाना है। मुझे इस समझ के आधार पर यह टेंसरफ्लो ट्यूटोरियल आया।

https://www.tensorflow.org/tutorials/layers


हालाँकि यह सच है कि मैथ्स (विशेष रूप से आंकड़ों में) में फंक्शन एक फंक्शन है, मुझे नहीं लगता कि आप वही 'लॉगिट' देख रहे हैं। दीप लर्निंग द्वारा इयान गुडफेलो की पुस्तक में , उन्होंने उल्लेख किया,

फ़ंक्शन function ( 1 (x) को आंकड़ों में लॉगिट कहा जाता है, लेकिन मशीन लर्निंग में इस शब्द का उपयोग शायद ही कभी किया जाता है। ig erse1 (x) लॉजिस्टिक सिग्मोइड फ़ंक्शन के व्युत्क्रम फ़ंक्शन के लिए है।

TensorFlow में, इसे अक्सर अंतिम परत के नाम के रूप में देखा जाता है। औरेलीन द्वारा पुस्तक हैंड्स-ऑन मशीन लर्निंग विद स्किकिट-लर्न एंड टेंसोरफ्लो की अध्याय 10 में , मैं इस पैराग्राफ में आया, जिसमें logitsस्पष्ट रूप से परत बताई गई थी ।

ध्यान दें कि सॉफ्टमैक्स सक्रियण फ़ंक्शन के माध्यम से जाने से पहलेlogits तंत्रिका नेटवर्क का आउटपुट है : अनुकूलन कारणों से, हम बाद में सॉफ्टमैक्स कम्प्यूटेशन को संभाल लेंगे।

यह कहना है, हालांकि हम सॉफ्टमेक्स का उपयोग अपने डिजाइन में अंतिम परत में सक्रियण फ़ंक्शन के रूप में करते हैं, गणना में आसानी के लिए, हम logitsअलग से निकालते हैं। ऐसा इसलिए है क्योंकि यह एक साथ गणना softmaxऔर cross-entropyनुकसान के लिए अधिक कुशल है । याद रखें कि cross-entropyएक लागत समारोह है, जिसका उपयोग आगे प्रसार में नहीं किया जाता है।


12

यहाँ भविष्य के पाठकों के लिए एक संक्षिप्त जवाब है। Tensorflowके logitसक्रियण समारोह लागू किए बिना एक न्यूरॉन के उत्पादन के रूप में परिभाषित किया गया है:

logit = w*x + b,

x: इनपुट, डब्ल्यू: वजन, बी: पूर्वाग्रह। बस।


निम्नलिखित इस प्रश्न के लिए अप्रासंगिक है।

ऐतिहासिक व्याख्यान के लिए, अन्य उत्तर पढ़ें। Tensorflowनामकरण सम्मेलन को भ्रमित करने वाले "रचनात्मक" तरीके से सलाम । में PyTorch, केवल एक ही है CrossEntropyLossऔर यह अन-एक्टिवेटेड आउटपुट को स्वीकार करता है। वार्तालाप, मैट्रिक्स गुणन और सक्रियण समान स्तर के संचालन हैं। डिजाइन बहुत अधिक मॉड्यूलर और कम भ्रामक है। यह उन कारणों में से एक है, जिनके कारण मैंने स्विच Tensorflowकिया PyTorch


8

( फोमो सेपियन्स)।

यदि आप गणित लॉगिट फ़ंक्शन की जाँच करते हैं, तो यह वास्तविक स्थान को [0,1]अंतराल से अनंत में परिवर्तित करता है [-inf, inf]

सिग्मॉइड और सॉफ्टमैक्स इसके विपरीत काम करेंगे। वे [-inf, inf]वास्तविक स्थान को [0, 1]वास्तविक स्थान में बदल देंगे ।

यही कारण है कि, मशीन लर्निंग में हम सिग्मॉइड और सॉफ्टमैक्स फ़ंक्शन से पहले लॉगिट का उपयोग कर सकते हैं (क्योंकि वे मेल खाते हैं)।

और यह कारण है कि "हम कह सकते हैं कि" कुछ भी मशीन सीखने कि के सामने चला जाता है में अवग्रह या softmax समारोह logit

इस शब्द का उपयोग करते हुए जे। हिंटन वीडियो है

पुनश्च। मैं केवल टर्म पर जांच करने के लिए वीडियो देखने की सिफारिश नहीं कर रहा हूं।


5

वे मूल रूप से पूर्ण रूप से सीखे गए मॉडल हैं जो आप नेटवर्क से प्राप्त कर सकते हैं, इससे पहले कि हम जिन कक्षाओं में रुचि रखते हैं, केवल उन पर लागू करने के लिए स्क्वैश किया गया है, देखें कि कैसे कुछ शोधकर्ता एक गहरी नाल के आधार पर उथले तंत्रिका जाल को प्रशिक्षित करने के लिए उपयोग करते हैं। नेटवर्क ने सीखा है: https://arxiv.org/pdf/1312.6184.pdf

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


1

लॉजिट (/ ʊloʊdʒɪt / LOH-jit) फ़ंक्शन सिग्मोइडल "लॉजिस्टिक" फ़ंक्शन या गणित में उपयोग किए जाने वाले लॉजिस्टिक ट्रांसफॉर्म का उलटा है, खासकर आंकड़ों में। जब फ़ंक्शन का चर एक संभाव्यता पी का प्रतिनिधित्व करता है, तो लॉगिट फ़ंक्शन लॉग-ऑड देता है, या ऑड्स पी / (1 - पी) का लॉगरिदम।

यहां देखें: https://en.wikipedia.org/wiki/Logit


4
वह आंकड़े / गणित में है। हम यहां मशीन लर्निंग की बात कर रहे हैं, जहां logitअलग मायने हैं। देखें इस , यह , यह
अनीश अहमद

1

logits

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

इसके अलावा, लॉगिट कभी-कभी सिग्मॉइड फ़ंक्शन के तत्व-वार व्युत्क्रम को संदर्भित करते हैं। अधिक जानकारी के लिए, tf.nn.sigmoid_cross_entropy_with_logits देखें।

आधिकारिक टेंसरफ़्लो प्रलेखन


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