बैच और व्यक्तिगत अपडेट के बीच एमएलपी में नियमितीकरण में कोई अंतर?


9

मैंने ओवर-फिटिंग को नियंत्रित करने के लिए एक दृष्टिकोण के रूप में नियमितीकरण के बारे में सीखा है, और मैं बैकप्रॉपगैशन और मल्टीलेयर परसेप्ट्रॉन (एमएलपी) के एक सरल कार्यान्वयन में विचार को शामिल करना चाहूंगा ।

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

अद्यतन शब्द के लिए मेरे पास सूत्र (कौरसेरा एमएल कोर्स से) प्रत्येक वजन के लिए एक बैच अपडेट के रूप में कहा गया है, त्रुटि प्रसार से सेट पूरे प्रशिक्षण के लिए सभी लागू डेल्टास को समेटने के बाद, lambda * current_weightसंयुक्त से पहले एक समायोजन जोड़ा जाता है। डेल्टा को बैच के अंत में घटाया जाता है, जहां lambdaनियमितीकरण पैरामीटर है।

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

उदाहरण के लिए, lambda * current_weight / Nजहां N प्रशिक्षण सेट का आकार है - पहली नज़र में यह उचित लगता है। हालांकि मुझे इस विषय पर कुछ भी नहीं मिला, और मुझे आश्चर्य है कि अगर ऐसा है क्योंकि नियमितीकरण एक प्रति-आइटम अपडेट के साथ भी काम नहीं करता है, या यहां तक ​​कि एक अलग नाम या परिवर्तित सूत्र के तहत भी जाता है।

जवाबों:


2

नियमितीकरण प्रति-आइटम सीखने में भी प्रासंगिक है। मैं लैम्बडा का पता लगाने के लिए एक बुनियादी सत्यापन दृष्टिकोण के साथ शुरू करने का सुझाव दूंगा, चाहे आप बैच या प्रति-आइटम सीखने कर रहे हों। यह सबसे आसान और सबसे सुरक्षित तरीका है। कई अलग-अलग मानों के साथ मैन्युअल रूप से प्रयास करें। जैसे ०.००१। 0.003, 0.01, 0.03, 0.1 आदि और देखें कि आपका सत्यापन सेट कैसे व्यवहार करता है। बाद में आप एक रैखिक या स्थानीय खोज विधि शुरू करके इस प्रक्रिया को स्वचालित कर सकते हैं।

एक साइड नोट के रूप में, मेरा मानना ​​है कि प्रशिक्षण सेट आकार के बजाय लैम्बडा के मान को पैरामीटर वेक्टर के अपडेट के संबंध में माना जाना चाहिए। बैच प्रशिक्षण के लिए आपके पास प्रति डेटासेट पास का एक पैरामीटर अपडेट है , जबकि प्रति नमूना ऑनलाइन अपडेट के लिए (प्रशिक्षण सेट आकार की परवाह किए बिना)।

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


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

नियमितीकरण प्रति-आइटम सीखने में भी प्रासंगिक है। मैं अभी भी लंबोदर का पता लगाने के लिए एक बुनियादी सत्यापन दृष्टिकोण के साथ शुरू करने का सुझाव दूंगा। यह सबसे आसान और सबसे सुरक्षित तरीका है। कई अलग-अलग मानों के साथ मैन्युअल रूप से प्रयास करें। जैसे ०.००१। 0.003, 0.01, 0.03, 0.1 आदि और देखें कि आपका सत्यापन सेट कैसे व्यवहार करता है। बाद में आप एक रैखिक या स्थानीय खोज विधि शुरू करके इस प्रक्रिया को स्वचालित कर सकते हैं।
INSYS

यदि आपकी टिप्पणी ऊपर संपादित की गई थी और आपके उत्तर में पहला वाक्य / प्रश्न बदल दिया गया था, तो मुझे लगता है कि मैं इसे स्वीकार कर सकता हूं।
नील स्लेटर

इशारा करने के लिए धन्यवाद, मैं सहमत हूं। इसे संपादित किया। आशा है कि यह अधिक स्पष्ट है।
INSYS

2

पूरक के लिए जो कीड़े ने कहा:

नियमितीकरण का उपयोग आपके एमएलपी में सभी भारों के लिए बैकप्रोगैग्यूलेशन की गणना करते समय किया जाता है। इसलिए, प्रशिक्षण सेट ( batch) के सभी इनपुट के संबंध में ढाल की गणना करने के बजाय आप केवल कुछ / एक आइटम (एस) का उपयोग करते हैं stochastic or semi-stochastic। आप सभी के बजाय एक आइटम के संबंध में अपडेट के परिणाम को समाप्त कर देंगे, जो सही भी है।

इसके अलावा, अगर मुझे सही याद है, तो एंड्रयू एनजी का उपयोग किया गया था L2-regularization/Nमें lambda * current_weight / Nअनिवार्य नहीं है, यह सिर्फ इनपुट rescaling मदद करता है। हालाँकि, यदि आप इसका उपयोग नहीं करने का विकल्प चुनते हैं, तो आपके पास (अधिकांश मामले में) एक और मान चुनने के लिए होगा lambda

आप के लिए सबसे अच्छा मूल्य ( हाइपरपरमीटर => जिसे आपको चुनना है) चुनने के लिए ग्रिड-खोज एल्गोरिथ्म का उपयोग कर सकते हैं ।lambda

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