कनेक्ट फोर को खेलने के लिए मशीन लर्निंग एल्गोरिदम


14

मैं वर्तमान में मशीन लर्निंग के बारे में पढ़ रहा हूं और सोच रहा हूं कि इसे कनेक्ट फोर खेलने के लिए कैसे लागू किया जाए ।

मेरा वर्तमान प्रयास एक सिग्मोइड फ़ंक्शन मॉडल और एक-बनाम-सभी विधि का उपयोग करके एक साधारण मल्टीकाचर्स क्लासिलेटर है।

मेरी राय में, इनपुट सुविधाओं में 7x6 = 42 ग्रिड फ़ील्ड की स्थिति (खिलाड़ी 1 की डिस्क, प्लेयर 2 की डिस्क) खाली होनी चाहिए।

डिस्क को डालने के लिए आउटपुट पंक्ति की संख्या होगी। क्योंकि यह 1 और 7 के बीच एक असतत संख्या है, मुझे लगता है कि इसे एक मल्टीस्कूल वर्गीकरण समस्या के रूप में माना जा सकता है।

लेकिन मैं पर्यवेक्षित शिक्षण में प्रयोग करने योग्य प्रशिक्षण उदाहरण कैसे उत्पन्न करूं?

मुख्य लक्ष्य खेल जीतना है लेकिन परिणाम स्पष्ट रूप से नहीं पता है जब हर कर रहा है लेकिन अंतिम मोड़। अगर मैं दो खिलाड़ियों को बेतरतीब ढंग से तय करने देता हूं कि हजारों बार एक-दूसरे के खिलाफ क्या खेलना है, तो क्या यह केवल प्रत्येक खेल के विजेता द्वारा किए गए सभी बारीकियों को प्रशिक्षण उदाहरण के रूप में लेने के लिए पर्याप्त होगा? या मुझे यह पूरी तरह से अलग तरीके से करना है?

संपादित करें: जैसा कि टिप्पणियों में सुझाया गया है, मैंने सुदृढीकरण सीखने के बारे में थोड़ा पढ़ा। मुझे जो समझ में आया है, उससे Q- लर्निंग को ट्रिक करनी चाहिए, अर्थात मुझे वर्तमान अवस्था के एक फंक्शन Q को अनुमानित करना होगा और उस राज्य में शुरू होने वाले अधिकतम संचयी इनाम के लिए कार्रवाई करनी होगी। फिर प्रत्येक चरण उस कार्रवाई को चुनना होगा जिसके परिणामस्वरूप Q का अधिकतम मूल्य होता है। हालांकि, इस गेम में बहुत से राज्यों का तरीका है ताकि यह एक लुकअप तालिका के रूप में किया जा सके। तो, इस क्यू-फंक्शन को मॉडल करने का एक प्रभावी तरीका क्या है?


2
Google "सुदृढीकरण सीखना"
जॉर्ज 23

ठीक है, मुझे लगता है कि वास्तव में इस समस्या पर लागू होता है। लगता है जैसे बहुत आगे पढ़ना है। कोई और अधिक विशिष्ट संकेत या सिफारिशें?
टॉम

1
अगर मुझे अधिक पता था तो मैं इसे उत्तर के रूप में पोस्ट करूंगा :) दुर्भाग्य से मुझे सुदृढीकरण सीखने का कोई अनुभव नहीं है। मैं टॉम मिशेल की पुस्तक "मशीन लर्निंग" से शुरू करूंगा। यह एक बहुत अच्छी परिचयात्मक पुस्तक है और इसमें सुदृढीकरण सीखने के बारे में एक अध्याय भी है।
जॉर्ज

1
उत्तरार्द्ध, मैं मशीन सीखने के बारे में उत्सुक हूं और इसे जानने की कोशिश कर रहा हूं।
टॉम

1
@, मशीन सीखने की तकनीकों को जानने के लिए बेहतर तरीके हैं। मैं अधिक बुनियादी वर्गीकरण और प्रतिगमन तकनीकों के साथ शुरू करूंगा और वहां से आगे बढ़ूंगा। आप UCI की मशीन लर्निंग डेटा रिपॉजिटरी से डेटासेट ले सकते हैं, एंड्रयू Ng's (स्टैनफोर्ड) मशीन लर्निंग कोर्स नोट्स की जाँच कर सकते हैं और कार्यान्वयन कर सकते हैं। सुदृढीकरण सीखने का उपयोग करके कनेक्ट 4 को हल करने की कोशिश में सीधे कूदना काफी अजीब और अत्यधिक जटिल लगता है।
निक

जवाबों:


8

सुदृढीकरण सीखने के लिए एक सरल विकल्प प्रदान करने के लिए, आप अच्छे कदमों की खोज करने के लिए मूल न्यूनतम एल्गोरिथ्म का उपयोग कर सकते हैं, और बोर्ड की स्थिति का मूल्यांकन करने के लिए मशीन सीखने का उपयोग कर सकते हैं।

स्पष्ट करने के लिए, मिनिमैक्स एक गेम ट्री बनाता है, जहां प्रत्येक नोड को पत्तियों से परिणाम के साथ लेबल किया जाता है (1 = खिलाड़ी ए जीतता है, 0 = खिलाड़ी बी जीतता है), यह मानते हुए कि ए इस कदम को अधिकतम करता है, और बी चाल का चयन करता है इसे कम से कम करें।

जब तक खेल बहुत सरल नहीं है, आप टर्मिनलों तक पूरे गेम ट्री का निर्माण नहीं कर पाएंगे। इसके बजाय आपको अधूरे बोर्ड पदों पर रुकने की आवश्यकता होगी और कुछ अनुमान के साथ पत्तियों का मूल्यांकन करना होगा (अनिवार्य रूप से संभावना है कि खिलाड़ी A दी गई स्थिति से जीत जाएगा)। आप एक तंत्रिका तंत्र की तरह एक मशीन लर्निंग एल्गोरिदम दे सकते हैं, ज्ञात परिणामों के साथ चार पदों को जोड़ने से इस संभावना को सीखने की कोशिश करें।

प्रशिक्षण के उदाहरणों को उत्पन्न करने के लिए आप अपने न्यूनतम खिलाड़ी को एक साधारण उत्तराधिकारी बना सकते हैं, इसे स्वयं एक हजार बार खेल सकते हैं, उन खेलों का उपयोग अपने पहले तंत्रिका नेटवर्क को प्रशिक्षित करने के लिए कर सकते हैं, फिर खुद को एक हजार खेल का भुगतान करें। थोड़ी सी किस्मत के साथ, प्रत्येक पीढ़ी के साथ आपका सिस्टम बेहतर हो जाएगा।


2

मैंने कुछ समय पहले कनेक्ट कनेक्ट करने के लिए मिनिमैक्स का उपयोग करने के बारे में एक ब्लॉगपोस्ट लिखा था। आप यहां कोड इन एक्शन देख सकते हैं । यदि आपको अपने मॉडलों को प्रशिक्षित करने की आवश्यकता है, तो आप शायद मेरे न्यूनतम कार्यान्वयन के खिलाफ कुछ हज़ार खेल खेलने दे सकते हैं।


Github पर अपना कोड कांटा करने के लिए स्वतंत्र महसूस करें। github.com/lukasvermeer/minimax
Lukas Vermeer

स्टैक एक्सचेंज में आपका स्वागत है। यह एक सवाल और जवाब साइट है । विशेष रूप से उत्तर देने के लिए , कृपया हमारे फ़ैक को पढ़ें । विशेष रूप से, हम ऐसे पोस्ट नहीं चाहते हैं जो केवल एक उत्तर के लिंक से जुड़े हों। आपके योगदान के लिए धन्यवाद, लेकिन क्या आप कृपया अपने ब्लॉग पोस्ट के मुख्य बिंदुओं को अपनी पोस्ट में यहाँ संक्षेप में प्रस्तुत कर सकते हैं?
गिल्स एसओ- बुराई को रोकें '

मुझे क्षमा करें, लेकिन मूल प्रश्न था "मैं पर्यवेक्षित शिक्षण में प्रयोग करने योग्य प्रशिक्षण के उदाहरण कैसे उत्पन्न करूं?" मैंने वर्किंग कोड के लिंक प्रदान किए जिनका उपयोग इनको उत्पन्न करने के लिए किया जा सकता है। मैं यह देखने में विफल रहा कि ऊपर अधिक पाठ लिखने से मूल आवश्यकता का उत्तर देने में मदद मिलेगी।
लुकास वर्मी

"संभावित समाधान के लिए लिंक हमेशा स्वागत योग्य है, लेकिन कृपया लिंक के चारों ओर संदर्भ जोड़ें, ताकि आपके साथी उपयोगकर्ताओं को कुछ पता चले कि यह क्या है और क्यों है। हमेशा लक्ष्य साइट के मामले में, एक महत्वपूर्ण लिंक का सबसे प्रासंगिक हिस्सा उद्धृत करें। अप्राप्य है या स्थायी रूप से ऑफ़लाइन है। " मुझे लगता है कि मैंने पूर्व किया। उत्तरार्द्ध अप्रासंगिक होगा। मूल प्रश्न उदाहरण के खेल की जरूरत है, न कि किसी समाधान को लागू करने के तरीके का स्पष्टीकरण।
लुकास वर्मेअर
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.