問題タブ [temporal-difference]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
81 参照

artificial-intelligence - 強化学習エージェントのトレーニング中に蓄積されたエピソード報酬の数回の落ち込み

こんにちは、PPO アルゴリズムを使用して制御問題の強化学習エージェントをトレーニングしています。トレーニング プロセス中に各エピソードの累積報酬を追跡しています。トレーニング プロセス中に何度か、蓄積された報酬が急激に低下するのを確認しました。これがなぜ起こっているのか、またはこれを回避する方法を理解することはできません。ニューラルネットワーク層のニューロン数、学習率などを変更するなど、いくつかのハイパーパラメーターを変更してみましたが、それでも一貫して発生していることがわかります。ディップ中に実行されているアクションをデバッグして確認すると、明らかにアクションが非常に悪いため、報酬が減少します。

なぜこれが起こっているのか、またはこれを回避する方法を理解するのを手伝ってくれる人はいますか?

私のトレーニングプロセスのプロットの一部

ここに画像の説明を入力

ここに画像の説明を入力

ここに画像の説明を入力

0 投票する
0 に答える
250 参照

python - Tensorflow 2.0 で TD-Lambda メソッドのオプティマイザーを作成するにはどうすればよいですか?

この論文で説明されているように、TD-Lambda 学習アルゴリズムを使用するTD-Gammon を実装しようとしています。これはすでにここで行われていますが、4 年前のものであり、Tensorflow 2 を使用していません。Tensorflow 2 でこれを実行しようとしていますが、リンク先の論文で説明されているように、重みの変更を実行するカスタム オプティマイザを作成する必要があると考えています。その上。

カスタム オプティマイザーを作成するには、Optimizer クラスをサブクラス化しcreate_slots、、、、およびメソッドを実装する必要があることを知っています。ただし、TD-Lambda の重み変更アルゴリズムには、ニューラル ネットワークの出力 (および論文) が必要であり、メソッドはそれにアクセスできないようです。resource_apply_denseresource_apply_sparseget_configY_t-1Y_tresource_apply_dense

ニューラル ネットワークの出力にアクセスするにはどうすればよいですか? それとも、私はこれについて間違った方法で進んでいますか?

0 投票する
0 に答える
45 参照

python - 強化学習の例

環境: 合計 25 ターンあります。アクションには、ビルド CS とビルド CI の 2 種類があります。

目標: 特に機械学習/強化学習を使用して、与えられた合計ターン数で構築できる CI (建物) の最大数を見つけます。

注: CS は技術的には建物ですが、建物の総数にはその数を含めていません。これは、私のコードで「建物」を読んで、構築された CI のみを意味する場合に注意することが重要です。

公式: BPT (1 ターンあたりの建物数) = CS/4 + 5 CS を 4 つ建設するごとに、CI が 1 増加します (5 から始めます)。

私の全体的な目標は、25 歳になり、構築できる CI の最大数を確認することです。それに加えて、最善のシナリオを最大限に活用するために必要な手順と、これらのアクションをどの順序で実行する必要があるかを知りたいです。

以下のコードはそれを達成しているようですが、トレーニング済みのモデルを使用しようとすると失敗します。すべてのエピソードが完了した後、私の q_values テーブルが可能な限り最良のパスをマップできることを理解しています。

残念なことに、最終的な q_values テーブルはすべて同じ値を持っているように見え、np.argmax を使用すると、すべての決定に対して 0 番目のインデックスが選択されるだけです。私が気付いたのは、トレーニング中にモデルが最適なソリューションを正しく識別しているのに、何らかの理由で最終的な q_values テーブルにそれが反映されていないことです。

重要な注意事項: ターン 25 で、正しく完成した場合、建物の最大数は 126 です。最初の 4 ターンは CS で、残りは CI で可能性を最大限に高めます。