क्या मिनी-बैच प्रशिक्षण के लिए बेतरतीब ढंग से खींचे गए नमूने को तंत्रिका जाल को प्रतिस्थापन के बिना खींचा जाना चाहिए?


18

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

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

मैंने Googling और Ch पढ़ने की कोशिश की है। 1 नीलसन का तंत्रिका नेटवर्क और डीप लर्निंग में से स्पष्ट उत्तर नहीं मिला है। उस पाठ में नीलसन निर्दिष्ट नहीं करता है कि यादृच्छिक नमूना प्रतिस्थापन के बिना किया जाता है, लेकिन इसका मतलब यह है कि यह है।

यदि वांछित हो तो युगों में प्रशिक्षण की एक स्पष्ट औपचारिकता यहां पाई जा सकती है - /stats//a/141265/131630

संपादित करें: यह प्रश्न मेरे लिए समान था, लेकिन यह स्पष्ट नहीं था कि इस तथ्य को कैसे लागू किया जाए कि अपेक्षा की रैखिकता इस स्थिति के लिए स्वतंत्रता के प्रति उदासीन है - क्या प्रतिस्थापन के साथ या इसके बिना नमूना होना चाहिए


जब तक कोई डेटा विशिष्ट कारण नहीं है, तंत्रिका जाल प्रशिक्षण के लिए मिनी-बैच हमेशा प्रतिस्थापन के बिना तैयार किया जाता है। विचार यह है कि आप बैच मोड के बीच में होना चाहते हैं, जो संपूर्ण डेटासेट और SGD के साथ ढाल की गणना करता है, जो सिर्फ एक यादृच्छिक का उपयोग करता है।
राशिफल

एक यादृच्छिक नमूने का उपयोग करने के लिए SGD प्रतिबंधित नहीं है। उस प्रक्रिया को ऑनलाइन प्रशिक्षण कहा जाता है। "ढाल वंश का एक चरम संस्करण सिर्फ 1 के मिनी-बैच आकार का उपयोग करना है ... इस प्रक्रिया को ऑनलाइन, ऑन-लाइन या वृद्धिशील सीखने के रूप में जाना जाता है।" और यह भी, "स्टोचैस्टिक ग्रेडिएंट डिसेंट नामक एक विचार का उपयोग सीखने की गति बढ़ाने के लिए किया जा सकता है। यह विचार यादृच्छिक रूप से चुने गए प्रशिक्षण आदानों के एक छोटे नमूने के लिए [इसे] संगणना द्वारा ढाल gradC का अनुमान लगाने के लिए है। इस छोटे से औसत से। हम जल्दी से सच ढाल का एक अच्छा अनुमान प्राप्त कर सकते हैं "। नील्सन च के दोनों उद्धरण। 1.
बोबो

जवाबों:


13

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

संक्षेप में, यह पता चला है कि प्रतिस्थापन के बिना नमूना , प्रतिस्थापन के साथ नमूने की तुलना में तेजी से अभिसरण की ओर जाता है ।

मैं खिलौना उदाहरण के आधार पर यहां एक छोटा विश्लेषण दूंगा जो वे प्रदान करते हैं: मान लीजिए कि हम निम्नलिखित उद्देश्य फ़ंक्शन का अनुकूलन करना चाहते हैं:

xopt=argminx12i=1N(xyi)2

जहां लक्ष्य । इस उदाहरण में, हम इष्टतम के लिए हल करने के लिए कोशिश कर रहे हैं एक्स , यह देखते हुए एन के लेबल y मैं स्पष्ट रूप से।yiN(μ,σ2)xNyi

ठीक है, इसलिए यदि हम सीधे ऊपर के में एक्स के लिए हल करना चाहते थे , तो हम यहां हानि फ़ंक्शन का व्युत्पन्न करेंगे, इसे 0 पर सेट करेंगे, और एक्स के लिए हल करेंगे । तो ऊपर हमारे उदाहरण के लिए, नुकसान हैxx

L=12i=1N(xyi)2

और यह पहली व्युत्पन्न होगी:

δLδx=i=1N(xyi)

सेटिंग 0 करने के लिए और के लिए सुलझानेएक्स, पैदावार:δLδxx

xopt=1Ni=1Nyi

दूसरे शब्दों में, इष्टतम समाधान कुछ भी नहीं है, लेकिन y के सभी नमूनों का नमूना है ।Ny

अब, यदि हम उपरोक्त अभिकलन को एक बार में पूरा नहीं कर पाए, तो हमें इसे नीचे दिए गए ग्रेडिएंट डिसेंट अपडेट समीकरण के माध्यम से पुनरावर्ती रूप से करना होगा।

xi=xi1λi(f(xi1))

और बस हमारी शर्तों को यहाँ सम्मिलित करने से पैदावार होती है:

xi=xi1λi(xi1yi)

यदि हम उपरोक्त सभी लिए चलाते हैं एन , फिर हम प्रभावी रूप से प्रतिस्थापन के बिना इस अपडेट का प्रदर्शन कर रहे हैं । फिर सवाल यह हो जाता है कि क्या हम इस तरह से एक्स का इष्टतम मूल्य प्राप्त कर सकते हैं ? (याद रखें कि x का इष्टतम मान y के नमूने के अलावा और कुछ नहीं है )। जवाब हां है, यदि आप λ i = 1 / i करते हैं । देखने के लिए, हम इसका विस्तार करते हैं:i1,2,...Nxxyλi=1/i

xi=xi1λi(xi1yi) xi=xi11i(xi1yi) xi=ixi1(xi1yi)i xi=(i1)xi1+yii ixi=(i1)xi1+yi 

i=1i=2i=Nx

NxN=(N1)xN1+yN==>xN=1Ni=1Nyi=μ

In contrast however, if we actually drew with replacement, then while our draws would then be truly independent, the optimized value xN would be different from the (optimal) mean μ, and the square error would be given by:

E{(xNμ)2}

which is going to be a positive value, and this simple toy example can be extended to higher dimensions. This has the consequence that we would want to perform sampling without replacement as a more optimal solution.

Hope this clarifies it some more!


This example uses quite a lot of assumptions, i.e. the use of squared error and convexity of the loss landscape. Does the result hold when those assumptions are not satisfied?
bayerj

@bayerj This particular toy example, yes. However the paper goes on to extend it for some other further theoretical cases. I believe other sources [Boutou I think] show empirical support for without-replacement sampling being superior.
Tarin Ziyaee

@TarinZiyaee इस उत्तर के लिए धन्यवाद - क्या आप λ_k = 1 / k को स्पष्ट कर सकते हैं? हम यहां किस k की बात कर रहे हैं, उपरोक्त समीकरण से k? मैंने यहाँ आपका अनुसरण नहीं किया, जो बाद के सारांश और निष्कर्ष के बाद बना। धन्यवाद।
बोबो

1
@ बबो मैं आज रात पोस्ट को स्पष्ट करने की कोशिश करूंगा।
तारिन ज़ियाई

1
@ बबो मैंने अपना उत्तर एक गुच्छा अपडेट किया। कृपया देखें और मुझे बताएं कि क्या मदद करता है।
तरिन ज़ियाई

5

नीलसन के भंडार में कोड के अनुसार, मिनी-बैचों को बिना प्रतिस्थापन के लिया जाता है:

    def SGD(self, training_data, epochs, mini_batch_size, eta, test_data=None):
    n = len(training_data)
    for j in range(epochs):
            random.shuffle(training_data)
            mini_batches = [
                training_data[k:k+mini_batch_size]
                for k in range(0, n, mini_batch_size)
            ]
            for mini_batch in mini_batches:
                self.update_mini_batch(mini_batch, eta)

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

** EDIT: दरअसल, यह स्केलिंग def update_mini_batchफंक्शन में होती है । उदाहरण के लिए, वजन के साथ:

self.weights = [w-(eta/len(mini_batch))*nw for w, nw in zip(self.weights, nabla_w)]     

यह आवश्यक है क्योंकि अंतिम mini_batch पिछले mini_batches से छोटा हो सकता है यदि प्रति प्रशिक्षण नमूने की संख्या mini_batch उपलब्ध प्रशिक्षण नमूनों की कुल संख्या में समान रूप से विभाजित नहीं होती है।

mylist = ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10']
n = len(mylist)
mini_batch_size = 2
mini_batches = [
    mylist[k:k+mini_batch_size]
    for k in range(0, n, mini_batch_size)
    ]
for mini_batch in mini_batches:
    print(mini_batch)

आउटपुट:

['1', '2']
['3', '4']
['5', '6']
['7', '8']
['9', '10']

बदलने mini_batch_sizeके लिए 3है, जो समान रूप से हमारे 10 प्रशिक्षण नमूने से विभाजित नहीं होता। आउटपुट के लिए हमें मिलता है:

['1', '2', '3']
['4', '5', '6']
['7', '8', '9']
['10']

सूची सूचकांकों की एक श्रेणी का मूल्यांकन करते समय (फॉर्म का कुछ हिस्सा [x:y]जहां xऔर yसूची में कुछ सूचकांक होते हैं), यदि हमारा दायां हाथ मूल्य सूची की लंबाई से अधिक है, तो अजगर सूची से आइटम को तब तक लौटाता है जब तक कि मूल्य सूचकांक सीमा से बाहर नहीं जाता है ।

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

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