मशीन सीखने के कार्यों के लिए डेटा को फेरबदल क्यों किया जाना चाहिए


30

मशीन सीखने के कार्यों में डेटा को फेरबदल करना और इसे सामान्य करना सामान्य है। सामान्यीकरण का उद्देश्य स्पष्ट है (समान श्रेणी के फ़ीचर मान होने के लिए)। लेकिन, बहुत संघर्ष करने के बाद, मुझे डेटा में फेरबदल का कोई मूल्यवान कारण नहीं मिला।

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

हम ऐसा क्यों करते हैं?


1
यह बताने के लिए उपयोगी हो सकता है कि पहले लिंक में उत्तर ने आपकी मदद क्यों नहीं की। अन्यथा, हम पहले से ही थोड़े सुधार के साथ वहां बताई गई सामग्री को दोहराने का जोखिम उठा रहे हैं।
E_net4 का कहना है कि

जैसा कि मैंने कहा है कि मैं जानना चाहता हूं कि क्यों नहीं, क्या आप जानते हैं कि क्यों? क्या वास्तव में वहाँ समझाया गया है? मैंने इसके लिए कोई भी कागज नहीं देखा है
Media

1
उदाहरण के आदेश के प्रभाव के बारे में अधिक जानकारी के लिए पाठ्यक्रम लर्निंग [pdf] पढ़ें ।
Emre

1
मैंने इसे CrossValidated पर पोस्ट किया है और मुझे लगता है कि यह प्रासंगिक है। आँकड़े.स्टैकएक्सचेंज.com
जोश

@ वास्तव में यह पेपर फेरबदल के खिलाफ है, धन्यवाद, मैंने इस तरह की सीख के बारे में नहीं सुना।
मीडिया

जवाबों:


18

के आधार पर हम जब एक सवाल आँकड़ा विज्ञान पर तैनात एक सवाल CrossValidated पर पोस्ट का डुप्लिकेट है क्या करना चाहिए? , मैं CrossValidated ( /stats//a/311318/89653 ) पर पूछे गए एक ही सवाल के अपने जवाब को दोहरा रहा हूं ।

नोट: इस उत्तर के दौरान मैं प्रशिक्षण हानि को कम करने का संदर्भ देता हूं और मैं सत्यापन हानि जैसे मानदंड को रोकने पर चर्चा नहीं करता। मानदंड रोकने का विकल्प नीचे वर्णित प्रक्रिया / अवधारणाओं को प्रभावित नहीं करता है।

एक तंत्रिका नेटवर्क को प्रशिक्षित करने की प्रक्रिया एक नुकसान फ़ंक्शन का न्यूनतम मूल्य खोजना है , जहां न्यूरॉन्स और बीच वजन का एक मैट्रिक्स (या कई मैट्रिक्स) का प्रतिनिधित्व करता है और प्रशिक्षण डाटासेट का प्रतिनिधित्व करता है। मैं के लिए एक सबस्क्रिप्ट का उपयोग संकेत मिलता है कि के बारे में हमारी न्यूनतम केवल वजन अधिक होता (है कि, हम तलाश कर रहे हैं ऐसी है कि कम से कम है), जबकि तय हो गई है।X(W)WXXWWX

अब, यदि हम मानते हैं कि हमारे पास में तत्व हैं (अर्थात, नेटवर्क में वेट हैं ), -डिमेन्शनल स्पेस में एक सतह है। एक दृश्य एनालॉग देने के लिए, कल्पना करें कि हमारे पास केवल दो न्यूरॉन वजन ( ) हैं। तब एक आसान ज्यामितीय व्याख्या है: यह एक 3 आयामी अंतरिक्ष में एक सतह है। यह इस तथ्य से उत्पन्न होता है कि भार किसी भी दिए गए मैट्रिक्स के लिए , नुकसान फ़ंक्शन का मूल्यांकन पर किया जा सकता है और यह मान सतह की ऊंचाई बन जाता है।PWPP+1P=2WX

लेकिन गैर-उत्तलता की समस्या है; मेरे द्वारा बताई गई सतह में कई स्थानीय मिनीमा होंगे, और इसलिए ढाल मूलक एल्गोरिदम उन मिनीमा में "अटक" बनने के लिए अतिसंवेदनशील होते हैं, जबकि एक गहरा / निचला / बेहतर समाधान पास में हो सकता है। यदि सभी प्रशिक्षण पुनरावृत्तियों पर अपरिवर्तित है, तो यह होने की संभावना है , क्योंकि सतह किसी दिए गए लिए तय की गई है ; इसकी सभी विशेषताएं स्थिर हैं, जिसमें इसकी विभिन्न मिनीमा शामिल हैं।XX

इसका एक समाधान मिनी-बैच प्रशिक्षण है जिसे फेरबदल के साथ जोड़ा गया है। किसी दिए गए पुनरावृत्ति के दौरान उनमें से केवल एक सबसेट पर पंक्तियों और प्रशिक्षण को फेरबदल करके, हर पुनरावृत्ति के साथ बदलता है , और यह वास्तव में काफी संभव है कि प्रशिक्षण पुनरावृत्तियों और युगों के पूरे अनुक्रम पर कोई भी दो पुनरावृत्तियों सटीक एक ही पर प्रदर्शन नहीं किया जाएगा। । इसका प्रभाव यह है कि सॉल्वर एक स्थानीय न्यूनतम से आसानी से "उछाल" कर सकता है। कल्पना कीजिए कि solver यात्रा पर एक स्थानीय न्यूनतम में फंस गया है प्रशिक्षण मिनी बैच के साथ । यह स्थानीय न्यूनतम वजन के एक विशेष मूल्य पर मूल्यांकन के अनुरूप है ; हम इसेXXiXiXi(Wi)। अगली पुनरावृत्ति पर हमारी हानि सतह का आकार वास्तव में बदल जाता है क्योंकि हम का उपयोग कर रहे हैं , से बहुत भिन्न मान ले सकते हैं और यह बहुत संभव है कि यह किसी स्थानीय न्यूनतम के अनुरूप न हो! अब हम एक क्रमिक अद्यतन की गणना कर सकते हैं और प्रशिक्षण के साथ जारी रख सकते हैं। स्पष्ट होने के लिए: का आकार - सामान्य रूप से - । ध्यान दें कि यहां मैं नुकसान समारोह की चर्चा करते हुए हूँ प्रशिक्षण सेट पर मूल्यांकन ; यह सभी संभावित मूल्यों पर परिभाषित एक पूर्ण सतह हैXi+1Xi+1(Wi)Xi(Wi)Xi+1XiXWउस नुकसान के मूल्यांकन के बजाय (जो कि केवल एक अदिश राशि है) एक विशिष्ट मूल्य के लिए । यह भी ध्यान दें कि यदि मिनी-बैंग्स को फेरबदल के बिना उपयोग किया जाता है, तो नुकसान सतहों की "विविधीकरण" की डिग्री अभी भी है, लेकिन सॉल्वर द्वारा देखी गई अद्वितीय त्रुटि सतहों की एक परिमित (और अपेक्षाकृत छोटी) संख्या होगी (विशेष रूप से, यह देखेंगे) मिनी-बैचों का एक ही सटीक सेट - और इसलिए नुकसान की सतहों - प्रत्येक अवधि के दौरान)।W

एक बात जो मैंने जानबूझकर टाल दी थी, वह मिनी-बैच आकारों की चर्चा थी, क्योंकि इस पर एक लाख राय हैं और इसके महत्वपूर्ण व्यावहारिक निहितार्थ हैं (बड़े बैचों के साथ अधिक से अधिक समानता प्राप्त की जा सकती है)। हालांकि, मेरा मानना ​​है कि निम्नलिखित उल्लेख के लायक है। क्योंकि की प्रत्येक पंक्ति के लिए एक मूल्य की गणना के द्वारा मूल्यांकन किया जाता है वजन मैट्रिक्स का एक सेट के लिए; (यानी, एक विनिमेय ऑपरेटर और संक्षेप या लेने औसत) , की पंक्तियों की व्यवस्था कोई प्रभाव नहीं है जब पूर्ण उपयोग करते हुए बैच ग्रैडिएंट डिसेंट (जब प्रत्येक बैच पूर्ण , और पुनरावृत्तियों और युग एक ही बात है)।XWX X


+1। यह उत्तर तकनीकी रूप से बेहतर है जो अन्य उत्तर की तुलना में उच्चतर संख्या में बताया गया है।
गोकुल NC

29

फेरबदल डेटा विचरण को कम करने और यह सुनिश्चित करने के उद्देश्य से कार्य करता है कि मॉडल सामान्य बने रहें और कम ओवरफिट हों।

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

बैच ढाल वंश के लिए, वही तर्क लागू होता है। बैच ग्रेडिएंट डीसेंट के पीछे का विचार यह है कि सिंगल बैच पर ग्रेडिएंट की गणना करके, आपको आमतौर पर "ट्रू" ग्रेडिएंट का काफी अच्छा अनुमान मिलेगा। इस तरह, आप हर बार संपूर्ण डेटासेट पर "सही" ग्रेडिएंट की गणना न करके गणना समय की बचत करते हैं।

आप प्रत्येक युग के बाद अपने डेटा को फेरबदल करना चाहते हैं क्योंकि आपके पास हमेशा बैच बनाने का जोखिम होगा जो समग्र डेटासेट के प्रतिनिधि नहीं हैं, और इसलिए, ग्रेडिएंट का आपका अनुमान बंद हो जाएगा। प्रत्येक युग के बाद अपने डेटा को शफल करना यह सुनिश्चित करता है कि आप बहुत सारे खराब बैचों के साथ "अटक" नहीं जाएंगे।

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


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

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

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

7

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

इसलिए, इस तरह की समस्याओं को लागू करने के लिए, एक सरल समाधान डेटा को प्रशिक्षण, सत्यापन और परीक्षण डेटा के विभिन्न सेट प्राप्त करने के लिए बदल रहा है।

मिनी-बैच के बारे में, इस पोस्ट के उत्तर आपके प्रश्न का हल हो सकते हैं।


1
@Media प्रदान की गई लिंक में सबसे अधिक संबंधित उत्तर है: "छोटा-छोटा शिफ़्टिंग ग्रेडिएंट्स को अधिक परिवर्तनशील बनाता है, जो अभिसरण में मदद कर सकता है क्योंकि यह एक अच्छी दिशा से टकराने की संभावना को बढ़ाता है"
OmG

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

1

हमें केवल मिनीबैच / एसजीडी के लिए फेरबदल करने की आवश्यकता है, बैच ग्रेडिएंट वंश की कोई आवश्यकता नहीं है।

यदि डेटा में फेरबदल नहीं किया जाता है, तो डेटा को सॉर्ट किया जा सकता है या समान डेटा बिंदु एक-दूसरे के बगल में स्थित होंगे, जिससे धीमी गति से अभिसरण होता है:

  • समान नमूने समान सतहों (1 नमूने के लिए नुकसान फ़ंक्शन के लिए 1 सतह) का उत्पादन करेंगे -> ढाल समान दिशाओं को इंगित करेगा लेकिन यह दिशा शायद ही कभी न्यूनतम की ओर इशारा करती है - यह न्यूनतम से बहुत अधिक ग्रेडिएंट ड्राइव कर सकती है
  • "सर्वश्रेष्ठ दिशा": सभी सतहों के औसत ढाल (बैच ग्रेडिएंट डिसेंट) जो सीधे माइनम को इंगित करता है
  • "मिनिबैच दिशा": विभिन्न प्रकार की दिशाओं का औसत न्यूनतम के करीब इंगित करेगा, हालांकि उनमें से न्यूनतम के लिए इंगित करता है
  • "1-सैंपल दिशा": मिनीबैच की तुलना में न्यूनतम बिंदु को इंगित करता है

मैंने यहाँ के लिए रैखिक प्रतिगमन के लिए L-2 हानि फ़ंक्शन के प्लॉट को आकर्षित कियाy=2x


1

क्योंकि की प्रत्येक पंक्ति के लिए एक मूल्य की गणना के द्वारा मूल्यांकन किया जाता है वजन मैट्रिक्स का एक सेट के लिए; (यानी, एक विनिमेय ऑपरेटर और संक्षेप या लेने औसत) , की पंक्तियों की व्यवस्था जब पूर्ण का उपयोग कर कोई प्रभाव नहीं है बैच ढाल वंशXWX

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


धन्यवाद और हमारे समुदाय में आपका स्वागत है।
मीडिया

1

मॉडल की सर्वोत्तम सटीकता के लिए, यह हमेशा अनुशंसा की जाती है कि प्रशिक्षण डेटा में डेटा के सभी स्वाद होने चाहिए।

प्रशिक्षण डेटा में फेरबदल इस लक्ष्य को प्राप्त करने में हमारी मदद करता है।


1

किसी दिए गए पुनरावृत्ति के दौरान उनमें से केवल एक सबसेट पर पंक्तियों और प्रशिक्षण को फेरबदल करके, it हर पुनरावृत्ति के साथ बदल जाता है, और यह वास्तव में काफी संभव है कि प्रशिक्षण पुनरावृत्तियों और युगों के पूरे अनुक्रम पर कोई भी दो पुनरावृत्तियों सटीक same पर प्रदर्शन नहीं किया जाएगा।

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