सत्यापन सटीकता में उतार-चढ़ाव क्यों है?


31

एमआरआई डेटा का उपयोग करके कैंसर की प्रतिक्रिया की भविष्यवाणी करने के लिए मेरे पास एक चार परत सीएनएन है। मैं nonLearities शुरू करने के लिए ReLU सक्रियण का उपयोग करता हूं। ट्रेन की सटीकता और हानि क्रमशः नीरस रूप से बढ़ती और घटती है। लेकिन, मेरी परीक्षा की सटीकता में बेतहाशा उतार-चढ़ाव होने लगता है। मैंने सीखने की दर को बदलने की कोशिश की है, परतों की संख्या कम करें। लेकिन, यह उतार-चढ़ाव को नहीं रोकता है। मैंने भी इस उत्तर को पढ़ा और उस उत्तर में दिए गए निर्देशों का पालन करने की कोशिश की, लेकिन फिर से भाग्य नहीं। क्या कोई मुझे यह पता लगाने में मदद कर सकता है कि मैं गलत कहाँ जा रहा हूँ?

स्क्रीनशॉट



हां, मैंने वह जवाब पढ़ा। सत्यापन डेटा में फेरबदल से मदद नहीं मिली
रघुराम

4
क्योंकि आपने अपना कोड स्निपेट साझा नहीं किया है, इसलिए मैं यह नहीं कह सकता कि आपकी वास्तुकला में क्या गलत है। लेकिन आपके स्क्रीन शॉट में, आपके प्रशिक्षण और सत्यापन सटीकता को देखते हुए, यह स्पष्ट है कि आपका नेटवर्क ओवरफ़िट हो रहा है। बेहतर होगा कि आप अपना कोड स्निपेट यहां साझा करें।
नैन

आपके पास कितने नमूने हैं? शायद उतार-चढ़ाव वास्तव में महत्वपूर्ण नहीं है। इसके अलावा, सटीकता भयानक उपाय है
rep_ho

यदि सत्यापन सटीकता में उतार-चढ़ाव हो रहा है, तो क्या कोई पहनावा दृष्टिकोण का उपयोग करके मुझे सत्यापित करने में मदद कर सकता है? क्योंकि मैं एक अच्छे मूल्य के लिए कलाकारों की टुकड़ी के द्वारा मेरे उतार-चढ़ाव की वैधता का प्रबंधन करने में सक्षम था।
श्री २११०

जवाबों:


27

यदि मैं सटीकता की परिभाषा को सही ढंग से समझता हूं, तो सटीकता (डेटा बिंदुओं का% सही रूप से वर्गीकृत) एमएसई कहने का मतलब है की तुलना में कम संचयी है। इसलिए आप देखते हैं कि आपकी lossतेजी से वृद्धि हो रही है, जबकि सटीकता में उतार-चढ़ाव हो रहा है।

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

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

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

आपके मामले के बारे में, आपके मॉडल को ठीक से नियमित नहीं किया जा सकता है, संभावित कारण:

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

संभव समाधान:

  • अधिक डेटा-पॉइंट्स प्राप्त करें (या मौजूदा लोगों के सेट का कृत्रिम रूप से विस्तार करें)
  • हाइपर-पैरामीटर्स के साथ खेलना (उदाहरण के लिए क्षमता / कमी या नियमितीकरण बढ़ाना)
  • नियमितीकरण : ड्रॉपआउट, जल्दी-रुकने की कोशिश करें

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

1
सीखने की दर और sgd के मिनीमा को याद रखने के बारे में: न्यूनतम तक पहुंचने का सबसे अधिक संभावना है कि ओवरफिटिंग (क्योंकि प्रशिक्षण सेट पर यह न्यूनतम है)
जन कुकुआ

@ बर्कमिस्टर सच, मैंने थोड़ा रीफ़्रेश किया है (देखें संपादित करें)। मेरी सोच यह थी कि बढ़ा हुआ नुकसान गैर-स्क्वैस्ड फ़ंक्शन का उपयोग होने का संकेत है।
dk14

@JanKukacka आप वैश्विक minima मतलब है? मैंने स्थानीय मिनीमा (वास्तव में स्थानीय मिनीमा के पास) को निहित किया - इस अर्थ में कि यदि यह किसी भी मिनीमा से बहुत दूर है, तो यह अंडर-फिटिंग होगा। शायद, मुझे इसे और अधिक सावधानी से वर्णन करना चाहिए (देखें संपादित करें), धन्यवाद।
dk14

@ dk14 मुझे लगता है कि वैश्विक न्यूनतम व्यवहार में नहीं पहुंचा जा सकता है, इसलिए मेरा मतलब स्थानीय मिनीमा है। यदि आप बहुत दूर हैं, तो आप अंडर-फिटिंग हो सकते हैं, लेकिन यदि आप बहुत करीब हैं, तो आप सबसे अधिक संभावना रखते हैं। मोरिट्ज हार्ड्ट द्वारा एक दिलचस्प काम है "ट्रेन तेज, बेहतर सामान्यीकरण करें: स्टोचैस्टिक ग्रेडिएंट डिसेंट की स्थिरता" ( arxiv.org/abs/1509.01240 ) डब्लूडीई के साथ प्रशिक्षण के दौरान प्रशिक्षण और परीक्षण त्रुटि के बीच के संबंध पर सीमा लगाई
Jan Kukacka

6

यह प्रश्न पुराना है, लेकिन इसे पोस्ट करना अभी तक इंगित नहीं किया गया है:

संभावना 1 : आप किसी प्रकार के प्रीप्रोसेसिंग (शून्य अर्थ, सामान्यीकरण, आदि) को अपने प्रशिक्षण सेट या सत्यापन सेट पर लागू कर रहे हैं, लेकिन अन्य नहीं

संभावना 2 : यदि आपने कुछ परतों का निर्माण किया है जो प्रशिक्षण के दौरान अलग-अलग तरीके से प्रदर्शन करते हैं और खरोंच से निष्कासन करते हैं, तो आपके मॉडल को गलत तरीके से लागू किया जा सकता है (जैसे कि प्रशिक्षण के दौरान अद्यतन किए जा रहे बैच सामान्यीकरण के लिए मानक विचलन और बढ़ते मानक विचलन हैं? यदि ड्रॉपआउट का उपयोग किया जाता है, तो क्या वजन ठीक से ठीक नहीं होता है? अनुमान?)। यह मामला हो सकता है यदि आपका कोड इन चीजों को खरोंच से लागू करता है और Tensorflow / Pytorch के अंतर्निहित कार्यों का उपयोग नहीं करता है।

संभावना ३: ओवरफिटिंग, जैसा कि सभी ने बताया है। मैं आपकी विशिष्ट स्थिति में अन्य दो विकल्पों को अधिक संभावना के रूप में पाता हूं क्योंकि आपकी मान्यता सटीकता युग से 50% पर अटक गई है। आम तौर पर, मैं ओवरफिटिंग के बारे में अधिक चिंतित होगा यदि यह बाद के चरण में हो रहा था (जब तक कि आपको बहुत विशिष्ट समस्या नहीं है उपलब्ध)।


मुझे एक समस्या है जो समान है, लेकिन पूरी तरह से नहीं है, यहां अधिक विवरण: stackoverflow.com/questions/55348052/… मेरे मामले में, मेरे पास वास्तव में परीक्षण डेटा के साथ एक उच्च सटीकता है और प्रशिक्षण के दौरान, सत्यापन "सटीकता" है। "(नुकसान नहीं) प्रशिक्षण सटीकता से अधिक है। लेकिन यह तथ्य कि यह कभी भी परिवर्तित नहीं होता है और दोलन मुझे ओवरफिटिंग के बारे में सोचते हैं, जबकि कुछ सुझाव देते हैं कि ऐसा नहीं है, इसलिए मुझे आश्चर्य है कि अगर यह है और यह नहीं है तो औचित्य क्या है।
ड्यूसा

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

5

@ Dk14 द्वारा उत्तर में जोड़ना। यदि आप अपने मॉडल को ठीक से नियमित करने के बाद भी उतार-चढ़ाव देख रहे हैं , तो ये संभावित कारण हो सकते हैं:

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

2

निश्चित रूप से ओवर-फिटिंग। प्रशिक्षण डेटा और परीक्षण डेटा पर सटीकता के बीच का अंतर आपको प्रशिक्षण पर फिट बैठता है। शायद नियमितीकरण मदद कर सकता है।


1

एक द्विआधारी वर्गीकरण समस्या पर आपकी सत्यापन सटीकता (मेरा मानना ​​है) 50% के आसपास "उतार-चढ़ाव" है, इसका मतलब है कि आपका मॉडल पूरी तरह से यादृच्छिक भविष्यवाणियां दे रहा है (कभी-कभी यह सही ढंग से कुछ नमूनों का अनुमान लगाता है, कभी-कभी कुछ नमूने कम होते हैं)। आमतौर पर, आपका मॉडल सिक्का उछालने से बेहतर नहीं है।

{0;1}

वैसे भी, जैसा कि अन्य लोग पहले ही बता चुके हैं, आपका मॉडल गंभीर रूप से गंभीर अनुभव कर रहा है। मेरा अनुमान है कि आपकी समस्या बहुत जटिल है , यानी आपके डेटा से वांछित जानकारी निकालना बहुत मुश्किल है, और इस तरह के सरल एंड २end प्रशिक्षित ४-लेयर कन्ट-नेट में इसे सीखने का कोई मौका नहीं है


0

आपकी स्थिति में प्रयास करने के कुछ तरीके हैं। सबसे पहले बैच के आकार को बढ़ाने की कोशिश करें, जो मिनी-बैच के SGD को कम भटकने में मदद करता है। दूसरी बात सीखने की दर को देखते हुए, शायद इसे छोटा कर दें। तीसरा, उदाहरण के लिए, एडम या RMSProp के लिए अलग-अलग ऑप्टिमाइज़र आज़माएं, जो कि wrt फीचर्स के लिए सीखने की दरों को अनुकूलित करने में सक्षम हैं। यदि संभव हो तो अपने डेटा को बढ़ाने का प्रयास करें। अंत में, ड्रॉपआउट सन्निकटन के माध्यम से बायेसियन न्यूरल नेटवर्क का प्रयास करें, यारिन गैल का एक बहुत ही दिलचस्प काम https://arxiv.org/abs/1506.02158


0

क्या आपने एक छोटे नेटवर्क की कोशिश की है? अपने प्रशिक्षण की सटीकता को ध्यान में रखते हुए> .99 तक पहुँच सकते हैं, आपके नेटवर्क को लगता है कि आपके डेटा को पूरी तरह से मॉडल करने के लिए पर्याप्त कनेक्शन हैं, लेकिन आपके पास ऐसे कनेक्शन हो सकते हैं जो बेतरतीब ढंग से सीख रहे हैं (यानी ओवरफिटिंग)।

अपने अनुभव में, मैंने विभिन्न नेटवर्क जैसे कि रेसनेट, वीजीजी और यहां तक ​​कि सरल नेटवर्क की कोशिश करके एक छोटे नेटवर्क के साथ स्थिर करने के लिए होल्डआउट सत्यापन सटीकता प्राप्त की है।

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