問題タブ [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.
c++ - AI Player のパフォーマンスが悪い?なぜ?
Q-learning を使用してLudoを再生するエージェントを実装しようとしています。イプシロン 0.1、学習率 0.6、割引係数 0.8 の e-greedy アクション セレクターでトレーニングしました。
私は約 50K ステップのゲームを実行しましたが、1 つのゲームにも勝てませんでした。Qテーブルは私が望むものとかなり正確であるように見えるので、これは不可解です。なぜ私は無作為のプレイヤーにそんなに多くを失っているのですか? Q テーブルがそれほど変化しない場合、システムは勝つことができるはずではありませんか? 一般に、エージェントをトレーニングするために何回反復する必要がありますか?
どのくらいの情報が必要なのかわかりません。必要に応じて、関連する情報で投稿を更新します。
Q テーブルの行として表される可能な状態:
- 自宅で
- 地球上で
- 星の上
- ゴールイン
- 勝者の道で
- 同じ色のプレイヤーと安全に
- フリースペースについて
各状態の列として表される可能なアクション:
- 家を出る
- ゴールに入る
- グローブに移動
- スターに移動
- スター経由でゴールへ移動
- 同じ色のトークンで安全に入る
- 勝者の道に入る
- 対戦相手が地球上にいる場合は自殺
- 対戦相手を殺す
- 動くだけ
- 移動不可
Q テーブルをランダムな値で初期化することから始め、5000 回の反復後に次のようなテーブルで終了します。
私の即時の報酬は、アクションが実行された後、各トークンがゲーム内でどれくらい離れているかに定数 10 を掛けたものに基づいています。ホーム ポジションの位置は -1 で、ゴール ポジションの位置は 99 です。中間の位置はすべて 0 ~ 55 の位置です。トークンがゴールにある場合、ゴールにある各トークンの即時報酬に +100 の追加報酬が追加されます。 .
通常、私のプレーヤーは常に 1 つのトークンをゴールに移動します...それだけです。
neural-network - DeepMind-Atari-Deep-Q-Learner (DQN) は、ブレイクアウト以外のゲーム ROM を実行できません
最近はhttps://github.com/kuz/DeepMind-Atari-Deep-Q-Learnerを勉強しています。マシンでブレイクアウトのトレーニングに成功しました。しかし、http://www.atariage.com/からダウンロードしたゲームを実行しようとすると、run_cpu と run_gpu の両方ですべて失敗しました。ゲーム ビン ファイルの大文字の文字は既に置き換えています。
http://www.atariage.com/system_items.html?SystemID=2600&ItemTypeID=ROMからダウンロードしたいくつかのゲーム ROM があり、ブレイクアウトのみが機能します。
512GB の RAM と Nvidia Titan X の 8 つの GPU を備えたサーバーを使用していることを考えると、ハードウェアは問題になりません。この問題をどのように修正するのだろうか。
go - Q-Learning 値が高くなりすぎる
私は最近、Golang で基本的な Q-Learning アルゴリズムを実装しようとしました。私は一般的に強化学習と AI に慣れていないため、エラーは私のものである可能性が非常に高いことに注意してください。
m,n,k ゲーム環境へのソリューションの実装方法は次のとおりです。t
エージェントは、指定された時間ごとに、最後の状態アクション(s, a)
とそれに対して獲得した報酬を保持します。エージェントa'
は、イプシロン貪欲ポリシーに基づいて移動を選択し、報酬を計算してから、 for timer
の値の更新に進みますQ(s, a)
t-1
ノート:
agent.prevState
アクションを実行した直後と環境が応答する前 (つまり、エージェントが移動した後、他のプレイヤーが移動する前) の前の状態を保持します。これを状態アクション タプルの代わりに使用しますが、それが正しいアプローチですagent.prevScore
前の状態アクションへの報酬を保持します- 引数は、現在のステップの状態アクション ( )
reward
に対する報酬を表しますQmax
状態アクション値のオーバーフローによりagent.LearningRate = 0.2
、agent.DiscountFactor = 0.8
エージェントは 100K エピソードに到達できません。私は golang のfloat64
(標準 IEEE 754-1985 倍精度浮動小数点変数) を使用してい±1.80×10^308
ます±Infiniti
。それは私が言うには大きすぎる値です!
の学習率0.02
と の割引率でトレーニングされ、 0.08
2M エピソード (それ自体で 1M ゲーム) を通過したモデルの状態を次に示します。
報酬関数は次を返します。
- エージェント獲得: 1
- エージェントの喪失: -1
- 引き分け: 0
- ゲーム続行: 0.5
しかし、最小値がゼロで、最大値が高すぎることがわかります。
私が Python スクリプトで見つけたより単純な学習方法を使用すると、完全に問題なく動作し、実際にはよりインテリジェントに感じられることに言及する価値があるかもしれません! 遊んでみると引き分け(うっかり遊んでも勝てます)がほとんどなのですが、通常のQ-Learningでは勝てません!
これを修正する方法についてのアイデアはありますか? Q-Learning では、そのような状態アクション値は正常ですか?!
更新:
パブロの回答とニックがこの質問に提供したわずかではあるが重要な編集を読んだ後、問題にはprevScore
前のステップoldVal
の報酬 (この例では - 1、0、0.5 または 1)。
その変更後、エージェントは正常に動作するようになり、2M エピソード後のモデルの状態は次のようになります。
エージェントとの 5 つのゲームのうち、2 勝 (エージェントは私が 2 つのストーンを続けて持っていることを認識していませんでした) と 3 引き分けでした。
machine-learning - 強化学習とディープ RL の違いは何ですか?
深層強化学習と強化学習の違いは何ですか? 基本的に強化学習が何であるかは知っていますが、この文脈での具体的な用語の深さは何を表していますか?
machine-learning - 線形関数近似を使用した q 学習の機能を選択するにはどうすればよいですか
強化学習を用いたAIの開発を行っています。
空から落ちてくるレンガを避けるゲームです。
20 個のレンガが地面に落ちています。 ゲームのスクリーンショット、ゲームプレイ動画リンク
線形関数による強化学習を用いて AI を実装しました。
満足のいく結果を得るために最適な機能を選択するのは困難でした。
とにかく、作ってみて以来、最高のスコアを獲得することができました。
しかし、それはかなり奇妙です。
いくつかの理由があります。
- 10 トレーニング前後で非常に早く収束に達しました。
- 6つの機能を使用しました。
- 何度もトレーニングを重ねても良いスコアは出せませんでした。(自分の AI をスーパー プレイヤーのようにプレイさせたかったのですが、そうは見えませんでした。)
その間、私は多くの機能を使用しようとしました。機能をゲーム画面サイズ (960 * 640) として定義しました。
そして、プレイヤーからのブリックの相対座標であるこれらの機能を埋めます。前回よりも良い結果が出せることを願っています。このメソッドを 7 時間トレーニングしましたが、うまくいきませんでした。
肝心なのは、機能を最適に機能させるにはどのように選択すればよいですか、またはそれを解決するための別のアプローチはありますか?
machine-learning - Q学習と動的計画法
(関数近似の代わりに) ルックアップ テーブルを使用する古典的な Q 学習アルゴリズムは、動的計画法と同等ですか?