सभी प्रशिक्षण डेटा के साथ मिनी बैच का आकार एक एकल "बैच" से बेहतर क्यों है?


40

मैं अक्सर पढ़ता हूं कि डीप लर्निंग मॉडल के मामले में सामान्य अभ्यास कई प्रशिक्षण युगों में मिनी बैच (आमतौर पर एक छोटा, 32/64) लागू करना है। मैं वास्तव में इसके पीछे का कारण नहीं समझ सकता।

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


1
इस उत्तर की जाँच करें
१२:०। पर '



जवाबों:


46

पूर्ण डेटासेट के विपरीत मिनीबच का उपयोग करने का मुख्य लाभ स्टोचैस्टिक ग्रेडिएंट डिसेंट 1 के मूल विचार पर वापस जाता है ।

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

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

मिनीबैच कार्यप्रणाली एक समझौता है जो प्रत्येक सापेक्ष अद्यतन के लिए पर्याप्त शोर को इंजेक्ट करता है, जबकि एक रिश्तेदार शीघ्र अभिसरण प्राप्त करता है।

1 बोटौ, एल। (2010)। स्टोचस्टिक ढाल वंश के साथ बड़े पैमाने पर मशीन सीखने। COMPSTAT'2010 (पीपी। 177-186) की कार्यवाही में। Physica-Verlag HD।

[२] जीई, आर।, हुआंग, एफ।, जिन, सी।, और युआन, वाई। (२०१५, जून)। टेंसर डिकम्पोजिशन के लिए सैडल पॉइंट्स-ऑनलाइन स्टोचस्टिक ग्रेडिएंट से बचना। COLT (पीपी। 797-842) में।

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

मैंने अभी यन लेकन के फेसबुक पर इस टिप्पणी को देखा, जो इस प्रश्न पर एक नया दृष्टिकोण देता है (क्षमा करें पता नहीं है कि कैसे एफबी को लिंक किया जाए।)

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

उन्होंने इस पत्र का हवाला दिया जो अभी कुछ दिन पहले (अप्रैल 2018) पर arXiv पर पोस्ट किया गया है, जो पढ़ने लायक है,

डोमिनिक मास्टर्स, कार्लो लुच्ची, डीप न्यूरल नेटवर्क्स के लिए लघु बैच प्रशिक्षण का पुनरीक्षण , arXiv: 1804.0768v1

अमूर्त से,

जबकि बड़े मिनी-बैचों का उपयोग उपलब्ध कम्प्यूटेशनल समानता को बढ़ाता है, छोटे बैच प्रशिक्षण को बेहतर सामान्यीकरण प्रदर्शन प्रदान करने के लिए दिखाया गया है ...

सबसे अच्छा प्रदर्शन लगातार m-2 और m = 32 के बीच मिनी-बैच आकारों के लिए प्राप्त किया गया है, जो हजारों में मिनी-बैच आकारों के उपयोग की वकालत करने वाले हाल के काम के विपरीत है।


2
मिनी-ग्रेड ग्रेडिएंट डिसेंट को बैच ढाल डिसेंट की तुलना में खराब स्थानीय मिनिमा से बचने की अधिक संभावना क्यों होनी चाहिए? क्या आपके पास वापस दावा करने के लिए कुछ है?
मार्टिन थॉमा

@MartinThoma [2] में देखें, JMLR पर हाल ही में एक पेपर।
राशिफल

2
ϕ(w,X)

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

8

मेमोरी वास्तव में ऐसा करने का कारण नहीं है , क्योंकि आप अपने ग्रेडिएंट्स को जमा कर सकते हैं क्योंकि आप डेटासेट के माध्यम से पुनरावृत्ति करते हैं, और उन्हें अंत में लागू करते हैं, लेकिन अभी भी SGD में आप उन्हें हर कदम पर लागू करते हैं।

कारण यह है कि SGD का व्यापक रूप से उपयोग किया जाता है:

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

2) अनुकूलन: शोर अपडेट आपको खराब स्थानीय ऑप्टिमा से बाहर निकलने की अनुमति दे सकता है (हालांकि मेरे पास ऐसा स्रोत नहीं है जो दिखाता है कि यह व्यवहार में मायने रखता है)।

३) सामान्यीकरण। ऐसा लगता है (देखें जांग एट अल: थ्योरी ऑफ डीप लर्निंग III: जेनरेशन ऑफ प्रॉपर्टीज ऑफ डब्ल्यूजीई ) जो कि वास्तव में प्रशिक्षण सेट पर "फ्लैट" मिनीमा को खोजने के लिए सामान्यीकरण में मदद करता है, जो कि परीक्षण सेट पर मिनिमा होने की अधिक संभावना है। Intuitively, हम एक प्रकार के रूप SGD के बारे में सोच सकते हैं पर जीतना - डेटा के कई minibatches के आधार पर हमारे मापदंडों की गणना के द्वारा, हम नियमों फिर से मज़बूत करना है कि minibatches भर में सामान्यीकरण, और नियम नहीं है रद्द, जिससे को overfitting करने के लिए हमें कम होने का खतरा बना प्रशिक्षण सेट।


3

जब तक मैं गलत नहीं हूँ, बैच का आकार एक प्रशिक्षण पुनरावृत्ति के दौरान मॉडल द्वारा देखे जाने वाले प्रशिक्षण उदाहरणों की संख्या है

सही (हालाँकि मैं इसे "वेट अपडेट स्टेप" कहूंगा)

और युग एक पूर्ण मोड़ है जब प्रशिक्षण के प्रत्येक उदाहरण मॉडल द्वारा देखे गए हैं

सही बात

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

खैर, बहुत ज्यादा है। आपके पास आमतौर पर पर्याप्त मेमोरी नहीं है। आइए हम बताते हैं कि हम छवि वर्गीकरण के बारे में बात कर रहे हैं। ImageNet एक बेतहाशा लोकप्रिय डेटासेट है। काफी समय के लिए, VGG-16D सबसे लोकप्रिय mod.els में से एक था। इसे एक 224x224 छवि के लिए 15 245 800 फ़्लोट्स (फीचर मैप्स में) की गणना करने की आवश्यकता है। इसका मतलब प्रति छवि लगभग 61MB है। यह प्रत्येक छवि के लिए प्रशिक्षण के दौरान आपको कितनी स्मृति की आवश्यकता है, यह केवल एक कठिन सीमा है। ImageNet में कई हजार (मुझे लगता है कि लगभग 1.2 मिलियन?) चित्र हैं। जब आपके पास इतनी मुख्य मेमोरी हो सकती है, तो निश्चित रूप से आपके पास इतना जीपीयू मेमोरी नहीं है। मैंने देखा है कि GPU लगभग 21x चीजों को गति देता है। तो आप निश्चित रूप से GPU का उपयोग करना चाहते हैं।

भी: एक मिनी-बैच के लिए समय बहुत कम है। तो सवाल यह है: क्या आप बजाय GPU पर मिनी-बैच प्रति घंटे के साथ n अद्यतन चरणों या GPU के बिना बैच के साथ m अद्यतन चरणों, जहां n >> एम।


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

1

अन्य उत्तरों के अलावा मुझे लगता है कि यह इंगित करने के लायक है कि दो मात्राएँ हैं जो अलग-अलग हैं लेकिन अक्सर युग्मित हैं:

  1. प्रत्येक चरण में मापदंडों की ढाल की गणना करने के लिए उपयोग किए जाने वाले इनपुट की संख्या।

जैसा कि दूसरों ने बताया है, एक मिनीबैच के संबंध में ग्रेडिएंट वास्तविक ग्रेडिएंट का एक अनुमान है। जितना बड़ा मिनीबैच होगा, उतना ही बेहतर होगा।

  1. एक सरणी में एकत्र किए गए इनपुट की संख्या और "एक ही समय में गणना की गई"

यहाँ पर व्यापार विशुद्ध रूप से प्रदर्शन (मेमोरी / साइकिल) के बारे में है।

ये मात्राएं आमतौर पर एक ही होती हैं, यानी मिनीबैच का आकार, लेकिन सिद्धांत रूप में इन्हें डिकॉय किया जा सकता है।

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