Q-Learning 구현에서 일반적인 문제에 직면했습니다. 상태-작업 값이 너무 높아지는 것입니다. 이 문제를 살펴보고 해결책을 제시해 보겠습니다.
문제 이해
에이전트는 예상되는 총 보상을 최대화하려고 합니다. 그러나 보상 함수는 게임 지속에 대한 긍정적인 보상(0.5)을 반환합니다. 이는 에이전트가 게임을 무기한 연장하도록 장려하여 무한한 기대 총 보상과 지나치게 높은 Q-값을 초래합니다.
해결책: 보상 기능 조정
이 문제를 해결하려면 , 매 단계마다 부정적인 보상을 제공하도록 보상 기능을 조정하세요. 이는 게임을 연장하는 에이전트에게 불이익을 주고 승리 전략을 모색하도록 장려합니다. 예를 들어 다음 보상 체계를 사용할 수 있습니다.
구현 고려 사항
코드에서 이전 상태 작업에 대한 보상으로 agent.prevScore를 사용하고 있습니다. 그러나 이는 Q-값이 아닌 실제 받은 보상이어야 합니다. 코드에서 다음 사항을 조정하세요.
<code class="go">agent.values[mState] = oldVal + (agent.LearningRate * (reward - agent.prevScore))</code>
예상 동작
이러한 변경 사항을 구현한 후에는 다음 동작을 관찰해야 합니다.
강화 학습 알고리즘은 때때로 비직관적인 동작을 보일 수 있으며, 효과적인 솔루션을 개발하려면 기본 원리를 이해하는 것이 중요하다는 점을 명심하세요.
위 내용은 내 Q-Learning 값이 왜 그렇게 높나요? 무제한으로 기대되는 보상에 대한 솔루션.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!