Q-Learning 값이 임계값을 초과하는 경우
Q-Learning을 구현하려고 하다가 상태-액션 값이 임계값을 초과하는 문제가 발생했습니다. 배정밀도 부동 소수점 변수의 한계. 초기 구현에서는 이 문제를 상태-작업 튜플 대신 Agent.prevState 사용으로 인한 것으로 간주했습니다. 그러나 근본 원인은 prevScore 계산에서 확인되었습니다.
이슈 이해
Q-Learning은 Q(s, a)의 값을 기반으로 업데이트합니다. 공식:
Q(s, a) = Q(s, a) + (LearningRate * (prevScore + (DiscountFactor * reward) - Q(s, a)))
중요한 점은 prevScore가 Q 값이 아닌 이전 상태 동작에 대한 보상을 나타낸다는 것입니다. 초기 구현에서 prevScore에는 보상 자체가 아닌 이전 단계의 Q 값이 포함되어 부동 소수점 한도를 초과하는 부풀려진 값이 발생했습니다.
해결 방법
이전 단계에 대한 실제 보상을 유지하도록 prevScore를 수정함으로써 학습 프로세스가 의도한 대로 작동했습니다. 200만 회 이후 최대값이 크게 줄어들었고, 모델은 게임 플레이 중 합리적인 행동을 보였습니다.
보상의 역할
보상 기능의 영향력에 주목할 필요가 있습니다. 강화 학습 중. 목표는 예상되는 총 보상을 최대화하는 것입니다. 모든 시간 단계에 대해 보상이 제공되면 알고리즘은 게임 연장을 선호하게 되어 Q 값이 지나치게 높아집니다. 이 예에서 각 시간 단계에 대해 부정적인 보상을 도입하면 에이전트가 승리를 목표로 하도록 장려하여 Q-값을 적절한 범위 내로 가져옵니다.
위 내용은 내 Q-Learning 가치가 폭발적으로 증가하는 이유는 무엇입니까? 부풀려진 보상과 부동 소수점 한도에 관한 이야기.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!