यह उत्तर लागत कार्यों के सामान्य पक्ष पर है, जो TensorFlow से संबंधित नहीं है, और ज्यादातर आपके प्रश्न के "इस विषय के बारे में कुछ स्पष्टीकरण" को संबोधित करेंगे।
ज्यादातर उदाहरणों / ट्यूटोरियल में मैंने अनुसरण किया, उपयोग किया गया लागत समारोह कुछ हद तक मनमाना था। बिंदु एक विशिष्ट विधि से पाठक को परिचित कराने के लिए अधिक था, विशेष रूप से लागत फ़ंक्शन के लिए नहीं। यह आपको टूल से परिचित होने के लिए ट्यूटोरियल का पालन करने के लिए नहीं रोकना चाहिए, लेकिन मेरा जवाब आपको अपनी समस्याओं के लिए लागत फ़ंक्शन का चयन करने में मदद करना चाहिए।
यदि आप क्रॉस-एन्ट्रॉपी, लॉजिट, एल 2 मानदंडों, या कुछ विशेष के संबंध में उत्तर चाहते हैं, तो मैं आपको कई और अधिक विशिष्ट प्रश्न पोस्ट करने की सलाह देता हूं। इससे यह संभावना बढ़ जाएगी कि विशिष्ट ज्ञान वाला कोई व्यक्ति आपके प्रश्न को देखेगा।
वांछित परिणाम प्राप्त करने के लिए सही लागत फ़ंक्शन का चयन करना मशीन सीखने की समस्याओं का एक महत्वपूर्ण बिंदु है। मूल दृष्टिकोण, यदि आप ठीक से नहीं जानते हैं कि आप अपने तरीके से क्या चाहते हैं, तो प्रतिगमन समस्याओं के लिए मीन स्क्वायर त्रुटि (विकिपीडिया) का उपयोग करना है और वर्गीकरण समस्याओं के लिए त्रुटि का प्रतिशत। हालांकि, यदि आप अपनी विधि से अच्छे परिणाम चाहते हैं, तो आपको अच्छे को परिभाषित करने की आवश्यकता है , और इस प्रकार पर्याप्त लागत फ़ंक्शन को परिभाषित करना चाहिए। यह दोनों डोमेन ज्ञान (आपका डेटा क्या है, आप क्या हासिल करने की कोशिश कर रहे हैं), और आपके निपटान में उपकरणों का ज्ञान है।
मुझे विश्वास नहीं है कि मैं आपको TensorFlow में पहले से लागू लागत कार्यों के माध्यम से मार्गदर्शन कर सकता हूं, क्योंकि मुझे उपकरण का बहुत कम ज्ञान है, लेकिन मैं आपको विभिन्न लागत कार्यों को लिखने और उनका आकलन करने के बारे में एक उदाहरण दे सकता हूं।
लागत कार्यों के बीच विभिन्न अंतरों को समझने के लिए, आइए हम बाइनरी वर्गीकरण समस्या के उदाहरण का उपयोग करें, जहां हम चाहते हैं, प्रत्येक नमूने के लिए , वर्ग ।एक्सnच( x)n) ∈ { 0 , 1 }
कम्प्यूटेशनल गुणों के साथ शुरू करना ; "एक ही चीज़" को मापने वाले दो कार्य कैसे भिन्न परिणाम दे सकते हैं। निम्नलिखित, सरल लागत फ़ंक्शन लें; त्रुटि का प्रतिशत। यदि आपके पास नमूने हैं, तो पूर्वानुमानित वर्ग है और सही वर्ग है, तो आप कम से कम करना चाहते हैंएनच( yn)yn
- 1एनΣn{ १0 अगर एफ( x)n) ≠ यn अन्यथा= ∑nyn[ १ - एफ( x)n) ] + [ १ - yn] च( x)n) ।
इस लागत समारोह में आसानी से व्याख्या करने योग्य होने का लाभ है। हालांकि, यह चिकना नहीं है; यदि आपके पास केवल दो नमूने हैं, तो फ़ंक्शन "कूदता है" 0 से 0.5 तक, 1. यह असंगतता को जन्म देगा यदि आप इस फ़ंक्शन पर ग्रेडिएंट वंश का उपयोग करने का प्रयास करते हैं। इससे बचने का एक तरीका असाइनमेंट की संभावनाओं का उपयोग करने के लिए लागत फ़ंक्शन को बदलना है; । फ़ंक्शन बन जाता हैp ( yn= 1 | एक्सn)
- 1एनΣnynp ( yn= 0 | एक्सn) + ( 1 - वाईn) पी ( वाईn= 1 | एक्सn) |
यह फ़ंक्शन स्मूथ है, और एक ढाल वंश दृष्टिकोण के साथ बेहतर काम करेगा। आपको एक 'महीन' मॉडल मिलेगा। हालाँकि, इसकी अन्य समस्या है; यदि आपके पास एक नमूना है जो अस्पष्ट है, तो कि आपके पास से बेहतर कुछ भी कहने के लिए पर्याप्त जानकारी नहीं है । फिर, इस लागत फ़ंक्शन पर ग्रेडिएंट डिसेंट का उपयोग करके एक मॉडल का नेतृत्व किया जाएगा जो इस संभावना को यथासंभव बढ़ाता है, और इस प्रकार, शायद, ओवरफिट।p ( yn= 1 | एक्सn) = 0.5
इस फ़ंक्शन की एक और समस्या यह है कि यदि जबकि , तो आप सही होना निश्चित हैं, लेकिन आप गलत हैं। इस समस्या से बचने के लिए, आप संभाव्यता का लॉग ले सकते हैं, । जैसा कि और , निम्न फ़ंक्शन में पिछले संस्करण में वर्णित समस्या नहीं है:p ( yn= 1 | एक्सn) = 1yn= 0लॉग इन करेंp ( yn| एक्सn)लॉग इन करें( ० ) = ∞लॉग इन करें( १ ) = ०
- 1एनΣnynलॉग इन करेंp ( yn= 0 | एक्सn) + ( 1 - वाईn) लॉग करेंp ( yn= 1 | एक्सn) ।
यह स्पष्ट करना चाहिए कि एक ही चीज़ का अनुकूलन करने के लिए , त्रुटि का प्रतिशत, अलग-अलग परिभाषाएं अलग-अलग परिणाम दे सकती हैं यदि वे समझदारी से बनाना आसान हैं, तो कम्प्यूटेशनल रूप से।
ही अवधारणा को मापने के लिए लागत और लिए संभव है , लेकिन आपके तरीके को तुलना में बेहतर परिणाम दे सकता है ।एबीएबी
अब देखते हैं कि विभिन्न लागत फ़ंक्शन विभिन्न अवधारणाओं को कैसे माप सकते हैं। सूचना पुनर्प्राप्ति के संदर्भ में, जैसा कि Google खोज में है (यदि हम रैंकिंग को अनदेखा करते हैं), हम चाहते हैं कि परिणाम लौटाए जाएं
ध्यान दें कि यदि आपका एल्गोरिथ्म सब कुछ लौटाता है , तो यह संभव हर प्रासंगिक परिणाम लौटाएगा, और इस तरह से उच्च रिकॉल होगा, लेकिन बहुत खराब परिशुद्धता है। दूसरी ओर, यदि यह केवल एक तत्व लौटाता है, तो वह जो सबसे निश्चित है वह प्रासंगिक है, इसमें उच्च परिशुद्धता लेकिन कम याद होगा।
इस तरह के एल्गोरिदम का न्याय करने के लिए, सामान्य लागत फ़ंक्शन -score (विकिपीडिया) है । सामान्य मामला -score है, जो सटीक और याद करने के लिए समान वजन देता है, लेकिन सामान्य मामला यह -score है, और आप पाने के लिए को ट्वीक कर सकते हैंएफएफ1एफββ
- यदि आप उपयोग करते हैं, तो उच्च रीकॉल करेंβ> 1
- उच्च परिशुद्धता, यदि आप उपयोग करते हैं ।β< १
ऐसे परिदृश्य में, लागत फ़ंक्शन चुनना यह चुनना है कि आपके एल्गोरिदम को व्यापार-बंद क्या करना चाहिए ।
एक और उदाहरण जो अक्सर सामने आता है वह है चिकित्सा निदान का मामला, आप एक लागत फ़ंक्शन का चयन कर सकते हैं जो अधिक झूठे नकारात्मक या गलत सकारात्मक को दंडित करता है जो कि बेहतर हो सकता है:
- अधिक स्वस्थ लोगों को बीमार के रूप में वर्गीकृत किया जा रहा है (लेकिन तब, हम स्वस्थ लोगों का इलाज कर सकते हैं, जो महंगा है और उन्हें चोट लग सकती है अगर वे वास्तव में बीमार नहीं हैं)
- अधिक बीमार लोगों को स्वस्थ के रूप में वर्गीकृत किया जा रहा है (लेकिन तब, वे बिना इलाज के मर सकते हैं)
अंत में, लागत फ़ंक्शन को परिभाषित करना आपके एल्गोरिथ्म के लक्ष्य को परिभाषित कर रहा है। एल्गोरिथ्म परिभाषित करता है कि वहां कैसे पहुंचा जाए।
साइड नोट: कुछ लागत कार्यों में अपने लक्ष्यों को प्राप्त करने के लिए अच्छा एल्गोरिथ्म है। उदाहरण के लिए, एसवीएम (विकिपीडिया) में दोहरी समस्या को हल करके, न्यूनतम हानि (विकिपीडिया) का एक अच्छा तरीका मौजूद है