मैं किसी समस्या को हल करने के लिए एक तंत्रिका नेटवर्क का उपयोग करने की कोशिश कर रहा हूं। मैंने उनके बारे में Coursera पर दिए गए मशीन लर्निंग कोर्स से सीखा, और यह जानकर प्रसन्नता हुई कि एफएएनएन तंत्रिका नेटवर्क का रूबी कार्यान्वयन है, इसलिए मुझे हवाई जहाज का फिर से आविष्कार नहीं करना पड़ा।तंत्रिका नेटवर्क को समझने में परेशानी होने के कारण
हालांकि, मैं वास्तव में समझ में नहीं आता कि एफएएनएन मुझे इतना अजीब आउटपुट क्यों दे रहा है। कक्षा से जो मैंने सीखा, उसके आधार पर,
मेरे पास प्रशिक्षण डेटा का एक सेट है जो मैचों के परिणाम हैं। खिलाड़ी को एक नंबर दिया जाता है, उनके प्रतिद्वंद्वी को एक संख्या दी जाती है, और परिणाम एक जीत के लिए 1 और नुकसान के लिए 0 होता है। डेटा परेशानियों के कारण थोड़ा शोर है, लेकिन बहुत कुछ नहीं। मेरा लक्ष्य यह है कि कौन से रेटिंग अंतर अधिक परेशान हैं - उदाहरण के लिए, मेरा अंतर्ज्ञान मुझे बताता है कि निम्न-रेटेड मैचों में अधिक परेशानियां होती हैं क्योंकि रेटिंग कम सटीक होती है।
तो मुझे लगभग 100 उदाहरणों का प्रशिक्षण सेट मिला। प्रत्येक उदाहरण है (रेटिंग, डेल्टा) => 1/0। तो यह एक वर्गीकरण समस्या है, लेकिन वास्तव में ऐसा नहीं है जो मुझे लगता है कि खुद को एक लॉजिस्टिक रिग्रेशन-टाइप चार्ट में उधार देता है, और एक तंत्रिका नेटवर्क अधिक सही लग रहा था।
मेरे कोड शुरू होता है
training_data = RubyFann::TrainData.new(:inputs => inputs, :desired_outputs => outputs)
मैं तो
network = RubyFann::Standard.new(
:num_inputs=>2,
:hidden_neurons=>[8, 8, 8, 8],
:num_outputs=>1)
कक्षा में साथ तंत्रिका नेटवर्क की स्थापना की, मुझे पता चला कि एक यथोचित डिफ़ॉल्ट की एक ही नंबर के साथ प्रत्येक छिपी परत है इकाइयों। चूंकि मुझे वास्तव में यह नहीं पता कि यह कैसे काम करना है या मैं अभी तक क्या कर रहा हूं, इसलिए मैं डिफ़ॉल्ट रूप से गया।
network.train_on_data(training_data, 1000, 1, 0.15)
और फिर अंत में, मैं वेतन वृद्धि में नमूना इनपुट रेटिंग का एक सेट के माध्यम से चला गया और, प्रत्येक वेतन वृद्धि में, डेल्टा में वृद्धि हुई है जब तक परिणाम < 0.5 से किया जा रहा से 0.5> बंद है, जो मैं के बारे में 0 होना करने के लिए ले लिया और लगभग 1, हालांकि वास्तव में वे 0.45 और 0.55 की तरह अधिक थे।
जब मैंने इसे एक बार चलाया, तो उसने मुझे प्रत्येक इनपुट के लिए 0 दिया। मैंने इसे एक ही डेटा के साथ दो बार फिर से चलाया और नकारात्मक संख्याओं की एक कम प्रवृत्ति और सकारात्मक संख्याओं की बढ़ती प्रवृत्ति, पूरी तरह से विपरीत भविष्यवाणियां मिलीं।
मैंने सोचा कि शायद मुझे पर्याप्त सुविधाएं शामिल नहीं थीं, इसलिए मैंने जोड़ा (rating**2
और delta**2
)। दुर्भाग्यवश, फिर मैंने हर बार हर इनपुट के लिए अपना प्रारंभिक डेल्टा या मेरा अधिकतम डेल्टा प्राप्त करना शुरू कर दिया।
मुझे वास्तव में समझ में नहीं आ रहा है कि मुझे ऐसे अलग-अलग परिणाम क्यों मिल रहे हैं या रूबी-एफएएन मुझे क्या बता रहा है, आंशिक रूप से क्योंकि मुझे पुस्तकालय को समझ में नहीं आता है, लेकिन मुझे संदेह है, क्योंकि मैंने अभी तंत्रिका नेटवर्क के बारे में सीखना शुरू किया है और कुछ बड़ा और स्पष्ट याद आ रही है। क्या मेरे पास पर्याप्त प्रशिक्षण डेटा नहीं है, क्या मुझे और अधिक सुविधाएं शामिल करने की आवश्यकता है, समस्या क्या है और मैं इसे कैसे ठीक कर सकता हूं या सीख सकता हूं कि चीजों को बेहतर तरीके से कैसे किया जाए?
मुझे एमएल के बारे में बहुत कुछ पता नहीं है लेकिन पक्षपातपूर्ण नमूने पक्षपातपूर्ण परिणाम का कारण बनते हैं, यदि आपका अधिकांश नमूना डेटा जीतने के लिए है, तो संभवतः भविष्यवाणी की जाएगी/परिणामस्वरूप जब आप अपने मॉडल का उपयोग करेंगे । – iouri
यह नुकसान से अधिक जीत है, लेकिन अलग-अलग रनों में परिणाम इतने अलग क्यों हैं? –