• 카테고리

    질문 & 답변
  • 세부 분야

    게임 프로그래밍

  • 해결 여부

    미해결

그리드월드 DQN 잘 모르는게 있어서 질문 드립니다.

22.06.20 17:09 작성 조회수 472

0

- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요!
- 먼저 유사한 질문이 있었는지 검색해보세요.
- 서로 예의를 지키며 존중하는 문화를 만들어가요.
- 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.
 
 
안녕하세요. 제가 너무 기본이 없어서..
좀 답답한 질문을 할거 같습니다. 이해 부탁드립니다.
 
DQN 실습1,DQN 실습2을 여러번 봤는데요. 좀처럼 어떻게 해야 되는지 이해가 되지 않아서요.
 
그리드월드에서 DQN 알고리즘을 사용해서 강화학습을 한다는것 같은데요..
DQN 실습1 강이에서 1분 30초쯤 갑자기 파이썬 소스가 나오는데...이게 DQN 알고리즘 python 으로 구현하는내용인거죠?
 
이걸 똑같이 쳐서 DQN 알고리즘을 ml-agents\mlagents\trainers에 많은 알고리즘이 있으니..
거기에 DQN으로 폴더 만들고 넣으면 되나요?
 
그리고 config폴더에도 알고리즘별로 각각 *.yaml파일이 만들어 져 있는데요..
여기도 똑같이 DQN포더 만들고 *.yaml 셋팅 해주면 되나요?
 
behaviors:
  3DBall:
    trainer_type: ppo -> DQN 다른것 안하고 DQN으로 알고리즘 셋팅 되는건가요?
두서없이 질문해서 죄송합니다. 제가 이부분을 완전히 감을 못잡고 있어서요.
아래  A2C,드론환경 제작하기,DDPG
이 모든 강좌가 여기 부분을 이해 못하면 진행 할수가 없더라고요. ㅜ ㅜ
제가 너무 답답해서 [텐서플로와 유니티 ML-Agents로 배우는 강화학습] 책을 살려고했는데.. 
이 책도 절판 되었더라고요. 아무쪼록 그리드월드에서 DQN 적용해서 강화학습을 하는 방법을
답변 또는 참고 싸이트 어떤것이든 부탁드립니다.

답변 1

답변을 작성해보세요.

1

안녕하세요! 아 그쪽 부분이 헷갈리셨군요? 

ML-Agents 관련 설명하는 곳에서 이야기하듯이 ML-Agents로 만든 환경을 학습할 수 있는 방법은 두가지가 있습니다. 

1. Python 코드를 직접 짜서 학습시키기 

2. Unity ML-Agents에서 제공하는 강화학습 알고리즘 사용하기 

강의 내용 중 config 폴더 안에 있는 yaml을 세팅하고 mlagents-learn 명령을 이용해서 학습하는 것은 2번에 해당합니다. 말씀하신 DQN 코드를 파이썬 스크립트를 통해서 직접 짜고 이를 통해 학습하는 것은 1번에 해당합니다. 

강의에 나오는 DQN 코드를 편집기에서 짜시고 이렇게 저장된 .py 파일을 실행하시면 됩니다. 이 부분에 대해서는 ML-Agents 살펴보기, ML-Agents 환경 학습 1, ML-Agents 환경 학습 2 내용을 한번 다시 수강하셔도 좋을 듯 합니다. 

책 관련해서는 해당 인프런 내용과 같은 내용으로 책이 다음달 쯤 개정판으로 출간 예정입니다! 영상 강의만으로는 참고하시기가 어려우시면 책이 출간되었을 때 해당 책의 내용도 같이 참고해주시면 좋을 것 같습니다!

배고파님의 프로필

배고파

질문자

2022.06.22

답변 감사합니다.  말씀하신 내용을 다시 봤는데도 잘 이해가 안가서 다시 질문 드립니다.

여기 보면 python API를 만들어서  mlagents-learn이랑 만든 Python API랑 통신을 하는데요.

mlagents-learn 명령을 쓸때  학습 내용을 보면 

*.yaml 말고 정보를 가지고 있는곳이 없고요.

*.yaml 까봐도 파이썬 파일 경로가 들어 있지 않으니.. 내가 만든 python API를 어떻게 

mlagents-learn에 실행할때 쓰게 하는지 잘 모르겠습니다.

바쁘신데 매번 친절한 답변 감사합니다. 오늘도 좋은하루 되세요!~

 

 

 

 

 

 

 

안녕하세요! 질문 주신 내용에 대한 답변 드리겠습니다! 

우선 전에 말씀드린 mlagents-learn과 python-api를 통한 직접 코딩은 완전히 별개의 방법이라고 생각해주시면 되겠습니다! 두가지 방법 중 하나를 선택해서 내가 만든 ml-agents 환경을 학습할 수 있습니다. 

mlagents-learn의 경우 yaml 파일에서 설정을 진행 후 mlagents-learn 명령을 통해 Unity ML-Agents에서 제공하는 알고리즘에 따라 학습하는 방법입니다. 이 경우 yaml을 통해서만 설정을 변경할 수 있어서 알고리즘 변경이 제한적인 단점이 있습니다. 과정을 더 자세하게 설명드리면 

1. yaml 파일에서 알고리즘에 대한 설정을 진행한다. 

2. mlagents-learn 명령을 통한 학습을 진행한다. (mlagents-learn [yaml 경로] [환경 경로] [run-id])

 

다음으로 저희 강의에서 직접 스크립트를 통해 구현하신 python API는 mlagents-learn을 통한 학습과는 아무 연관이 없습니다. 위의 그림을 보시면 연관이 있는거 아닌가? 생각하실수도 있는데 이는 mlagents-learn을 통한 학습도 python 코드를 통한 학습이므로 그렇게 그림이 나온걸로 생각해주시면 될 것 같구요! 직접 구현하신 코드는 저 그림에서 Python Trainer 부분은 제외하고 바로 Python API로 환경과 통신하는 부분이라고 생각해주시면 되겠습니다. 이렇게 구현하는 경우, 알고리즘부터 네트워크 구조, 사용하는 기법 등등 직접 다 python을 통해서 짜는 방식이므로 자유도가 높습니다. 이 과정은 다음과 같습니다. 

1. python 스크립트를 작성한다

2. 파일을 저장한다. (ex. dqn.py) 

3. 파일을 실행한다. (ex. python dqn.py) 

 

혹시라도 파이썬 자체에 대해서 익숙하지 않으시다면 파이썬의 기초적인 실행 방법 등에 대해서는 숙지를 하시고 강의를 진행해주시면 이해에 도움이 될 것 같습니다!