問題タブ [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.
lisp - SuttonとBartonの「強化学習」Lispコードを実行するにはどうすればよいですか?
最近、強化学習についてよく読んでいますが、「強化学習:はじめに」が優れたガイドであることがわかりました。著者は、多くの実例のソースコードを提供してくれます。
質問を始める前に、Lispに関する私の実践的な知識は最小限であることを指摘する必要があります。私は基本的な概念とそれがどのように機能するかを知っていますが、私は実際に意味のある方法でlispを使用したことがないので、信じられないほどn00bっぽいことをしている可能性があります。:)
また、作者は自分のページで自分のコードに関する質問には答えないと述べているので、私は彼に連絡しませんでした。StackOverflowの方がはるかに良い選択だと考えました。
GNUのCLISPとSBCLの両方を使用してLinuxマシンでコードを実行しようとしましたが、実行できませんでした。どちらかのインタプリタを使用して、エラーの全リストを取得し続けます。特に、ほとんどのコードは、行を含むファイル'utilities.lisp'に含まれる多くのユーティリティを使用しているように見えます
:cclは、ある種のMacベースのバージョンのlispを参照しているようですが、これを確認できませんでした。他のコードパッケージである可能性があります。
この特定の部分を削除してみました(行をに変更します
しかし、それだけでさらに多くのエラーが発生しました。
誰かが私がこのコードを実行する方法を知っていますか?私はLispのすべてを完全に知らないのですか?
更新[2009年3月]: Clozureをインストールしましたが、それでもコードを実行できませんでした。
CCLコマンドプロンプトで、コマンド
次のエラー出力が発生します。
残念ながら、私はまだlispについて学んでいるので、何かが完全に定義されていないように感じますが、これらのエラーメッセージの読み方を本当に理解していません。
language-agnostic - 強化学習の優れた実装?
AIクラスのプロジェクトでは、テトリスの単純なゲームに勝る強化学習アルゴリズムを実装する必要があります。ゲームはJavaで書かれており、ソースコードがあります。私は強化学習理論の基礎を知っていますが、SOコミュニティの誰かがこの種のことを実際に体験したことがあるかどうか疑問に思いました。
- テトリスゲームで強化学習を実装するための推奨読書は何ですか?
- チェックする価値のある同様のことを達成する優れたオープンソースプロジェクトはありますか?
編集:より具体的であるほど良いですが、主題に関する一般的なリソースを歓迎します。
ファローアップ:
フォローアップを投稿したらいいなと思いました。
これが私が将来の学生のために最終的に得た解決策(コードと記述)です:)。
language-agnostic - Q学習の一般化関数
家の周りで家具を動かさなければならない男について、Qラーニングでいくつかの作業をしなければなりません(基本的にはそれです)。家が十分に小さければ、アクション/報酬を表すマトリックスを作成することもできますが、家のサイズが大きくなると、それだけでは不十分になります。そのため、代わりに、ある種の一般化関数を使用する必要があります。私の先生は、私が1つだけでなく、いくつかのものを使用することを提案しているので、それらを比較することができます。何をお勧めしますか?
この状況では、人々はサポートベクターマシンとニューラルネットワークを使用していると聞きました。私は実際にはフィールドの中にいないので、わかりません。私は過去にニューラルネットワークの経験がありましたが、SVMを把握するのは非常に難しいようです。他に探すべき方法はありますか?私はそれらが無数にあるに違いないことを知っています、しかし私はただ始めるために何かが必要です。
ありがとう
neural-network - ニューラルネットワークを使用して「ソフト」ソリューションを解決する方法は?
私が構築しているスペース シューティング ゲームでニューラル ネットワークを使用して敵に力を与えることを検討していますが、疑問に思っています。ネットワークの決定的な適切な出力セットがない場合、ニューラル ネットワークをどのようにトレーニングしますか?
language-agnostic - Q学習の改善
私は現在、Qラーニングを使用して、壁や障害物でいっぱいの部屋で移動する方法をボットに教えようとしています。部屋の任意の場所から開始して、目標の状態に到達する必要があります(たとえば、ドアのあるタイルなど)。現在、別の牌に移動したい場合はその牌に移動しますが、将来的にはその代わりに別の牌に移動する可能性をランダムに追加する可能性があると考えていました。上下左右にしか動かせません。目標状態に到達すると+100が得られ、残りのアクションは0になります。
私はここにあるアルゴリズムを使用しています。これは次の画像で見ることができます。
さて、これに関して、私はいくつかの質問があります:
- ニューラルネットワークに少し似たQラーニングを使用する場合、学習フェーズと使用フェーズを区別する必要がありますか?つまり、最初の写真で彼らが示したのは学習用のものであり、2番目の写真では使用用のものであるようです。
- 最適なQ値の表に到達するには、無限のステップが必要であるとどこかで読みました。本当?それは真実ではないと思いますが、私はここで何かが欠けているに違いありません。
TD(Temporal Differences)についても聞いたことがありますが、これは次の式で表されているようです。
alpha = 1の場合、これは写真の最初に示されているように見えます。ここで、そのガンマはどのような違いをもたらしますか?
- 非常に大きな部屋(たとえば、300x200ピクセル)を試してみると、いくつかの問題が発生しました。基本的にランダムに実行されるため、部屋が非常に大きい場合、最初の状態からゴール状態にランダムに移動するのに多くの時間がかかります。それをスピードアップするためにどのような方法を使用できますか?そのエピソードで私が持っているものがすでにその状態にあるかどうかに関して、私はおそらく真と偽で満たされたテーブルを持っていると思いました。はいの場合は破棄し、いいえの場合はそこに行きます。私がすでにこれらすべての州にいた場合、私はランダムな州に行きます。このように、私が現在行っているよりも少ない頻度で状態を繰り返すことを知っているので、それは私が今していることと同じようになります。
- Q-Valueのルックアップテーブル以外のものを試したいので、このためにバックプロパゲーションでニューラルネットワークを使用することを考えていました。アクション(上、下、左、右)ごとにニューラルネットワークを使用してみます。これが最良の結果をもたらすと思われるためです。良いQ値関数近似を与えるために使用および実装できる他の方法(SVM以外に、自分で実装するのは非常に難しいようです)はありますか?
- 遺伝的アルゴリズムは、Q値マトリックスを基礎として使用して、この状況で良い結果をもたらすと思いますか?適応度関数をテストするにはどうすればよいですか?GAは一般的にもっとランダム/複雑なものに使用されているという印象を私に与えます。注意深く見ると、Q値は明確な傾向をたどっています。つまり、目標の近くではQ値が高く、目標から離れているほどQ値は低くなります。GAによってその結論に到達しようとすると、おそらく時間がかかりすぎるでしょうか。
language-agnostic - 強化学習でリカレントニューラルネットワークを使用する場合、どのような用途がありますか?
バックプロパゲーションを備えたフィードフォワード多層ニューラルネットワークが強化学習で使用され、エージェントが実行するアクションを一般化するのに役立つことを私は知っています。これは、大きな状態空間がある場合、いくつかのアクションを実行でき、それらは状態空間全体を一般化するのに役立ちます。
代わりに、リカレントニューラルネットワークは何をしますか?一般的に、それらはどのようなタスクに使用されますか?
artificial-intelligence - QLearningと終わりのないエピソード
ロボットが移動できる(x、y)平面があると想像してみましょう。ここで、世界の真ん中を目標状態と定義します。つまり、ロボットがその状態に達すると、100の報酬をロボットに与えることになります。
ここで、目標状態につながる可能性のある4つの状態(これをA、B、C、Dと呼びます)があるとしましょう。
初めてAになり、目標状態に移行するときに、QValuesテーブルを次のように更新します。
2つのことのいずれかが発生する可能性があります。ここでエピソードを終了し、ロボットが再び目標状態を見つけなければならない別のエピソードを開始するか、目標状態を見つけた後も世界を探索し続けることができます。これを行おうとすると、問題が発生します。私が目標状態にあり、状態Aに戻ると、Qvalueは次のようになります。
さて、Aから再びゴール状態に戻ろうとすると:
つまり、これを続けていくと、0 <= gamma <= 0として、両方のqValueが永久に上昇します。
これはQLearningの予想される動作ですか?私は何か間違ったことをしていますか?これが予想される動作である場合、これは問題につながる可能性がありますか?確率的には、4つの状態(A、B、C、D)がすべて同じ速度で成長することを知っていますが、それでも、それらが永遠に成長するのはちょっとバグです。
エージェントが目標を見つけた後も探索を続けることができるという考えは、エージェントが目標の状態から近いほど、現時点で更新できる状態にある可能性が高いことと関係があります。
artificial-intelligence - QLearning での負の報酬
エージェントが xx 軸と yy 軸に沿って移動できる部屋にいるとします。各ポイントで、彼は上下左右に移動できます。したがって、状態空間は (x, y) で定義でき、各ポイントでのアクションは (上、下、右、左) で与えられます。エージェントが壁にぶつかるアクションを行うたびに、-1 の負の報酬を与え、エージェントを以前の状態に戻すと仮定しましょう。部屋の中央に人形を見つけた場合、+10 の報酬を獲得します。
特定の状態/アクション ペアの QValue を更新すると、新しい状態で実行できるアクションを確認し、そこに到達できる最大 QValue を計算するので、Q(s, a) を更新できます。現在の状態/アクションの値。これが意味することは、ポイント (10, 10) に目標状態がある場合、その周囲のすべての状態の QValue は、遠くなるにつれて少しずつ小さくなるということです。さて、壁との関係では、同じことが真実ではないように思えます。
エージェントが壁にぶつかったとき (彼が位置 (0, 0) にいてアクション UP を行ったと仮定しましょう)、彼はその状態/アクションに対して -1 の報酬を受け取り、したがって -1 の QValue を取得します。
ここで、後で私が状態 (0, 1) にいて、状態 (0,0 0) の他のすべてのアクションがゼロであると仮定すると、アクション LEFT の (0, 1) の QValue を計算すると、次のように計算されます。それは次の方法です。
これは、壁にぶつかっても近くの状態に伝播しないということです。正の報酬状態がある場合とは逆です。
私の視覚では、これは奇妙に思えます。最初は、負の報酬を与える状態/アクションのペアを見つけることは、正の報酬と同じくらい学習的に優れていると考えていましたが、上記の例からすると、そのステートメントは当てはまらないようです。アルゴリズムには、負の報酬よりも正の報酬をはるかに考慮に入れるバイアスがあるようです。
これは QLearning の予想される動作ですか? 悪い報酬は、肯定的な報酬と同じくらい重要であるべきではありませんか? これに対する「回避策」とは何ですか?
language-agnostic - QLearning のアルファおよびガンマ パラメーター
ガンマ値が大きいか小さいかによって、アルゴリズムにどのような違いが生じますか? 私の視覚では、0 でも 1 でもない限り、まったく同じように動作するはずです。反対に、どのガンマを選択しても、Qvalues は非常に速くゼロに近づくようです (簡単なテストで 10^-300 のオーダーの値を取得しています)。通常、人々はどのように Qvalues をプロットしますか (私は (x, y, その状態に最適な QValue) をプロットしています) その問題を考えると?
また、Q ラーニングの更新関数にアルファ パラメーターを使用する理由がわかりません。これは基本的に、Q 値関数に対して行う更新の大きさを設定します。通常、時間の経過とともに減少するという考えがあります。それが時間の経過とともに減少することに何の関心がありますか?最初の更新値は、1000 エピソード以降よりも重要である必要がありますか?
また、エージェントが貪欲なアクションを実行したくない場合に毎回状態空間を探索するための良いアイデアは、まだ QValue がゼロの状態を探索することです (これは、少なくともほとんどの場合、これまでにない状態)、しかし、どの文献にも言及されていません。これには欠点がありますか?これは(少なくともいくつかの)一般化関数では使用できないことを知っています。
他のアイデアは、訪問した状態/アクションのテーブルを保持し、その状態で以前に試行された回数が少ないアクションを実行しようとすることです。もちろん、これは比較的小さな状態空間でのみ実行できます (私の場合は間違いなく可能です)。
探索プロセスの後半での 3 つ目のアイデアは、最適な qvalue を探すために選択されたアクションだけでなく、考えられるすべてのアクションとその状態の内部を調べてから、その状態の他のものなどを調べることです。
これらの質問は無関係であることは承知していますが、以前にこれに取り組んだことがあり、(おそらく) 苦労したことのある人の意見を聞きたいです。
c# - C# での強化学習
- プロジェクトで強化学習を使用するつもりですが、実装方法がよくわかりません..
- そこで、C# プロジェクトで使用できるさまざまな RL アルゴリズムを備えたライブラリを探しています。
ありがとう
注: ニューラル ネットワーク用の NeuronDotNet ライブラリを見つけました。現在、RL ライブラリを探しています。
編集:またはドット NET ライブラリ