TSG 強化学習勉強分科会

第3回(第4章) 動的計画法

@hakatashi

これまでのあらすじ

いっけなーい! 学習学習!

私、DQN。0.5歳! どこにでもいる至って普通の人工知能!

でもあるときマルコフ性を満たす有限空間上の強化学習タスクが与えられちゃってもう大変! しかも現実的な時間じゃ計算が終了しないって!?

いったいわたし、これからどうなっちゃうの〜!?!?!?

復習

Bellman方程式

V^{\pi}\left(s\right)=\sum_{a}\pi\left(s,a\right)\sum_{s'}\mathcal{P}_{ss'}^{a}\left[\mathcal{R}_{ss'}^{a}+\gamma V^{\pi}\left(s'\right)\right]
Vπ(s)=aπ(s,a)sPssa[Rssa+γVπ(s)]V^{\pi}\left(s\right)=\sum_{a}\pi\left(s,a\right)\sum_{s'}\mathcal{P}_{ss'}^{a}\left[\mathcal{R}_{ss'}^{a}+\gamma V^{\pi}\left(s'\right)\right]

状態sで方策π(s,a)に従ったとき、

選択可能な行動a∈A(s)および遷移可能な状態s'∈Sについて

遷移確率をP、報酬の期待値をRとして、

状態sの価値V(s)は、次の方程式に従う。

V^{\pi}\left(s\right)=\sum_{a}\pi\left(s,a\right)\sum_{s'}\mathcal{P}_{ss'}^{a}\left[\mathcal{R}_{ss'}^{a}+\gamma V^{\pi}\left(s'\right)\right]
Vπ(s)=aπ(s,a)sPssa[Rssa+γVπ(s)]V^{\pi}\left(s\right)=\sum_{a}\pi\left(s,a\right)\sum_{s'}\mathcal{P}_{ss'}^{a}\left[\mathcal{R}_{ss'}^{a}+\gamma V^{\pi}\left(s'\right)\right]
  • このような定義をすると、他のすべての方策より大きいか等しい方策π*が必ず1つは存在する。
    • これを最適方策という。
  • この方程式を解いて最適方策を見つけるのが強化学習である。おしまい。
  • とはならない。現実の問題では状態Sも遷移Aも膨大で、ナイーブに解いていたら宇宙が何巡しても終わらない。つらい。
  • そこで、現実世界に生きる我々のためのミラクルスーパーな解法がこの現代社会において求められている。

基本的な解法群

  • 本書では第II部に「基本的な解法群」として3つのストラテジが紹介されている。
    • 動的計画法
    • モンテカルロ法
    • TD学習
  • 今回は「動的計画法」
  • これらにはそれぞれ長所と短所があるが、動的計画法ではモデルが完全に既知である必要があり、現実のケースに応用しにくい。
  • しかし、理論的には非常に重要である。

方策評価

評価は大事[出典: 博多市の成績表]

V^{\pi}\left(s\right)=\sum_{a}\pi\left(s,a\right)\sum_{s'}\mathcal{P}_{ss'}^{a}\left[\mathcal{R}_{ss'}^{a}+\gamma V^{\pi}\left(s'\right)\right]
Vπ(s)=aπ(s,a)sPssa[Rssa+γVπ(s)]V^{\pi}\left(s\right)=\sum_{a}\pi\left(s,a\right)\sum_{s'}\mathcal{P}_{ss'}^{a}\left[\mathcal{R}_{ss'}^{a}+\gamma V^{\pi}\left(s'\right)\right]
  • まずは最適方策の前に、ある方策πに対してBellman方程式を計算し、状態価値関数V(s)を計算することを考える。
    • これを方策評価という。
  • Bellman方程式は連立1次方程式になるため、通りすがりの線形代数マンが解いてくれるはずだが、sの種類があまりに膨大だと解ききれない。
  • そこで、逐次代入による近似解を考える。
V_{k+1}\left(s\right)=\sum_{a}\pi\left(s,a\right)\sum_{s'}\mathcal{P}_{ss'}^{a}\left[\mathcal{R}_{ss'}^{a}+\gamma V_{k}\left(s'\right)\right]
Vk+1(s)=aπ(s,a)sPssa[Rssa+γVk(s)]V_{k+1}\left(s\right)=\sum_{a}\pi\left(s,a\right)\sum_{s'}\mathcal{P}_{ss'}^{a}\left[\mathcal{R}_{ss'}^{a}+\gamma V_{k}\left(s'\right)\right]

状態空間Sを状態価値空間Rに写像する関数列V0, V1, ...を考え、

とすると、

k→∞でVk→Vπとなることを一般に示すことができる。

このアルゴリズムを反復方策評価という。

言い換えれば、反復方策評価は、

  • 各状態sに対して状態価値V(s)を(適当に)決め、
  • Bellman方程式を用いて新たな価値V(s)を計算し、
  • それを以前の状態価値と置き換える

という作業を繰り返し行っている。

このように、ある状態の状態価値を更新することをバックアップと呼び、全ての状態に対してスイープ操作を行ってバックアップすることを完全バックアップ(full backup)と呼ぶ。

  • これを現実に実装するときは、前の状態価値のリストと現在の状態価値のリストの2つのデータを保持すれば十分である。
  • しかし、より簡単に、現在の状態価値のデータを用いて、現在の状態価値のデータをin-placeに更新するようにすることもできる。
    • これによって得られる状態価値関数は前述の式を満たさないが、いずれVπに収束することが保証されている。
    • 一つのリスト上を各状態に対して走査するように更新していくので、このような操作をスイープ操作と呼ぶ。

方策改善

圧倒的成長

  • ある方策に対して価値関数を求めることができたので、今度は方策を改善して最善方策を見つけたい。
  • 以降で扱う方策は決定論的方策(状態sに対して取るべき行動aが1つ求まる。π(s)=a)である。

現在の方策πを無視して、状態sのときに行動aを取ったとする。

以降は反省して方策πに従って行動したとき、この行動の価値は

Q^{\pi}\left(s,a\right)=\sum_{s'}\mathcal{P}_{ss'}^{a}\left[\mathcal{R}_{ss'}^{a}+\gamma V^{\pi}\left(s'\right)\right]
Qπ(s,a)=sPssa[Rssa+γVπ(s)]Q^{\pi}\left(s,a\right)=\sum_{s'}\mathcal{P}_{ss'}^{a}\left[\mathcal{R}_{ss'}^{a}+\gamma V^{\pi}\left(s'\right)\right]

となる。

これがVπ(s)よりも大きかった場合、状態sで行動aを取ることは常に良いことであると保証される。

これを拡張して全てのs∈Sについて

Q^{\pi}\left(s,\pi'\left(s\right)\right)\geq V^{\pi}\left(s\right)
Qπ(s,π(s))Vπ(s)Q^{\pi}\left(s,\pi'\left(s\right)\right)\geq V^{\pi}\left(s\right)

となる方策π'があるとき、

V^{\pi'}\left(s\right)\geq V^{\pi}\left(s\right)
Vπ(s)Vπ(s)V^{\pi'}\left(s\right)\geq V^{\pi}\left(s\right)

となる。

これを方策改善定理という。

証明は教科書に書いてある

これによって行動aを評価することができるので、あとはQ(s,a)を最大化するようなaを使ってπを更新すればいいだけである。

つまり、

\pi'\left(s\right)=\arg\max_{a}Q^{\pi}\left(s,a\right)=\arg\max_{a}\sum_{s'}\mathcal{P}_{ss'}^{a}\left[\mathcal{R}_{ss'}^{a}+\gamma V^{\pi}\left(s'\right)\right]
π(s)=argmaxaQπ(s,a)=argmaxasPssa[Rssa+γVπ(s)]\pi'\left(s\right)=\arg\max_{a}Q^{\pi}\left(s,a\right)=\arg\max_{a}\sum_{s'}\mathcal{P}_{ss'}^{a}\left[\mathcal{R}_{ss'}^{a}+\gamma V^{\pi}\left(s'\right)\right]

となるgreedyな方策π'を考える。

先の方策改善定理より、これは方策πとくらべて同等かそれ以上の方策である。このように方策を改善することを方策改善と呼ぶ。

  • 方策πから改善された方策π'が求まるならば、続いてその価値Vπ'を計算して、さらにそれを改善した……と続けることによって、延々と方策を改善し続けることができる。
    • 方策の数は有限個なのでこれは有限回で収束する。
  • このように最適方策を求める手法を方策反復と呼ぶ。
  • モデルによるが、これは数回で収束するという。

108回で収束した例

価値反復

作業用BGM: ♪Extra terrestrial Biological Entities

  • 最適方策を求める方法がわかったが、これには一回ごとに方策を評価しなければならない。
    • そして、方策を評価するには逐次代入による評価値の収束を待たなくてはならない。
  • 実は、方策評価と方策反復の手法を組み合わせることによって、1回の(スイープ)計算で方策を改善する方法が知られている。すなわち、グリーディ方策の式を用いた
V_{k+1}\left(s\right)=\max_{a}\sum_{s'}\mathcal{P}_{ss'}^{a}\left[\mathcal{R}_{ss'}^{a}+\gamma V_{k}\left(s'\right)\right]
Vk+1(s)=maxasPssa[Rssa+γVk(s)]V_{k+1}\left(s\right)=\max_{a}\sum_{s'}\mathcal{P}_{ss'}^{a}\left[\mathcal{R}_{ss'}^{a}+\gamma V_{k}\left(s'\right)\right]
  • によって価値関数を更新することである。この手法は価値反復と呼ばれている。
  • 加えて、終了条件として価値関数の変化量が閾値より小さくなった時点で反復を打ち切るとする。
  • なぜこれがうまくいくのかは教科書に書いてある

以上が反復DPアルゴリズム

えっ簡単じゃね?

とりあえず価値反復で
強化学習は常勝!

「……などと、その気になっていたお前の姿はお笑いだったぜ!」

パラガス

再びそびえる
計算量の壁

  • 例えばバックギャモンが取ることができる全状態数は1020ほどになる。
  • この量だと全状態をスイープ操作して完全バックアップするのに何百万年もかかってしまう。
    • つまり価値反復の1ステップに何百万年
  • 完全バックアップをしなくてよい方法を考える必要がある。
V_{k+1}\left(s\right)=\max_{a}\sum_{s'}\mathcal{P}_{ss'}^{a}\left[\mathcal{R}_{ss'}^{a}+\gamma V_{k}\left(s'\right)\right]
Vk+1(s)=maxasPssa[Rssa+γVk(s)]V_{k+1}\left(s\right)=\max_{a}\sum_{s'}\mathcal{P}_{ss'}^{a}\left[\mathcal{R}_{ss'}^{a}+\gamma V_{k}\left(s'\right)\right]

前述の式

を見ると、ある状態sについての評価関数V(s)をバックアップするのに必要なのは、状態sから遷移可能な状態s'の評価関数のみである。

よって、状態の完全バックアップを行わず、勝手な状態sを1つ選んでバックアップすることを繰り返すアルゴリズムが考えられる。これが非同期DPアルゴリズムである。

  • 実際のところ、非同期アルゴリズムは計算量を削減しない。
    • 解が収束するのに必要な条件は「全ての状態sを無限回踏むこと」である。
  • しかし、非同期アルゴリズムは、
    • 一回のスイープ操作がいつまでも終わらない状況を改善したり、
    • 環境との作用により、バックアップする状態sを戦略的に選択することができる
      • (エージェントが実際に通過した部分の状態を重点的にバックアップするなど)
  • などの利点がある。
  • 「このように、操作の焦点を定める問題は、強化学習で繰り返し取り上げられる話題である。」(111頁)

一般化方策反復

――あらゆる一般化は間違っている。これも含めて――マーク・トウェイン

  • 話は再び一般の方策反復の話に戻る。
  • 方策反復では、
    • 現在の方策に対応した価値関数を作る方策評価と、
    • 現在の価値関数に従った方策を作る方策改善
  • の2つの過程が存在した。
  • しかし、これらは概念的には交互に実行される必要はない。
    • 例えば、
      • 価値反復ではこれらは同時に行われ、
      • 非同期DPでは細かい粒度(granuality)で交互に処理された。
  • 形は違えど、いずれの強化学習の手法でも、この「方策評価」と「方策改善」の2つの操作に相当するものが存在する。
    • この強化学習の一般概念を一般化方策反復と呼ぶ。
    • 計算が安定化し、最適方策が発見されることは、「方策」と「価値関数」が変化せず、ともに最適とみなされるということである。
  • 概念的な話になるが、この2つの操作は互いに競争(反発)しあっているとみなすことができる。
    • 方策評価が生成する評価関数は現在の方策にとって不都合であり、
    • 方策改善が生成する方策は現在の評価関数にとって不都合である。
  • 方策反復は、これらが互いに反発し合いながら、やがて1つの目標(最適方策)に向かって合一していく過程であると見ることができる。

動的計画法の効率

結局、動的計画法は実用的なの?

  • 遅そうに見えるDPだが、方策の数が状態数に対して指数的に増加することを考えると、多項式時間で求められるDPは圧倒的に速い。
    • 例えば線形計画法を用いると、DPの1/100程度の状態数の問題で行き詰まってしまう。
  • それでも状態変数が増えると状態数は指数的に増えてゆくという、次元の呪い(curse of dimentionality)があるため、適用できる問題は限られているが、状態数が数百万程度の問題には現実にDPが用いられている(らしい)。
    • 要するにDPはそれなりに実用的という話

おしまい

TSG 強化学習勉強分科会 第3回(第4章) 動的計画法

By Koki Takahashi

TSG 強化学習勉強分科会 第3回(第4章) 動的計画法

10/09 TSG 強化学習勉強分科会 第3回 発表スライド

  • 2,562