5. Open Cloud Campus
5
TensorFlowで学ぶDQN
DQNの理論的枠組み
「現在の状態 (State) s とその時の操作 (Action) a 」に対して、その直後に得られ
る「点数 (Reward) r と新しい状態 s' 」の4つ組データ (s, a, r, s') があらゆる (s, a)
に対して分かっているものと仮定します。
– 「どの画面で、どの操作をすれば、どのように点数が変化するか」というデータに相当す
るものです。実際には、すべての (s, a) についてのデータを得ることは不可能ですが、十
分たくさんのデータがあるものと考えておいてください。
– 数学的には、r と s' は、(s, a) の関数になっている点に注意してください。
このようなデータがあれば、単純に考えると、現在の状態 s が与えられた時、次の
ルールで操作を決定すればよい気がします。
⇒ 「状態 s において、その直後に得られる点数 r が最大になる行動 a を選択する」
しかしながら、これは必ずしもベストな結果にはなりません。
– たとえば、ブロック崩しの場合、急いでブロックを消して目先の点数を稼ぐよりも、少し
時間がかかっても、隅のブロックを狙った方が、トータルの点数は高くなります。
– 直後の点数ではなく、「長期的なトータルの点数」を最大化する行動 a を見つける方法が
必要なのです。
6. Open Cloud Campus
6
TensorFlowで学ぶDQN
魔法の「Q 関数」の存在を仮定する
長期的なトータルの点数を次のように定義します。
– と は n ステップ目の状態と操作を表します。 は 0.9 程度の値とします。(トータ
ルの点数が発散しないための計算上の工夫として入れてあります。)
ここで、どうやって計算するかはまったく謎ですが、次のような都合のよい魔法の
関数 Q(s, a) があったと仮定してみます。
Q(s, a) = 「状態 s において行動 a を選択したとして、さらにその後、常にベストな行動
をとり続けた場合のトータルの点数」
魔法の関数 Q(s, a) が手に入れば、状態 s におけるベストな行動は、次のルールで
決まります。
⇒ 「状態 s において、その後にベストな行動をとり続けた場合のトータルの点数が最大に
なる行動 a を選択する」