मल्टी-लेयर परसेप्ट्रॉन (MLP) आर्किटेक्चर: छिपी हुई परतों की संख्या और छिपी हुई परत के आकार को चुनने के लिए मानदंड?


104

यदि हमारे पास 10 ईजेनवेक्टर हैं तो हमारे पास इनपुट लेयर में 10 न्यूरल नोड्स हो सकते हैं। यदि हमारे पास 5 आउटपुट क्लासेस हैं तो हमारे पास आउटपुट लेयर में 5 नोड्स हो सकते हैं। लेकिन एक एमएलपी में छिपे हुए लेयर की संख्या चुनने के लिए क्या मापदंड हैं और कितने न्यूरल हैं। 1 छिपा परत में नोड्स?



जवाबों:


216

कितनी छिपी हुई परतें ?

शून्य छिपी परतों वाला एक मॉडल रैखिक रूप से वियोज्य डेटा को हल करेगा । इसलिए जब तक आप पहले से ही यह नहीं जानते कि आपका डेटा रैखिक रूप से अलग नहीं है, तब तक यह सत्यापित करने में कोई हर्ज नहीं है - कार्य की आवश्यकता से अधिक जटिल मॉडल का उपयोग क्यों करें? यदि यह रैखिक रूप से अलग है, तो एक सरल तकनीक काम करेगी, लेकिन एक Perceptron काम भी करेगा।

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


छिपी हुई परत में कितने नोड हैं?

एमएलपी अकादमिक साहित्य से। मेरा अपना अनुभव वगैरह, मैंने इकट्ठा किया है और अक्सर अंगूठे ( RoT ) के कई नियमों पर भरोसा किया है , और जो मुझे विश्वसनीय मार्गदर्शक भी लगे हैं (यानी, मार्गदर्शन सटीक था, और तब भी जब यह नहीं था। आमतौर पर स्पष्ट था कि आगे क्या करना है):

अभिसरण में सुधार के आधार पर RoT :

जब आप मॉडल बिल्डिंग शुरू करते हैं, तो छिपी हुई परत में अधिक नोड्स की तरफ ।

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

इनपुट लेयर के आकार और आउटपुट लेयर के आकार के आधार पर RoTs :

अंगूठे का एक नियम इस [छिपी] परत के आकार के लिए इनपुट परत के आकार के बीच कहीं है ... और आउटपुट परत के आकार के लिए है ...।

छिपे हुए नोड्स की संख्या की गणना करने के लिए हम एक सामान्य नियम का उपयोग करते हैं: (इनपुट्स की संख्या + आउटपुट) x 2/3

मुख्य घटकों के आधार पर RoT :

आमतौर पर, हम इनपुट डेटा सेट के विचरण के 70-90% को पकड़ने के लिए आयाम [प्रमुख घटकों] के रूप में कई छिपे हुए नोड्स को निर्दिष्ट करते हैं

और फिर भी एनएन एफएक्यू लेखक इन नियमों को "बकवास" कहते हैं (शाब्दिक रूप से) क्योंकि वे: प्रशिक्षण उदाहरणों की संख्या, लक्ष्यों में शोर (प्रतिक्रिया चर के मान), और सुविधा स्थान की जटिलता को अनदेखा करते हैं।

उनके विचार में (और यह हमेशा मुझे लगता था कि वह जानते हैं कि वह किस बारे में बात कर रहे हैं), छिपी हुई परत में न्यूरॉन्स की संख्या चुनें कि क्या आपके एमएलपी में नियमितीकरण के कुछ रूप शामिल हैं, या शुरुआती रोक

हिडन लेयर में न्यूरॉन्स की संख्या के अनुकूलन के लिए एकमात्र वैध तकनीक:

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

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


व्यवहार में, मैं इसे इस तरह से करता हूं:

इनपुट लेयर : मेरे डेटा वैक्टर का आकार (मेरे मॉडल में सुविधाओं की संख्या) + 1 पूर्वाग्रह नोड के लिए और प्रतिक्रिया चर सहित, बिल्कुल नहीं

आउटपुट परत : मेरे मॉडल द्वारा निर्धारित की गई मिट्टी: प्रतिगमन (एक नोड) बनाम वर्गीकरण (नोड्स की संख्या वर्गों के बराबर, सॉफ्टमैक्स मानते हुए)

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

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


1
मैं # 1 RoT के संबंध में कुछ संबंधित परिणाम जोड़ना चाहूंगा: सफल SVM में आप वास्तव में अपने इनपुट को एक उच्च आयामी स्थान (एनएन पार्लेंस में इनपुट परत में नोड्स की तुलना में अधिक छिपा नोड्स) में मैप करते हैं। आउटपुट लेयर का काम इस अति-पूर्ण प्रतिनिधित्व से निर्णय लेना है। साथ ही रैंडम प्रोजेक्शंस का कनेक्शन हो सकता है। एडम कोट्स एंड एंड्रयू वाई। एनजी (2011) के शानदार पेपर संबंधित विषयों पर चर्चा करते हैं।
व्लादिस्लाव डोभालगल्स

अच्छी व्याख्या। स्केलेर और MLPClassifier का उपयोग करते समय मैं ऊपर की तरह एक आंकड़ा कैसे बना सकता हूं, इस पर कोई विचार?
सेरालोक

1
@ आप का मतलब xkcd स्टाइल है?
denfromufa

सिद्धांत रूप में, क्या आप छिपी परत में न्यूरॉन्स की संख्या के अनुकूलन की प्रक्रिया को स्वचालित कर सकते हैं? इसके अलावा, क्या आप छिपी हुई परतों की संख्या को स्वचालित रूप से भी अनुकूलित कर सकते हैं?
Addison

2

एक छिपी हुई परत में न्यूरॉन्स की संख्या को चुनना और अपने तंत्रिका नेटवर्क में छिपी हुई परतों की संख्या को चुनना बहुत मुश्किल है।

आमतौर पर, अधिकांश अनुप्रयोगों के लिए, एक छिपी हुई परत पर्याप्त होती है। इसके अलावा, उस छिपी परत में न्यूरॉन्स की संख्या इनपुट की संख्या (आपके उदाहरण में 10) और आउटपुट की संख्या (आपके उदाहरण में 5) के बीच होनी चाहिए।

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


1

परतों में से प्रत्येक के लिए सबसे अच्छी संख्या में परतों और न्यूरॉन्स की सबसे अच्छी संख्या के चयन को स्वचालित करने के लिए, आप आनुवंशिक अनुकूलन का उपयोग कर सकते हैं ।

मुख्य टुकड़े होंगे:

  1. गुणसूत्र : वेक्टर जो प्रत्येक छिपी हुई परत में कितनी इकाइयों को परिभाषित करता है (जैसे [20,5,1,0,0] जिसका अर्थ है कि पहली छिपी हुई परत में 20 इकाइयाँ, दूसरी में 5, ..., परतें 4 और 5 गायब हैं)। आप कोशिश करने के लिए परतों की अधिकतम संख्या और प्रत्येक परत में अधिकतम इकाइयों की सीमा निर्धारित कर सकते हैं। आपको यह भी प्रतिबंध लगाना चाहिए कि गुणसूत्र कैसे उत्पन्न होते हैं। उदाहरण के लिए [१०, ०, ३, ...] उत्पन्न नहीं किया जाना चाहिए, क्योंकि एक लापता परत (, 3, ... ’) के बाद कोई भी इकाई अप्रासंगिक होगी और मूल्यांकन चक्रों को बेकार कर देगी।
  2. फिटनेस फ़ंक्शन : एक फ़ंक्शन जो किसी दिए गए गुणसूत्र द्वारा परिभाषित नेटवर्क के क्रॉस-सत्यापन सेट में सबसे कम प्रशिक्षण त्रुटि के पारस्परिक रिटर्न देता है। यदि आप "सबसे छोटा / सबसे तेज़ अभी तक का सबसे सटीक नेटवर्क" खोजना चाहते हैं, तो आप कुल इकाइयों की संख्या या गणना समय भी शामिल कर सकते हैं।

आप इस पर भी विचार कर सकते हैं:

  • प्रूनिंग : एक बड़े नेटवर्क से शुरू करें, फिर परतों और छिपी हुई इकाइयों को कम करें, जबकि क्रॉस-वैलिडेशन सेट प्रदर्शन का ट्रैक रखें।
  • बढ़ते हुए : एक बहुत छोटे नेटवर्क से शुरू करें, फिर इकाइयों और परतों को जोड़ें, और फिर से सीवी सेट प्रदर्शन का ट्रैक रखें।

0

हाल ही में इस https://arxiv.org/abs/1809.09953 पर सैद्धांतिक काम है । मान लें कि आप एक RELU MLP का उपयोग करते हैं, तो सभी छिपी हुई परतों में समान संख्या में नोड्स होते हैं और आपका नुकसान फ़ंक्शन और सच्चा फ़ंक्शन जो आप एक न्यूरल नेटवर्क के साथ सन्निकटन कर रहे हैं, कुछ तकनीकी गुणों (कागज में) का पालन करते हैं, आप अपनी गहराई चुन सकते हैं $ $ लॉग (n) $ और आपकी छिपी हुई परतों की चौड़ाई $ n ^ {d / (2 (\ beta + d))} \ लॉग ^ 2 (n) $ ऑर्डर की हो। यहां $ n $ आपके नमूने का आकार है, $ d $ आपके इनपुट वेक्टर का आयाम है, और $ \ beta $ आपके सच्चे फ़ंक्शन के लिए एक चिकनाई पैरामीटर है। चूँकि $ \ बीटा $ अज्ञात है, आप शायद इसे हाइपरपैरमीटर मान सकते हैं।

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

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