Deep Q-Networkベースでの強化学習の俯瞰①|強化学習フォローアップシリーズ #1

f:id:lib-arts:20190131195140p:plain

強化学習の勉強会を行った際に予想以上に苦戦している方が多かった(他のトピックなら大体わかる人でも詰まっている人が多かった)ので、フォローアップシリーズを書いていければと思います。
#1では「scikit-learnとTensorFlowによる実践機械学習」の16章からDeep Q-Network(DQN)の話をピックアップしてまとめられればと思います。(予想以上に分量膨らんだので#1では全体の俯瞰にとどめ、#2~#5でそれぞれ1つずつ取り扱って行こうと思います。なので、ざっくりとした理解で一旦OKです。)

わかりやすくはあり本に書かれている内容は読み取れたと思うのですが、本の対象的に実装よりなので厳密性に欠ける可能性を少々懸念しています。隔週開催が決まったのでこの辺は随時アップデートしていければと思います。

以下、この記事の目次になります。

1. 機械学習強化学習
2. 参照本の重要なポイント
2.1 マルコフ決定過程
2.2 状態価値V(s)、状態行動価値Q(s,a)、報酬とベルマン最適方程式
2.3 Q関数を近似するにはどうするのか
2.4 Deep Q-Networkにおける工夫
3. まとめ


1. 機械学習強化学習
まずは簡単な基礎知識の確認から入れればと思います。機械学習強化学習についてですが、強化学習機械学習の1種だと捉えておくと良いです。機械学習を問題の定義の仕方に着目した上で大きく大別して、教師あり学習教師なし学習強化学習の三つだというのが一般的に言われています。
本当かというのも若干疑ってかかりたくなるのですが、この辺結構曖昧なことが多いので一旦三つに大別されると把握してしまって良いかと思います。入門にあたって曖昧なところを気にし過ぎてしまうとわかるものもわからなくなってしまいます。

さて、強化学習に関してですが、色々とややこしい問題のため理解するのがなかなか大変です。入門書的なのも難しいのが多い反面噛み砕き過ぎの記事だと余計にわからなくなるパターンだと思います。そこで、今回は本の内容を読み取った結果を重要なところをピックアップしてポイント絞った上でお伝えできればと思います。具体的には2節で扱う、2.1~2.4がDQNを理解する上での肝だと思います。

 

2. 参照本の重要なポイント
2.1 マルコフ決定過程
まずは強化学習を考える上での問題設定として、マルコフ決定過程(MDP; Markov Decision Process)について解説します。まずご理解いただきたいのが、大枠の問題設定自体がマルコフ過程なので系列データを取り扱うということです。系列というと難しく聞こえますが、簡単に考えると時系列のような取り扱いが必要だということです。
系列データについて軽く言及しましたが、マルコフ決定過程マルコフ過程の拡張です。マルコフ過程を理解するにはその前段階として確率過程(stochastic process)を理解する必要があります。ざっくりいうと確率的に状態が遷移するものと考えればよく、有名どころだとブラウン運動を元にしたウィーナー過程が有名です。

ウィーナー過程 - Wikipedia
ウィーナー過程って聞くと難しく聞こえますが、俗にランダムウォーク(酔歩)とも呼ばれており、酔っ払いが家にたどり着けるか問題をモデリングするのにも使えたりします。
少々話が逸れましたが、ざっくり言うと確率的に変動する時系列データを扱うのが確率過程です。ここでマルコフ過程は確率過程の一種で、現在や直近の過去の状態に依存して次が決まると言うイメージです。天気や言語モデルなどがこの例として挙げられます。

さて、マルコフ決定過程はこのマルコフモデルを拡張したもので、具体的には行動(action)や報酬(reward)を加えたものとされています。
細かく考えると難しいのでこちらもざっくり言うと、抽象的な問題を定義するにあたって、マルコフ決定過程は非常に柔軟な問題定義ができるため便利だということがこちらを導入しているモチベーションです。このモデルを用いることで、ある時点での行動が正しいかどうかわからなくてもそのあとに起こった結果から逆算してその行動が良かったのかダメだったのかを判断できるようになります。詳細については#2で扱います。


2.2 状態価値V(s)、状態行動価値Q(s,a)、報酬とベルマン最適方程式
強化学習における問題定義としてはまずマルコフ決定過程というのを想定しました。とにかく系列データをどう取り扱うかの問題なのだということを把握するのが第一歩です。ここでは、強化学習をすることで何を求めたいのかということについて解説します。
強化学習において学習したいのはある状況の情報(s; situation)が与えられた際に手持ちの行動(a; action)から何を選ぶべきかを判断できるようにということです。これを戦略(π; policy)と呼び、a=π(s)とおければ状況をπに入力したらアクションを返してくれる形になっていれば学習ができた状態になります。仕事をする際に最初はどうするかわからなくても段々と経験が積み重なればある状況においてどういう行動を取れば良いかわかるようになるのと同様です。経験をすることによって、状況に対しそれに最適な行動がわかるようになれば良いのです。

さて、このπ(s)をどうやって決めるかですが、そのためには行動の良し悪しを定量評価しなくてはなりません。V(s)で状態の価値を定義しても良いのですが、Q(s,a)で状態と行動のセットを数値化して状態行動価値を出せた方が計算上都合が良さそうです。次にどうやって定式化するかですが、報酬から決めるために持ち出すのがベルマン方程式です。これによってQ(s,a)を求める式を作成することができます。
詳細については#3で扱います。


2.3 Q関数を近似するにはどうするのか
DeepLearningを用いようというのがDeep Q-Networkの考え方です。まずなぜQ関数を近似する必要があるのかですが、過去の経験だけに基づいて判断していては問題が複雑になった際に全く同じ状況になるかというとそうはならないというところがあります。要はs自体がまず膨大になります。具体的には将棋を思い浮かべるとわかりやすいですが、プロ同士の棋戦で全く同じ棋譜の将棋になることはないと思います。なので、類似の状況をベースに培った経験を元にして最適な手を探していく必要があります。
そのため、sとaの中でも経験したことのある(そのあとの結果がわかっている)sとaを用いて学習し、それを類似の状況に適用できるように関数で近似してやろうというのが大元のアプローチです。強化学習というと難しそうに聞こえますが、最終的なここでのQ関数の近似自体は教師あり学習です。むしろ教師に何を与えるのかが紛らわしいというのが強化学習を学ぶ上での大きな壁になっているのではと思います。
これ以上書くと紛らわしくなりそうなので、#4でこちらについてはまとめたいと思います。

 

2.4 Deep Q-Networkにおける工夫
experience replayや2つのDeep Q-Networkを使用することなどです。この辺は最初から追うと混乱を生むので#5で他の補足ができた上でまとめたいと思います。

 

3. まとめ
1回でまとめるつもりでしたが、確率過程やマルコフモデルからちゃんとまとめないと事前知識がない方は訳がわからなくなると思うので、断念しました。確率過程、マルコフ性あたりは問題ない方を想定すると脱落者増えそうなのでもう少し踏み込んだ形で書いていければと思います。#2では今回も触れましたが、確率過程やマルコフ性マルコフ決定過程について取り扱えればと思います。

 

強化学習の入門用のテキストを作成しましたので、ご興味おありの方は下記より入手いただけたらと思います。