an odd fellow

仕事のメモ

強化学習入門した

強化学習

強化学習

  • 作者: Richard S.Sutton,Andrew G.Barto,三上貞芳,皆川雅章
  • 出版社/メーカー: 森北出版
  • 発売日: 2000/12/01
  • メディア: 単行本(ソフトカバー)
  • 購入: 5人 クリック: 76回
  • この商品を含むブログ (29件) を見る

指導教官から昔渡された本↑を時間ができたので読んでみた。序盤で n 本腕バンディット問題で学習の様子を示している様子があったので真似て実装してみた。 10 本腕バンディットタスク 2000 回を 1 セットとして 500 セット分の間にどのように学習していくのかを可視化することを目標とした。

10 本腕の中から 1 本選ぶという行動を a としたとき、その報酬関数は Q(a) で表される。 Q(a) は、標準正規分布に従いランダムに選ばれた Q*(a) を平均値とした分散 1 の正規分布からランダムに選ばれる。 すなわち、学習する過程でもっとも Q*(a) が大きいであろう腕を見つけ出して選んでいくと最終報酬が最大になる。

そこで、常に貪欲に最も報酬を得られる腕を選ぶという方策を取ることにする。これをグリーディ手法と呼ぶ。しかしながら、グリーディ手法は他の腕の方がより良い報酬を得られるかもしれないという可能性を放棄することとなってしまう。よって、基本は貪欲に腕を選ぶが、一定の確率 ε で他の腕も探索する方策を ε-グリーディ手法と呼ぶ。

Python で実装した。 iPython notebook が便利すぎる。ノートを作ったら gist に貼り付けて、 nbviewerで公開できる。でこんなかんじ。

http://nbviewer.ipython.org/gist/roronya/2a09440ab3f4717b5889

結果がこれ f:id:roronya:20150501060534p:plain

matplotlibのlegendに ε が使えなかったので e とした。

  • e = 0 のときは貪欲な腕を選び続けるが報酬はおおよそ 1 程度に留まっている。
  • この問題は最大報酬がおおよそ 1.55 程度になるが、e = 0.1 の場合が最大報酬に他より早く近づいていき、おおよそ 1.4 程度に留まりそうな感じ。
  • e が大きすぎてもうまくいかなくて、e = 0.5 や e = 1のときなどは最大報酬がまったくよくなる気配が無い。
  • 長期的な目でみると e = 0.01 の場合が順調に 1.55 程度まで達せそうに見えて、実際そうなるらしい。

よって、一般に ε を序盤は大きくし、だんだんと小さくしていく手法が使われるようなので、実装してみた。

結果がこれ f:id:roronya:20150501062916p:plain

e = 0.1 で 400 セット行って、残り 100 セットを e = 0.01 としたところ、e を切り替えた瞬間に性能がよくなり、傾きも右肩上がりになっているように見える。なるほどなるほど〜。

以下チラ裏

最初、確率 ε で "未だ探索したことの無い場所を優先して探索し、全ての腕に関して探索してあったらランダムに一本選ぶ" という方策をとったところ、ε = 0.1 のときに ε = 0 と同程度の最大報酬しか得られなかった。教科書通りの性能を得るには、確率 ε で "ランダムに一本選ぶ" 方策でないとダメだった。

三目並べの AI が強化学習のハローワールドらしいので、今度はそれかなーというかんじ。 強化学習の良さそうな本が上に張ったやつくらいしか見当たらないのだけど、いい本あったら教えてほしい。