Skip to main content

The Room environment

Project description

The Room environment - v2

For the documentation of RoomEnv-v0 and RoomEnv-v1, click the corresponding buttons.

This document, RoomEnv-v2, is the most up-to-date one.

We have released a challenging OpenAI Gym compatible environment. The best strategy for this environment is to have both episodic and semantic memory systems. See the paper for more information.

This env is added to the PyPI server:

pip install room-env

Data collection

Data is collected from querying ConceptNet APIs. For simplicity, we only collect triples whose format is (head, AtLocation, tail). Here head is one of the 80 MS COCO dataset categories. This was kept in mind so that later on we can use images as well.

If you want to collect the data manually, then run below:

python collect_data.py

The RoomDes

You can run the RoomDes by

from room_env.des import RoomDes

des = RoomDes()
des.run(debug=True)

with debug=True it'll print events (i.e., state changes) to the console.

{'resource_changes': {'desk': -1, 'lap': 1},
 'state_changes': {'Vincent': {'current_time': 1,
                               'object_location': {'current': 'desk',
                                                   'previous': 'lap'}}}}
{'resource_changes': {}, 'state_changes': {}}
{'resource_changes': {}, 'state_changes': {}}
{'resource_changes': {},
 'state_changes': {'Michael': {'current_time': 4,
                               'object_location': {'current': 'lap',
                                                   'previous': 'desk'}},
                   'Tae': {'current_time': 4,
                           'object_location': {'current': 'desk',
                                               'previous': 'lap'}}}}

RoomEnv-v2

import gym
import room_env

env = gym.make("RoomEnv-v2")
observation, info = env.reset()
while True:
    observation, reward, done, info = env.step(0)
    if done:
        break

Every time when an agent takes an action, the environment will give you three memory systems (i.e., episodic, semantic, and short-term), as an observation. The goal of the agent is to learn a memory management policy. The actions are:

  • 0: Put the short-term memory into the epiosdic memory system.
  • 1: Put it into the semantic.
  • 2: Just forget it.

The memory systems will be managed according to your actions, and they will eventually used to answer questions. You don't have to worry about the question answering. It's done by the environment. The better you manage your memory systems, the higher chances that your agent can answer more questions correctly!

Take a look at this repo for an actual interaction with this environment to learn a policy.

Contributing

Contributions are what make the open source community such an amazing place to be learn, inspire, and create. Any contributions you make are greatly appreciated.

  1. Fork the Project
  2. Create your Feature Branch (git checkout -b feature/AmazingFeature)
  3. Run make test && make style && make quality in the root repo directory, to ensure code quality.
  4. Commit your Changes (git commit -m 'Add some AmazingFeature')
  5. Push to the Branch (git push origin feature/AmazingFeature)
  6. Open a Pull Request

Cite our paper

new paper bibtex coming soon

Cite our code

DOI

Authors

License

MIT

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

room_env-0.2.1.tar.gz (56.2 kB view hashes)

Uploaded Source

Built Distribution

room_env-0.2.1-py3-none-any.whl (63.0 kB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page