問題タブ [reinforcement-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.
reinforcement-learning - Q学習アルゴリズム-ループ(吸収)状態での収束
この質問はQ学習に関するものです。
次の点を考慮してください。
- ループ(吸収)状態J-JからJに移動するための報酬100(Jは最終状態-IからJに移動することによる報酬も100)
- 1のガンマ値
- アルファ値0.5
JからJへの遷移ですでに100のQ値が得られているとします。新しいQ値は次の式で与えられます。100+0.5(100 + 1(100)-100)ここで、Q(次の可能な状態の最大値)は100です。状態Jでは、可能な最大の次のQ値を取得するために、ループします(したがって、最大の次の可能なQ値は現在の値-100です)。これにより、新しいQ値150が得られます。これを論理的な結論にすると、Jをループするたびに、Q値が50ずつ上昇し、その特定のQ値が収束することはなく、これは私には間違っているように見えます(これは間違っていますか? )(他の値はカバーします)。私はすでにこの実験を何度も行ってきましたが、これについてはまだ確信がありません。できれば上記の点を明確にしてください。私は大学でQ学習を非常にひどく教えられており、1週間半で提出するコースワークがあります。
ありがとう!
machine-learning - 変数アクションによる強化学習
すべての強化学習私が読んだアルゴリズムは通常、一定数のアクションを持つ単一のエージェントに適用されます。可変数のアクションを考慮しながら決定を下すための強化学習アルゴリズムはありますか? たとえば、プレーヤーが N 人の兵士を操作し、各兵士がその状態に基づいてランダムな数のアクションを行うコンピューター ゲームに RL アルゴリズムをどのように適用しますか? グローバルな意思決定者 (つまり、「将軍」) に対して固定数のアクションを定式化することはできません。これは、兵士が作成されたり殺されたりするにつれて、使用可能なアクションが絶えず変化するためです。また、兵士の行動は周囲の環境に基づいて条件付けられるため、兵士レベルで一定数の行動を定式化することはできません。兵士が敵を見ていない場合、歩くことしかできないかもしれませんが、
optimization - 強化学習 - スコアを考慮した重みの最適化
私は、シミュレートされたロボットが未知のパターン化された環境 (オフィス ビルなど) を探索するプロジェクトに取り組んでいます。つまり、各ポイントで、ロボットは利用可能な可視の場所から移動する新しい場所を選択する必要があります。私たちの最終的な目標は、環境内のパターンを活用してグローバルな探索時間を最適化する方法をロボットに学習させることです。
ロボットは、その場所に関する多くの既知の特徴 (ポイントまでの距離、ポイントから他のすべてのポイントまでの平均距離、ポイント周辺のエリアなど) の線形結合に基づいてユーティリティ スコアを与えることによって、次に移動する場所を選択します。すでに調査済みなど)。私の目標は、この効用関数の重みを最適化して、環境全体を探索する時間を最速にすることです。
スコアは探索パス全体に依存するため、探索中に重みを変更したくありません。重みの組み合わせをテストするには、シミュレートされたロボットがそれらの重みで環境全体を実行し、結果のスコアを取得する必要があります。したがって、データの |w|+1 xn 配列を作成できます。次のような重みの数です。
私の質問は、どのような種類の強化学習アルゴリズムがこれに最適でしょうか? 私が文献や研究で見つけたもののほとんどは分類に関係しており、明らかに多変量回帰は機能しません。また、q-learning アルゴリズムを実装しようとしましたが、これは実際には機能しません。たどるパスと環境の構造に応じて、さまざまな数の状態とアクションがあるためです。私が本当に欲しいのは、データの行を次々と取り、予想されるスコアを最大化する重みとその組み合わせの値を決定する、ある種の構造です。ヘルプ/アイデアはありますか? ありがとう。
artificial-intelligence - SARSA アルゴリズム
SARSA アルゴリズムの理解に問題があります: http://en.wikipedia.org/wiki/SARSA
特に、Q 値を更新する場合、ガンマとは何ですか? また、s(t+1) と a(t+1) にはどのような値が使用されますか?
誰かが私にこのアルゴリズムを説明できますか?
ありがとう。
machine-learning - 視覚入力を使用してDiablo2を再生するように人工ニューラルネットワークをトレーニングするにはどうすればよいですか?
私は現在、ANNにビデオゲームをプレイしてもらうことを試みており、ここの素晴らしいコミュニティから助けを得ることを望んでいました。
私はDiablo2に落ち着きました。したがって、ゲームプレイはリアルタイムで等角投影の観点から行われ、プレーヤーはカメラが中心にある単一のアバターを制御します。
具体的には、体力を0に落とさずに、キャラクターxの経験値を取得します。経験値はモンスターを倒すことで獲得できます。ゲームプレイの例を次に示します。
さて、ネットは画面上のピクセルから得た情報だけに基づいて動作させたいので、効率的にプレイするには非常に豊富な表現を学習する必要があります。これには、おそらく(少なくとも暗黙的に)方法を知る必要があるためです。ゲームの世界をオブジェクトとそれらとの相互作用の方法に分割します。
そして、この情報のすべては、どういうわけかネットに教えられなければなりません。私はこのことをどのように訓練するかを一生考えることができません。私の唯一のアイデアは、別のプログラムでゲームの本質的に良い/悪いもの(健康、金、経験など)を画面から視覚的に抽出し、その統計を強化学習手順で使用することです。それは答えの一部になると思いますが、それだけでは十分ではないと思います。私の生涯の中でネットを訓練するには、そのような限られたフィードバックには、生の視覚入力から目標指向の行動までの抽象化のレベルが多すぎます。
それで、私の質問:このタスクの少なくとも一部を実行するためにネットをトレーニングするために他にどのような方法を考えることができますか?できれば、何千ものラベル付きの例を作成せずに。
もう少し方向性を示します。強化学習のその他のソースや、この設定で有用な情報を抽出するための教師なし方法を探しています。または、手動でラベルを付けることなく、ゲームの世界からラベル付きデータを取得する方法を考えることができる場合は、監視対象のアルゴリズム。
更新(04/27/12):
不思議なことに、私はまだこれに取り組んでおり、進歩しているようです。ANNコントローラを機能させるための最大の秘訣は、タスクに適した最も高度なANNアーキテクチャを使用することです。したがって、時間差バックプロパゲーション(つまり、標準による強化学習)で微調整する前に、教師なし方法で(ゲームをプレイしているビデオで)トレーニングした、因数分解された条件付き制限付きボルツマンマシンで構成されるディープビリーフネットを使用しています。フィードフォワードANN)。
ただし、特にリアルタイムでのアクション選択の問題と、ANN処理のためにカラー画像をエンコードする方法については、さらに価値のある入力を探しています:-)
更新(10/21/15):
昔、この質問をしたことを思い出しました。これはもはやクレイジーなアイデアではないことを述べておかなければならないと思いました。前回の更新以降、DeepMindは、ニューラルネットワークにビジュアル入力からAtariゲームをプレイさせることに関するネイチャーペーパーを公開しました。確かに、Diablo 2の限られたサブセットである彼らのアーキテクチャを使用してプレイすることを妨げている唯一のことは、基盤となるゲームエンジンへのアクセスの欠如です。画面にレンダリングしてからネットワークにリダイレクトするのは遅すぎて、妥当な時間でトレーニングできません。したがって、この種のボットがすぐにDiablo 2を再生することはおそらくないでしょうが、それはオープンソースまたはレンダリングターゲットへのAPIアクセスのいずれかで何かを再生するためです。(おそらく地震?)
c++ - C++ 強化学習とスマート ポインター
私は、強化学習法 (Q、sarsa、TD(λ)、Actor-Critic、R など) を使用して、ロボットの感覚運動オンライン学習に関する修士プロジェクトを行っています。私は現在、高レベルの強化学習と低レベルのロボット API 制御の両方が使用されるフレームワークを設計しています。
状態はロボット センサーに依存し、指数関数的に増加する可能性があるため、ヒープに割り当てます。これは多くの問題やバグなどを引き起こす可能性があり、並列化 (つまり、スレッド化) は私が探求したい強化学習の側面であるため、どの種類のスマート ポインターを使用すればよいかまだわかりません。
スマート ポインター用の独自のテンプレート/クラスを設計するには、時間とデバッグが必要ですが、それは私にはありません。それで、私は疑問に思っています、STLを使用する必要がありますauto_ptr
か?ベクターでの使用に問題があることがわかりました。使用する必要がありますboost::shared_ptr
か? 状態は、多くのクラスとアルゴリズムで共有する必要があります。または、使用する必要がありますboost::ptr_vector
か?状態はベクトル内のタスク コンテナー クラスに存在するため、これで十分でしょうか? 状態は、共有、コピー可能、参照可能、シリアライズ可能、非定数、スレッドセーフである必要があり、削除されません。また、メモリ容量と計算時間も重要です。
このようなタスクに最適なスマート ptr 実装として何をお勧めしますか?
ありがとうございました!
クラス State で boost::ptr_vector を使用してみる必要があるようです。これが非効率的であることが判明した場合は、std::vector < std::unique_ptr > を使用して 0X を有効にします。あなたの答えと提案をありがとう!
machine-learning - 人工ニューラル ネットワークではなくサポート ベクター マシンを使用する必要があるのはいつですか?
SVMは、表現の複雑さを自動的に選択し、グローバルな最適値を見つけるという点で、おそらく「ANNキラー」であることを知っています(SVMの賞賛の引用については、こちらを参照してください)。
しかし、ここで私がはっきりしないところがあります - これらの優越性の主張はすべて、2 クラスの決定問題の場合にのみ当てはまるのでしょうか、それともさらに先に進むのでしょうか? (私は、それらが非線形に分離可能なクラスに当てはまると仮定します。さもなければ、誰も気にしません)
したがって、私が解決したいいくつかのケースのサンプル:
- SVM は多くのクラスを持つ ANN より優れていますか?
- オンライン設定で?
- 強化学習のような半教師ありの場合はどうでしょうか?
- より優れた教師なしバージョンの SVM はありますか?
誰かがこれらの些細な質問のすべてに答えてくれるとは思っていませんが、実際には、SVM が一般的な ANN の同等物 (例: FFBP、リカレント BP、ボルツマン マシン、SOM など) よりも優れている場合の一般的な境界を示してください。そしてできれば、理論的にも。
machine-learning - マルコフ決定過程で報酬関数を学ぶ方法
Q学習中にR(s)関数を更新する適切な方法は何ですか?たとえば、エージェントが状態s1に5回アクセスし、報酬[0,0,1,1,0]を受け取ったとします。平均報酬を計算する必要がありますか?たとえば、R(s1)= sum([0,0,1,1,0])/ 5?または、その州で受け取った最近の報酬値に大きな重みを与える移動平均を使用する必要がありますか?私が読んだQ学習の説明のほとんどは、R(s)をある種の定数として扱い、経験が蓄積されるにつれて、この値を時間の経過とともにどのように学習するかをカバーしていないようです。
編集:Q学習のR(s)とマルコフ決定過程のR(s、s')を混同している可能性があります。質問は同じままです。MDPを学習するとき、R(s、s')を更新するための最良の方法は何ですか?
artificial-intelligence - QラーニングとSARSAの違いは何ですか?
SARSAがポリシーに準拠しているのに対し、Q ラーニングはポリシーに準拠していないことはわかっていますが、それらの式を見ると、これら 2 つのアルゴリズムの違いを理解するのは (私には) 困難です。
著書Reinforcement Learning: An Introduction (Sutton と Barto 著) によると。SARSA アルゴリズムでは、ポリシーが与えられると、対応するアクション値関数 Q (状態 s およびアクション a、タイムステップ t で)、つまり Q(s t , a t ) は次のように更新できます。
Q(s t , a t ) = Q(s t , a t ) + α*(r t + γ*Q(s t+1 , a t+1 ) - Q(s t , a t ))
一方、Q 学習アルゴリズムの更新手順は次のとおりです。
Q(s t , a t ) = Q(s t , a t ) + α*(r t + γ*max a Q(s t+1 , a) - Q(s t , a t ))
次のように書くこともできます
Q(s t , a t ) = (1 - α) * Q(s t , a t ) + α * (r t + γ*max a Q(s t+1 , a))
ここで、γ (ガンマ) は割引係数で、r tはタイムステップ t で環境から受け取った報酬です。
これら 2 つのアルゴリズムの違いは、Q ラーニングが次の最大ポリシー値を検索するのに対し、SARSA は次のポリシー値のみを検索するという事実ですか?
TLDR(および私自身の答え)
私が最初に質問して以来、この質問に答えてくれたすべての人に感謝します。Q-Learning で遊んでいるgithub リポジトリを作成し、経験的に違いを理解しました。それはすべて、次善のアクションをどのように選択するかにかかっています。これは、アルゴリズムの観点からは、実装方法に応じて、平均、最大、または最良のアクションになる可能性があります。
もう 1 つの主な違いは、この選択がいつ行われるか (オンラインとオフラインなど) と、それが学習にどのように/なぜ影響するかです。2019 年にこれを読んでいて、より実践的な人であれば、RL のおもちゃの問題で遊ぶことが、おそらく違いを理解するための最良の方法です。
最後の重要な注意点として、Suton & Barto とウィキペディアの両方が、次の状態の最高/最大アクションと報酬に関して、混合、混乱、または間違った公式表現を頻繁に使用していることです。
r(t+1)
実際には
r(t)
これが、これで行き詰まった人に役立つことを願っています。
neural-network - ニューラル ネットワークは本当に放棄されたものですか?
強化学習アルゴリズムで値関数を近似するためにニューラル ネットワークを使用する予定です。状態とアクションを表現する方法に一般化と柔軟性を導入するために、これを行いたいと考えています。
現在、ニューラル ネットワークはそれを行うための適切なツールであるように見えますが、私は AI の専門家ではないため、ここでの可視性は限られています。特に、ニューラル ネットワークは最近、サポート ベクター マシンなどの他の技術に取って代わられているようですが、これがファッションの問題なのか、それともニューラル ネットワークに私のアプローチを破滅させる可能性のある実際の制限があるのか はわかりません。何か提案はありますか?
ありがとう、
トゥヌズ