GithubHelp home page GithubHelp logo

reinforcement-learning-kr / unity_ml_agents Goto Github PK

View Code? Open in Web Editor NEW
81.0 13.0 49.0 819.93 MB

Unity ML-agents Project Repository of RLKorea

Python 14.32% C# 80.44% Objective-C 0.21% ShaderLab 0.66% Objective-C++ 0.12% HLSL 0.32% ASP 2.71% Dockerfile 0.06% CSS 0.86% HTML 0.04% Jupyter Notebook 0.22% Batchfile 0.04%

unity_ml_agents's Introduction

RLKorea Unity ML-agents 튜토리얼 프로젝트

이 레포지토리는 Reinforcement Learning KoreaUnity ML-agents 튜토리얼 프로젝트를 위한 레포입니다. 이 레포는 유니티 ML-Agents(Github)로 만든 간단한 환경들을 제공합니다. 또한 제공된 환경들에서 에이전트를 학습할 수 있는 심층강화학습 알고리즘을 제공합니다.

이 레포지토리의 내용을 정리하여 다음의 책이 출간되었습니다! (텐서플로와 유니티 ML-Agents로 배우는 강화학습)

Book

버전 정보

  • Unity: 2019.1
  • Python: 3.6
  • Tensorflow: 1.12.0
  • ML-Agents: 0.8.1

알고리즘

모든 알고리즘은 파이썬텐서플로를 통해 작성되었습니다. 알고리즘은 텐서플로 1.5 이상에서 실행이 가능합니다. 제공하는 심층강화학습 알고리즘들은 다음과 같습니다.

  1. DQN: 소코반 환경에서 에이전트를 학습하기 위한 Deep Q Network(DQN) 알고리즘입니다 (Paper).
  2. DDPG: 드론 환경에서 에이전트를 학습하기 위한 Deep Deterministic Policy Gradient (DDPG) 알고리즘입니다 (Paper).
  3. DQN_Adversarial: 두개의 적대적인 에이전트를 학습하기 위한 DQN 알고리즘입니다. . 각 에이전트를 위한 두개의 DQN가 각각 있어서 에이전트는 상대방을 이기는 방향으로 학습을 수행합니다. 이 알고리즘은 퐁 환경에서 에이전트들의 학습을 위해 사용됩니다.
  4. DDDQN_Curriculum: Double DQN (Paper) 과 Dueling DQN (Paper) 알고리즘을 적용한 DQN 알고리즘입니다. 소코반 커리큘럼 환경에서 에이전트를 학습시키기 위한 알고리즘입니다.
  5. Behavioral Cloning (BC): Behavioral cloning 알고리즘은 닷지 환경에서 에이전트를 학습하기 위한 알고리즘입니다. 모방 학습의 일종이며 사람의 데이터를 기반으로 지도학습을 통해 에이전트의 정책을 학습합니다.

환경

모든 환경들은 Unity ML-agents version 0.8을 이용하여 제작되었습니다. 다음과 같은 5개의 데모 환경이 제공됩니다.

1. 소코반

Sokoban

2. 드론

드론 환경에서는 ProfessionalAssets에서 제작한 다음의 에셋을 사용하였습니다.

Drone

3. 퐁

Pong

4. 소코반 커리큘럼

Sokoban_Curriculum

5. 닷지

Dodge

unity_ml_agents's People

Contributors

kyushik avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

unity_ml_agents's Issues

Gridworld 질문이요 (질문이 지워졋네요..ㅠ)

네 답변 감사합니다.

image

현재 쓰리디로 gridworld 환경을 셋팅하고 있는데..

Unity에서 SetActionMask를 사용하여

var positionX = (int)transform.position.x ;
var positionY = (int)transform.position.y;
var positionZ = (int)transform.position.z ;
var maxPosition = 9;
var minPosition = 0;

    if (positionX == minPosition)
    {
        SetActionMask(Left);
    }

    if (positionX == maxPosition)
    {
        SetActionMask(Right);
    }

    if (positionY == minPosition)
    {
        SetActionMask(Down);
    }

    if (positionY == maxPosition)
    {
        SetActionMask(Up);
    }

    if (positionZ == maxPosition)
    {
        SetActionMask(Forward);
    }

    if (positionZ == minPosition)
    {
        SetActionMask(Backward);
    }

이런 코드를 통해 Tensorflow에서 액션을 정할때 조건에 충족되면 해당 액션을 피하려고 하고 있습니다.

하지만 저런 조건에 충족하여도 Tensorflow에서는 해당 액션을 취합니다.

이 부분이 해결이 안되서 고생하고 있습니다. 조언 좀 부탁드립니다.

참고로 : 위의 지붕도 있지만 render을 안해놓은거 뿐입니다.

Reward를 받기 힘든 Environment 에서 Time horizon 셋팅?

책에서 설명 되지 않는 부분이지만 궁금해서 질문해요.
Unity 로 제가 구성한 환경에서 에이전트들이 이상하게도 학습이 잘 이뤄지지 않고 있습니다.
그 이유로 Time horizon 문제라고 생각하는데요. 지금 환경에서는 한 에이전트가 1.0 의 Reward를 받기까지 1000 time step 이 걸리는데요. 여기서 모든 스텝 하나하나가 Reward 에 다가가기 까지 중요한 행동이 됩니다. 그러면 저의 환경에서 1000 time step을 모두 저장한다고 하고 0.99 Discount factor 를 가진다고 하면, 1000 step 에서의 1.0 Reward 는 무의미한 값이 되어 에이전트가 잘 학습이 이뤄지지 않는다고 생각하고 있습니다. 그래서 Discount factor 를 올려보고 테스트를 해보지만 학습이 잘 안되네요.

혹시 제가 시도해볼만한 방법이 있을까요?

Python Learning Error

책 2장 ML-Agents 3DBall 예제를 돌리는데, Unity 실행되지만 아무런 반응없이(공은 굴러가고) , python에서 학습시 연결오류가 발생합니다.
[환경]
Windows, Unity 2019.1.14f1, python 3.6, mlagents 0.8.1,mlagents-envs 0.8.1
[오류]
env = UnityEnvironment(file_name=env_name)
==>
UnityTimeOutException: The Unity environment took too long to respond. Make sure that :
The environment does not need user interaction to launch
The Academy's Broadcast Hub is configured correctly
The Agents are linked to the appropriate Brains
The environment and the Python interface have compatible versions.

image

Pong Goal object 관련 질문

질문드리기에 앞서 저번 질문 친절하게 답변해 주셔서 감사합니다.
다름이 아니라 이번에는 Pong 환경에서 아래 jpg를 보시다시피 파란색 쪽(GoalA)는 정상적으로 작동을 하는 반면에
빨간색 쪽(GoalB)는 골대에서 튕겨져 나오면서 속력이 줄어듭니다. 어떻게 해결해야 할까요?

(※ 스크립트 코드는 github에 올려주신걸 사용했기 때문에 따로 문제될건 없을것 같습니다)
ezgif com-video-to-gif
GoalA
GoalB

env.reset() 질문입니다.

안녕하세요. 계속 질문을 드리게 되네요,..
아무래도 자료도 많이 없고 그래서 죄송합니다.

질문은 아래와 같습니다.

env_info = env.reset(train_mode=train_mode,
config=sokoban_reset_parameters[game_level])[default_brain]

# DDDQN 에이전트 생성
agent = DDDQN_Agent()

step = 0
start_level_episode = 0
rewards = deque(maxlen=print_interval)
losses = deque(maxlen=print_interval)
successes = deque(maxlen=print_interval)

start_time = datetime.datetime.now()

# 학습 과정
for episode in range(run_episode + test_episode):
    if episode > run_episode:
        train_mode = False
        env_info = env.reset(train_mode=train_mode)[default_brain]

    **env_info = env.reset(train_mode=train_mode)[default_brain] **//이 부분을 추가해도 학습하는데 지장없나요?****
    state = env_info.vector_observations[0]
    state = np.reshape(state, [1, state_size])
    episode_rewards = 0 
    done = False
    success = 0
    step = 0

    while not done:
        step += 1
        action = agent.get_action(state)
        
        **env_info = env.step(action)[default_brain] //이부분에서 에러가 나타납니다.**

학습하는데 볼드로 표시한 부분을 집어넣어도 학습하는데 지장이 없나요?

episode is completed, env.reset() 이런식으로 뜹니다.ㅠ

학습하는데 지장이 없을까요?

SetActionMask 함수 질문이요

안녕하세요 책읽고 있는 학생입니다.

다름이 아니라 SetActionMask 함수는 Tensorflow 환경에서 적용이 안되나요?

지금 다른 강화학습 환경을 만들고 있는데 SetActionMask를 지정해서. "어느 범위 이상이면 그행동을 하지 마라"를 지정하고 있는 상황입니다. 답변 부탁드립니다.

Learning speed 문제

안녕하세요.
현재 ML-Agent version 0.8 을 설치 할 수 없어서 0.12 버전으로 진행하고 있습니다.
그런데 예제 1_DQN.py 을 실행하면 스텝 30000 이후로 급격하게 속도가 느려지네요.

시각적 관측 여러개 사용 및 시각적 관측 + 수치적 관측 복합 사용 질문건

안녕하세요

현재 책을 통해 많은 프로젝트를 진행하고 있는 학생입니다.

다른 것이 아니라 내장 알고리즘 말고 파이썬으로 학습을 진행하려고 하는데.

시각적 관측을 여러개 사용하는 경우에는 어떻게 코드를 작성해야될지 잘몰라서 질문드리고,

또한, 만약 시각적 관측과 수치적 관측을 복합적으로 사용하려면 코드를 어떻게 작성을 해야되나요..

책 덕분에 많은 것을 배우고 있습니다.
너무 좋은 자료 감사합니다.

Python Unity 실행 화면

Sokoban이나 Drone 을 실행할때 아래 화면 처럼 유니티 실행화면이 작게 출력이 됩니다.
크기를 키울 수 있는 방법이 없을까요?

q
q2

환경에 여러 에이전트들을 복사해서 만들었을 경우?

질문이 좀 많네요. 책에선 다루지 않는 내용이지만 궁금해서 질문드려요.

Unity ML-agent 예제들을 보면 같은 에이전트를 복사하여 학습속도를 높인거 같은데요.
학습을 위해서는 각 에이전트들의 state,action,reward, next_state, 들을 한 메모리에 공유하면 될까요?
그리고 이 각 에이전트들은 같은 네트워크에서 나오는 Action 결과를 이용해서 움직이면 될까요?

적대적 DQN 만들기를 보면 두개의 Brain 사용과 Single Brain 사용의 차이점은 단지 데이터가 따로따로 들어오는지 아니면 하나의 Brain 으로 들어오는지 설정한다고 봐도 될까요?

마지막으로 Pytorch를 이용해도 문제 없는지 궁금합니다. 감사합니다.

pip install agents==0.8.1 오류

안녕하세요 이번에 책을 사게 되어 열심히 프로젝트를 따라하려고 하는 초보자 입니다.

오류가 발생해서 문의 드립니다.
ERROR: Cannot uninstall 'pywin32'. It is a distutils installed project and thus we cannot accurately determine which files belong to it which would lead to only a partial uninstall.

다 설치 되는데 저기서 에러메세지가 뜹니다. 어떻게 해결하면 될까요?

전이학습 질문 드립니다

안녕하세요 전에 답변 주셔서 잘해결했습나다. 너무 감사합니다.

다름이 아니라 강화학습도 전이 학습 가능할꺼 같은데. 전이학습 하는 방법에 대해 조언좀 주실수 있나요?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.