शतरंज इंजन "सोचते" कैसे हैं?


28

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


शतरंज इंजन प्रति सेकंड कई मिलियन पदों को देखते हैं, इसलिए वे वास्तव में उन सभी को देख सकते हैं जब तक कि वे कुछ चालें गहरी न हों।
रेमकोगर्लिच

2
यह एक भयानक सवाल है, मुझे जवाबों में बहुत मजा आया।
ट्रैविस जे

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

जवाबों:


22

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

http://www.chess.com/blog/zaifrun में शतरंज इंजन बनाने पर श्रृंखला या लेख हैं यदि आप अधिक गहराई से देखना चाहते हैं कि यह कैसे काम करता है।


अच्छा जवाब है, इसलिए जब आप 30 की गहराई देखते हैं, तो क्या इसका मतलब है कि इंजन ने 30 नोड्स की खोज की है? इसके अलावा, प्लाई से इसका क्या मतलब है?
xaisoft

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

5
एक प्लाई एक चाल का आधा हिस्सा है। शतरंज में एक चाल एक पूर्ण 'सेट' है यदि आप सफेद + काले रंग से करेंगे। एक प्लाई आधा है, इसलिए सिर्फ एक रंग है।
इरेबसैट

21

आप एक बहुत जटिल प्रश्न पूछ रहे हैं, लेकिन मूल बातें पर वापस जाना अच्छा है। विचार करने के लिए कुछ अवधारणाएँ हैं:

मूल्यांकन

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

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

इसे मूल्यांकन के रूप में जाना जाता है , और मूल रूप से सभी शतरंज कार्यक्रमों में पदों का मूल्यांकन करने का एक तरीका है (नवीनता एआई शतरंज इंजनों की अनदेखी करना जो आमतौर पर बहुत कमजोर होते हैं)।

लेकिन सूक्ष्म, गहरी स्थितिगत चाल के बारे में क्या?

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

खोज

मैंने विशेष रूप से ऊपर से कुछ छोड़ दिया है, जिसके बारे में ज्यादातर वास्तविक खिलाड़ी तुरंत सोचेंगे - क्या दोनों तरफ के खेल को तुरंत जीतने का कोई तरीका है? किसी भी साथी या "फांसी" के टुकड़े दिखाई दे रहे हैं? हालाँकि इसको तुच्छ बनाना आसान है, लेकिन यह तुच्छ कुछ भी है।

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

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

अंत में, हालांकि कंप्यूटर बहुत तेज हैं, यह उत्तराधिकार है जो उन्हें इतनी गहरी गणना करने की अनुमति देता है। उस ने कहा, आप आश्चर्यचकित हो सकते हैं कि आधुनिक इंजन पूरी तरह से कितनी गहरी गणना करते हैं, आमतौर पर यह त्वरित गेम में भी 3 चालों से परे है।

यह सब निष्कर्ष / संयोजन

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


6

मैं जवाबों से सहमत हूं।

मुझे याद है कि GM रोमन Dzindzichashvili इसके बारे में बात कर रहा है, रोमन लैब की एक वीडियो में, मुझे याद नहीं है कि यह क्या वीडियो था (यदि किसी को विवरण पता है तो कृपया मेरे उत्तर को संपादित करें)।

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

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

संपादित करें

शतरंज के प्रोग्रामिंग विकी को भी देखें ।


4

कंप्यूटर के लिए पर्याप्त गहरा (25 प्लाई और अधिक) देखना और हर संभव कदम की जांच करना असंभव है।

क्या संभव है कि तकनीक अल्फा-बीटा प्रूनिंग कहा जाता है जिसका अर्थ है कि कंप्यूटर, मनुष्यों के समान (लेकिन बेहतर तरीके से) केवल आशाजनक निरंतरता का पालन करते हैं।

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

यह अभी भी जादू के करीब है कि कैसे वे एक मिनट में इन पदों के लाखों लोगों के मूल्यांकन के लिए इसे कुशलतापूर्वक करने का प्रबंधन करते हैं।

तो संक्षेप में- आप सही हैं, वे सभी चालों को नहीं देख सकते हैं यदि वे रणनीतिक शतरंज खेलते हैं, लेकिन वे बहुत जल्दी सभ्य चाल देख सकते हैं। समस्या अभी भी बहुत लंबी अवधि की योजनाओं और क्षितिज के साथ है, जिसे वे देख सकते हैं, लेकिन इस पर काम किया जा रहा है (Rybka बहुत धीमी गति से विश्लेषण करता है, लेकिन बहुत अधिक स्थितिपूर्ण शतरंज खेलता है, जबकि Houdini 'मैकेनिकल हार्ट' है और अधिक चाल की गणना करता है। और अधिक आक्रामक खेल)। यहां तक ​​कि कंप्यूटर की अपनी शैली है!


3

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

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

इंजन इतनी जल्दी गणना करते हैं कि उनके लिए यह महत्वपूर्ण नहीं है कि किस पर विचार किया जाए, लेकिन सबसे पहले यह एक महत्वपूर्ण सवाल है। जोनाथन टिसडल ने अपनी पुस्तक इम्प्रूव योर चेस नाउ में इस बात का जवाब दिया। जब आप हमले पर होते हैं, तो वह आपको सबसे पहले हिंसक चाल को देखने का सुझाव देता है। जब आप बचाव कर रहे होते हैं, तो आप सबसे कठिन रेखाओं को देखते हैं। वह यह भी तय करता है कि कौन से अंगूठे का स्थानिक नियम (उदाहरण के लिए केंद्रीकरण, समन्वय) है, जो पहले देखने पर चलता है।

अन्य पुस्तकें जो प्रासंगिक हो सकती हैं, वे हैं इमैनुएल नीमन की इनविजिबल चेस मूव्स और चार्ल्स हर्टन की फोर्सिंग चेस मूव्स, जिनमें से दोनों तेज स्थितियों में अप्रत्याशित या आश्चर्यजनक कदमों पर विचार करने के महत्व के लिए तर्क देते हैं। हर्टन यहां तक ​​कि इस तरह की रणनीति के लिए 'कंप्यूटर आंखें' विकसित करने की बात करते हैं।

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