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

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

#1では連載の経緯とDQNの理解にあたって簡単な全体像について言及し、#2ではマルコフ決定過程についてまとめました。

#3では#1で上がった話題である価値関数や報酬、ベルマン方程式について詳しく解説していきたいと思います。


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

1. 簡単な復習
2. 価値関数に関して
2.1 状態価値V(s)、状態行動価値Q(s,a)に基づく決断
2.2 方策(戦略)のアップデートはどう考えるべきか
2.3 報酬とベルマン方程式
2.4 Q関数の学習にあたっての方向性
3. まとめ


1. 簡単な復習

強化学習の問題設定として、MDPにおける状態価値や状態行動価値(状態における行動の価値)を算出する必要が出てきた際に、将来報酬も含めて現在の状態の価値を算出するのがベルマン方程式です。


2. 価値関数に関して

2.1 状態価値V(s)、状態行動価値Q(s,a)に基づく決断
#2ではマルコフ決定過程ではそれぞれの時点でエージェントが決断(意思決定)を行うということについて言及したかと思います。その意思決定にあたって用いるのが、状態価値V(s)と状態行動価値Q(s,a)です。それぞれ、V(s)はある状態(将棋で言うとある盤面、新聞に載ってる4二金までなど想像するとわかりやすいです)における価値(要は先手優勢や後手優勢などの評価値と同様)、Q(s,a)は状態におけるその状態で取りうる行動の価値(次の手の候補が3つある場合にそれぞれの行動の価値)を表しています。基本的には、V(s)を用いて価値の高い状態に推移しようとしたり、Q(s,a)の高い行動を選択しようとしたりします。

このように、ある状態において判断を行う基準としてはV(s)やQ(s,a)を用いることである程度合理的な判断を行なっていくことができます。


2.2 Q(s,a)と方策(戦略)のアップデート
DQNはDeep Q-Networkの略であり、ここでのQはQ(s,a)のことです。さて、まずは理想的なQが与えられたケースを考えましょう。この際はQ(s,a)の高い行動を選べば良いです。この時にこちらを数式で表すにあたって、argmax(Q(s,a))的な数式をよく用います。これは難しそうに見えるのですが、単にa(Action)が大きなaの番号を返すというだけでさほど難しい意味はありません。例えばAction1、Action2、Action3があった際にQ(s,a=Action2)の値が一番高ければargmax関数の結果として2(Action2を選択したということ)を返します。

さて、教師あり学習における推論(未知のケースへの意思決定)の方法はわかりましたが、これをどのように導くのでしょうか。この際に教師あり学習のように過去の経験を参考にすることができます。#2でエピソードについて言及しましたが、エピソード単位で全体を振り返り、全報酬を元にV(s)またはQ(s,a)を決めます。この際に報酬からV(s)やQ(s,a)を決めるのに用いるのがベルマン方程式で、こちらについては2.3で取り扱います。


2.3 報酬とベルマン方程式

2.3では2.2で取り扱ったV(s)やQ(s,a)をどうやって計算していくかについてですが、この際に報酬を用います。ここで議論が必要な点は報酬はそのとあるステップの報酬で考えて良いのかという点です。ここで中長期的な報酬も気にするかと考える際に用いるのが割引率です。割引率というのは時刻tでの価値関数を考えるにあたって1ステップ先になるごとに割り引く比率のことです。0.99や0.95などを用いることで、将来の影響は少しずつ間引いて表現します。ちなみにそれぞれ10ステップ先を考慮すると0.99^10=0.904...0.95^10=0.598...などであり、具体的な数字を入れて計算してみるというのも一つの手です。

さて、割引率なども導入したところで実際に現在の報酬と未来の報酬を用いてどのように現在の状態価値V(s)や状態行動価値Q(s,a)を定義するかというのがベルマン方程式です。これによって報酬を用いてV(s)やQ(s,a)を表現することができます。


2.4 Q関数の学習にあたっての方向性

2.3ではベルマン方程式まで取り扱いましたが、これによって過去の観測したsとaの組みに関して、Q関数を求めることができます。が、ここで注意点としては、sとaが比較的小さな単純なゲームなどではこれが可能ですが、囲碁や将棋のような問題が大きなケースにおいては全ての状態を観測し切るのが難しいです。従って、未知の局面sに対し、未知の行動aを選んでいく必要があります。

この時、どのようにしていけば良いのでしょうか。方針として、Q関数をなんらかの教師あり学習で近似していくことについて考えます。これによって、過去の観測についてsとaとその時のQがわかっているとするならば、それに基づいてQ関数をなんらかの関数で近似することについて考えます。
これをニューラルネットワークで近似したり、特徴量抽出の手法+線形識別器で識別したりなどが昔から行われていたのですが、ここにDeepLearningを応用したのがDeep Q-Network[2013]です。難しそうに見えますが、状態と行動の組み合わせ全てを試せないのでこのように過去の体験から近似を行うというのがDQNのベースにある考え方です。


3. まとめ

#3では状態価値関数V(s)や状態行動価値関数Q(s,a)などの行動を判断する基準やその学習に当たって取り扱いました。#4では今回軽く出てきたQ関数の近似について詳しく取り扱っていければと思います。