問題タブ [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.
artificial-intelligence - Q-Learning とニューラル ネットワークの組み合わせ (理解に報いる)
私の理解では、これらの状態とアクションのペアを推定するために、Q 値 (状態とアクションのペアの評価) のルックアップ テーブルをニューラル ネットワークに置き換えることが可能です。私は小さなライブラリをプログラムしました。このライブラリは、特定の入出力に対して必要な目標値を学習するために、自己構築したニューラル ネットワークを介して伝播および逆伝播することができます。
それで、私はまた、ウェブ全体をグーグルで検索しているときにこのサイトを見つけました(私が感じたように):http://www.cs.indiana.edu/~gasser/Salsa/nn.html Qラーニングがニューラルネットワークについて簡単に説明します。
アクションごとに追加の出力ニューロンがあり、これらの出力「ユニット」の 1 つの活性化値から推定 Q 値がわかります。(1 つの質問: 活性化値はニューロンの「出力」と同じですか、それとも別のものですか?)
標準のシグモイド関数を活性化関数として使用したため、関数値 x の範囲は
だから私は思った、私の目標値は常に0.0から1.0でなければならない - >質問:私の理解のその点は正しいですか?それとも私はそれについて何か誤解しましたか?
はいの場合、次の問題が発生します: ターゲット報酬/新しい Q 値を計算する式は次のとおりです: q(s,a) = q(s,a) + 学習率 * (報酬 + 割引係数 * q'(s,a) ) - q(s,a))
ターゲットが 0.0 から 1.0 である必要がある場合、ニューラル ネットワークの適切なターゲットを取得するには、この式をどのように実行すればよいでしょうか? 適切な報酬値を計算するにはどうすればよいですか? 目的から遠ざかるよりも、目的に向かって動くことの方が価値があるのでしょうか? (目標までの距離が長い場合の - 報酬よりも、目標に近づいた場合の + 報酬の方が多い?)
私の誤解もあると思います。その質問に答えていただけると幸いです。どうもありがとうございました!
neural-network - ニューラル ネットワークで Q ラーニングを実装する方法は?
2 つの入力ノード、4 つの隠しノード、3 つの出力ノードを持つニューラル ネットワークを作成しました。初期の重みは -1 から 1 の間でランダムです。バックプロパゲーション法を使用して、ネットワークを TD エラーで更新しました。ただし、パフォーマンスは良くありません。
知りたいのですが、どこに問題があるのでしょうか?
1. バイアスノードは必要ですか?
2. 適格性のトレースは必要ですか?
誰かが私にサンプル コードを提供できる場合は、非常に感謝しています。
neural-network - 重みの更新 - 強化学習 + ニューラル ネットワーク
現在、TD-Gammon の仕組みを理解しようとしていますが、2 つの質問があります。
1)体重の更新について説明している記事を見つけました。3つの部分で構成されています。最後の部分は、w に関する V(s) の微分です。文中では「ランニングサム」と呼ばれています。その値をどのように計算しますか? (出力から非表示レイヤーへの重みの変更のみに関心があり、それ以上の重みの変更には関心がありません)
2) 重みを更新するこの手順を読んだ後、1 つの疑問が生じました: 強化学習を使用して状態の目標値を作成し、その値をニューラル ネットワークに与えて、それを返すことを学習させないのはなぜですか?現在の状態の値?重みを直接操作する追加の更新ルールがあるのはなぜですか?
algorithm - Actor-Critic 強化学習における行動制約
4 つのアクション (上、下、左、右) が可能な単純なグリッドの世界に自然な俳優批評家のRL アルゴリズムを実装しました。左右。
さて、この領域では上下と左右が正反対であり、エージェントにこの事実をどうにかして認識させることができれば、学習が改善されるのではないかと感じています。アクションのアクティベーションが計算された後に単純にステップを追加することを考えていました (たとえば、右のアクティベーションから左のアクティベーションを差し引く、またはその逆)。ただし、これが一般的なケースで収束の問題を引き起こすことを恐れています。
制約を追加することは、この分野では一般的な要望であるように思われるので、この目的のために使用すべき標準的な方法を誰かが知っているかどうか疑問に思っていました。そうでない場合、私のアドホックなアプローチが合理的であるかどうか。
前もって感謝します!
neural-network - 大きな線形出力によるニューラル ネットワークのトレーニング
強化学習と組み合わせて使用したいフィード フォワード ニューラル ネットワークをプログラミングしています。アクティベーション関数として tanh を持つ 1 つの非表示レイヤーと、線形出力レイヤーがあります。
[0,1] に正規化された 3 つの入力があります。環境から受け取った報酬を与える 3 つの出力ノードもあります。報酬は常にマイナスです。最初に、選択したアクションが悪い決定につながる場合、それは -50000 のようになる可能性があり、良い決定では -5 になる可能性があります。
バックプロパゲーションの実装に苦労しています。報酬が非常に大きいため、エラー値が大きくなり、大きな重みが作成されます。数回のトレーニング ラウンドの後、非表示レイヤーへの重みが非常に大きくなり、非表示レイヤーのノードは値 -1 または 1 しか作成しません。
これは私のコードです:
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
質問:
ここで質問ですが、これは報酬と状態の適切な選択ですか? ソリューションを改善できますか? 他のアングルの報酬が多い方がいいですか?
前もって感謝します
machine-learning - 強化学習でのガンマとラムダの設定
一般化された時間差分 (SARSA、Q 学習など) を使用する標準的な強化学習アルゴリズムのいずれかで、特定のタスクのラムダおよびガンマ ハイパーパラメーターにどの値を使用するかという問題が生じます。
ラムダは適格性トレースの長さに関連付けられており、ガンマは将来の報酬をどれだけ割引するかとして解釈できることを理解していますが、特定のタスクに対してラムダ値が低すぎるか、ガンマが高すぎるかをどのように知ることができますか?
これらの質問には明確に定義された答えがないことは承知していますが、不適切な値を持つための「危険信号」を知っておくと非常に役立ちます。
たとえば、標準的なカートポールまたは倒立振子のタスクを考えてみましょう。タスクを失敗させるには多くのステップが必要なため、ガンマを高く設定する必要がありますか?それとも、状態情報が完全にマルコフ的であるため、ガンマを低く設定する必要がありますか? そして、ラムダ値の合理性さえ理解できません...