पुनरावृत्तियों की एक छोटी संख्या के साथ प्रारंभ (यह वास्तव में गिने जाने की पारंपरिक है 'अवधियों को' बजाय पुनरावृत्तियों - 'अवधियों को' नेटवर्क को प्रशिक्षित करने के लिए प्रयोग किया जाता संपूर्ण डेटा सेट के माध्यम से पुनरावृत्तियों की संख्या दर्शाता है)। 'छोटे' द्वारा 50 युग की तरह कुछ कहें। इसका कारण यह है कि आप देखना चाहते हैं कि प्रत्येक अतिरिक्त प्रशिक्षण चक्र (युग) के साथ कुल त्रुटि कैसे बदल रही है - उम्मीद है कि यह नीचे जा रहा है (नीचे 'कुल त्रुटि' पर अधिक)।
जाहिर है आप बिंदु (युग की संख्या) में रुचि रखते हैं जहां अगले अतिरिक्त युग में कुल त्रुटि में और कमी नहीं होती है। तो युगों की एक छोटी संख्या के साथ शुरू करें ताकि आप युग को बढ़ाकर उस बिंदु तक पहुंच सकें।
आपके द्वारा शुरू की जाने वाली सीखने की दर बहुत अच्छी या बहुत मोटाई नहीं होनी चाहिए, (स्पष्ट रूप से व्यक्तिपरक लेकिन उम्मीद है कि आपके पास बड़ी सीखने की दर के मुकाबले एक बड़ी समझ है)।
अगला, अपने perceptron में परीक्षण कोड की कुछ पंक्तियां डालें - वास्तव में केवल कुछ अच्छी तरह से 'प्रिंट' कथन। प्रत्येक पुनरावृत्ति के लिए, डेल्टा की गणना करें और दिखाएं (प्रशिक्षण डेटा शून्य से अनुमानित मूल्य में प्रत्येक डेटा बिंदु के लिए वास्तविक मूल्य) तो प्रशिक्षण डेटा में सभी बिंदुओं (डेटा पंक्तियों) पर व्यक्तिगत डेल्टा मानों को योग करें (मैं आमतौर पर पूर्ण मूल्य लेता हूं डेल्टा, या आप स्क्वायर मतभेदों के योग की वर्ग जड़ ले सकते हैं - इससे कोई फर्क नहीं पड़ता। उस समेकित मूल्य को कॉल करें "कुल त्रुटि" - बस स्पष्ट होने के लिए, यह कुल त्रुटि है (त्रुटि में त्रुटि सभी नोड्स) युग प्रति।
फिर, साजिश युग संख्या के एक समारोह के रूप में कुल त्रुटि (यानी, एक्स अक्ष पर युग संख्या, y अक्ष पर कुल त्रुटि)। शुरू में जाहिर है, आप ' ऊपरी बाएं कोने में डेटा बिंदुओं को नीचे और दाईं ओर और एक घटती ढलान के साथ
एल्गोरिदम प्रशिक्षण डेटा के खिलाफ नेटवर्क को प्रशिक्षित करने दें। (जैसे द्वारा, 10 रन प्रति) जब तक आप वक्र (बनाम युग संख्या कुल त्रुटि) को देखने के अवधियों को बढ़ाएँ समतल --i.e।, अतिरिक्त पुनरावृत्तियों कुल त्रुटि में कमी का कारण नहीं है।
तो उस वक्र की ढलान महत्वपूर्ण है और इसकी ऊर्ध्वाधर स्थिति - यानी, आपके पास कितनी त्रुटि है और क्या यह अधिक प्रशिक्षण चक्र (युग) के साथ नीचे की ओर बढ़ रहा है। यदि, युग बढ़ने के बाद, आप अंत में त्रुटि में वृद्धि देखते हैं, कम सीखने की दर के साथ फिर से शुरू करें।
सीखने की दर (आमतौर पर लगभग 0.01 और 0.2 के बीच एक अंश) निश्चित रूप से नेटवर्क को प्रशिक्षित करने के लिए कितनी जल्दी प्रभावित करेगा - यानी, यह आपको स्थानीय न्यूनतम स्थान पर ले जा सकता है। यह आपको इसके ऊपर कूदने का भी कारण बन सकता है। तो एक लूप को कोड करें जो नेटवर्क को प्रशिक्षित करता है, आइए प्रत्येक अलग-अलग युग (और एक ही प्रारंभिक बिंदु) का उपयोग करके पांच अलग-अलग समय कहें, लेकिन सीखने की दर को अलग-अलग, 0.05 से 0.2 तक, प्रत्येक बार सीखने की दर में वृद्धि 0.05।
यहां एक और पैरामीटर महत्वपूर्ण है (हालांकि कड़ाई से जरूरी नहीं), 'गति'। जैसा कि नाम से पता चलता है, एक गति अवधि का उपयोग करने से आपको पर्याप्त रूप से प्रशिक्षित नेटवर्क अधिक तेज़ी से प्राप्त करने में मदद मिलेगी। संक्षेप में, गति सीखने की दर के लिए एक गुणक है - जब तक त्रुटि दर घट रही है, गति गति प्रगति को तेज करती है। गति अवधि के पीछे अंतर्ज्ञान 'है जब तक आप गंतव्य की ओर यात्रा करते हैं, अपनी गति' बढ़ाएं। गति अवधि के लिए विशिष्ट मान 0.1 या 0.2 हैं। उपर्युक्त प्रशिक्षण योजना में, सीखने की दर को अलग करते समय आपको शायद गति स्थिर रखना चाहिए।
यह सही जवाब है, लेकिन अपनी लर्निंग रेट और मोमेंटम को उस डोमेन तक सीमित न करें (स्केलिंग)। एक यादृच्छिक नेटवर्क उत्पन्न करें, 0.01-0.99 को 0.05 चरणों को ले जाएं। यदि आप वैश्विक मिनीमा को इस तरह से हिला नहीं सकते हैं, तो सुनिश्चित करें कि आपने अपने इनपुट को सही तरीके से सामान्यीकृत किया है। मैं लॉग का एक बड़ा प्रशंसक हूँ! – deepelement