問題タブ [q-learning]
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.
machine-learning - Q-Learning アルゴリズムはオーバートレーニングになる可能性がありますか?
Q-Learning アルゴリズムは、一意な最適ポリシーの Q に収束することが証明されています。では、Q-Learning アルゴリズムがオーバートレーニングになることはないと結論付けるのは正しいでしょうか?
r - Rでq学習を実装するには?
q-learning について学んでいて、ウィキペディアの投稿とこのウェブサイトを見つけました。
チュートリアルと疑似コードによると、私はこれをRで書きました
しかしmax(Qdash-Q[row,col]
、ウェブサイトによると、Max[Q(next state, all actions)]
次の状態のすべてのアクションをプログラムで検索するにはどうすればよいですか?という問題があります。
2番目の問題は、この疑似コードです
これかな
neural-network - ニューラル ネットワークを使用した Q ラーニング
ピンポンゲーム用のディープ q ラーニング アルゴリズムを実装しようとしています。テーブルを Q 関数として使用する Q ラーニングを既に実装しています。非常にうまく機能し、10 分以内に素朴な AI を打ち負かす方法を学習します。しかし、ニューラル ネットワークを Q 関数の近似器として使用して機能させることはできません。
私が正しい軌道に乗っているかどうか知りたいので、ここに私がやっていることの要約があります:
- 現在の状態、実行したアクション、報酬を現在のエクスペリエンスとしてリプレイ メモリに保存しています。
- 512個の隠れユニットを持つ1つの隠れ層を持つQ関数として多層パーセプトロンを使用しています。入力 -> 隠れ層の場合、シグモイド活性化関数を使用しています。非表示->出力レイヤーの場合、線形活性化関数を使用しています
- 状態は、両方のプレーヤーとボールの位置、およびボールの速度によって表されます。位置は、はるかに小さい状態空間に再マップされます。
- イプシロンが徐々に 0 になる状態空間を探索するために、イプシロン貪欲アプローチを使用しています。
学習時に、32 の後続のエクスペリエンスのランダムなバッチが選択されます。次に、すべての現在の状態とアクション Q(s, a) のターゲット q 値を計算します。
forall Experience e in batch if e == endOfEpisode target = e.getReward else target = e.getReward + discountFactor*qMaxPostState end
これで、32 個のターゲット Q 値のセットができました。バッチ勾配降下法を使用して、それらの値でニューラル ネットワークをトレーニングしています。私はちょうど1つのトレーニングステップをやっています。何個やればいいですか?
私は Java でプログラミングしており、多層パーセプトロンの実装には Encog を使用しています。問題は、トレーニングが非常に遅く、パフォーマンスが非常に弱いことです。私は何かが欠けていると思いますが、何がわかりません。テーブルアプローチには問題がないので、少なくともある程度まともな結果が期待できます。
r - R を使用した q 学習で max(Q(s',a')) の次の状態をプログラムで見つける
R を使用して単純なグリッド ワールドの q 学習プログラムを作成しています。これが私のグリッド ワールドです。
この単純なグリッドの世界には 6 つの状態があり、状態 1 と状態 6 が開始状態と終了状態です。グリッドの世界をできるだけシンプルに保つために、ファイヤー ピット、壁、風を追加することは避けました。報酬マトリックスの場合、開始状態の値は-0.1、終了状態は+1、残りの状態は0です。開始状態の-0.1の報酬は、エージェントが開始位置に戻るのを思いとどまらせることです。
私は R でプログラムを書き、その動作をしましたが、現在の状態が 4 行目よりも大きい場合、次の状態を見つけるのに問題がありました。Q 行列は 4 行目以降更新されません。
現在、私のアルゴリズムが開始するとき、エージェントは常に状態 1 から開始します。最初の状態 (R の最初の行) には、Right(R(1,2)) または Up(R(1,4)) のいずれかの 2 つのアクションがあります。ランダムに選択されたアクションがUp (R(1,4))と言う場合、エージェントはアクション Q(4,action) として次の状態に移動します。
しかし、状態 4 (4 行目または R) を考えてみましょう。Right-R(4,2) と Down-R(4,3) の 2 つのアクションがあり、これが私のアルゴリズムに問題を引き起こします。論理的には 5 番目の状態に移動する必要がありますが、上記のコードではアクション 2 を次の状態として使用しています。つまり、5 番目の状態ではなく 2 番目の状態になります。
最終的に、状態行列とアクション行列の次元が同じ(mxm)の場合、私のアルゴリズムは完全に機能しますが、私の問題では、状態行列とアクション行列が異なります(mxn)。この問題の解決策を見つけようとしましたが、$max(Q(s',a'))$ の次の状態を見つけるための論理的なアプローチを見つけることができませんでした。
machine-learning - Qラーニングの更新頻度
Q ラーニングでは、現在の状態から、エージェントは離散時間ステップごとにアクションを実行し、アクションが実行された後、エージェントは実行されたアクションの成功または失敗にアクセスするための即時の報酬を受け取ります。アクションが目標速度であり、エージェントの目標が停止線 (開始点から 1 km 離れた場所) にできるだけ早く到達することである Q 学習を使用して車両速度を制御したいとします。
1) したがって、この例では、エージェントは離散時間ステップ (1 秒) ごとにアクションを実行する必要がありますか、それともエージェントは離散時間ステップごとではなく 100m ごとにアクションを取得できますか。離散時間ステップごとにアクションを実行する必要がありますか?
2) Q-learning における遅延報酬とはどういう意味ですか? 時間ステップごとに各アクションを実行した後に報酬を更新するのではなく、エージェントがターゲットに到達したら報酬を更新するということですか? 前もって感謝します :)