2
Qラーニングが分岐するのはなぜですか?
私のQラーニングアルゴリズムの状態値は無限に発散し続けます。つまり、私の重みも発散しています。値のマッピングにはニューラルネットワークを使用しています。 私はもう試した: 「報酬+割引*アクションの最大値」のクリッピング(最大/最小は50 / -50に設定) 低い学習率の設定(0.00001と私は、重みを更新するために従来のバックプロパゲーションを使用しています) 報酬の価値を下げる 探査率を上げる 入力を1〜100に正規化します(以前は0〜1でした) 割引率を変更する ニューラルネットワークのレイヤーを減らす(検証のためだけ) Qラーニングは非線形入力で発散することが知られていると聞きましたが、重みの発散を止めようと試みることができる他に何かありますか? 2017年8月14日の更新#1: リクエストがあったため、現在行っていることについて具体的な詳細を追加することにしました。 私は現在、エージェントにシューティングゲームのトップダウンビューで戦う方法を学ばせようとしています。対戦相手は確率的に動くシンプルなボットです。 各キャラクターには、各ターンで選択できる9つのアクションがあります。 上に移動 下に移動 左に移動 右に動く 弾丸を上向きに発射する 弾丸を撃ち落とす 左に弾丸を撃ちます 右に弾丸を撃ちます 何もしない 報酬は次のとおりです。 エージェントがボットを弾丸で打った場合、+ 100(さまざまな値を試してみました) ボットが発射した弾丸にエージェントが当たった場合、-50(ここでも、さまざまな値を試しました) 弾丸を発射できないときにエージェントが弾丸を発射しようとした場合(例:エージェントが弾丸を発射した直後など)-25(必須ではありませんが、エージェントをより効率的にしたいと思いました) ボットがアリーナから出ようとした場合は-20(あまり必要ではありませんが、エージェントをより効率的にしたいと思いました) ニューラルネットワークの入力は次のとおりです。 0から100に正規化されたX軸上のエージェントとボット間の距離 0から100に正規化されたY軸上のエージェントとボット間の距離 エージェントのxとyの位置 ボットのxとyの位置 ボットの弾丸の位置。ボットが弾丸を発射しなかった場合、パラメーターはボットのx位置とy位置に設定されます。 私も入力をいじっています。エージェントの位置(距離ではなく実際の位置)のx値やボットの弾丸の位置などの新しい機能を追加してみました。それらのどれもうまくいきませんでした。 これがコードです: from pygame import * from pygame.locals import * import sys from …