Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

env 파일을 수정하는 방식으로 MARL사용이 가능할지 질문드립니다. #3

Open
JongheonY opened this issue Mar 10, 2021 · 3 comments

Comments

@JongheonY
Copy link

안녕하세요, 저는 공학을 전공하고 있는 대학원생입니다. 블로그 글과 올려주신 코드에 많은 도움을 받고 있습니다. 다른 분야에 MARL을 적용해보려고 이것저것 찾아서 공부하고 있는데, Ray의 rllib이나 pymarl 은 setting이 너무 복잡하고 필요없는 기능들이 많아서요. 혹시 올려주신 SMAC에서 env부분을 수정하여 custom env로 step, reset등을 구현시키는 방식으로 MARL기법들을 활용할 수 있을까요? 그리고 기존 pymarl 우분투 환경에 대한 세팅에서 어떤부분이 바뀐건지 궁금합니다. 우분투를 사용하고 있긴한데 원저자의 코드링크에서 docker를 사용하는 방식에서 계속 오류가 생겨서 그대신 여기 올려주신 코드를 다운받아서 쓰려하는데 문제가 생길까요?

@jk96491
Copy link
Owner

jk96491 commented Mar 11, 2021

제 깃헙의 SMAC을 관심있게 봐주셔서 감사합니다!

먼저 custom env 관련 해서는 envs/starcraft2/starcraft2.py 파일을 수정하여 커스텀으로 구동이 가능합니다.
작년에 제 스스로 만든 미니게임을 기반으로 멀티에이전트 논문도 작성을 했지요.
다만 스타크래프트 맵 에디터로 몇가지 코딩을 해야 하고 state정보들의 변동이 있을 수 있으니 손이 많이 가긴 할거에요.

그리고 두번째 우분투에서 실행하신다면 실제 스타크래프트게임 창이 나타나지 않고 log로만 진행 상황을 파악할 수 있습니다.
제 코드를 우분투에서도 돌아가긴 하나 원 저자의 깃헙처럼 3rdparty에 starcraft를 설치 하셔야 합니다.

더 추가적인 궁금증이 있으이면 언제든지 편하게 말씀해 주세요.

@JongheonY
Copy link
Author

답변 감사드립니다! 코드를 수정하는데 궁금증이 생겨서 추가로 질문드립니다. QMIX등 MARL을 사용하면 각 agent의 q value를 따로 구한 후 mixing layer에서 q total 을 계산하여 centralized learning을 실행하는 것으로 이해했는데, SMAC/envs/starcraft2/starcraft2.py에서 reward를 계산하는 부분을 보면 각 agent별 reward를 계산하는게 아니라 한 step이 지난 후 전체 상황에 대한 reward 하나만을 계산하는것으로 보여서요. RLlib에서 custom env를 구성할때는 agent별로 따로 reward값을 지정해서 dict형태로 넘겨줬던 것 같은데, SMAC처럼 이렇게 하나의 reward값만 계산되어도 각 agent별 q value를 계산하는데 문제는 없는건가요?

@jk96491
Copy link
Owner

jk96491 commented Mar 16, 2021

보상관련 부분은 정확하게 파악하셨습니다.

일반적으로 MARL에서 각 Agent에게도 보상을 줄 수 있지만 팀플레이 관점에서 올바른 학습을 하였는지는 말할 수 없습니다.
이에 현재 제안된 MARL의 대부분의 모델들은 팀 관점에서 보상에 대하여 각 Agent들의 기여도를 산출하는 방법입니다.
따라서 현재 SMAC 환경은 팀 관점에서의 보상만이 주어집니다.

그러므로 여기 저장소에 반영되어 있는 MARL모델을 구동하실때 팀 차원의 Reward만 제공해도 문제 없을듯 합니다.

PS : Agent 개별로 보상을 줄 수는 있지만 팀 차원으로 원하는 목표에 맞는 보상을 부여하기는 상당히 힘듭니다.

그리고 추가적인 질문 내용이 있으시면 raptorjung@gmail.com 으로 메일 주세요. 제가 깃헙 이슈들은 자주 못봐서요....

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants