2016-11-04 11 views
5

मैं 2048 गेम खेलने के लिए तंत्रिका नेटवर्क को प्रशिक्षित करना चाहता हूं। मुझे पता है कि एनएन 2048 की तरह राज्य के खेल के लिए एक अच्छा विकल्प नहीं है, लेकिन मैं यह हासिल करना चाहता हूं कि एनएन एक अनुभवी इंसान की तरह खेल खेलेंगे, यानी केवल तीन दिशाओं में टाइल चलाना।मैं 2048 गेम खेलने के लिए तंत्रिका नेटवर्क को कैसे प्रशिक्षित कर सकता हूं?

लेकिन मैं यह नहीं समझ सकता कि एनएन को स्वयं प्रशिक्षित कैसे करें क्योंकि हम वैध आउटपुट नहीं जानते हैं। आम तौर पर, उदा। प्रतिगमन में, आप सही आउटपुट जानते हैं और आप नुकसान की गणना कर सकते हैं (उदा। माध्य वर्ग त्रुटि) और वजन को अपडेट करें। लेकिन 2048 में वैध आउटपुट मूल रूप से अज्ञात है (बेशक आप प्रत्येक दिशा के लिए स्कोर की गणना कर सकते हैं, उदाहरण के लिए, उच्चतम अंतर score_after_move - previous_score वाला दिशा हमारा मान्य आउटपुट होगा, लेकिन मुझे लगता है कि स्वयं को सीखने का तरीका नहीं है एनएन)। तो क्या 2048 गेम के लिए हानि समारोह को परिभाषित करना संभव है? सबसे अच्छा एक अलग होगा।

अगला प्रश्न यह है कि वजन को अपडेट करने के लिए: प्रत्येक चाल के बाद या एक पूर्ण गेम (गेम ओवर) के बाद?

तो यह महत्वपूर्ण है: मेरे एनएन टोपोलॉजी अब साधारण के लिए होगा:

2D matrix of gaming board -> 2D matrix of input neurons -> 2D fully-connected hidden layer -> 1D 4-neuron layer

तो प्रत्येक टाइल पहली परत में न्यूरॉन इसी (करने के लिए इनपुट होगा वहाँ पूरी तरह से जुड़ा हुआ 2 डी के लिए कोई विशेष नाम है परत?)। अंतिम परत से अपेक्षित आउटपुट लंबाई 4 का एक वेक्टर है, उदा। [1, 0, 0, 0] "ऊपर" आंदोलन दिशा होगी।

अब के लिए मैंने 2048 गेम के लिए हेडलेस क्लास (पायथन/न्यूमपी में) लागू किया है, क्योंकि दृश्य इनपुट का उपयोग धीमा है और यह भी करने के लिए और अधिक काम करता है।

पीएस शायद मैं इस खेल (या आम तौर पर खेल) के लिए एनएन सीखने के बारे में गलत तरीके से सोच रहा हूं। मुझे एक बेहतर तरीका दिखाने के लिए स्वतंत्र महसूस करें, मैं इसकी सराहना करता हूं। धन्यवाद :)

संपादित करें: मजबूती सीखने का तरीका प्रतीत होता है। यहाँ कुछ उपयोगी लिंक कर रहे हैं:

Demystifying Deep Reinforcement Learning

Action-Value Methods and n-armed bandit problems

Q-learning for Keras

Deep Reinforcement Learning for Keras

+0

आप इस दिलचस्प हो सकता है: https://www.youtube.com/watch ? वी = qv6UVOQ0F44 – Tim

+0

यह अच्छा है :) मैं कुछ आनुवांशिक एल्गोरिदम भी लागू करना चाहता हूं। दुर्भाग्य से लेखक ने कोई स्पष्टीकरण नहीं लिखा है, इसलिए केवल उनके विकल्प को पढ़ने का विकल्प है। – jirinovo

+0

हालांकि इस सवाल को एसओ में माइग्रेट करना संभव है, जैसा कि आपने अनुरोध किया है, ऐसा लगता है कि यह विषय पर होगा, इसलिए माइग्रेशन को अस्वीकार कर दिया जाएगा। – whuber

उत्तर

3

तो https://github.com/matthiasplappert/keras-rl का सबसे अच्छा तरीका हो रहा है। आपको केवल ओपनएआई जिम पर्यावरण एपीआई द्वारा परिभाषित कुछ तरीकों को लागू करना होगा। ये step() और reset() तरीके हैं: https://github.com/matthiasplappert/keras-rl/issues/38

जब मेरी 2048 खेल ऐ परियोजना समाप्त हो जाएगी, मैं स्रोत के लिए यहाँ (अगर मैं जीता 'लिंक भेज: https://github.com/matthiasplappert/keras-rl/blob/master/rl/core.py#L330

अधिक जानकारी के लिए keras-rl डेवलपर की ओर से एक जवाब नहीं है टी ऐसा करने के लिए :))

संपादित भूल: यहाँ स्रोत का वादा कड़ी है, पूरी तरह से इसके बारे में भूल:/ https://github.com/gorgitko/MI-MVI_2016

+0

क्या आप इसे खत्म कर चुके हैं: पी? –

+1

@tt_Gantz हाँ :) [लिंक] (https://github.com/gorgitko/MI-MVI_2016) जोड़ा गया – jirinovo

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

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