जब मैंने कृत्रिम तंत्रिका नेटवर्क (एनएन) के साथ शुरुआत की, तो मुझे लगा कि मुझे मुख्य समस्या के रूप में ओवरफिटिंग से लड़ना होगा। लेकिन व्यवहार में मैं अपना NN 20% त्रुटि दर अवरोध को पास करने के लिए भी नहीं कर सकता। मैं भी यादृच्छिक जंगल पर अपने स्कोर को हरा नहीं सकता!
मैं कुछ बहुत ही सामान्य या सामान्य सलाह नहीं मांग रहा हूं कि किसी व्यक्ति को एनएन को डेटा में ट्रेंड कैप्चर करना शुरू करने के लिए क्या करना चाहिए।
एनएन को लागू करने के लिए, मैं एमएनआईएसटी डेटासेट को वर्गीकृत करने के लिए महान (कम से कम 5% त्रुटि दर) काम करने वाले ट्यूटोरियल से कोड के साथ थीनो स्टैक्ड ऑटो एनकोडर का उपयोग करता हूं । यह एक बहुपरत पर्सेप्ट्रॉन है, जिसके शीर्ष पर सॉफ्टमैक्स परत होती है, जिसे बाद में प्रत्येक छिपे हुए ऑटोकारोडर (पूरी तरह से ट्यूटोरियल , अध्याय 8 में वर्णित ) के रूप में प्रशिक्षित किया जाता है । ~ 50 इनपुट सुविधाएँ और ~ 10 आउटपुट क्लासेस हैं। NN में सिग्मॉइड न्यूरॉन्स होते हैं और सभी डेटा को सामान्य कर दिया जाता है [0,1]। मैंने बहुत सारे अलग-अलग विन्यासों की कोशिश की: उनमें छिपी परतों और न्यूरॉन्स की संख्या (100-> 100-> 100, 60-> 60-> 60, 60-> 30-> 15, आदि), अलग-अलग सीखने और पूर्व-ट्रेन दर, आदि
और सबसे अच्छी चीज जो मुझे मिल सकती है वह है सत्यापन सेट पर 20% त्रुटि दर और परीक्षण सेट पर 40% त्रुटि दर।
दूसरी ओर, जब मैं रैंडम फ़ॉरेस्ट (स्किकिट-लर्न से) का उपयोग करने का प्रयास करता हूं, तो मुझे आसानी से सत्यापन सेट पर 12% त्रुटि दर और परीक्षण सेट पर 25% (!) मिलता है।
यह कैसे हो सकता है कि पूर्व प्रशिक्षण के साथ मेरा गहरा एनएन इतनी बुरी तरह से व्यवहार करता है? मुझे क्या प्रयास करना चाहिए?