2010-05-23 11 views
7

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

इनपुट डेटा पूर्णांक की एक श्रृंखला से बना है जो उपयोगकर्ता जितना ऊंचा हो सकता है उतना ऊंचा हो सकता है, लेकिन अधिकांश 100,000 से कम होंगे, मैंने सोचा होगा। कुछ 1 के रूप में कम होंगे। वे एक परियोजना पर लोगों की संख्या और एक परियोजना की लागत, साथ ही डेटाबेस इकाइयों के बारे में विवरण और मामलों का उपयोग करने जैसे विवरण हैं।

कुल में 10 इनपुट और 2 आउटपुट (समय और लागत) हैं। मैं नेटवर्क को प्रशिक्षित करने के लिए रेजिएंटल प्रचार का उपयोग कर रहा हूं। वर्तमान में इसमें: 10 इनपुट नोड्स, 5 नोड्स और 2 आउटपुट नोड्स के साथ 1 छिपी हुई परत है। मैं 5% त्रुटि दर के तहत प्रशिक्षण के लिए प्रशिक्षण दे रहा हूं।

एल्गोरिदम को वेबसर्वर पर चलाना चाहिए, इसलिए मैंने प्रशिक्षण को रोकने के लिए एक उपाय किया है जब ऐसा लगता है कि यह कहीं भी नहीं जा रहा है। यह 10,000 प्रशिक्षण पुनरावृत्तियों पर सेट है।

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

यह पहली बार है जब मैंने तंत्रिका नेटवर्क का उपयोग किया है और मुझे वास्तव में पता नहीं है कि क्या उम्मीद करनी है। यदि आप मुझे कुछ संकेत दे सकते हैं कि नेटवर्क के लिए मुझे किस प्रकार की सेटिंग्स का उपयोग करना चाहिए और पुनरावृत्ति सीमा के लिए मैं इसकी सराहना करता हूं।

धन्यवाद!

उत्तर

10

सबसे पहले, आपके नेटवर्क के बारे में बहुत अधिक जानकारी प्रदान करने के लिए धन्यवाद! यहां कुछ पॉइंटर्स हैं जो आपको एक स्पष्ट तस्वीर देनी चाहिए।

  • आपको अपने इनपुट को सामान्यीकृत करने की आवश्यकता है। यदि एक नोड 100,000 का औसत मान देखता है और दूसरा 0.5 है, तो आपको दो इनपुट से बराबर प्रभाव दिखाई नहीं देगा। यही कारण है कि आपको उन्हें सामान्यीकृत करने की आवश्यकता होगी।
  • 10 इनपुट नोड्स के लिए केवल 5 छिपे न्यूरॉन्स? मुझे कहीं पढ़ना याद है कि आपको कम से कम इनपुट की संख्या दोगुना है; 20+ छुपे हुए न्यूरॉन्स आज़माएं। यह आपके तंत्रिका नेटवर्क मॉडल को एक और जटिल मॉडल विकसित करने की क्षमता प्रदान करेगा। हालांकि, बहुत से न्यूरॉन्स और आपका नेटवर्क केवल प्रशिक्षण डेटा सेट को याद रखेगा।
  • लचीला बैकप्रोपैगेशन ठीक है। बस याद रखें कि लेवेनबर्ग-मार्वार्ट जैसे वहां अन्य प्रशिक्षण एल्गोरिदम हैं।
  • आपके पास कितने प्रशिक्षण सेट हैं? तंत्रिका नेटवर्क को आमतौर पर उपयोगी भविष्यवाणियों में अच्छा होने के लिए एक बड़े डेटासेट की आवश्यकता होती है।
  • यदि आप पहले से ऐसा नहीं कर चुके हैं तो चीजों को गति देने के लिए अपने वजन-प्रशिक्षण एल्गोरिदम में एक गति कारक जोड़ने पर विचार करें।
  • ऑनलाइन प्रशिक्षण बैच प्रशिक्षण की तुलना में सामान्यीकृत भविष्यवाणियां बनाने के लिए बेहतर होता है। नेटवर्क के माध्यम से प्रत्येक प्रशिक्षण सेट को चलाने के बाद पूर्व अपडेट वजन, जबकि बाद में प्रत्येक डेटा सेट के माध्यम से नेटवर्क को अद्यतन करता है। यह तुम्हारा निर्णय है।
  • क्या आपका डेटा असतत या निरंतर है? तंत्रिका नेटवर्क निरंतर कार्यों की तुलना में 0 एस और 1 एस के साथ बेहतर काम करते हैं। यदि यह पूर्व है, तो मैं सिग्मोइड सक्रियण फ़ंक्शन का उपयोग करने की अनुशंसा करता हूं। छिपे हुए और आउटपुट परतों के लिए tanh और linear सक्रियण कार्यों का संयोजन निरंतर-भिन्न डेटा के साथ एक अच्छा काम करता है।
  • क्या आपको एक और छिपी हुई परत की आवश्यकता है? यह आपकी सहायता कर सकता है यदि आपका नेटवर्क जटिल इनपुट-आउटपुट सतह मैपिंग से निपट रहा है।
+0

सभी जानकारी के लिए धन्यवाद! 1. मैंने इनपुट को सामान्य करने के बारे में सोचा था, लेकिन मुझे नहीं पता कि यह कैसे करना है जब कोई मान अधिकतम नहीं है और कुछ मान भिन्न हो सकते हैं। 2. मैंने 20 छिपे न्यूरॉन्स के साथ प्रयास किया और कुछ डेटा के लिए सेकंड के बजाय 5+ घंटे लग रहे थे। ऐसा लगता है कि 10 से अधिक अच्छा नहीं था। 4. डेटासेट की संख्या इस बात पर निर्भर करती है कि उपयोगकर्ता कितने रखता है। हम लगभग 5. का उपयोग कर रहे हैं 5. हम एनकॉग नामक एक तंत्रिका नेटवर्क ढांचे का उपयोग कर रहे हैं, मैं गति को बदलने में देखता हूं, लेकिन मुझे नहीं पता अगर यह संभव है। – danpalmer

+0

6. फिर, मुझे नहीं पता कि ढांचा ऑनलाइन प्रशिक्षण के साथ कैसे काम करता है, मैं इसे देख लूंगा। 7. डेटा सभी निरंतर है और मैंने सब कुछ पर रैखिक सक्रियण सेट किया है क्योंकि मैं कल्पना करता हूं कि परिणाम आउटपुट के साथ अलग-अलग कैसे हो सकते हैं। 8. बिंदु 2 की तरह, मैंने पाया कि 2 परतों के साथ यह मेरी लगाई गई सीमा को बहुत अधिक मार रहा था और चलाने के लिए बहुत लंबा समय ले रहा था। – danpalmer

+0

लॉल। मुझे कल भी कॉलेज में होना चाहिए। मैंने थोड़ा सामान्यीकरण जोड़ा है। यह बहुत अच्छा नहीं है, लेकिन सभी डेटासेट मान 0 और 1 के बीच होंगे और भविष्यवाणियां उतनी अधिक नहीं होंगी। मुझे एक चीज़ पर 18000% की प्रशिक्षण गति में वृद्धि हुई है। मैं परीक्षण जारी रखूंगा और कुछ अन्य उपायों को लागू करने का प्रयास करूंगा, लेकिन अब इसके लिए एक अच्छा परिणाम है। मदद के लिए आपका बहुत बहुत धन्यवाद! – danpalmer

संबंधित मुद्दे