शतरंज की स्थिति का मूल्यांकन करने का एक सटीक तरीका क्या है?


13

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

अन्य शब्दों में, आपके शतरंज बोर्ड के एक विन्यास को देखते हुए, आप यह कैसे निर्धारित करते हैं कि यह आपके लाभ के लिए है, और विश्वास की किस डिग्री के साथ?

उदाहरण के लिए:

  • यदि आप केंद्र के मालिक हैं, तो यह अनुकूल है।
  • यदि आपके पास अपने प्रतिद्वंद्वी से अधिक टुकड़े हैं, तो यह अनुकूल है।
  • यदि आपने अपनी रानी को खो दिया है, तो यह अनुकूल नहीं है।
  • यदि आपके पास एक मोहरा है जो प्रचारित होने के करीब है तो यह अनुकूल है।
  • ...

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

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


मुझे लगता है कि यह सवाल स्टैकऑवरफ्लो पर अच्छा होगा। शतरंज एआई के बारे में पहले से ही कई सवाल हैं
— 10:05

3
मैंने इसे पहले SO पर पोस्ट करने के बारे में सोचा था, लेकिन मुझे लगभग यकीन है कि यह रचनात्मक नहीं होगा या वहां कोई वास्तविक प्रश्न नहीं होगा। हो सकता है कि मुझे कोड पर अधिक जोर देने की आवश्यकता हो, लेकिन मुझे लगता है कि मूल्यांकन कार्य के लिए इसे शतरंज के बारे में ज्ञान की आवश्यकता है, कोड या एल्गोरिदम के बारे में इतना नहीं।
— चार्ल्स मेंग्यू

कितना सही है। एकमात्र पूरी तरह से सटीक तरीका है कि आप जीत या हार या टाई करते हैं।
— एडविना ओलिवर

जवाबों:


9

यहाँ एक अच्छी शुरुआत है। सामग्री की तुलना कुंजी (और आसान) है, तो आप ट्यून कर सकते हैं कि ओपन रैंक्स / फाइल / विकर्ण, प्यादा संरचना, आदि जैसे पहलुओं पर विचार करें।

https://www.chessprogramming.org/Evaluation


5

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


5

मुझे लग रहा है कि मुझे इस उत्तर पर थोड़ी देर हो जाएगी लेकिन - मैं एक इंजन बनाने की प्रक्रिया में हूं। स्रोत कोड पाइथन में है (जो पढ़ने में काफी आसान है, भले ही आप इसे न जानते हों) और यदि आप इसे पढ़ना चाहते हैं तो यहां उपलब्ध है । वर्तमान में सक्रिय 'उत्तराधिकार' की सूची (पोस्टिंग के समय):

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

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

  • बोर्ड पर सामग्री की मात्रा (जैसे ही कोई टुकड़ा मारा जाता है, यह खेल को उद्घाटन में नहीं के रूप में चिह्नित करता है)
  • चालों की संख्या (कम से कम 6 पूर्ण चालें खोलना, कोई फर्क नहीं पड़ता)
  • रानियों की आवाजाही (यदि दोनों रानियों को स्थानांतरित कर दिया गया है, तो गेम को मध्यम गेम के रूप में चिह्नित करें)

यह उत्तर लंबे, देर से और ऑफ-टॉपिक रहा हो सकता है, लेकिन मुझे आशा है कि यह सहायक रास्ते थे।


4

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

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

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


3

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

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

http://www.top-5000.nl/ZW_Rybka_Fruit.pdf http://danheisman.home.comcast.net/~danheisman/Articles/evaluation_of_material_imbalance.htm


0

यह लिंक सबसे अच्छा प्रारंभिक बिंदु IMHO है। मैं इसे अपने शतरंज कार्यक्रम के लिए अपने शुरुआती बिंदु के रूप में उपयोग कर रहा हूं और इसे समझने में सरल और उपयोगी भी पा रहा हूं।

https://chessprogramming.wikispaces.com/Simplified+evaluation+function


2
क्या आप लिंक की सामग्री पर संक्षेप में विस्तार कर सकते हैं?
— पाब्लो एस। ओकल

विकिपीडिया स्थल अब ख़राब है। इसके नए घर के लिए एक सही लिंक: chessprogramming.org/Simplified_Evaluation_Function
— Chromatix

0

संक्षेप में, शतरंज इंजन के मापदंडों को ट्यून करने के लिए मानक दृष्टिकोण निम्नलिखित है:

  1. मापदंडों को परिभाषित करें
  2. मानकों को नाममात्र (शुरुआती) मान दें
  3. यह कैसे करता है, यह देखने के लिए इंजन को चलाएं
  4. अपने प्रदर्शन को बेहतर बनाने के लिए पैरामीटर मानों को ट्यून करें

फिर चरण 3 और 4 को तब तक दोहराएं जब तक आप प्रदर्शन के लिए अपने लक्ष्य तक नहीं पहुंच जाते।

ऐसा करने के लिए सामान्य दृष्टिकोण एक प्रयोगशाला स्थापित करना है जहां इंजन इंजन टूर्नामेंट में इंजन बंद हो जाते हैं। मल्टीपल गेम्स का उपयोग किया जाता है जिसमें इंजन दोनों रंगों को खेलता है। ब्याज के मुख्य टूर्नामेंट में पैरामीटर मान सेट बी के साथ इंजन के खिलाफ इंजन चलाना शामिल है जिसमें बी मूल्य पैरामीटर है।

जैसा कि आप शायद अनुमान लगा सकते हैं, इस दृष्टिकोण के परिणाम बहुत हद तक इस पर निर्भर हैं:

  • मापदंडों को चुना
  • पैरामीटर कैसे निर्दिष्ट किए जाते हैं
  • परीक्षण के दौरान पैरामीटर मान कैसे भिन्न होते हैं
  • इंजन कैसे चलाए जाते हैं (सीमित प्लाई-डेप्थ, सीमित समय, संवेदनशीलता, आदि)

इस दृष्टिकोण से भी बहुत समय लगता है।

शोधकर्ताओं द्वारा जेनेटिक एल्गोरिथम तकनीकों का उपयोग करके 2010 में एक और (और अभिनव दृष्टिकोण) विकसित किया गया था) मापदंडों को निर्दिष्ट करने के लिए, और बी) पैरामीटर मानों को ट्यून करें। जांचकर्ताओं ने पहले ग्रैंडमास्टर गेम के एक सेट के खिलाफ पैरामीटर मानों के प्रारंभिक, नाममात्र सेट के साथ एक इंजन चलाया, यह देखने के लिए कि क्या यह प्रभावी रूप से "सर्वश्रेष्ठ चाल" चुन सकता है। "सर्वश्रेष्ठ चाल" को इस कदम के रूप में परिभाषित किया गया था जो ग्रैंडमास्टर ने बनाया था। जहां भी ऐसा करने में असफल रहा वह दर्ज किया गया। फिर, एक और पैरामीटर मान सेट की कोशिश की गई थी, और पहले से निर्धारित रन बनाम सापेक्ष प्रदर्शन।

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

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

इस शोध परियोजना में, 36 मापदंडों का उपयोग किया गया था, जिसमें टुकड़ों के सभी भौतिक मूल्यों और पिछड़े पंजे, कमजोर वर्ग, बिशप जोड़ी, और इतने पर जैसे कई सामान्य रणनीतिक मूल्यांकन मानदंड शामिल हैं। हालांकि, शोधकर्ताओं ने कुछ नए मापदंडों को जोड़ा, जैसे कि "किंग प्रेशर", प्रत्येक प्रकार के टुकड़े के लिए "गतिशीलता" मान, राजा से सटे एक फाइल पर रोक, एक अर्ध-खुली फाइल पर बदमाश, राजा पर हमला करने वाले बदमाश - / b- / g- / h- फ़ाइल, एक पारित मोहरे और बचाव करने वाले राजा के बीच अलगाव, और बहुत कुछ।

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

यदि यह लगता है कि यह उपयोगी हो सकता है, तो आप यहां शोध पा सकते हैं ।

* दृष्टिकोण के एक चरण के बारे में एक चेतावनी जो शोधकर्ताओं ने उपयोग की है वह क्रम में है। अपने परिचय में शतरंज की चाल से समझने के लिए , जॉन नून ने अपने विषयों का वर्णन करने के लिए "... मजबूत ग्रैंडमास्टर्स के बीच कठिन खेल ..." चुना। वह फिर कहते हैं:

इस पुस्तक में खेलों को दर्शाने वाले प्रश्नों की संख्या को देखकर पाठक काफी आश्चर्यचकित हो सकते हैं। निश्चित रूप से, आप सोच सकते हैं, केवल तीस गेम का चयन करने के लिए, कुछ साउंड गेम ढूंढना आसान होना चाहिए। हालांकि, मैं आपको आश्वस्त कर सकता हूं कि यह नहीं था। ... वस्तुतः किसी भी जटिल, कठिन-संघर्ष वाले खेल के साथ गलती ढूंढना संभव है ... मैंने कभी नहीं महसूस किया कि मेरा नाटक कहीं भी पूरी तरह से सटीक था, इसलिए मुझे व्यक्तिगत रूप से ये रहस्योद्घाटन परेशान नहीं करते हैं। हालाँकि, कुछ लोगों को यह स्वीकार करना कठिन हो सकता है कि मानव द्वारा खेला गया शतरंज पहले की तुलना में कम सटीक है।

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

इसलिए, शायद शुरुआती मापदंडों को सेट करने के लिए एक बेहतर तरीका एक बेहतर मौजूदा इंजन के खिलाफ एक नए इंजन से मेल खाना होगा ।


हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.