어떤 게임에 대한 dqn을 구현해보고 싶은데
일반적인 게임이랑은 살짝 다름.
게임의 구조가 트리 구조이고 트리의 깊이는 그리 깊지 않음 (15 이하인듯), 그리고 action을 했을때 그 결과가 확정적이지 않고 확률적임(블랙잭 생각하면 될듯), 추가로 트리의 사이즈는 거의 무한함(대략 1e18정도 되는듯)
이러한 상황에서
1. dqn이 괜찮은 선택지인지?
2. dqn의 할인율을 1로 잡고 구현하고있는데 괜찮은지?
3. 다른 조언이 있는지?
등을 물어보고 싶음, 아무 의견이나 좋으니 댓글달아주면 매우 감사하겠음...
- dc official App
초월인가 - dc App
매우 날카롭군 - dc App
다른건 괜찮은데, 크기가 큰거는 좀 비효율적이게 될수 있을듯, 그기고 굳이 할인율을 주지 않는 이유라도 따로 있나?
어차피 트리 구조라 사이클이 없으니 1로 한거긴한데... 1 미만이 좋나? - dc App
할인율은 쉽게 이야기하면 보상을 빠르게 받을지 느리게 받도록 설정하는 거니까 상관 없지, 물론 할인율을 주는게 이상한 상황이라고 한다면 안주는게 맞겠지만 보통은 주는게 수렴측면에서 좋을걸
1.ㅇㅇ 2.할인율을 1미만으로 쓰는 이유는 결국 각 Q-value의 target값을 bounded하게 잡기 위함임. 할인율이 1미만이고, 각 state마다의 보상의 상한이 M이면 M/(1-r)을 상한으로 가짐을 수학적으로 보일 수 있음. 근데 할인율이 1이되버리면, episode가 유한하지 않거나 매우 큰 경우 (너의 경우처럼) target값이 매우 커져서 제대로 예측할 수 없으니까 1미만으로 써야됨 3.observation 형태를 제대로 정의해야함. 무슨 게임인진 구체적으로 모르겠는데 tree구조를 다 state로 한다던가, tree의 연결 node에 따라 state가 다른데 현재 노드에서의 state만 표현한다던가 그러면 제대로 작동하지 않을 수 있음.
아무래도 랜덤 요소가 있기 때문에, 더 좋은 성능을 원한다면 QRDQN과 같은 것도 구현해보는 것을 추천 (DQN이 랜덤적인 요소가 있는 게임에서 작동을 안한다는건 아님)