神野さんに言われました。

読者です 読者をやめる 読者になる 読者になる

神野さんに言われました。

AIの勉強をしています @sesenosannko

Model-basedの強化学習について学ぶ

前回の記事で紹介したDavid Silverのスライドの後半の部分で、model-based RLという話が出ていました。
僕は聞いたことがなかったので、model-based RLについて少し調べてみたいと思います。


sesenosannko.hatenablog.com


ちょうど良さそうな資料があったので、これを読みました。
この論文自体が1998年に出された論文の抜粋らしいですが、これで十分に理解できる内容だと思います。
https://www.bcs.rochester.edu/people/robbie/jacobslab/cheat_sheet/ModelBasedRL.pdf


簡単にいうとmodel-based RLというのは、環境自体を学習してそれを学習に活用するというものだという認識でいいと思います。この記事の論文では主にvirtual experienceという手法が主に説明されています。

virtual experienceはexperience replayと非常によく似ていますね。特に2段落目の単純な場合のvirtual experienceはexperience replayとほぼ同じだと思います。

正直、現段階で本質的に違いがあるのかはよくわかりません。そもそも、Silverの資料の34ページにあるようにDeepMindは資料の段階ではAtariにmodel-based RLを適用することに失敗しています。"n-layer network can “lookahead” n steps"という記述があるので(この意味自体は正直よくわからないのですが)、学習したモデルからの少し先の状態の予測を用いるのかもしれません。この辺りについては、もう少しDeepMindの記事を読んでいきたいと思います。


この手法が提案された論文がわからないので申し訳ないのですが、この動画で説明されている「予測器」を用いた階層DQNというのもこの手法の延長線上にあると言えると思います。



www.ustream.tv


強化学習は本当に数多くの手法が提案されているので追っていくだけでも大変です。そろそろ1つ簡単なものでもいいのでQ-networkを用いて実装してみたいなと思っているところです。



以下、資料のまとめです。

1. Model-free versus model-based reinforcement learning


model-based RLとmodel-free RLは最大報酬を得るための方策を学習するという点では変わりません。model-based RLではそれと同時にエージェントが環境のモデルを学習します。

この手法によりエージェントは行動をとる前に結果を予測することができるようになります。そして、過去の経験からの学習と未来の行動計画を統合することができます。

加えて、環境のモデルは現在進行しているタスクと直接結びついている訳ではありません。たとえば、迷路の中で餌を見つける学習を行っていた際に手に入れた迷路のモデルは、目的が同じ迷路の中で安全な場所を探すことに変わった後にも用いることができます。

model-based RLの欠点としては、不正確なモデルではmodel-free RLよりもむしろ学習精度を落とすという点があるようです。

2. Learning and using a model


環境が決定論的でそれほど多くない離散的な状態をとる場合は、単純な手法としてルックアップテーブルを用いることが考えられる。このテーブルはそれぞれの状態と行動に対して、結果として得られた状態と報酬を保持する。これを用いることで実際に環境の中で行動を起こさなくても、その行動の結果を予測することができる。

このモデルを使って強化学習を向上させる単純な方法は、擬似的に経験を作り出すことである(=virtual experience 以下、仮想経験)。エージェントはそのモデルを用いてランダムな状態と行動から、次の状態と報酬を予測することができる。そして、それらのデータを用いてQ学習などのアルゴリズムによって方策を学習することができる。

この仮想経験を加えることで、報酬に先立った過去の行動への学習が行われるためTD法の速度を高める*1


報酬や状態の遷移が確率的である場合も同様のアプローチが可能ですが、環境の持つ確率的な特徴も得られるとより理想的です。

1つの方法としては、ある状態と行動に対する次の状態と報酬をベイズ推定に基づいた分布で保持するものがあります。仮想経験を作り出す際には、学習した分布を用いてサンプルを生成します。この方法の欠点は、それぞれの状態に対して個別に分布のパラメータを学習する必要がある点です。多数の状態を持つモデルの学習では非実用的であり、シンプルなモデルであっても多数のパラメータを限られた経験で正確に学習することはできません。

結果として、model-based RLは単純なmodel-free RLに対してパフォーマンスを向上させることはできません。現在ではこの問題に対して一般的な解決法は示されておらず、それぞれのタスクに対してアルゴリズムを調整するという手法がとられています。

2.1 Prioritize sweeping


前章ではランダムに仮想経験を取り出す手法を扱いましたが、これは効率の良い方法とはいえません。例として、チェッカーを学習する際に勝利に対して+1、敗北に対して-1の報酬を与えるとします。価値関数を0で初期化しているとすると、1回目のゲームが終わったときには価値関数は最後の手の1個前の状態のものしか学習が発生しません。つまり、それ以外のほとんどの価値関数は0のままであり、仮想経験として意味を持たないものとなります。

そこで、有効な方法として価値関数の変化が大きい場合だけ状態を保存する手法が考えられます。チェッカーの例で考えると、仮想経験による学習はゲーム終了の直前の行動に集中して行われると考えられます。つまり、初期ではゲーム終了に注目した学習が行われ、徐々に終了への道筋を学習するようになります。

さらに改良された手法として、学習への影響が大きい経験を優先することが考えられます。つまり、TD誤差の大きいものに重きを置いて学習をするという方法です。これは"prioritized sweeping"と呼ばれている手法です。

*1:ニュアンスはあっていると思いますが、少し自信がない部分なのでこの行の原文を載せておきます。
"By including this additional ‘virtual’ experience, the backwards propagation of temporal dier- ence (TD) errors occurs much more quickly from the point that rewards are received, to the past actions that preceded the rewards."