1

나는 "Achtung Die Kurve"라고도 알려진 간단한 형태의 Curve Fever를 만들었습니다. 나는 기계가 게임을 최적으로하는 방법을 알아 내길 원한다. Google의 Tensorflow로 만든 일부 Atari 게임 예제에서 기존 DQN을 복사하고 약간 수정했습니다.학습을위한 보상 기능 DQN을 사용한 Curve Fever 게임

적절한 보상 기능을 알아 내려고 노력하고 있습니다. 이 모든 충돌

이 올바른 접근 방식인가에 대한

  • -500 충돌하지 않는 모든 프레임에 대해

    • 0.1 : 현재,이 보상 설정을 사용할 수 있습니까? 값을 조정해야합니까? 아니면 전혀 다른 접근 방식이 필요합니까?

  • +0

    DQN을 작동 시키도록 관리 했습니까? – ericwenn

    +0

    예, 다음과 같이 채점을 구현했습니다. –

    +0

    죽을 때는 -1, 죽이는 경우 +1. 생존을 위해 작은 상수 값을 사용 했습니까? – ericwenn

    답변

    1

    보상이 -500이면 네트워크가 파괴 될 수 있습니다. 보상은 1에서 -1 사이의 값으로 조정해야합니다. (또한 입력 이미지의 크기를 -1과 1 또는 0과 1 사이에서 조절합니다.)

    적에게 충돌이 발생하면 네트워크에 -1의 보상과 +1의 보상을줍니다. 적들이 없다면 -1의 보상이 충분해야합니다. 작은 일정한 긍정적 인 생활 보상을받는 것은 어떤 상황에서 유용 할 수 있습니다 (네트워크가 피할 수없는 두 가지 충돌 중에서 하나를 결정할 때처럼). 그러나 Q- 기능의 학습을 더욱 복잡하게 만듭니다. 당신은 끊임없이 보상을 받거나 시도하지 않고 가장 잘 작동하는 것을 볼 수 있습니다.

    불가 피한 충돌이있는 예는 작은 부정적인 생활 보상을 사용하지 않아야하는 이유를 보여줍니다. 이러한 경우 네트워크는 가능한 한 충돌을 지연시키는 것이 그 상황에서 더 나은 전략이 될 것이지만 가장 빠른 충돌의 경로를 선택하게됩니다.

    0

    보상 기능이 상담원이 수행하고자하는 목표를 정확히 인코딩 할 때 가장 좋습니다. Curve Fever에서, 목표는 살아있는 마지막 플레이어가되는 것입니다. 방금 게임에 머무르는 것에 대한 보상을 준 보상 기능을 사용했다면 게임을 무기한으로 꺼내는 것이 가장 좋은 방침입니다. 에이전트가 가능한 한 빨리 이기기를 원할 것입니다. 따라서 매 라운드마다 작은 부정적 보상과 라운드 우승에 대한 긍정적 인 보상을 제공해야합니다. 이것은 입니다. 서둘러 보상 기능을 얻으십시오.

    +0

    사실입니다. 그러나 내가 달성하고 싶은 첫 번째 일은 에이전트를 세계에 혼자있게하고 자신의 꼬리에 충돌시키지 않는 것입니다. 나는 살아있는 체재를위한 긍정적 인 사례금을주고 충돌을 위해 큰 벌을 준다, 그러나 이것이 정확한 접근다는 것을 나는 확실하지 않다. –