2009-06-09 19 views
98

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

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

मैं हमेशा इस बारे में उत्सुक रहा हूं, धन्यवाद!

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

+1

अरे @ डैमनपावलिका, कृपया नए टैग पर [टैग: गेम-डेवलपमेंट] टैग जोड़ने की कोशिश न करें। यह पहले से ही [जला हुआ] रहा है (http://meta.stackexchange.com/questions/159115/burninate-the-game-development-tag-again) कई बार। वर्तमान में [मेटा] (http://meta.stackoverflow.com/q/334859/2415822) पर आपके कार्यों पर चर्चा की जा रही है। अगर टैगिंग के बारे में आपके कोई प्रश्न हैं, तो कृपया मुझे [एसओसीवीआर] (http://chat.stackoverflow.com/rooms/41570/so-close-vote-reviewers) चैट रूम में शामिल हों। धन्यवाद। – JAL

+0

बहुत अधिक दिलचस्प सवाल यह है कि कठिनाई के स्तर के लिए यथार्थवादी मॉडल कैसे बनाया जाए। गेम जीतने के लिए व्यवहार को फेंकना आसान है, लेकिन जब यह चुनौतीपूर्ण होने के लिए पर्याप्त परेशानी पैदा करने के लिए उबलता है लेकिन हारने के लिए असंभव रूप से असंभव नहीं है, तो यह स्वचालित सीखने की भावना में बहुत मुश्किल हो जाता है। – mkin

उत्तर

76

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

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

नहीं वास्तविक मशीन एल्गोरिदम सीखने, तो क्या सबसे नवीनतम सुविधाएं वाणिज्यिक खेल ऐ गाड़ी चला रहा है? यह बहुत जटिल है लेकिन स्थिर (गैर-एमएल) एल्गोरिदम जो में सक्षम हैं अधिकांश संभावनाओं को कवर करते हैं?

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

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

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

... एक सीखने एल्गोरिथ्म शायद विकास के चरणों में इस्तेमाल किया गया था एक मॉडल (स्थिर एल्गोरिथ्म) के उत्पादन के लिए, और कहा कि मॉडल तो खेल में निर्णय करने के लिए प्रयोग किया जाता है?

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

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

+5

** Googlers के लिए नोट: ** _ [खेलों में मशीन लर्निंग - माइक्रोसॉफ्ट रिसर्च] (http://research.microsoft.com/en-us/events/2011summerschool/jqcandela2011.pdf) _। मूल Xbox – MickyD

26

खेल की एक बड़ी संख्या में बस का उपयोग finite state machines

इस पर नेट पर वास्तव में कुछ अच्छे संसाधन हैं:

+0

और मुझे लगता है कि इन एफएसएम आमतौर पर हाथ से डिजाइन किए जाते हैं (बजाय एल्गोरिदम द्वारा उत्पन्न)? – JoeCool

+4

हां, वे लगभग हमेशा हाथ से डिजाइन किए जाते हैं। – Kylotan

7

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

+4

ओह लड़का, मैं उस खेल को कैसे प्यार करता था! इशारा नियंत्रण में कुछ quirks था, लेकिन अभी भी ... –

3

मुझे लगता है कि कई गेम (अधिक या कम जटिल) तंत्रिका नेटवर्क का उपयोग करते हैं।

http://en.wikipedia.org/wiki/Game_AI

+1

यह कभी-कभी होता है, लेकिन इसे बहुत कम-बैंग-फॉर-द-हिरन तकनीक माना जाता है (मैं सही तरीके से कहूंगा)। – chaos

+0

@chaos: एक कृत्रिम तंत्रिका नेटवर्क आवश्यक रूप से लागू करने के लिए एक बहुत ही उन्नत चीज नहीं है, और वहां कई मुफ्त पुस्तकालय होना चाहिए जिनका उपयोग आप एएनएन को लागू करने के लिए कर सकते हैं। उस अर्थ में यह अजीब बात है कि उन्हें बहुत महंगा माना जाएगा। – HelloGoodbye

0

खेल Spore खेल में simulate the lifeforms के कुछ उन्नत Genetic Algorithms उपयोग करता है।

+2

मुझे जेनेटिक एल्गोरिदम का उपयोग करके बीयर का कोई उल्लेख नहीं मिला। क्या आप कृपया एक लिंक प्रदान कर सकते हैं जो अनुवांशिक एल्गोरिदम का उल्लेख करता है? अन्यथा यह -1 होना चाहिए। जेनेटिक एल्गोरिदम आम तौर पर वीडियो गेम में उपयोगी होने के लिए बहुत कम्प्यूटेशनल रूप से गहन होंगे। – dss539

+2

मैं असहमत हूं: मेरे मास्टर्स थीसिस के लिए मैं एक टीम आधारित मुकाबला खेल के लिए समूह की स्थिति विकसित करने के लिए वास्तविक समय में जीए का उपयोग कर रहा था। आम तौर पर आपको तत्काल परिणाम की आवश्यकता नहीं होती है इसलिए गणना कई फ्रेमों पर फैल सकती है। – Kylotan

+0

@ किलोटन - यह बहुत बढ़िया है। कोई भी मौका आप अपने थीसिस के लिए एक लिंक पोस्ट कर सकते हैं? पदों का मूल्यांकन करने के लिए आप किस प्रकार के फिटनेस फ़ंक्शन का उपयोग करते थे? – dss539

11

A* search और रिश्तेदारों को एचपीए * जैसी चीजें कहा जाता है, शायद गेम उद्योग में सबसे अच्छी तरह से समझी गई एआई अवधारणा है। उन्हें आम तौर पर भू-भाग्य वाले एल्गोरिदम के रूप में सोचा जाता है और बोली जाती है, लेकिन कभी-कभी किसी को यह एहसास होता है कि उन्हें निर्णय पथों जैसे रिक्त स्थानों के भीतर 'पथदर्शी' के लिए उपयोग किया जा सकता है, और फिर चीजें वास्तव में दिलचस्प होती हैं।

3

Alpha-Beta Pruning शतरंज सहित एक सरल गेम सहित बोर्ड गेम ड्राइव करता है। कुशल खोज को सक्षम करने के लिए यह एक राज्य स्थान को छीनने का एक तरीका है। A* search के प्रकार रोबोट सिमुलेशन आदि में एक बोर्ड की खोज के लिए अनुमति देता है। दोनों "शास्त्रीय एआई" हैं और मशीन सीखने वाले एल्गोरिदम नहीं हैं। Samuel's Checkers player और TD-Gammon क्रमशः चेकर्स और बैकगैमौन खेलने के लिए reinforcement learning का उपयोग करने के उदाहरण हैं।

+1

हाल ही में, [मोंटे-कार्लो पेड़ खोज] (https://en.wikipedia.org/wiki/Monte-Carlo_tree_search) का उपयोग कुछ बोर्ड गेम में बहुत अधिक जटिलता के साथ किया गया है, जैसे [गो] (https: //en.wikipedia.org/wiki/Computer_Go#Monte-Carlo_methods)। – HelloGoodbye

25

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

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

एआई 'धोखाधड़ी' का एक उदाहरण: परिवहन टाइकून में, एआई कंपनियों को कभी भी इलाके की ऊंचाई को संशोधित करने के लिए शुल्क नहीं लिया गया था। मुझे यह पता है क्योंकि मैंने कई साल पहले मैक को पोर्ट किया था।

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

8

यदि आप विभिन्न एआईएस के बारे में सीखने में रुचि रखते हैं, तो मुझे Xpilot-AI के साथ मज़ा आया। परियोजना चलाने वाले लोगों द्वारा निर्मित "स्टार" बॉट एक निश्चित नियम-आधारित नियंत्रक था, जो बदले में आनुवांशिक एल्गोरिदम का उत्पाद था। यह इस प्रकार से चला गया है:

  • वे एक बुनियादी नियम आधारित बॉट बनाया (हम के बारे में, दीवार से टकरा छोड़ देते हैं और पूरा करने के लिए प्रणोदक सेट करने के लिए कर रहे हैं ...)
  • वे में बॉट नियंत्रक तोड़ दिया पैरामीटर (तो एक निश्चित "दीवार को हिट करने के बारे में" सशर्त के बजाय, आप इसे "दीवार < एक्स तक दूरी" में विभाजित करेंगे, "" हमारा शीर्षक दीवार की वाई डिग्री के भीतर है, "और" गति> जेड ")
  • जेनेटिक एल्गोरिदम का उपयोग X, Y, Z, आदि के इष्टतम मानों को प्रशिक्षित करने के लिए किया गया था।
  • सीखने की अवधि के बाद, मूल्यों को बॉट के स्रोत में कॉपी किया गया था, और इसे "किया गया" घोषित किया गया था।

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

जेनेटिक एल्गोरिदम का एक अन्य लाभ यह है कि, आप एक "बॉट के रूप में" सही "परिणाम को परिभाषित कर सकते हैं जो एक आसान मोड बॉट को प्रशिक्षित करने के लिए 15% जीत जाएगा।

+0

पर वापस जाएं इस प्रकार की शिक्षा, जहां आप केवल पैरामीटर का एक सेट समायोजित करते हैं, को [विकासवादी प्रोग्रामिंग] (https://en.wikipedia.org/wiki/Evolutionary_programming) कहा जाता है। एआई एजेंटों को अनुकूलित करने के लिए यह एक बहुत ही आम रणनीति है, लेकिन वास्तव में किसी भी प्रकार के प्रोग्राम को अनुकूलित करने के लिए इसका उपयोग किया जा सकता है जिसे tweaked/tuned किया जा सकता है। – HelloGoodbye

+0

भेद बहुत अच्छे हैं (लगभग पूरी तरह अकादमिक होने के बिंदु पर), लेकिन वास्तव में यह आनुवांशिक एल्गोरिदम पर एक कोर्स अनुभाग था, जैसा कि मैंने उल्लेख किया था। – ojrac

4

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

http://nerogame.org/

+1

सवाल यह है कि क्या यह खेल खेलने के लिए और अधिक मजेदार होगा। यह मूल रूप से एक प्रश्न है जिसे किसी गेम में किसी भी तकनीक को लागू करने से पहले आपको जवाब देना है। एक जोखिम यह है कि एआई के स्तर को नियंत्रित करना बहुत कठिन होगा, और इसलिए इसे बहुत मुश्किल या हरा करने में बहुत आसान बनाते हैं। गेम में एमएल का उपयोग करते समय मुझे लगता है कि एक और जोखिम यह है कि एआई वास्तव में अजीब काम करेगा, और एक स्थिर एआई के रूप में मानव के रूप में उतना ही नहीं होगा। लेकिन यह निश्चित रूप से इस बात पर निर्भर करता है कि आप किस प्रकार के एमएल का उपयोग कर रहे हैं। – HelloGoodbye

3

ऊपर मेरा उत्तर के अलावा, वहाँ इस पर एक पत्र है:

Machine learning in digital games: a survey

नोट के भीतर सूचीबद्ध खेल की है कि सबसे अधिक (लेकिन सभी नहीं) विशुद्ध रूप से शैक्षिक अभ्यास कर रहे हैं, जैसा सोचा था।

1

कई बार एआई इंजन में कोई वास्तविक शिक्षा होने की आवश्यकता नहीं है (Kylotan का जवाब देखें)।

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

आप एक साधारण उदाहरण के रूप में टिक टैक पैर ले सकते हैं। मैंने कुछ महीने पहले Tic Tac Toe game with AI लिखा था। मैंने बस नियमों के कंप्यूटर ज्ञान और जीतने की चाल को अवरुद्ध करने के तरीके को दिया - यही वह है। इसके बाद आप इसे अपने आप को चलाने के लिए सेट कर सकते हैं और दृश्यों के पीछे यह पिछले कदमों की एक सूची बनाए रखता है और पैटर्न को पहचानता है, क्योंकि यह अनुभव करता है क्योंकि यह अनुभव प्राप्त करता है।

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

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

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