작성
·
237
2
안녕하세요.
인프런에서 제공하는 DQN 강좌를 보고,
https://github.com/Unity-Technologies/ml-agents/blob/release_19_docs/docs/Learning-Environment-Create-New.md 에서 제공하는
환경을 만든 뒤에 DQN agent로 학습하려고 돌렸는데,
에피소드가 끝난 뒤에 get_steps 로 리턴받은 decisionstep 의 obs 값이 null로 들어가면서 오동작을 하게 되더라구요.
C# 스크립트가 문제 있는지 unity가 제공하는 ppo 모델로 확인 했을 땐, 문제가 없었습니다.
어떤 부분을 놓쳤는지 잘 모르겠습니다.
답변 2
0
이번에 유니티로 틱택토 환경을 만들어서
pytorch로 DQN 모델을 만들어서 학습 할 때는
C#코드에서 RequestDecision(); 코드 호출없이 잘 되네요.
아무래도 env.step() 이 콜을 해서 환경을 업데이트 했어야 했는데
그걸 하지 않지 않았던 게 문제 였던 것 같습니다.
액션을 하고, 에피소드가 끝났을 때 환경을 업데이트를 해주지 않았고
env.get_step(behavior_name)을 콜 했을 때
obs 값이 null 이더라고요. 그 때 눈치 챘습니다.
그래서 그 문제를 c#코드에서 RequestDecsion()을 호출함으로써
env를 업데이트 한게 아니었나 싶어요.
env에서 set_action()을 한다고 해서 다음 스텝으로 진행 한다고 착각을 했었고
예제 코드를 보니까 set_action을 하면 step 콜 하더라고요.
결론 : set_action을 하면 업데이트를 위해 step을 콜 해야 함
안녕하세요! 혹시 작성하셨던 Agent 스크립트와 인스펙터에 설정 정보들 공유 가능하실까요?