Q-Learning 값이 임계값을 초과합니다
Q-Learning을 구현하면서 Q-값이 지나치게 커지는 문제에 직면했습니다. 결과적으로 오버플로가 발생합니다. 이를 해결하기 위해 기본 개념과 잠재적인 문제를 살펴보겠습니다.
보상 기능
제공되는 보상 기능은 매 단계마다 긍정적인 보상을 할당하여 장기적으로 이기기 위해 플레이하세요. 에이전트가 승리를 위해 노력하도록 장려해야 하기 때문에 이는 바람직하지 않습니다.
업데이트 방정식
문제의 핵심은 Q-값에 대한 업데이트 방정식에 있습니다.
agent.values[mState] = oldVal + (agent.LearningRate * (agent.prevScore + (agent.DiscountFactor * reward) - oldVal))
여기서, Agent.prevScore는 이전 State-Action의 보상을 나타냅니다. 그러나 구현에서는 이전 단계의 Q 값(예: oldVal)으로 설정했습니다. 이 실수는 Q-값의 무한한 증가로 이어집니다.
해결책
agent.prevScore를 이전 단계의 보상에 할당하여 이 오류를 수정한 후 에이전트의 행동이 정상화됩니다. 업데이트된 Q-값은 이제 예상되는 총 보상을 반영하여 에이전트가 승리를 추구하도록 장려합니다.
Q-값 범위
일반적인 Q-Learning 문제에서 Q- 가치는 가능한 최대 보상과 처벌로 제한됩니다. 귀하의 경우 보상 함수는 Q 값을 [-1, 1]로 제한합니다. 패배에는 -1, 승리에는 1을 할당하기 때문입니다. 그러나 다른 시나리오에서는 범위가 더 크거나 무제한일 수도 있습니다. 예상되는 총 보상은 Q-값의 범위를 결정하는 중요한 요소입니다.
이러한 문제를 해결함으로써 Q-Learning을 성공적으로 구현했으며 이제 보다 전략적인 방식으로 플레이하는 에이전트를 훈련할 수 있습니다. 장시간 플레이에서 승리합니다.
위 내용은 내 Q-Learning 가치가 폭발적으로 증가하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!