強化学習:プランニングと学習(その1)

f:id:shirakonotempura:20190208134221j:plain

はじめに

今回からの話はSutton本、第8章(Planning and Learning with Tabular Methods)の内容になります.

本当は前回の記事(SARSA・Q学習)に引き続き、Actor-Criticについて整理したかったのですが、諸事情で8章の内容の理解に努めたいと思います.

今まではいろんな人のQiitaやブログを見ながらやってきたのですが、Q学習・関数近似が終わればDQNの実装に入っていくのか、この章の内容について書かれている記事はあまりなかったので、いつもよりは自力で書いてます.そのため、だいぶ内容に不備があると思いますが何卒ご了承ください.

幸い実装や例題は公開されているものがありますので、そちらをふんだんに利用させていただく予定です.

これは私の学習用ノート.メモ、備忘録です.

プランニングについて

これまで強化学習に関して整理してきた内容の中でプランニング(planning)という言葉は出てきませんでしたので、この言葉の説明から始めます.

Sutton本には

The word planning is used in several different ways in different fields. We use the term to refer to any computational process that takes a model as input and produces or improves a policy for interacting with the modeled environment

出典:Reinforcement Learning: An Introduction, R Sutton & A Barto, p.160

とありますが、ざっくりと言えばプランニングは『モデルを使って』、方策を改善していくことだと理解しています.

一方の学習(Learning)はその名のとおり学習のことです.ただし、これまでの内容では価値関数や方策を学習の対象としてきましたが、今回の内容ではモデルも学習対象となってきます.

『今回の』と書きましたが、実はこれまでに登場したモデルベース(Model Based)の強化学習は、本質的にはモデルの学習を行うモデルです.しかし、モデルベースの代表であった動的計画法では、学習すべきモデルが既に既知であることを前提にしていたので、そもそもモデルを学習する必要がなかったわけです.

一方のモデルフリーの強化学習の枠組み(モンテカルロやTD学習)においては、Model-Freeなのでモデルは出てきません.この枠組みでは、モデルがないのでとりあえず実際に行動して得られた経験を使って価値関数を計算し、方策の改善を行っていました.

以上をまとめておきます.

  • モデルベース強化学習(Model-Based RL)

    • 経験からモデルについて学習を行う
    • モデルを使って、行動価値や方策の改善を行う
    • 動的計画法(Dynamic Programming)とか
  • モデルフリー強化学習(Model-Free RL)

    • 経験から価値関数や方策の改善を行う(モデルは使わない)
    • モンテカルロ法、TD学習(Q学習、SARSA)とか

f:id:shirakonotempura:20190208085231p:plain

出典:Reinforcement Learning: An Introduction, R Sutton & A Barto, p.162の図を編集

モデル(Model)について改めて考えてみる

強化学習においてモデルというのは、ある状態でとった行動で得られる報酬や次の状態が推定できるもののことを指しています.状態と行動(あるいは方策)を与えれば、報酬・次の状態を返す関数のように考えればよいかと思います.

そう考えると、モデル実際にエージェントが行動をする環境と何が違うのか、この2つを混同しそうになるかもしれません.現に私は、この章の目的が全く分からないってくらい、めちゃくちゃ悩みました.(私だけかもしれません)

悩んだ結果、以下のような考え方に行きつきました.

実際の環境:エージェント(本当に動くやつ)がいる.
モデル:エージェント(本当に動くやつ)がいない.

誤った考え方だとは思うのですが、この章を理解するにあたってはこれでいけます. おそらくモデル上でエージェントを仮想的に動かす場合もあると思いますのであしからず.

そもそも迷路にしろ、スロットにしろ、すべてコンピューター上で行っているのでややこしいんですよね.

Tabular Model

ひとことでモデルと言っても、いくつか種類があるようです.(線形ガウスモデルとかDeep Belief Network モデルとか・・・、調べきれてません)

今回は、章のタイトルにもあるとおり、テーブル型のモデルを用います. これはいたってシンプルなもので、状態Sおよび行動Aを入力側、その入力に対する報酬Rおよび次の状態S'を表形式で持って置くというものです.

たぶん以下のようなイメージ(入力から出力が確定的なものとしています)

f:id:shirakonotempura:20190208090235p:plain

モデルフリーRLとモデルベースRLの統合

この章での主たる目的は、モデルフリーの考え方とモデルベースの考え方を統合することにあります.
なぜそんなことをする必要があるのかというと、統合することでお互いの長所を使いつつ、短所をなくすことができるためです.感覚的にはモデルを想定しなくてもよいモデルフリーの方が有能だろうと思っていたのですが、そうではないようです.

モデルフリーの場合、モデルを介さず直接、環境を通じて得られた本物の経験を使って価値関数・方策の更 新を行うことができます.また、学習の際に最小化すべき誤差を考えた場合、モデルフリーの場合の誤差は本物の経験と推定値の差であるが、モデルベースの場合、モデルそのものが推定されたものであるため、そのモデルから推定される推定値は誤差が大きくなってしまいます.

一方で、モデルベースのメリットとしては、モデルは関数のようなものなので、教師あり学習の考え方に似ています.つまり、もしモデルの入出力の関係性についてなにか知識を持っているのであれば、簡単に学習のアルゴリズムに適用することができます. また、構築したモデルの情報から、学習がまだ不十分なところを見つけることができるため、重点的に学習をさせることができます.

2通りの経験の利用

モデルフリーRLとモデルベースRLを統合した場合の、経験、価値・方策およびモデルの関係性を以下に示す.

f:id:shirakonotempura:20190208091054p:plain
経験、価値・方策およびモデルの関係
出典:Reinforcement Learning: An Introduction, R Sutton & A Barto, p.162

図から分かるように、実際の環境から得られた経験(Experience)は、以下に示す2つの目的に使用されます.

  • モデルの学習(Model Learning):経験をもとにモデルを改善する
  • 直接的強化学習(Direct Learning):経験をもとに価値関数・方策を改善する

モデルから価値関数・方策を改善していく流れのことを、Direct Learningに対してIndirect Learningと呼ばれることもありますが、この改善のことがまさにプランニングとなります.
また、統合後のアルゴリズムでは価値関数・方策は、経験からの直接的強化学習とモデルを利用したプランニングの両者によって改善されていくことが分かるかと思います.

この一連の学習アルゴリズムにはDynaという名前が付けられています.
次の項でDynaについてもう少し詳しく見ていきます.

DynaおよびDyna-Q

以下に一般的なDynaの構造を示します.

f:id:shirakonotempura:20190208142129p:plain

出典:Reinforcement Learning: An Introduction, R Sutton & A Barto, p.163の図を編集

先の説明とほぼ同じことの繰り返しになりますが、Dynaでは実際の環境から得られた経験を使って、①直接、価値関数・方策を改善する流れと、②モデルを学習し、モデルから得られるサンプル(疑似の経験)を使って価値関数や方策を改善する(プランニング)の流れを持っています.

Dynaの中で最も単純なアルゴリズムDyna-Qと呼ばれるアルゴリズムです.名前からも推測できると思いますが、DynaとQ学習を組み合わせたアルゴリズムになります.

Q学習はモデルフリーの学習方法ですので、実際に得られた経験から直接Qテーブルの値を更新していました.

Dyna-Qでは、まず通常のQ学習同様、ある状態Sにおいてエージェントが実際に行動Aを行い経験として報酬Rおよび次の状態S'を獲得し、行動価値Q(S,A)の更新を行います.
その後、次のステップに行く前に、今得られた経験(状態Sで行動Aを取ったら、報酬Rを得て状態がS'に遷移したという事実)を使って、モデルの学習(更新)を行います.
そして、学習後のモデルからサンプリングを行い、得られた疑似の経験を使って行動価値Q(S,A)の更新を行います.
このサンプリングと更新をn回行って、エージェントが次のステップに移ります.なおこのnはplanning stepと呼ばれるもので、ハイパーパラメータになります.

Dyna-Qの疑似コードは以下のように書くことができます. f:id:shirakonotempura:20190208144455p:plain

出典:Reinforcement Learning: An Introduction, R Sutton & A Barto, p.164に加筆

例題の実行と考察までしようと思ったんですが、長くなってきたので一旦切ります.

まとめ

  • モデルの学習およびプランニングについて整理しました
  • 復習を兼ねてモデルベースとモデルフリーの強化学習について整理しました.
  • モデルベースとモデルフリーの考え方を統合したアルゴリズム(Dyna、Dyna-Q)について整理しました.

次回は、例題の迷路問題などを使ってDyna-QとQ学習の違いなどの考察をしていきたいと思います.