OpenAI में एक नया जिम वातावरण कैसे बनाएं?


83

मेरे पास एक एआई एजेंट बनाने का असाइनमेंट है जो एमएल का उपयोग करके वीडियो गेम खेलना सीखेगा। मैं OpenAI जिम का उपयोग करके एक नया वातावरण बनाना चाहता हूं क्योंकि मैं मौजूदा वातावरण का उपयोग नहीं करना चाहता। मैं एक नया, कस्टम वातावरण कैसे बना सकता हूं?

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

जवाबों:


124

banana-gymएक बहुत छोटे वातावरण के लिए मेरा देखें ।

नए वातावरण बनाएं

रिपॉजिटरी का मुख्य पृष्ठ देखें:

https://github.com/openai/gym/blob/master/docs/creating-environments.md

कदम हैं:

  1. पीआईपी-पैकेज संरचना के साथ एक नया भंडार बनाएं

इसे ऐसा दिखना चाहिए

gym-foo/
  README.md
  setup.py
  gym_foo/
    __init__.py
    envs/
      __init__.py
      foo_env.py
      foo_extrahard_env.py

इसकी सामग्री के लिए, ऊपर दिए गए लिंक का अनुसरण करें। जिन विवरणों का उल्लेख नहीं किया गया है वे विशेष रूप से हैं कि कुछ कार्यों को कैसे foo_env.pyदिखना चाहिए। उदाहरणों को देखते हुए और gym.openai.com/docs/ पर मदद करता है। यहाँ एक उदाहरण है:

class FooEnv(gym.Env):
    metadata = {'render.modes': ['human']}

    def __init__(self):
        pass

    def _step(self, action):
        """

        Parameters
        ----------
        action :

        Returns
        -------
        ob, reward, episode_over, info : tuple
            ob (object) :
                an environment-specific object representing your observation of
                the environment.
            reward (float) :
                amount of reward achieved by the previous action. The scale
                varies between environments, but the goal is always to increase
                your total reward.
            episode_over (bool) :
                whether it's time to reset the environment again. Most (but not
                all) tasks are divided up into well-defined episodes, and done
                being True indicates the episode has terminated. (For example,
                perhaps the pole tipped too far, or you lost your last life.)
            info (dict) :
                 diagnostic information useful for debugging. It can sometimes
                 be useful for learning (for example, it might contain the raw
                 probabilities behind the environment's last state change).
                 However, official evaluations of your agent are not allowed to
                 use this for learning.
        """
        self._take_action(action)
        self.status = self.env.step()
        reward = self._get_reward()
        ob = self.env.getState()
        episode_over = self.status != hfo_py.IN_GAME
        return ob, reward, episode_over, {}

    def _reset(self):
        pass

    def _render(self, mode='human', close=False):
        pass

    def _take_action(self, action):
        pass

    def _get_reward(self):
        """ Reward is given for XY. """
        if self.status == FOOBAR:
            return 1
        elif self.status == ABC:
            return self.somestate ** 2
        else:
            return 0

अपने पर्यावरण का उपयोग करें

import gym
import gym_foo
env = gym.make('MyEnv-v0')

उदाहरण

  1. https://github.com/openai/gym-soccer
  2. https://github.com/openai/gym-wikinav
  3. https://github.com/alibaba/gym-starcraft
  4. https://github.com/endgameinc/gym-malware
  5. https://github.com/hackthemarket/gym-trading
  6. https://github.com/tambetm/gym-minecraft
  7. https://github.com/ppaquette/gym-doom
  8. https://github.com/ppaquette/gym-super-mario
  9. https://github.com/tuzzer/gym-maze

1
मुझे एक बदसूरत " gym_fooआयातित लेकिन अप्रयुक्त" मिलता है। मुझे इससे कैसे छुटकारा मिल सकता है?
हिपोग्लुसीडो

@hipoglucido "gym_foo आयातित लेकिन अप्रयुक्त" से छुटकारा पाने के लिए आपको इस आयात को अनदेखा करने के लिए अपने संपादक को बताने की आवश्यकता है। यह आमतौर पर साथ किया जाता हैimport gym_foo # noqa
मार्टिन थोमा

7
मुझे लगता है कि यह जोर से कहा जाना चाहिए कि आपको इसमें से किसी की आवश्यकता नहीं है, केवल व्युत्पन्न वर्ग सही है? अगर आप जिम इकोसिस्टम से परेशान नहीं हैं तो पैकेज बनाने का कोई कारण नहीं है?
मैथिक

ऊपर दिए गए चरणों का पालन करने के बाद "जिम_फू" आयात त्रुटि pip install -e . कमांड करने में मदद मिली @hipoglucido
praneeth

17

यह निश्चित रूप से संभव है। वे प्रलेखन पृष्ठ में ऐसा कहते हैं, अंत के करीब।

https://gym.openai.com/docs

यह कैसे करना है, आपको प्रेरणा के लिए मौजूदा वातावरण के स्रोत कोड को देखना चाहिए। इसका गीथूब में उपलब्ध है:

https://github.com/openai/gym#installation

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

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

एक और विकल्प है जो आपके उद्देश्य के लिए दिलचस्प हो सकता है। यह OpenAI's यूनिवर्स है

https://universe.openai.com/

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

यदि आप एक शुरुआत कर रहे हैं, मेरी सिफारिश है कि आप एक मानक वातावरण पर एक वेनिला कार्यान्वयन के साथ शुरू करते हैं। जब आप बुनियादी बातों के साथ समस्याओं को पारित कर देते हैं, तो वेतन वृद्धि पर जाएं ...


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