ट्रेडऑफ बैच आकार बनाम पुनरावृत्तियों की संख्या एक तंत्रिका नेटवर्क को प्रशिक्षित करने के लिए


221

एक तंत्रिका नेटवर्क को प्रशिक्षित करते समय, क्या फर्क पड़ता है:

  • करने के लिए बैच का आकार और पुनरावृत्तियों की संख्या
  • बनाम बैच आकार से लेकर और पुनरावृत्तियों की संख्यासी

जहां ?=सी

अन्यथा इसे लगाने के लिए, यह मानते हुए कि हम तंत्रिका नेटवर्क को समान उदाहरणों के प्रशिक्षण के साथ प्रशिक्षित करते हैं, कैसे इष्टतम बैच आकार और पुनरावृत्तियों की संख्या निर्धारित करें? (जहां बैच आकार * पुनरावृत्तियों की संख्या = तंत्रिका नेटवर्क को दिखाए गए प्रशिक्षण उदाहरणों की संख्या, समान प्रशिक्षण उदाहरण संभावित रूप से कई बार दिखाई देते हैं)

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


1
इस ब्लॉग को देखें जो बताता है कि Cifar-10 डेटासेट की सटीकता पर विभिन्न बैच आकारों के प्रभावों की तुलना करते हुए सही बैच आकार कैसे चुनें।
तेजा श्रीनिवास

जवाबों:


207

नितीश शिरीष केसकर, धेवत्स मुदिगेरे, जोर्ज नोकेडल, मिखाइल स्मेल्यांस्की, पिंग ताक पीटर तांग से। डीप लर्निंग के लिए बड़े-बैच प्रशिक्षण पर: सामान्यीकरण गैप और तीव्र मिनिमा। https://arxiv.org/abs/1609.04836 :

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

[...]

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

[...]

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

इसके अलावा, इयान गुडफेलो से कुछ अच्छी अंतर्दृष्टि का जवाब क्यों ढाल की गणना करने के लिए पूरे प्रशिक्षण सेट का उपयोग नहीं करते हैं? Quora पर:

सीखने की दर का आकार ज्यादातर कारकों द्वारा सीमित है जैसे कि लागत फ़ंक्शन कैसे घुमावदार है। आप ढाल समारोह को लागत समारोह के लिए एक रैखिक सन्निकटन बनाने के बारे में सोच सकते हैं, फिर उस अनुमानित लागत के साथ नीचे की ओर बढ़ रहे हैं। यदि लागत फ़ंक्शन अत्यधिक गैर-रैखिक (अत्यधिक घुमावदार) है, तो अनुमान बहुत दूर के लिए बहुत अच्छा नहीं होगा, इसलिए केवल छोटे कदम आकार सुरक्षित हैं। आप इसके बारे में और अधिक गहराई से सीखने वाले पाठ्यपुस्तक के अध्याय 4 में संख्यात्मक गणना पर पढ़ सकते हैं: http://www.deeplearningbook.org/contents/numerical.html

जब आप एक मिनीबैच में m उदाहरण डालते हैं, तो आपको O (m) गणना करने और O (m) मेमोरी का उपयोग करने की आवश्यकता होती है, लेकिन आप केवल O (sqrt (m)) के एक कारक द्वारा ढाल में अनिश्चितता की मात्रा को कम करते हैं। दूसरे शब्दों में, मिनीबैच में और अधिक उदाहरण डालने के लिए मामूली रिटर्न कम है। आप इसके बारे में और अधिक पढ़ सकते हैं गहन शिक्षण पाठ्यपुस्तक के अध्याय 8 में, गहन शिक्षा के लिए अनुकूलन एल्गोरिदम पर: http://www.deeplearningbook.org/contents/optimization.html

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

संबंधित: बैच ग्रेडिएंट वंश बनाम स्टोचस्टिक ग्रेडिएंट वंश


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

@ user12348 आप डाटासेट को पुनर्व्यवस्थित कैसे करेंगे? आप कैसे अनुमान लगा सकते हैं कि दिए गए डेटा आयाम प्रशिक्षण के बाद विशिष्ट फीचर वेक्टर का उत्पादन करेंगे?
मेघ चो

46

मुझे लगता है कि आप एक मिनी बैच स्टोचस्टिक ढाल वंश एल्गोरिथ्म में बैच के आकार को कम करने और कम पुनरावृत्तियों की आवश्यकता वाले बड़े बैच आकारों की तुलना करने के बारे में बात कर रहे हैं।

एंड्रयू एनजी। यह एमएल और तंत्रिका नेटवर्क पर अपने ऑनलाइन पाठ्यक्रम वर्ग में इस और कुछ दृश्यों की एक अच्छी चर्चा प्रदान करता है। तो इस पद के बाकी ज्यादातर उस वर्ग से उनकी शिक्षाओं का एक पुनरुत्थान है।

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

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

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

कम्प्यूटेशनल शक्ति के संदर्भ में, जबकि एकल-नमूना स्टोचस्टिक जीडी प्रक्रिया कई और पुनरावृत्तियों को लेती है, आप पूर्ण बैच मोड की तुलना में कम लागत के लिए वहां पहुंचते हैं, "आमतौर पर।" इस तरह से एंड्रयू एनजी इसे लगाता है।

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

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

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


22

टीएल; डीआर: बहुत बड़ा एक मिनी-बैच आकार आमतौर पर कम सटीकता की ओर जाता है !

उन लोगों के लिए, यहाँ एक स्पष्टीकरण है।

गति की दो धारणाएँ हैं:

  • कम्प्यूटेशनल गति
  • एक एल्गोरिथ्म के अभिसरण की गति

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

लेकिन, यह मत भूलो कि गति की दूसरी धारणा भी है, जो हमें बताती है कि हमारा एल्गोरिदम कितनी जल्दी परिवर्तित होता है।

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

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

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

मैं जो कहना चाहता हूं, वह किसी सटीकता (या त्रुटि) के लिए है, छोटे बैच आकार के कारण कुल प्रशिक्षण समय हो सकता है, लंबे समय तक नहीं, जैसा कि कई लोग मानते हैं।

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

यदि आपके पास समय है, तो इस पेपर की जांच करें: विशेष रूप से इमेजनेट पर सीएनएन अग्रिमों का व्यवस्थित मूल्यांकन , "3.7। बैच आकार और सीखने की दर" की जांच करें, और चित्रा 8. आप देखेंगे कि बड़े मिनी-बैच आकार एक बेहतर सटीकता की ओर ले जाते हैं। , भले ही ट्यूनिंग सीखने की दर एक अनुमानी के लिए।

सामान्य तौर पर, 32 का बैच आकार एक अच्छा प्रारंभिक बिंदु है, और आपको 64, 128 और 256 के साथ भी प्रयास करना चाहिए। कुछ डेटा सेट के लिए अन्य मान (कम या अधिक) ठीक हो सकते हैं, लेकिन दी गई सीमा आमतौर पर सबसे अच्छी होती है के साथ प्रयोग करना शुरू करें। हालांकि, 32 से कम, यह काफी कम कम्प्यूटेशनल गति के कारण धीमा हो सकता है, क्योंकि पूर्ण सीमा तक वैश्वीकरण का शोषण नहीं करता है। यदि आपको "मेमोरी से बाहर" त्रुटि मिलती है, तो आपको वैसे भी मिनी-बैच आकार को कम करने का प्रयास करना चाहिए।

तो, यह केवल सबसे बड़े संभव मिनी-बैच आकार का उपयोग करने के बारे में नहीं है जो स्मृति में फिट बैठता है।

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

यह मत भूलो कि उच्च शोर एक खराब स्थानीय न्यूनतम से बाहर कूदने में मदद कर सकता है, बल्कि इसमें फंसने से छोड़ सकता है।


14

मैं इस प्रश्न का एक और उत्तर Google के एक नए (2018) ICLR सम्मेलन पत्र के संदर्भ में जोड़ रहा हूं जो इस प्रश्न को लगभग सीधे संबोधित करता है।

शीर्षक: लर्निंग रेट को न घटाएं, बैच का आकार बढ़ाएं

https://arxiv.org/abs/1711.00489

उपरोक्त कागज़ के सार की प्रतिलिपि यहाँ दी गई है:

सीखने की दर को कम करना आम बात है। यहां हम दिखाते हैं कि आमतौर पर प्रशिक्षण के दौरान बैच आकार बढ़ाने के बजाय प्रशिक्षण और परीक्षण सेट दोनों पर एक ही सीखने की अवस्था प्राप्त कर सकते हैं। यह प्रक्रिया स्टोकेस्टिक ग्रेडिएंट डिसेंट (डब्ल्यूडब्ल्यूडी), एसडब्ल्यूई के साथ गति, नेस्टरोव गति और एडम के लिए सफल है। यह समान संख्या में प्रशिक्षण युगों के बाद समकक्ष परीक्षण सटीकता तक पहुंचता है, लेकिन कम पैरामीटर अपडेट के साथ, अधिक समानता और कम प्रशिक्षण समय के लिए अग्रणी होता है। हम सीखने की दर को बढ़ाकर और बैच आकार B reduce को मापकर पैरामीटर अपडेट की संख्या को और कम कर सकते हैं। अंत में, कोई गति गुणांक m और स्केल B /1 / (1 can m) बढ़ा सकता है, हालांकि यह परीक्षण सटीकता को थोड़ा कम करता है। महत्वपूर्ण बात है, हमारी तकनीकें हमें किसी भी हाइपर-पैरामीटर ट्यूनिंग के साथ बड़े बैच के प्रशिक्षण के लिए मौजूदा प्रशिक्षण कार्यक्रम को फिर से तैयार करने की अनुमति देती हैं। हम ResNet-50 को ImageNet पर 76.1% सत्यापन सटीकता के साथ 30 मिनट के भीतर प्रशिक्षित करते हैं।


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

3

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

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