問題タブ [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学習中に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)
これが、これで行き詰まった人に役立つことを願っています。
algorithm - 強化学習を連続行動空間に適用するにはどうすればよいですか?
強化学習設定でタスクを最適に実行するために必要なマウスの動きをエージェントに学習させようとしています (つまり、報酬信号が学習のための唯一のフィードバックです)。
Q 学習手法を使用したいと考えていますが、この方法を連続状態空間に拡張する方法を見つけましたが、連続動作空間の問題に対応する方法がわかりません。
すべてのマウスの動きを特定の大きさにし、特定の数の異なる方向だけにすることもできますが、アクションを個別にする合理的な方法であれば、巨大なアクション スペースが得られます。標準的な Q ラーニングでは、エージェントが考えられるすべてのアクションを評価する必要があるため、このような近似では問題を実際に解決することはできません。
machine-learning - Q 学習で 2 つ以上のアクションを使用したボルツマン探索
各状態で少なくとも 10 個のアクションがある Q ラーニングでボルツマン探索を使用しています。たった 2 つのアクションで、ボルツマン探査を次のように非常に簡単に適用できることを私は知っています。
- ボルツマン探査方程式を使用して、2 つのアクションの pr1 と pr2 を計算します。
- 乱数rを生成する
- pr1>pr2 とする。r<=pr1 の場合、確率 pr1 に対応するアクションを実行します。r>pr1 の場合、pr2 に対応するアクションを実行します。
しかし、どうすれば10個のアクションでこれを行うことができますか? 各決定ステップで、すべてのアクションの確率を更新します。これにより、最善のアクションの確率が最も高いすべてのアクションの確率分布が得られます。この場合、ボルツマン探査を使用してアクションを選択するにはどうすればよいですか?
optimization - Q-ラーニング値更新
Q ラーニング アルゴリズムを使用して、デバイスの電源管理に取り組んでいます。デバイスには、アイドルとスリープの 2 つの電力モードがあります。デバイスがスリープ状態の場合、処理の要求はキューにバッファリングされます。Q 学習アルゴリズムは、即時の消費電力とアクションによって発生する遅延の加重合計であるコスト関数を最小化するように探します。
各状態で、学習アルゴリズムはアクション (タイムアウト値の実行) を実行し、次の状態で実行されたアクションの効果を評価します (上記の式を使用)。アクションは、事前定義されたタイムアウト値のプールから特定のタイムアウト値を実行することによって実行されます。上記の式のパラメーターlambdaは、電力性能パラメーター ( 0 _< lambda < 1 ) です。アルゴリズムが省電力 (ラムダ --> 1) を探すか、レイテンシの最小化 (ラムダ --> 0) を探すかを定義します。各リクエストのレイテンシーは、queuing-time + execution-timeとして計算されます。
問題は、学習アルゴリズムがスリープ状態でのタイムアウト値を常に小さくすることです。これは、タイムアウト値が小さい場合の平均レイテンシが常に低く、そのためコストも小さいためです。ラムダの値を低い値から高い値に変更しても、最終的な出力ポリシーに何の影響も見られません。ポリシーは常に、各状態でのベスト アクションとして小さいタイムアウト値を選択します。各状態の平均電力と平均レイテンシの代わりに、全体の平均消費電力と全体の平均レイテンシを使用して、状態とアクションのペアのコストを計算しようとしましたが、役に立ちません。また、各状態とアクションのペアでコストを計算するためのすべての要求によって経験される総エネルギー消費量と総待ち時間を使用しようとしましたが、どちらも役に立ちません。私の質問は次のとおりです。このシナリオのより良いコスト関数は何ですか? 次のように Q 値を更新します。
ここで、 alphaは学習率 (ゆっくりと減少) であり、gamma=0.9は割引係数です。
machine-learning - Q-Learning で同じアクションを繰り返した後の反復報酬の結果である、Q-Value の無制限の増加
私は、簡単なアプリケーションに対する単純な Q-Learning の実装を開発中ですが、私を困惑させ続けていることがあります。
Q-Learningの標準的な定式化を考えてみましょう
K
エージェントに報酬R
を与える と とにR'
よる2 つの可能なアクションを持つこの状態があると仮定しましょう。A
A'
ほぼ完全に貪欲なアプローチに従う場合 (たとえば、0.1 イプシロンを想定するとします)、最初にアクションの 1 つをランダムに選択しますA
。次回は、おそらく(90% の確率で) もう一度選択するA
と、Q(K, A) が成長し続けることになります。A'
A と同じ大きさになると、残りの学習中に、最初の推測から「回復」することが実質的に不可能な状況に陥ることになります。
そうでないと、エージェントは基本的に学習しません。単純なレシピに従うだけです。最初に行ったようにすべてを実行してください。
何か不足していますか?アルファ値を微調整できることはわかっていますが (通常、時間の経過とともに値を小さくします)、状況が改善されることはありません。
artificial-intelligence - 平均報酬問題の SARSA アルゴリズム
私の質問は、割引されていない継続的な (非エピソード的な) 問題の強化学習で SARSA アルゴリズムを使用することについてです(そのような問題に使用できますか?)
私は Sutton と Barto の教科書を研究しており、割引されていない問題に使用できるように Q 学習アルゴリズムを変更する方法を示しています。彼らは、6.7 章で、新しいアルゴリズム (割引されていない問題の場合) を R 学習と呼んでいます。基本的に、R 学習では、反復ごとの Q(s,a) の更新規則は次のとおりです。
Q(s,a) = Q(s,a) + アルファ * [r - ロー + max_a{Q(s',a)} - Q(s,a)]
ここで、状態 s で貪欲なアクションが選択された場合にのみ、各反復で rho が更新されます。rho の更新ルールは次のとおりです。
ロー = ロー + ベータ * [r - ロー + max_a{Q(s',a)} - max_a{Q(s,a)}]
(ここで、alpha と beta は学習パラメーターです。) さて、私の質問は、Q 学習ではなく SARSA に関するものです。Q 学習が平均報酬問題に使用されるように変更されたのと同じように、SARSA アルゴリズムを平均報酬 (割引なし) 問題に適したものに変更したいと考えています (これが可能かどうかはわかりません)。 . ただし、文献では、平均報酬問題に対してSARSAをどのように修正する必要があるかについての正確な説明を見つけることができません。
これは、割引されていない問題で SARSA をどのように使用すべきかについての私の推測です。更新ルールは次のようにする必要があると思います。
Q(s,a) = Q(s,a) + アルファ * [r - ロー + Q(s',a') - Q(s,a)],
ここで、a' は状態 s で実際に選択されたアクションです。これはかなり明白なようです。しかし、どのように rho を更新すればよいのでしょうか? 私の推測では、SARSA はポリシーに準拠したアルゴリズムであるため、s で貪欲なアクションが選択されているかどうかに関係なく、反復ごとに常に rho を更新する必要があり、更新ルールは単純に次のようにする必要があります。
ロー = ロー + ベータ * [r - ロー + Q(s',a') - Q(s,a)].
これが正しいかどうか誰か教えてもらえますか?それとも、状態 s および s' での最適なアクションに基づいて、rho を更新する必要がありますか?
machine-learning - Qlearning - 状態と報酬の定義
Q 学習アルゴリズムを使用する問題を解決するのに助けが必要です。
問題の説明:
ロケットがランダムなパスを取り、時々クラッシュするロケットシミュレーターがあります。ロケットには、オンまたはオフにできる 3 つの異なるエンジンがあります。どのエンジンが作動しているかに応じて、ロケットはさまざまな方向に飛行します。
エンジンOFF/ON機能搭載
タスク:
常に上を向くようにロケットに変わる Q ラーニング コントローラーを構築します。
ロケットの角度を読み取るセンサーを入力として使用できます。
私の解決策:
次の状態があります。
次のアクションもあります。
- すべてのエンジンをオフ
- 左エンジンオン
- 右エンジンオン
- ミドルエンジンオン
- 左右に
- 左と真ん中
- 右と真ん中
そして、以下の報酬:
角度 = 0、報酬 = 100 他のすべての角度、報酬 = 0
質問:
ここで質問ですが、これは報酬と状態の適切な選択ですか? ソリューションを改善できますか? 他のアングルの報酬が多い方がいいですか?
前もって感謝します
matlab - ニューラル ネットワークでの Q ラーニング - Mountain Car
だから私はQラーニングとニューラルネットワークについて読んでいます。私はそれについて正しい考えを持っていると信じていますが、NN のコードと Q 値での更新についてセカンドオピニオンを持ちたいと思います。
Mountain Car 問題とニューラル ネットワークの MatLab 実装を作成しました。NN 部分にはニューラル ネットワーク ツールボックスを使用しています。
これは、2 つの入力、5 ~ 20 の非表示 (実験用)、および 3 つの出力 (マウンテンカーでのアクションに対応) のネットワークです。
隠れユニットは tansig に設定され、出力は purelin で、トレーニング関数は traingdm です。
これは正しい手順ですか?
- 初期状態を取得 s -> [-0.5; 0.0]
- Qs=net(s) でネットワークを実行します ... これにより、初期状態 s の各アクションに対応する 1x3 Q 値の行列が得られます。
- e-greedy 選択を使用してアクションを選択する
- マウンテンカーをシミュレートし、s' (アクション a を実行した結果としての新しい状態) を取得します。
- Qs_prime=net(s') でネットワークを実行して、s' の Q 値の別の行列を取得します。
NN の重みを適切に更新する方法を理解する必要があるため、これが正しいかどうかはわかりません。
- QTarget を計算します。つまり、= 報酬 + ガンマ * s' からの最大 Q 値?
- 初期の s からの Q 値を使用してターゲット マトリックス (1x3) を作成し、実行されたアクション a の対応する Q 値を QTarget に変更します。
- net=Train(net,s,Targets) を使用して、NN の重みを更新します
- s=s'
- 新しい s に対して上記のすべてを繰り返します
例:
これが私のMatlabコードです(R2011とNeural Network Toolboxを使用しています)
ありがとう
machine-learning - ニューラル ネットワークを使用してオンラインで Q-Table を推定する
強化学習で状態アクションを保存するために Q-Table を使用すると、一部の状態がまったく (またはめったに) 発生せず、状態アクションの値が最大反復までゼロのままになるため、使用する代わりにニューラル ネットワークを使用して Q-Table をオンラインで推定することにします。 Q テーブル。
この種の問題をより正確に推定できるのはどのタイプのニューラル ネットワークですか?また、この解決策は役に立ちますか?