2017-07-12 16 views
7

Tôi có một nhiệm vụ để tạo một Đại lý AI sẽ học chơi trò chơi video bằng ML. Tôi muốn tạo một môi trường mới trong OpenAI vì tôi không muốn làm việc trên môi trường hiện có. Làm thế nào tôi có thể tạo một môi trường mới. Ngoài ra, có cách nào khác để tôi có thể bắt đầu phát triển AI Agent để chơi một trò chơi video cụ thể mà không cần sự giúp đỡ của OpenAI? Tôi là người mới bắt đầu trong lĩnh vực này nên mọi loại trợ giúp/hướng khởi đầu sẽ được đánh giá cao.Có thể tạo môi trường phòng tập thể dục mới trong OpenAI không?

Trả lời

4

Chắc chắn là có thể. Họ nói như vậy trong trang Tài liệu, gần cuối.

https://gym.openai.com/docs

Như thế nào để làm điều đó, bạn nên nhìn vào mã nguồn của các môi trường hiện tại cho cảm hứng. sẵn có của mình trong github:

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

Hầu hết các môi trường của họ, họ đã không thực hiện từ đầu, nhưng thay vì tạo ra một wrapper xung quanh môi trường hiện có và đưa nó tất cả một giao diện thuận tiện cho học tăng cường.

Nếu bạn muốn tự mình làm, có lẽ bạn nên đi theo hướng này và cố gắng điều chỉnh thứ gì đó đã tồn tại trong giao diện phòng tập thể dục. Mặc dù có một cơ hội tốt mà điều này là rất tốn thời gian.

Có một tùy chọn khác có thể thú vị cho mục đích của bạn. Đó là OpenAI của vũ

https://universe.openai.com/

nó có thể tích hợp với các trang web để bạn luyện tập mô hình của bạn trên các trò chơi kongregate, ví dụ. Nhưng vũ trụ không dễ sử dụng như Gym.

Nếu bạn là người mới bắt đầu, đề xuất của tôi là bạn bắt đầu với việc thực hiện vani trên môi trường chuẩn. Sau khi bạn vượt qua các vấn đề với thông tin cơ bản, hãy tiếp tục tăng dần ...

+0

gì nếu một mong muốn để tạo ra một môi trường cho các hoạt động phi kỹ thuật số như Tic-Tac-Toe hoặc khối Rubik của nơi trạng thái có thể là hữu hạn và có thể được xác định rõ? Tôi sẽ chỉ tạo ra một danh sách với tất cả các trạng thái có thể? Làm thế nào một mô phỏng có thể tìm ra trạng thái đích hợp lệ từ một trạng thái đã cho là gì? – Hendrik

12

Xem banana-gym của tôi cho một môi trường cực kỳ nhỏ.

Tạo môi trường mới

Xem trang chính của kho:

https://github.com/openai/gym/tree/master/gym/envs#how-to-create-new-environments-for-gym

Các bước thực hiện:

  1. Tạo một kho lưu trữ mới với một cấu trúc PIP gói

Nó sẽ giống như thế này

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

Đối với nội dung của nó, hãy làm theo liên kết ở trên. Chi tiết không được đề cập, đặc biệt là một số chức năng trong foo_env.py sẽ trông như thế nào. Nhìn vào các ví dụ và tại gym.openai.com/docs/ giúp.Dưới đây là một ví dụ:

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 

Sử dụng môi trường của bạn

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

Ví dụ

  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
+0

Tôi nhận được một chữ "gym_foo' xấu xí được nhập nhưng không sử dụng". Làm sao để tôi thoát khỏi nó? – hipoglucido

Các vấn đề liên quan