問題タブ [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.
machine-learning - 大規模な状態空間における複数のアクターのポリシーの強化学習
O 個のオブジェクトの 1 つを L 個の場所の 1 つに移動するアクションを N 個のアクターに割り当てる必要があるリアルタイム ドメインがあります。各タイム ステップで、すべてのアクターの全体的な成功を示す報酬 R が与えられます。
10 人の俳優、50 の固有のオブジェクト、1000 の場所があるため、各俳優に対して 500000 の可能なアクションから選択する必要があります。さらに、各オブジェクトが壁にどれだけ近いか、俳優にどれだけ近いかなど、50 の環境要因を考慮に入れることができます。これにより、アクターごとに 25000000 の潜在的なアクションが発生します。
ほとんどすべての強化学習アルゴリズムは、この分野には適していないようです。
第一に、ほとんどの場合、特定の状態での各アクションの期待効用を評価する必要があります。私の状態空間は巨大であるため、関数近似を使用したとしても、Q ラーニングのような原始的なものを使用してポリシーを収束させるには、とてつもなく時間がかかります。できたとしても、各タイム ステップで 100 万回のアクションから最適なアクションを見つけるには時間がかかりすぎます。
第二に、ほとんどのアルゴリズムはアクターごとに 1 つの報酬を想定していますが、私が与えた報酬は 1 人または複数のアクターのミスによって汚染される可能性があります。
この問題にどのようにアプローチすればよいですか?このようなドメインのコードは見つかりませんでした。また、マルチアクター強化学習アルゴリズムについて見つけたいくつかの学術論文は、提案されたアルゴリズムを再現するのに十分な詳細を提供していません。
machine-learning - トレーニング値のないニューラルネットワーク学習
トレーニング値を提供せずにニューラルネットワークをトレーニングする方法を考えています。私の前提は、センサーから正/負のフィードバックを受け取ることができるロボットでニューラルネットワークが使用されることです。IEは、物にぶつかることなく自由にローミングするようにトレーニングするために、衝突センサーや近接センサーがトリガーされていないときに正のフィードバックが発生します。衝突/近接センサーがトリガーされると、負のフィードバックが発生します。この方法を使用してニューラルネットワークをどのようにトレーニングできますか?
私はこれをC++で書いています
machine-learning - 時間差学習の更新
Tesauro の TD-Gammon プログラムについて読み、三目並べに実装したいと思っていますが、専門用語がわからないため、高校生の私にはほとんどすべての情報にアクセスできません。
ここの最初の方程式http://www.stanford.edu/group/pdplab/pdphandbook/handbookch10.html#x26-1310009.2
「一般的な教師あり学習パラダイム」を提供します。式の左辺の w sub t は、タイム ステップ t でのパラメーター ベクトルであると言えます。「タイムステップ」とは正確にはどういう意味ですか?ボードの状態の値を出力するように設計された三目並べニューラル ネットワークのフレームワーク内で、タイム ステップは、特定のゲームでプレイされたピースの数を参照しますか? たとえば、文字列「xoxoxoxox」で表されるボードはタイム ステップ 9 にあり、ボード「xoxoxoxo」はタイム ステップ 8 にあるでしょうか? それとも、タイム ステップは、トレーニングが開始されてからの経過時間を指しますか?
w sub t は特定の時間ステップの重みベクトルなので、これはすべての時間ステップに独自の評価関数 (ニューラル ネットワーク) があることを意味しますか? では、たった 1 つの手でボードの状態を評価するには、2 つの手でボードの状態をフィードするのとは異なる NN にフィードする必要がありますか? 私が知る限り、Tesauro はすべてのボードの状態を評価するために 1 つの NN しか使用しなかったため、ここで何かを誤解していると思います (ただし、TD-Gammon に関する信頼できる情報を見つけることは困難です)。
出力の勾配が w sub t ではなく w に関して取得されるのはなぜですか?
これらのアイデアを明確にしていただきありがとうございます。私のプロジェクトに関するアドバイスや、アクセシブルな読み物に関する提案をいただければ幸いです。
algorithm - 強化学習によるニューラルネットワークのトレーニング
フィードフォワードニューラルネットワークの基本と、バックプロパゲーションアルゴリズムを使用してそれらをトレーニングする方法を知っていますが、強化学習を使用してANNをオンラインでトレーニングするために使用できるアルゴリズムを探しています。
たとえば、カートポールのスイングアップの問題は、ANNで解決したい問題です。その場合、振り子を制御するために何をすべきかわかりません。理想的な位置にどれだけ近いかしかわかりません。私はANNに報酬と罰に基づいて学ばせる必要があります。したがって、教師あり学習はオプションではありません。
もう1つの状況は、フィードバックが遅れ、報酬ではなくゴールと反ゴールに限定されるヘビゲームのようなものです。
山登り法や遺伝的アルゴリズムなど、最初の状況でのアルゴリズムをいくつか考えることができますが、どちらも遅いと思います。これらは2番目のシナリオにも適用できる可能性がありますが、信じられないほど遅く、オンライン学習には役立ちません。
私の質問は単純です:強化学習で人工ニューラルネットワークをトレーニングするための単純なアルゴリズムはありますか?私は主にリアルタイムの報酬状況に興味がありますが、目標ベースの状況のアルゴリズムが利用可能であれば、さらに優れています。
java - 離散化のジレンマ
私は現在、強化学習から有名なマウンテンカーの問題に取り組んでいます。この問題は連続的な性質のものです。つまり、2 つの変数があります。1 つの位置 - -1.2 から 0.5 の範囲と、速度 - 0.07 から 0.07 の範囲です。そして、私には3つの可能なアクションがあります-逆加速、前進加速、ニュートラル、アクションは適切な方向に位置を変更します。加速度の計算方法が原因で、私の位置変数は連続的です。つまり、ルックアップ テーブルを使用できないので、位置と速度の軸を長方形の扇形に分割して、位置を幅 0.05 のバケットに、速度を長さ 0.005 のバケットに分割しようとしました。 、各セクターにインデックスを割り当て、次のようにしました:
しかし、このスキームでは、いくつかのセクターが同じインデックス番号を持つことになります。この2つの連続変数をどのように離散化できるか考えていますか?
Upd:申し訳ありませんが、位置または速度が最大値または最小値を超えた場合は、最大値または最小値に戻します。
matlab - 自由エネルギー強化学習の実装
私はここで説明されているアルゴリズムを実装しようとしていて、同じ論文で説明されている「大規模なアクションタスク」でそれをテストしています。
アルゴリズムの概要:
簡単に言うと、アルゴリズムは以下に示す形式のRBMを使用して、ネットワーク構成の自由エネルギーがその状態アクションペアに与えられた報酬信号と等しくなるように重みを変更することにより、強化学習の問題を解決します。
アクションを選択するために、アルゴリズムは状態変数を固定したままギブスサンプリングを実行します。十分な時間があれば、これにより、自由エネルギーが最も低く、特定の状態に対して最も高い報酬が得られるアクションが生成されます。
大規模アクションタスクの概要:
実装に関する作成者のガイドラインの概要:
13個の隠れた変数を持つ制限付きボルツマンマシンは、12ビットの状態空間と40ビットのアクション空間を持つ大規模なアクションタスクのインスタンス化でトレーニングされました。13の主要な州がランダムに選択されました。ネットワークは12,000のアクションで実行され、トレーニングの過程で学習率は0.1から0.01になり、温度は1.0から0.1に指数関数的に変化しました。各反復はランダムな状態で初期化されました。各アクションの選択は、ギブスサンプリングの100回の反復で構成されていました。
重要な省略された詳細:
- バイアスユニットが必要でしたか?
- 体重減少が必要でしたか?もしそうなら、L1またはL2?
- ウェイトやアクティベーションにスパース性の制約が必要でしたか?
- 最急降下法の変更はありましたか?(例:勢い)
- これらの追加メカニズムにはどのようなメタパラメータが必要でしたか?
私の実装:
当初は、作者がガイドラインに記載されている以外のメカニズムを使用していないと想定していたため、バイアスユニットなしでネットワークをトレーニングしてみました。これはほぼ偶然のパフォーマンスにつながり、使用されたいくつかのメカニズムが作者によって「自明」であると見なされ、したがって省略されたに違いないという事実への私の最初の手がかりでした。
上記のさまざまな省略されたメカニズムを試してみて、次を使用して最良の結果を得ました。
- softmax隠しユニット
- .9の勢い(.5から5回目の反復まで)
- 隠れ層と可視層のバイアス単位
- 著者によってリストされたものの1/100の学習率。
- .0002のl2重量減衰
しかし、これらすべての変更を加えても、タスクでの私のパフォーマンスは、12000回の反復後の平均報酬が約28でした。
各反復のコード:
私が求めているもの:
したがって、このアルゴリズムを適切に機能させることができれば(著者は、12000回の反復後に平均で最大40の報酬を得ると主張しています)、私は非常に感謝しています。
私のコードが明らかに間違ったことをしているように見える場合は、それに注意を向けることも素晴らしい答えになります。
著者が省略したことは、私よりもエネルギーベースの学習の経験が豊富な人にとって確かに明白であることを願っています。その場合、実際の実装に含める必要があるものを単に指摘します。
machine-learning - 電源管理のための強化学習
イベントの発生に基づいてコンピューティング ボードの電源管理を制御する電源管理の問題に取り組んでいます。コンピューティング ボードが要求 (画像) を処理するためのサービス プロバイダー (SP) として機能する電源管理に強化学習 (従来の Q 学習) を使用しています。SP はスマート カメラに接続され、Power Manager (PM) アルゴリズムがカメラで実行され、適切な電源コマンド (スリープ、ウェイクアップ) が SP に発行されます。スマート カメラは、イベントの発生に基づいて画像 (リクエスト) をキャプチャし、リクエスト (画像) のサービス キュー (SQ) を維持します。また、現在のワークロードを低または高に分類する ANN ベースのワークロード推定器もあります。. したがって、Q 学習アルゴリズムの状態空間は、s=(SR, SQ, SP) である Q(s,a) の合成を含みます。SR はワークロードの状態です。SQ はサービス キューの状態で、SP はサービス プロバイダーの状態です。現在のワークロード、キューの状態、およびサービス プロバイダーの状態に基づいて、PM は特定のコマンドを SP に発行します (スリープ、ウェイクアップ)。この決定は、次の段階で行われます。
- SPはアイドル状態です
- SP がスリープ状態に入っただけで、SQ>=1
- SP はスリープ状態で、SQ は 0 から 1 に遷移します。
アクションごとに、平均電力消費量とアクションによって発生した要求ごとの平均レイテンシーの加重合計で構成されるコストが割り当てられます。スリープ状態とアイドル状態の両方で、アクションには、事前定義されたタイムアウト値のリストからいくつかのタイムアウト値を選択することが含まれます。私の問題は次のとおりです。
SP がスリープ状態に入り、タイムアウト値を選択すると、タイムアウト値の間に一部の要求が到着する可能性があり、そのため SQ の状態が変化します。これにより、複合状態も変更されます (例: S(0,0,0) から S(0,N,0)。タイムアウト値の終わりに、PM は SP をウェイクアップすることを決定します (SQ>0 として)。 ) ウェイクアップ後、SP は要求を処理し、SQ =0 の場合、状態は (0,0,1) または (1,0,1) になります。次に、前の状態にコストを割り当てます。また、私の問題は、コストを状態 (0,0,0) に割り当てるか、(0,N,0) に割り当てるか?原則として、前の状態は (0,N,0) ですが、これはrequest は、キュー内のいくつかの要求の到着時に自動的に到達するため、この状態で実行されるアクションはなく、コストを割り当てるためのアクションはありません。
artificial-intelligence - ボードゲームでのTD学習による古典的なバックプロパゲーションニューラルネットワークの使用
ボードゲームでTD学習法を使用した標準的なバックプロパゲーションニューラルネットワークを使用することが意味があるかどうかを尋ねたいですか?
私の方法は次のようになります。
- 1つのゲームをプレイします。ネットは、貪欲なポリシーとランダムな動きの両方のプレーヤーとしてプレイしていることがあります。
保存されたゲーム位置(ターミナル1から開始して開始位置に移動)ごとに、推定位置値と目的の位置値を計算します。
/li>標準のバックプロパゲーションアルゴリズムを使用して、1エポックの学習率が小さいゲームエンドトレイン全体からネットのトレーニングパターンを作成します。
/li>
私はチックタックトーゲームで上記のいくつかの組み合わせを試しました(1つの例からではなく30〜40のパターンを学習し、学習速度を増減するなど)。NNエージェントがランダムプレーヤーと対戦する場合の最良の例の1つは次のとおりです。
(最初にプレー:勝ち、引き分け、負け)、(2番目にプレー:勝ち、引き分け、負け)、(合計:勝ち、引き分け、負け)
(191、34、275)、(159、102、239)、( 350、136、514)-フレッシュネット
(427、21、52)、(312、16、172)、(739、37、224)-+50kゲーム後
入力は18ニューロンの形式です。
各ボードセルセットに対して、xは(1,0)、空のセルは(0,0)、oは(0,1)です。出力は、-1、1の範囲での1単位の勝敗確率推定です。
三目並べはサンドボックスをテストしているだけです。成功して終了したら、より複雑なカードゲーム(「失われた都市」)に移動します。
optimization - 強化学習による二重最適化
消費電力( p)と待ち時間(d )のパラメーターを持つ目的関数があります。レイテンシーの制約(秒)を考慮して、消費電力を最小限に抑えたい。最適化問題は、ラグランジュ関数で次のように表すことができます。
ここで、Lはラグランジュ変数です。消費電力と遅延は互いに反比例し、前者を減らすと後者が増えるため、目的関数は相対的な重みで次のように書くこともできます。
問題は、 「 d秒の遅延制約がある場合、変数pを最小化できるLの適切な値を見つけるにはどうすればよいですか?」です。。この目的のために強化学習を使用したいと思います。各状態で、システムが決定を下し、上記の機能に関して次の状態の前のアクションにコストを割り当てます。すべてのアクションにより、要求の処理に特定の電力消費と遅延が発生します。目標は、遅延の制約がある場合に消費電力を最小限に抑えることです。この点に関する提案/ヒントは高く評価されます。
machine-learning - 「スティッキー」状態から抜け出す方法は?
問題:
グリッドの世界で簡単なタスクを実行するようにエージェントをトレーニングしました(障害物にぶつからずにグリッドの一番上に移動します)が、次の状況が常に発生するようです。それは状態空間の簡単な部分(障害物なし)にあるため、強力な正の強化信号を継続的に取得します。次に、それ自体が状態空間の難しい部分(2つの障害物の隣にくさび)であることがわかった場合、以前と同じアクションを選択するだけで、効果はありません(上昇して障害物にぶつかります)。最終的に、この値のQ値は負の報酬と一致しますが、この時点で、他のアクションのQ値は、状態空間の簡単な部分で役に立たないため、さらに低くなります。そのため、エラー信号はゼロになり、誤ったアクションは常に発生します。選ばれました。
どうすればこれを防ぐことができますか?私はいくつかの解決策を考えましたが、どれも実行可能ではないようです:
- 常に探索が重いポリシーを使用してください。障害物は回避するために最大5つのアクションを実行するため、1つのランダムなアクションは時々効果がないように見えます。
- 悪い行動が繰り返されると悪化するように報酬機能を作ります。これにより、報酬関数はマルコフ性を破ります。これは悪いことではないかもしれませんが、私には手がかりがありません。
- タスクを完了したことに対してのみエージェントに報酬を与えます。タスクは完了するために1000以上のアクションを必要とするため、トレーニング信号は非常に弱くなります。
タスクの背景:
そこで、RLアルゴリズムを試すための小さなテストベッドを作成しました。これは、サットンの本で説明されているグリッドワールドのより複雑なバージョンのようなものです。世界は、0を背景にランダムなサイズの長方形の形で1が配置された大きなバイナリグリッド(300 x 1000)です。1のバンドが世界の端を囲んでいます。
エージェントは、この世界の1つのスペースと、その周囲の固定ウィンドウ(エージェントが中央にある41 x 41ウィンドウ)のみを占有します。エージェントのアクションは、4つの基本的な方向のいずれかに1スペース移動することで構成されます。エージェントは0でマークされたスペースのみを移動できます。1は通行できません。
この環境で実行される現在のタスクは、下部に沿ったランダムな位置から開始して、グリッドの世界の上部に到達することです。上に移動すると、+1の報酬が与えられます。障害物や世界の端にぶつかる動きには、-1の報酬が与えられます。他のすべての州は0の報酬を受け取ります。
エージェントは、ニューラルネット値関数近似器を備えた基本的なSARSAアルゴリズムを使用します(Suttonの本で説明されています)。ポリシーの決定については、e-greedyとsoftmaxの両方を試しました。