rlLinearBa​sisReprese​ntationを使用​した自作エージェント​の作成方法に関して

reinforcement learning toolboxを使用して自作エージェントを作成使用と考えております.
その際,Q関数をrlLinearBasisRepresentationで設定することを考えております.
このとき,勾配の計算およびパラメータの更新をどのように行えば良いでしょうか?
toolbox内のソースコードも確認しているのですが,rl.internal.ad.modelというpコードが内部に使用されているようで,動作を追うことができません.
よろしくお願いいたします.

 Akzeptierte Antwort

Toshinobu Shintai
Toshinobu Shintai am 2 Mär. 2020

0 Stimmen

以下のWebページにあるCustom Agentの作成例はご覧になりましたでしょうか。
ここに書かれている方法で解決すれば幸いですが、いかがでしょうか。

5 Kommentare

Teppei Iwata
Teppei Iwata am 2 Mär. 2020
ご回答ありがとうございます.
こちらのサンプルも確認させていただいていたのですが,こちらのコードはQ関数の学習をベルマン方程式を最小二乗法で解くようなものになっている(内部で用意されているgradient関数などを使用していない)という認識でした.
こちらのサンプルプログラムは勾配を求めた上でQ関数の更新を行っているのでしょうか?
Hiro Yoshino
Hiro Yoshino am 5 Mär. 2020
横からすみません。
解決案を示す訳では有りませんが一点気になったので:
Custom Agentsの部分ですが、スキミングした限り、Actor & Criticの設定になっています。
従ってこれは勾配方策法なので価値関数的な手法ではないのかなと?
つまりQ関数を近似しないので、勾配を求めるとかそういう話は出てこないのではと思われます。
勾配を求めるという事は、ニューラルネット的なアプローチをするという事でしょうか?
勾配を求めないで話が済む強化学習にまずは取り組んでみるというのはどうでしょうか?
Teppei Iwata
Teppei Iwata am 5 Mär. 2020
ご回答ありがとうございます.
> つまりQ関数を近似しないので、勾配を求めるとかそういう話は出てこないのではと思われます。
勾配を求めるようなCustom Agentのサンプルやドキュメント等はないのでしょうか...?
> 勾配を求めるという事は、ニューラルネット的なアプローチをするという事でしょうか?
その通りです.関数近似器(線形基底関数近似)によってQ関数を設計し,TD誤差を使用して学習を行うことを考えております.
そのため,すでに用意されている,PGAgentの実装を参考に勾配の計算,パラメータの更新を行うコードを追わせていただいております.その際,rlLinearBasisRepresentationで勾配を求める際,質問に書かせていただいている,rl.internal.ad.modelのメソッドを呼び出しており,動作が追えないという状況です.(現状はメソッドの入出力および前後のコメントから動作を推測して使用しております)
> 勾配を求めないで話が済む強化学習にまずは取り組んでみるというのはどうでしょうか?
こちらに関しましては,すでにCustum Agentを継承するサンプルを参考にすでに行っております.
また,現在研究で使用させていただいていることもあり,別の強化学習器を使用することは困難です.
よろしくお願いいたします.
Hiro Yoshino
Hiro Yoshino am 5 Mär. 2020
まず、ごめんなさい:
を読んでいたら、方策勾配法以外の部分も有りますね。失礼しました。Q学習もカスタム出来そうです。
そして、ごめんなさい2: 回答はすぐ出ません。そのうえで私の知っている事と、想像を書きます:
custom agentを使った方法は、ちょっと直ぐには答えが私からは出てきませんが、少し目先を変えます。
まず、勾配の部分ですが線形基底関数での近似なので、ひょっとしたら勾配くらいは解析的に求められるのでは無いですか?そうしたら、組み込まなくても良いですよね?外で計算ができるはずです。
二点目ですが、ニューラルネットワークでQを近似したものの勾配は解析的に求められないので、誤差逆伝搬法というややこしいアルゴリズムで関節的に計算します。DLを使った強化学習での「勾配計算」はこの逆伝搬をやってくれるというもので、上記のような所謂勾配計算とはまた別のモノだと思われます。DLを想定している場所に、数値的には直ぐにできるユーザー定義のQ関数の勾配計算を組み込むのは....変な気がします。
従って、ご意見を見ている限りですが、教科書の初めに出てくるようなTD-Qを連続量でやられたいのかな?と思いました。それはカスタムというか、Qの関数表現を定義するだけの話なのでは?
にQの近似の方法が書いてありそうです。普通にQ学習のエージェントクラスから、そのメンバとしてQの設計をするという流れなような気がします。
こちらに
"Q-learning agent maintains a critic Q(S,A), which is a table or function approximator."
なんて記述が有ります。恐らくテーブル以外の表現(つまり関数近似)ができるのでは?と思います。
Teppei Iwata
Teppei Iwata am 19 Mär. 2020
返信が遅くなり申し訳ございません。
> 教科書の初めに出てくるようなTD-Qを連続量でやられたいのかな?と思いました。それはカスタムというか、Qの関数表現を定義するだけの話なのでは?
状態価値に関しては,関数近似Q-learning(SARSA)などと同じことを行っています.
しかし現在,連続行動を取り扱おうとしており,用意されているAgentは使用できませんでした.
MATLAB2020aでのサンプルコードに勾配を使用した学習のサンプルが提示されておりましたのでこちらを参考に勧めてみたいと思います.
ご回答ありがとうございました.

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (0)

Produkte

Version

R2019b

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!