तंत्रिका नेटवर्क में ट्रेन, सत्यापन और परीक्षण सेट के बीच अंतर क्या है?


155

मैं लर्निंग एजेंट को लागू करने के लिए इस लाइब्रेरी का उपयोग कर रहा हूं ।

मैंने प्रशिक्षण मामलों को उत्पन्न किया है, लेकिन मुझे यकीन नहीं है कि सत्यापन और परीक्षण सेट क्या हैं।
शिक्षक कहते हैं:

70% ट्रेन मामले होने चाहिए, 10% परीक्षण मामले होंगे और बाकी 20% सत्यापन मामले होने चाहिए।

संपादित करें

मेरे पास प्रशिक्षण के लिए यह कोड है, लेकिन मुझे नहीं पता कि प्रशिक्षण कब रोकना है

  def train(self, train, validation, N=0.3, M=0.1):
    # N: learning rate
    # M: momentum factor
    accuracy = list()
    while(True):
        error = 0.0
        for p in train:
            input, target = p
            self.update(input)
            error = error + self.backPropagate(target, N, M)
        print "validation"
        total = 0
        for p in validation:
            input, target = p
            output = self.update(input)
            total += sum([abs(target - output) for target, output in zip(target, output)]) #calculates sum of absolute diference between target and output

        accuracy.append(total)
        print min(accuracy)
        print sum(accuracy[-5:])/5
        #if i % 100 == 0:
        print 'error %-14f' % error
        if ? < ?:
            break

संपादित करें

मैं सत्यापन डेटा के साथ 0.2 की औसत त्रुटि प्राप्त कर सकता हूं, शायद 20 प्रशिक्षण पुनरावृत्तियों के बाद, वह 80% होनी चाहिए?

औसत त्रुटि = सत्यापन डेटा और सत्यापन डेटा के आकार को देखते हुए सत्यापन लक्ष्य और आउटपुट के बीच पूर्ण अंतर का योग।

1
        avg error 0.520395 
        validation
        0.246937882684
2
        avg error 0.272367   
        validation
        0.228832420879
3
        avg error 0.249578    
        validation
        0.216253590304
        ...
22
        avg error 0.227753
        validation
        0.200239244714
23
        avg error 0.227905    
        validation
        0.199875013416

1
"... वह 80% होना चाहिए?" नहीं, औसत त्रुटि और प्रतिशत सही दो अलग चीजें हैं। मान लीजिए कि आपका लक्ष्य मान 5.0 है और आपका न्यूरॉन 4.8 (यानी 0.2 की त्रुटि) वापस आ गया। डेटा के आधार पर 0.2 की त्रुटि स्वीकार्य हो सकती है, इसलिए यदि त्रुटि काफी छोटी है तो आप उस उदाहरण को सही तरीके से निर्दिष्ट कर सकते हैं। इसलिए यदि आपके पास 10 लक्ष्य हैं और उनमें से 7 के लिए आपकी वर्गीकरण त्रुटि स्वीकार्य सीमा के भीतर है, तो आपने 70% डेटा को सही तरीके से वर्गीकृत किया होगा।
किरिल

आपके शिक्षक द्वारा समाप्ति मानदंड क्या है?
किरिल

जवाबों:


292

प्रशिक्षण के दौरान प्रशिक्षण और सत्यापन सेट का उपयोग किया जाता है।

for each epoch
    for each training data instance
        propagate error through the network
        adjust the weights
        calculate the accuracy over training data
    for each validation data instance
        calculate the accuracy over the validation data
    if the threshold validation accuracy is met
        exit training
    else
        continue training

एक बार जब आप प्रशिक्षण पूरा कर लेते हैं, तो आप अपने परीक्षण सेट के खिलाफ दौड़ते हैं और सत्यापित करते हैं कि सटीकता पर्याप्त है।

प्रशिक्षण सेट : इस डेटा सेट का उपयोग तंत्रिका नेटवर्क पर भार को समायोजित करने के लिए किया जाता है।

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

परीक्षण सेट : इस डेटा सेट का उपयोग केवल अंतिम समाधान के परीक्षण के लिए किया जाता है ताकि नेटवर्क की वास्तविक भविष्य कहनेवाला शक्ति की पुष्टि की जा सके।


इसके अजगर: xi सिर्फ खिचड़ी भाषा को एक मानदंड नहीं मिलता है .. मानों का अभिसरण होता है .. लेकिन हमेशा कुछ उतार-चढ़ाव के साथ ..
डैनियल

@ डैनियल, क्या प्रशिक्षण सटीकता में उतार-चढ़ाव होता है या सत्यापन सटीकता में उतार-चढ़ाव होता है? यह संभव है कि आपकी सत्यापन सटीकता में उतार-चढ़ाव हो, लेकिन यह संभावना कम है कि प्रशिक्षण सटीकता में उतार-चढ़ाव होगा। जब आप कहते हैं "इनपुट, लक्ष्य = p" क्या इसका मतलब है कि आप दोनों को p पर सेट कर रहे हैं?
किरिल

मैं अजगर के साथ बहुत अच्छा नहीं हूं, इसलिए कोड मुझे थोड़ा भ्रमित करता है ... सामान्य तौर पर आप प्रशिक्षण को रोकना चाहते हैं जब आपकी मान्यता सटीकता एक निश्चित सीमा से मिलती है, 70% या 90% कहते हैं, जो भी डोमेन के लिए समझ में आता है आपके डेटा के।
किरिल

5
प्रशिक्षण की प्रक्रिया में वैध सेट का उपयोग किया जाता है। परीक्षण सेट नहीं है। परीक्षण सेट 1) यह देखने के लिए अनुमति देता है कि क्या प्रशिक्षण सेट पर्याप्त था और 2) क्या सत्यापन सेट ने ओवरफिटिंग को रोकने का काम किया था। यदि आप प्रशिक्षण की प्रक्रिया में परीक्षण सेट का उपयोग करते हैं तो यह सिर्फ एक और सत्यापन सेट होगा और यह तब नहीं दिखाई देगा जब नेटवर्क में नया डेटा फीड किया जाता है।
एंटोन एंड्रीव

2
@AntonAndreev मुझे नहीं मिला। आपके उत्तर के अनुसार, न तो validation setऔर न ही test setतंत्रिका नेटवर्क के वजन को ट्यून करने के लिए उपयोग किया जाता है। आप उसी डेटा सेट का उपयोग क्यों नहीं कर सकते, जिसका उपयोग वज़न को प्रशिक्षित करने के लिए नहीं किया जाता है, validation setऔर test set? उन्हें अलग रखने से क्या हासिल होता है?
जिली

77

प्रशिक्षण सेट : सीखने के लिए उपयोग किए जाने वाले उदाहरणों का एक सेट, जो कि क्लासिफायर के मापदंडों (यानी, वज़न) को फिट करना है।

सत्यापन सेट : एक क्लासिफायरियर के मापदंडों [अर्थात, वास्तुकला, भार नहीं] का उपयोग करने के लिए उपयोग किए गए उदाहरणों का एक सेट, उदाहरण के लिए एक तंत्रिका नेटवर्क में छिपी हुई इकाइयों की संख्या का चयन करने के लिए।

परीक्षण सेट : उदाहरण का एक सेट पूरी तरह से निर्दिष्ट क्लासिफायर के प्रदर्शन [सामान्यीकरण] का आकलन करने के लिए उपयोग किया जाता है।

Ftp से http://ftp.sas.com/pub/neural/FAQ1.txt सेक्शन " जनसंख्या, नमूना, प्रशिक्षण सेट, डिज़ाइन सेट, सत्यापन क्या हैं "

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

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

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

संपादित करें:

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


11
मुझे पता है कि मैं इस तरह की व्यर्थ टिप्पणियों को पोस्ट करने वाला नहीं हूं, लेकिन मैं आपको बताना चाहता हूं कि मैं इस जवाब की बहुत सराहना करता हूं :)
ललामेडेडेन

6

क्रॉस-सत्यापन सेट का उपयोग मॉडल चयन के लिए किया जाता है, उदाहरण के लिए, किसी दिए गए पैरामीटर सेट के लिए कम से कम त्रुटियों के साथ बहुपद मॉडल का चयन करें। परीक्षण सेट का उपयोग तब चयनित मॉडल पर सामान्यीकरण त्रुटि की रिपोर्ट करने के लिए किया जाता है। यहाँ से: https://www.coursera.org/learn/machine-learning/lecture/QGKbr/model-selection-and-train-validation-test-sets


1
मैं एंड्रयू एनजी की कक्षाएं भी ले रहा हूं और मैं आपसे सहमत हूं। सत्यापन सेट प्रशिक्षण का एक हिस्सा होना चाहिए। इसका उपयोग केवल हाइपरपरमेटर्स को चालू करने के लिए किया जाना चाहिए।
जैक पेंग

4

हम एक सत्यापन सेट बनाते हैं

  • मापें कि प्रशिक्षण के दौरान एक मॉडल कितनी अच्छी तरह सामान्यीकृत होता है
  • हमें बताएं कि किसी प्रशिक्षण को कब रोकना है? जब सत्यापन हानि कम हो जाती है (और विशेषकर जब सत्यापन हानि बढ़नी शुरू हो जाती है और प्रशिक्षण हानि अभी भी कम हो रही है)

सत्यापन सेट का उपयोग क्यों किया गया :

सत्यापन सेट का उपयोग क्यों किया गया


2

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

सत्यापन सेट बनाने के लिए प्रशिक्षण सेट को विभाजित करने के लिए एक सामान्य समाधान है । अब आपके पास है

  • प्रशिक्षण सेट
  • परीक्षण सेट
  • सत्यापन सेट

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

एक बार जब आप सत्यापन सेट पर सर्वश्रेष्ठ प्रदर्शन करने वाले मॉडल का चयन कर लेते हैं, तो आप पूर्ण प्रशिक्षण सेट (वेलिडा टियोन सेट सहित) पर सर्वश्रेष्ठ मॉडल को प्रशिक्षित करते हैं, और यह आपको अंतिम मॉडल प्रदान करता है।

अंत में, आप सामान्यीकरण त्रुटि का अनुमान पाने के लिए परीक्षण सेट पर इस अंतिम मॉडल का मूल्यांकन करते हैं।


0

प्रशिक्षण डेटासेट : मॉडल को फिट करने के लिए उपयोग किए गए डेटा का नमूना।

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

टेस्ट डेटासेट : प्रशिक्षण डेटासेट पर फिट होने वाले अंतिम मॉडल का निष्पक्ष मूल्यांकन प्रदान करने के लिए उपयोग किए गए डेटा का नमूना।


-15

सरल शब्दों में ट्रेनिंग सेट, टेस्ट सेट, वैलिडेशन सेट परिभाषित करते हैं

प्रशिक्षण सेट: निकटतम पड़ोसियों को खोजने के लिए उपयोग किया जाता है। सत्यापन सेट: अलग-अलग k को खोजने के लिए है जो ट्रेन सेट पर लागू होता है। परीक्षण सेट: भविष्य में अधिकतम सटीकता और अनदेखी डेटा खोजने के लिए उपयोग किया जाता है।

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