28 |
Pongと強化学習 (92) |
これだと5, 6は移動と射撃が複合されており、移動だけにマイナスのペナルティをつけても射撃につけられたとAIが誤解してしまうので、分離したいのですが。
左右の移動にのみ極小のペナルティを適用するためには、カスタム環境のstep
メソッド内で報酬にペナルティを加える処理を追加する必要があります。以下は、CustomSpaceInvaders
クラスを修正して、左右の移動に小さなペナルティを適用する方法を示したコードです。
移動アクションへのペナルティの適用
コードの解説
- ペナルティの設定:クラス内に
move_penalty
属性を追加し、その値を左右の移動に適用しています。この値は負の小さな数で、移動するたびに報酬から差し引かれます。 - 報酬の調整:左または右に移動するアクションが選択された場合、
reward
にペナルティを加算します(負の値を加算するため、実際には報酬が減少します)。
このようにして、エージェントは左右に移動する際に小さなコストがかかることを学習し、可能であれば移動を避ける戦略をとるようになるかもしれません。ただし、ペナルティの値をどの程度に設定するかは、タスクの性質や学習の目標に応じて慎重に選ぶ必要があります。